开源中国

我们不支持 IE 10 及以下版本浏览器

It appears you’re using an unsupported browser

为了获得更好的浏览体验,我们强烈建议您使用较新版本的 Chrome、 Firefox、 Safari 等,或者升级到最新版本的IE浏览器。 如果您使用的是 IE 11 或以上版本,请关闭“兼容性视图”。
博客专区 - 开源中国社区

精彩阅读

  • 最新推荐

  • 今日热门

  • 本周热门

  • 每日一博

  • 最新文章

java 多线程—线程怎么来的?

并发处理的广泛应用是使得amdah1定律代替摩尔定律成为计算机性能发展源动力的根本原因,是人类压榨计算机运算能力的最有力武器。
wier 发布于 3天前 阅读 637 评论 2 点赞 1

游戏中有哪些作弊方法?

了解一些游戏中的作弊方式,方便你氪金。
wier 发布于 7天前 阅读 829 评论 8 点赞 3

游戏中的加密算法

游戏的中常见的加密方式介绍,以及优缺点详解
wier 发布于 2周前 阅读 825 评论 14 点赞 1

开源中国全球专享福利,云栖大会购票大返现!

开源中国为大家带来了全网专享福利!开源中国的会员复制优惠码,在购票时填入,就可以在云栖大会现场开源中国展台处领取现金福利哦!先到先得,赶紧把这个消息传递给好朋友吧,我们云栖大会见!
阿里云栖大会

图解LZ77压缩算法

数据压缩是一个减小数据存储空间的过程,目前被应用在软件工程的各个地方,了解其一些原理,方便我们更好的甄选压缩方案。
wier 发布于 3周前 阅读 3355 评论 7 点赞 15

深入理解游戏中寻路算法

看似寻常的路径行走,在程序看来就需要一定的寻路算法来解决,如何在最短时间内找到一条路径最短的路线,这是我们首要考虑的问题。
wier 发布于 1个月前 阅读 1772 评论 10 点赞 6

游戏服务器架构演进(完整版)

王者荣耀技术分析第三篇,服务器架构模型分析...
wier 发布于 1个月前 阅读 6563 评论 37 点赞 19

从王者荣耀聊聊游戏的帧同步

通过王者荣耀,我们来聊一聊帧MOBA游戏的技术实现以及同步方式
wier 发布于 2个月前 阅读 8064 评论 58 点赞 36

我是这样翻译 CraftyJS 的

最近博主在翻译 CraftyJS 的官方文档,或许你还不知道 CraftyJS 是什么,好吧,先来一张图! 想做网页小游戏不是一两天的事了,但说实话一直没找到满意的游戏框架,JS水平又很烂,平面设计水平还一塌糊涂,这可怎么活啊!默哀三分钟。。。 一个偶然的机会博主发现了 CraftyJS ,深入了解之后,博主觉得就是它了,因为他足够小,足够简单,足够灵活,这就足够了!但随后博主发现网上关于这款游戏引擎的文档简直是少的可怜,幸好官方的文档还算给力,组织的比较清晰,似乎也比较完备。博主英文是相当的差劲(默哀三分钟。。。),还好混了几年IT,简单的单词还算识得,不过看着还是很吃力的,更何况在没有游戏开发背景的情况下,里边有很多专业的术语是很难理解的,想到中国还有千千万万像博主这样满怀一腔热情,但是英文不过关的同志们,于是博主决定将整个官网翻译成中文以方便后来者。(话说官方难道就不打算出了中文网站么,不打算在天朝发展么,天朝人多势众啊!) 下边就来讲讲我翻译 CraftyJS 的经历,各位吃瓜群众准备好瓜子茶水前来围观吧!!! 首先我在官网上发现原来这个网站的页面源码有在github上托管(这真是感谢党感谢人民啊,还好不用我一个页面一个页面的在...
-无名小卒- 发布于 2个月前 阅读 248 评论 4 点赞 1

每个程序员都需要知道一些游戏网络知识

作为一个程序员,你有没有想象过多人游戏是如何实现的?
wier 发布于 3个月前 阅读 3598 评论 3 点赞 9

LuoYing RPG教程-JME3游戏创建、场景编辑、载入完整示例教程

这篇文章主要介绍: 如何创建一个3D游戏项目; 如何整合LuoYing RPG游戏框架到JMonkeyEngine游戏中; 如何使用落樱编辑器创建一个3D游戏场景,并将游戏场景载入到JME3游戏中。 文章会从创建项目、创建场景到导入场景作一个完整的说明过程。
huliqing 发布于 3个月前 阅读 377 评论 2 点赞 2

Pomelo游戏服务器端开发系列(1)-介绍

官方Github上的WiKi的知识点总结到一块,筛选了一些有价值的知识点
nextzeus 发布于 4个月前 阅读 315 评论 1

JMonkeyEngine中是如何使用AppState来管理和实现游戏场景切换的

本文要讲解的是关于JMonkeyEngine游戏引擎中如何使用AppState来实现游戏场景的管理和切换.
huliqing 发布于 4个月前 阅读 320 评论 3

3D游戏中角色的换装原理-落樱之剑实例图文详细剖析(JMonkeyEngine游戏开发)

在整个讲解过程中需要以下一些东西来进行说明,我们将通过各种工具一步一步来完成以下物件,并最终使用这些物件在游戏中演示如何进行换装。 1.一个标准的人物骨骼 - 用于控制角色基本身形、装备以及角色动画 2.一套基本身形 - 用于模拟人物角色的皮肤,即脱光装备后的样子,这里以内衣装示例,后面我称为“身形”或“身体” 3.一套角色装备 - 用于换装示例,后面我统称为“装备” ...
huliqing 发布于 4个月前 阅读 622 点赞 1

有趣的二进制—高效位运算

位运算是一种比较特别的数学运算。一般情况下,位运算的运算效率比加减乘除等常规数学运算要高得多。此外,位运算具备一些常规数学运算所没有的特点和规律,我们可以利用位运算的相关特性来完成一些非常巧妙的程序设计。
wier 发布于 5个月前 阅读 3183 评论 29 点赞 6

有趣的二进制

优秀应用算法都大量用到位运算,而位运算在工作中很少用到,所以借助其算法,我们看一下位运算的优势以及应用,但是大多数教材只会教大家二进制和十进制如何互换,都是死记硬背式的,并没有去讲解真正含义,换一个进制之后,依然不会,我们回到最根本的一些计数方法上,从10进制来推算,希望用一种更简单的方式介绍其原理
wier 发布于 5个月前 阅读 5103 评论 22 点赞 11

微软.NET年芳15:我在Azure上搭建Photon服务器(C#.NET)

网上火热的“微软.NET年芳15”文章,我也得写点什么嘛,毕竟我还是现任的微软MVP。   摘录网上的“.NET 15周年”信息如下: 微软的 .NET 框架本周迎来了 15 岁生日。.NET 的第一个版本在 2002 年 2 月 13 日作为的 Visual Studio.NET 的一部分首次公开亮相。过去 15 年,.NET 框架从一个流行的闭源软件开发平台,变成了一个开源的跨平台开发工具,微软是在 2014 年 11 月 12 日宣布开源 .NET,支持竞争对手 Linux 和 OS X 的平台。微软称,Visual Studio 2017 将于 2017 年 3 月 7 日发布,而 Visual Studio 也迎来了 20 岁生日,开源的 .NET Core 也将发布 2.0版本。         我梳理了一下目前的.NET技术栈: 业务是基于Unity3D(跨平台游戏开发引擎),开发AR、VR 应用; 绝大部分项目采用单机版,使用的编程语言是C#(Mono.NET),不过最近交流的AR几个业务,明显用户已经不太满足单机版,有更多的需求需要用到联网的服务器功能,故技术选型就势在必行了:也算是未雨绸缪吧。   技术栈选型 我的技术选型有2点原则 成熟,有助于提高开发效率 人多,有坑大家一起填 这2点原则是基于第一次创业失败的经验总结。约在3年前吧,刚开始创业的时候,特别排斥C#.NET技术(互联...
王文刚_AR_VR 发布于 6个月前 阅读 614 评论 9 点赞 3

仿《雷霆战机》飞行射击手游开发--新手引导

本文以某款仿雷霆战机的手机游戏为例,说说其中关于新手引导的程序设计
雁惊寒 发布于 6个月前 阅读 1065 点赞 2

仿《雷霆战机》飞行射击手游开发--资源预加载

项目源码库:https://git.oschina.net/thorqq/RaidenFree       绝大多数游戏在启动后首先出现的是一个“载入中”的场景,此场景的用处是将游戏所需的图片、音乐、数据等资源从存储卡(或磁盘、闪存)读入内存,这样,后面需要用到这些资源时,可以直接从内存读取,以加快游戏的运行,提高流畅性。下面,就对资源的预加载机制做一个介绍。 资源的类型 预加载的目的是为了后续读取的快捷,所以,一般会预加载那些较大较复杂的文件,例如以下这些: 单张大图:背景大图 合成图:可多幅图片合成的大图,这里我们使用TexturePacker合成plist+png文件 骨骼动画:使用Cocos Skeletal Animation Editor创建的骨骼动画文件,ExportJson+plist+png文件 场景:使用Cocos Studio创建的csd文件 声音:ogg音乐文件 本地数据:游戏存档数据(格式为json文件)、游戏配置数据(例如关卡、飞机属性、子弹属性等固定的数据,格式为sqlite数据库文件) 远程数据:由于本游戏是弱联网游戏,所以保存在服务器上的数据不多。这里仅仅实现了用户登录、获取时间的功能 下面,我们将逐一介绍不同资源载入的方法。 加载方法 单张大图 定义std::vector<std::string> m_imageArray,将需要加载的图片...
雁惊寒 发布于 7个月前 阅读 924 评论 1 点赞 1

采用 GLM 从代码层面理解 OpenGL 坐标系统

# 概要 关于 OpengGL 坐标系统,我很喜欢[这篇](https://learnopengl.com/#!Getting-started/Coordinate-Systems)博客,这篇博客有中文版本的。博客英文版讲诉更让人容易理解。接下来要写的这篇博客是以上篇博客为参考,进一步从代码的层面来理解 OpengGL 坐标系统。 下面博客中的代码都可以在 [blogsnippet](http://git.oschina.net/iirecord/blogsnippet)/opengl/lefthand-or-righthand 目录下获取。上篇参考博客中有下面的流程图。这里假设你已经知道了整个流程。图中我标出的红色 glm 函数分别表示,通常用 `glm::lookAt` 函数创建 view matrix 而透视投影矩阵则用 glm::perspective 创建。下面将会测试这两个函数。让我们开始吧。 ![coodinate](https://static.oschina.net/uploads/img/201701/12221155_dlh4.png "coodinate") # 默认情况下,NDC 是基于左手坐标系 首先要知道当不调用 `glDepthRange` 修改映射时, OpenGL NDC 是基于左手坐标系的。这就意味着默认时,物体的 z 轴越大,则物体的坐标越远。继续往下看,你将会发现它的用处。下面就写程序来验证一下。先程序运行结果。 ![ndc](https://static.oschina.net/uploads/img/201701/11204740_c7rG.png "ndc"...
iiRecord 发布于 7个月前 阅读 317

关于Canvas Rect Transform 设置问题

Render Mode: Screen Space - Overlay:将UI放置在场景的上面,调节场景大小或调整分辨率,则Canvas也会随之调整。 Screen Space - Camera:Canvas由一个特定的相机渲染,相机的设置会影响UI。 World Space:使Canvas像场景中的其他对象一样渲染。   默认情况为Screen Space - Overlay 模式, 即不能更改 Rect Transform  更换成  World Space 即可设置Rect Transform   知识扩展: Rect Transform Rect Transform在2D的UI中,对应于3D的Transform。用于显示调整2DUI中的缩放比例、位置、尺寸、角度等。   Position 坐标位置 Width/Height   高宽尺寸 Anchors 锚点 Pivot 中心点 Rotation 角度 Scale             缩放比例     Rect Transform中增加了Anchors属性,其中包括Anchor Min和Anchor Max。Anchors用于指定在父UI元素调整时,子UI元素如何调整。具体行为由Anchor Min(左下)和Anchor Max(右上)两个锚点决定。坐标以矩形左下为(0, 0),右上为(1, 1)。 但实际上,Unity已经提供了预定义的模式。在Rect Transform的左上角点击,出现如下的常用Anchor模式。     以top-left模式为例,此时锚点位于父元素的左上角。如果拉动父元素矩形的左边框和上...
gametodoN 发布于 7个月前 阅读 212

游戏中有哪些作弊方法?

了解一些游戏中的作弊方式,方便你氪金。
wier 发布于 7天前 阅读 829 评论 8 点赞 3

java 多线程—线程怎么来的?

并发处理的广泛应用是使得amdah1定律代替摩尔定律成为计算机性能发展源动力的根本原因,是人类压榨计算机运算能力的最有力武器。
wier 发布于 3天前 阅读 637 评论 2 点赞 1

企业这个月买电脑可以省钱了!

6.18刚刚过去,11.11遥遥无期,这会儿买电脑总担心会多花几百块?看!这!里!戴尔最近推出了“企业特惠月”的活动,两千多就能买到好电脑,满额还送激光打印机哎!敲!划!算!
DELL

从王者荣耀聊聊游戏的帧同步

通过王者荣耀,我们来聊一聊帧MOBA游戏的技术实现以及同步方式
wier 发布于 2个月前 阅读 8064 评论 58 点赞 36

游戏服务器架构演进(完整版)

王者荣耀技术分析第三篇,服务器架构模型分析...
wier 发布于 1个月前 阅读 6563 评论 37 点赞 19

深入理解游戏中寻路算法

看似寻常的路径行走,在程序看来就需要一定的寻路算法来解决,如何在最短时间内找到一条路径最短的路线,这是我们首要考虑的问题。
wier 发布于 1个月前 阅读 1772 评论 10 点赞 6

图解LZ77压缩算法

数据压缩是一个减小数据存储空间的过程,目前被应用在软件工程的各个地方,了解其一些原理,方便我们更好的甄选压缩方案。
wier 发布于 3周前 阅读 3355 评论 7 点赞 15

每个程序员都需要知道一些游戏网络知识

作为一个程序员,你有没有想象过多人游戏是如何实现的?
wier 发布于 3个月前 阅读 3598 评论 3 点赞 9

游戏中的加密算法

游戏的中常见的加密方式介绍,以及优缺点详解
wier 发布于 2周前 阅读 825 评论 14 点赞 1

游戏开发SpriteKit基础

 要想入行学习游戏的开发,基本的游戏框架还是需要了解清楚的,总的来说,游戏的开发是一个综合化的课程学习,不仅要求学习者要有一定的编程能力,更多的还是需要掌握基本的技术框架,搭建好一定的架构,这样才可以有效的进行开发,本文将为大家介绍的是SpriteKit框架的入门学习。   苹果很早在iOS7系统中是内置了一个新的SpriteKit框架,使用这个框架它最主要用来开发2D游戏。目前已经支持的内容包括:精灵、很酷的特效(比如视频、滤镜和遮罩等这些特效),并且还是集成了许多物理库等一系列的东西。   实际上在iOS7中附带了一个非常棒的SpriteKit示例工程,名字是叫Adventure。该示例工程是有一点的复杂,并不适合初学者,本文主要是给大家带来SpriteKit使用的初级教程。   使用SpriteKit的优点:   1、该框架它是内置到iOS中的,所以它并不需要去下载额外的库又或者其它一些外部依赖,因为它是由苹果开发的,它的支持和更新这一点是并不需要担心,它的更新还是比较好的支持的。   2、并且它内置的工具是支持纹理和粒子。   3、它也是可以让你做一些其它框架很难做到的事情,比如把视频当做精灵一样处理,又或者使用很酷的图形效果和遮罩。   但是SpriteK...
jun9152143 发布于 2个月前 阅读 10

在notepad++中直接运行python代码

1.在notepad++的plugin manager中安装“pynpp” 2.在plugin manager中找到“pynpp”后,选择“install”,插件会自动安装,并提示是否需要重新启动notepad++ 第二种方法: 在notepad++中,按F5,在窗口中输入 “cmd /k  c:\python27\python "$(FULL_CURRENT_PATH)" & PAUSE & EXIT”,最后点运行,能在新窗口中看到结果
真是杨晓光 发布于 9小时前 阅读 3

Thinkphp 5.0实战 仿百度糯米开发多商家电商平台

![输入图片说明](https://static.oschina.net/uploads/img/201706/14153622_BhSA.jpg "在这里输入图片标题") 1块钱 联系QQ 2548975779
oneboi 发布于 2个月前 阅读 86

匹配算法

概述: 匹配系统的目的如下,优先级从高到低: 1、 保护新手不被有经验的玩家虐;让高手局中没有新手。 2、 创造竞技和公平的游戏对局,使玩家的游戏乐趣最大化。 3、 无需等待太久就能找到对手进入游戏。 匹配系统尽其所能的匹配水平接近的玩家,玩家的水平是来自他们在此之前赢了谁以及他们对手的水平。当你战胜对手,系统会认为你更强,当你输给对手,系统会认为你更弱。虽然这对于某一局游戏并不是那么的公平,但是长期来看,对于多局游戏是相当的公平:因为好的玩家总会对游戏结果造成正面的、积极的影响。我们使用了这样一个方法测试:给水平高的玩家一个新帐号,然后看他们游戏数局后的结果。我们通过大量的测试来证明了我们的想法。 并且,匹配系统知道预先组队的玩家有一些优势,如果你是预先组队,会给你一些更强的玩家。我们用一些非常巧妙的数学方法来解决预先组队的玩家VS solo玩家的匹配公平问题。我甚至让两个数学博士来验证,他们都说给力! 匹配是怎么完成的? 首先,系统将你放进适当的匹配池里——根据游戏模式(匹配模式、排位solo/双人、排位5人、其他模式等等) 然后,系统会尝试将匹配池里的人分到更细的匹配池里——5人组队 VS 5人组队,低等级新手...
Mr_Young 发布于 3个月前 阅读 18

idea运行maven报系统资源不足

运行maven的时候提示系统资源不足 系统资源不足。 有关详细信息,请参阅以下堆栈追踪。 java.lang.OutOfMemoryError: Java heap space at com.sun.tools.javac.zip.ZipFileIndex$ZipDirectory.findCENRecord(ZipFileIndex.java:698)
sprouting 发布于 2个月前 阅读 32

幽冥岛争霸 - 和女儿一起开发的游戏

日记2017-06-20 和女儿一起开发的游戏,才刚刚开始。。。 发布到了火舞游戏平台。 添加了技能流光,尚未测试。 游戏介绍 在魔界大陆深处,幽冥岛常年被黑雾笼罩,岛上被众多强大的妖魔占领,与魔界对抗。你被魔界任命为幽冥鬼使,消灭岛上的妖魔。 游戏地址 http://i1.51h5.com/open/game/395976/395976084826/index.html 视频地址视频地址http://v.youku.com/v_show/id_XMjg2MDgzNDk0MA==.html?spm=a2h3j.8428770.3416059.1 截图    
青青小树 发布于 2个月前 阅读 12

UnrealEngine shortcut key

2steper 发布于 2个月前 阅读 159

MMO服务端设计-记录1-基础框架

https://git.oschina.net/dreamyouxi/MMOGame 1.网络库的选择 从原始的网络操作api写的话,会花费很多精力,选择一个成熟的网络库是一个很不错的方案。 可选择的底层网络库很多,asio libevent ace等。 对应 两种高性能I/O设计模式(Reactor/Proactor) Proactor典型例子是:IOCP,asio Reactor 典型例子是EPOLL,libevent 相比之下更倾向于asio的proactor模型,框架设计起来更简单,每次网络都是已经接收完成了,只需要对其逻辑处理即可。 但是服务器在linux下运行,asio 效率会折扣,期望是windows下开发,linux下运维,因此要压榨服务器的性能,跨平台的话一个网络库就不太可能限定起来。 无论是哪种方式,网络消息的分发都可以由一个中间件来完成,可以是master也可以是mgr,这样切换不同的网络库对于服务器本身逻辑的编写不会有什么改动,kbe是支持epoll select等 io机制,他的做法也是如此,网络事件都有一个distapcher统一分发该网络事件。 因此设计上就可以吧网络io层独立出来,代码看起来可能是这样 要切换到其他io 做一个适配层就可以了, asio的适配   2.服务器并发模型 多进程单线程 or 多进程多线程  关于并发基本模型主要有,多进程的单线程模型,多进程的多...
梦想游戏人 发布于 1个月前 阅读 17

用笔记本如何提升游戏性能?

      游戏的流畅度是玩家最关注的一个问题,也是游戏体验的重要指标,我们玩游戏的时候都会有相关的体验,就是一般台式计算机的用来玩游戏将会更加的流畅,这也为什么网吧都是使用台式机来玩游戏的原因了,很多人会问那么使用笔记本该怎样提升游戏的性能呢?   使用笔记本游戏性能提高的方式可以参照下面的几种方式:   1、可以使用加速器(就比如:通过迅雷网游加速器、网易UU网游加速器、QQ会员网游加速小助手、ET加速器和迅游网游加速器等“网游加速器”启动游戏等这些加速助手)。使用这种方法可以实现跨网加速,能够有效解决网通、电信等带宽之间互联不互通的问题,是一个很好的方式,一般的用户都是这个方式的。   2、因为有些游戏对于PC的配置是有要求的,一般在这种情况下,我们可以通过显卡自带的图形管理功能实现提速效果。   比如:在这里是以NVIDIA独显笔记本和“DayZ”游戏为例,在电脑桌面,点击“鼠标右键”,可以选择“NVIDIA控制面板”,然后是在“管理3D设置-程序设置”中手动添加游戏“DayZ”程序,同时也是可以根据自身的一个配置情况定义具体的设置值。比如将“各向异性过滤”设置在了4X,然后是强行关闭了“垂直同步”,将“最大预渲染帧数...
jun9152143 发布于 2个月前 阅读 6

真正吸引人的游戏几个元素

      要知道一款游戏是否成功,则是取决于你的一个目标,有的时候是关于收益的、有些时候是关于下载的,关于玩家的影响也是有可能的,如果你是经常专注于这些结果,并不能是带给开发者有多大的一个帮助,开发者更是应该基于用户的一个使用依赖性去定义游戏的成功,用户粘性总是与我们在开发过程中需要作出的种种决定具有直接联系的。   或者你会知道,用户的粘性遵循了4个步骤顺序:突出,联合,吸引与发展,因此对你开发设计来说的话,接下里就是要去明确一下游戏中怎样才能帮你做到的这些元素是什么,本文将一起来讨论一下怎样能够帮你的游戏或者是VR体验长期的得到提高用户粘性的几个元素,可以参考一下。   吸引玩家注意并让他们长久留的4大基本元素:美术,有趣的机制,故事和社区创建,下面来仔细的分析一下。   1.美术—美术是玩家对你的游戏的第一印象,所以你必须在美术方面借此让他们愿意更深入了解你的游戏,在一开始玩家它不可能了解你的游戏的一些特定的机制或故事,因此他们只能通过视觉效果去决定是否继续玩你的游戏。   2.乐趣—有时候不管你的美术本身是有多优秀,它也很难长期吸引玩家的注意,如果是找到一些有趣的事去做便是让玩家更长久待...
jun9152143 发布于 2个月前 阅读 9

游戏性能提升降帧处理方式

      什么是降帧&为什么降帧?   一般情况下我们为了提高整个游戏的体验,所以我们一般会将游戏的帧数(每秒钟刷新多少次)设置的比较高。一般情况下,我们的游戏所有的代码都是一帧执行一次。为了让每一帧都变成真的关键数据帧。不过,部分手机能性能可能跟不上,或者计算量太大的情况下,手机的运算速度不能够支持的情况,过高的性能消耗就会拖慢运算的速度,让一秒内没有办法打到满帧。所以就会觉得游戏变得卡顿。   其实一部分逻辑并没有必要每一帧都去执行,可以将他们隔几帧运行一次也不是不可以。比如说伤害值的运算,伤害应该与游戏运营的帧数无关,比如每0.1秒执行一次伤害代码,那么在满帧60帧的情况下,其实每6帧执行一次就OK。   我们之所以希望能提高帧数,是为了制造流畅的感觉。但是降帧则会违反这种感觉。所以游戏的帧数不能降低,或者在准确一点来说,游戏的View的帧数不应该降低,减低的应该是逻辑帧数。   或者有朋友会问,如果我们的程序最少的逻辑间隔时间是0.1的话。所有的游戏逻辑都是间隔0.1判定一次不就好了?这不是很简单的事情?但实际上事情并没有那么简单。一般情况下我们人眼的录入认为是16帧每秒。   现在的理论上满足16帧的...
jun9152143 发布于 2个月前 阅读 7

曲线间平滑计算方法

Unity曲线编辑器和bezier曲线插值-----该篇是对上篇的曲线间平滑过渡问题的展开。 上面的曲线间平滑多度强烈依赖于2条二阶曲线粘合处的平滑。 1.5点线性平滑处理,大致思想是通过历史点信息 通过线性预测方法得出插值的点,该方法如果不加以校正的话,会蝴蝶效应,例如依据的点是越来越偏离真实点。图中 A B就是根据历史p0 p1 p2 一定方法(一般可以是曲率做为参考依据)计算出来 2.利用三阶bezier曲线的,一个三点一线特性,大致是第一条曲线的第二个控制点和第一条曲线的终点和第二条曲线的第一个控制点,三点在一条线上的话,连接处就是平滑的,但是在实践的时候发现1个问题,虽然连接处平滑了,但是曲线 的曲率变化可能会偏差很大,导致过渡后曲率偏离过大, 也会导致抖动问题,看起来像是拐角突然变大or小。也依赖于拖动曲线的时候的让曲线间曲率变化不大。 如图p2 p3 p4 在同一条线上。这个特性在editor时候可以做自动微调计算,让他们在同一个线段上   3.一片论文提到的方法 http://www.ixueshu.com/document/720e4fbfdf8eec55318947a18e7f9386.html       TODO...
梦想游戏人 发布于 3天前 阅读 10

java 多线程—线程怎么来的?

并发处理的广泛应用是使得amdah1定律代替摩尔定律成为计算机性能发展源动力的根本原因,是人类压榨计算机运算能力的最有力武器。
wier 发布于 3天前 阅读 637 评论 2 点赞 1

游戏中有哪些作弊方法?

了解一些游戏中的作弊方式,方便你氪金。
wier 发布于 7天前 阅读 829 评论 8 点赞 3

从王者荣耀聊聊游戏的帧同步

通过王者荣耀,我们来聊一聊帧MOBA游戏的技术实现以及同步方式
wier 发布于 2个月前 阅读 8064 评论 58 点赞 36

游戏服务器架构演进(完整版)

王者荣耀技术分析第三篇,服务器架构模型分析...
wier 发布于 1个月前 阅读 6563 评论 37 点赞 19

快速了解人工智能结晶之语音转换文字

科技解放生产力,人工智能的应用如今是大热,那么今天就来给各位介绍一下IBM在这方面的一个小的尝试,语音转换文字。咱们来看一看相较于传统的转换,结合Watson的IBM是如何做到让识别率飙升的。
IBM Bluemix

每个程序员都需要知道一些游戏网络知识

作为一个程序员,你有没有想象过多人游戏是如何实现的?
wier 发布于 3个月前 阅读 3598 评论 3 点赞 9

游戏中的加密算法

游戏的中常见的加密方式介绍,以及优缺点详解
wier 发布于 2周前 阅读 825 评论 14 点赞 1

深入理解游戏中寻路算法

看似寻常的路径行走,在程序看来就需要一定的寻路算法来解决,如何在最短时间内找到一条路径最短的路线,这是我们首要考虑的问题。
wier 发布于 1个月前 阅读 1772 评论 10 点赞 6

图解LZ77压缩算法

数据压缩是一个减小数据存储空间的过程,目前被应用在软件工程的各个地方,了解其一些原理,方便我们更好的甄选压缩方案。
wier 发布于 3周前 阅读 3355 评论 7 点赞 15

曲线间平滑计算方法

Unity曲线编辑器和bezier曲线插值-----该篇是对上篇的曲线间平滑过渡问题的展开。 上面的曲线间平滑多度强烈依赖于2条二阶曲线粘合处的平滑。 1.5点线性平滑处理,大致思想是通过历史点信息 通过线性预测方法得出插值的点,该方法如果不加以校正的话,会蝴蝶效应,例如依据的点是越来越偏离真实点。图中 A B就是根据历史p0 p1 p2 一定方法(一般可以是曲率做为参考依据)计算出来 2.利用三阶bezier曲线的,一个三点一线特性,大致是第一条曲线的第二个控制点和第一条曲线的终点和第二条曲线的第一个控制点,三点在一条线上的话,连接处就是平滑的,但是在实践的时候发现1个问题,虽然连接处平滑了,但是曲线 的曲率变化可能会偏差很大,导致过渡后曲率偏离过大, 也会导致抖动问题,看起来像是拐角突然变大or小。也依赖于拖动曲线的时候的让曲线间曲率变化不大。 如图p2 p3 p4 在同一条线上。这个特性在editor时候可以做自动微调计算,让他们在同一个线段上   3.一片论文提到的方法 http://www.ixueshu.com/document/720e4fbfdf8eec55318947a18e7f9386.html       TODO...
梦想游戏人 发布于 3天前 阅读 10

Thinkphp 5.0实战 仿百度糯米开发多商家电商平台

![输入图片说明](https://static.oschina.net/uploads/img/201706/14153622_BhSA.jpg "在这里输入图片标题") 1块钱 联系QQ 2548975779
oneboi 发布于 2个月前 阅读 86

UnrealEngine shortcut key

2steper 发布于 2个月前 阅读 159

某游戏公司测试工程师笔试题

测试工程师 A卷 注意事项: 1.    请将答案全部写在答题卷上,并将问卷和草稿纸一起交上来。 2.    回答要求推理有必要的过程,文字清晰,详略适当,以免造成误解。 3.    考试时间:60分钟。 姓名:                    学校:                    学历:                    联系方式:                     专业:                    笔试时间:                      一、单项选择(4分/题,共24分) 1.       在异常处理中,释放资源、关闭文件、关闭数据库等操作是由(  )来完成的。 A. try子句    B. catch子句    C. finally子句    D. throw子句 2.       以下程序的输出结果是哪一项? (  ) #include <stdio.h> main() {          int a[12]={1,2,3,4,5,6,7,8,9,10,11,12}, *p[4], i;          for(i=0;i<4;i++) p[i]=&a[i*3];                 printf("%d\n",p[3][2]); } A.输出项不合法               B. 6            C. 8       ...
startstorm 发布于 2个月前 阅读 199 点赞 1

幽冥岛争霸 - 和女儿一起开发的游戏-单机版基本完成

游戏地址 http://i1.51h5.com/open/game/395976/395976084826/index.html 视频地址http://v.youku.com/v_show/id_XMjg2MDgzNDk0MA==.html?spm=a2h3j.8428770.3416059.1  
青青小树 发布于 2个月前 阅读 72

Unreal Engine中导入HTC Vive Controller模型

首先,其实在openvr库里,是包含controller模型的,可以通过openvr库里的LoadRenderModel_Async及LoadTextureXXX系列函数来动态的请求到模型,并绘制到引擎中。不过这个方法我还没使用过,不太熟,有时间研究一下再说。 另一种方式,是直接导入现成的controller模型。如果安装了Steam软件,在C:\Program Files (x86)\Steam\steamapps\common\SteamVR\resources\rendermodels\目录下能找到你本机steam平台支持的模型。这是我本地的路径,具体视自己的机器来定。这个目录下的模型大都是mtl和obj格式的。其中,obj格式的模型,可以用windows 10系统自带的[View 3D]或[3D Builder]程序来打开。我用[View 3D]打开了vr_controller_vive_1_5目录下的vr_controller_vive_1_5.obj文件,如下: 将这个文件拖拽到unreal窗口,会弹出Import Options窗口: 如上红框设置后,点击Import All即可完成导入。   同样操作可以导入HTC Vive Tracker模型。该模型在我本地路径是: "C:\Program Files (x86)\Steam\steamapps\common\SteamVR\drivers\htc\resources\rendermodels\vr_tracker_vive_1_0\vr_tracker_vive_1_0.obj"   额外记录: controller模型没有贴图,导入unreal后会生成并使用一...
小保哥 发布于 3天前 阅读 3

CF手游脚本制作

最近看CF手游 外挂,脚本很多啊,对于那种自喵,透视的我还是不建议做的 但刷挑战模式“世界BOSS”用用脚本感觉也不是很过分哈...............望轻喷。。。。 这里给大家用按键精灵做了个刷三头龙普通模式的脚本,这里以安卓为例从做到打包整个过程,没什么技术含量。。。。。 第一步 当然是去下载按键精灵了 http://www.mobileanjian.com 我们需要下载按键精灵安卓版和按键精灵手机助手 ,安卓版当然是安装到你的安卓手机了,手机助手当然是安装到电脑端的 安装好后手机助手是需要连接手机的,我这里用的模拟器,真实手机也是可以的 第二步:认识下这个个按键精灵 首先打开我们的按键精灵手机助手,点击新建脚本就会出现下图的内容,大家自己可以简单的摸索下,其实用起来很简单的建议切换到源文件进行脚本的编写;另外要提到就是作者后台功能,还是挺爽的,可以在发布后控制你的脚本,可以去看看,,,,, 第三步:就是需要编写我们的脚本啦 我这里贴出我做的三头龙脚本,可以看看,涉及到外挂脚本 本人胆小怕和小刀网一样就不好了,所以就只给个简单的脚本,怕天美打我。。。。谅解,所以就简单带大家入个门。。。。。 Touch 300, 20, 1000 Touch 620, 400, 1000 Tou...
北极心 发布于 1个月前 阅读 94

cccc

$root = array(     'body'=> array(         'op'=> 'saveLog',         'data'=>array(                 'op'=>'notify',                 'data'=>array(                     'cash_dtl_series'=>$out_trade_no,                     'pay_amount_str'=>$total_fee,                     'tenant_num_id'=>1,                     'data_sign'=>1,                     'status'=>'success'                 )             )     ),     'data_sign'=> '1',     'from_system'=> 'paySystem',     'msg_key'=> '1112',     'tag'=> 'WXPAY_0001_1',     'topic'=> 'WXPAY_0001',     'usr_id'=> '1' );...
废柴大叔 发布于 3个月前 阅读 20

幽冥岛争霸 - 和女儿一起开发的游戏

日记2017-06-20 和女儿一起开发的游戏,才刚刚开始。。。 发布到了火舞游戏平台。 添加了技能流光,尚未测试。 游戏介绍 在魔界大陆深处,幽冥岛常年被黑雾笼罩,岛上被众多强大的妖魔占领,与魔界对抗。你被魔界任命为幽冥鬼使,消灭岛上的妖魔。 游戏地址 http://i1.51h5.com/open/game/395976/395976084826/index.html 视频地址视频地址http://v.youku.com/v_show/id_XMjg2MDgzNDk0MA==.html?spm=a2h3j.8428770.3416059.1 截图    
青青小树 发布于 2个月前 阅读 12

Android Studio 中 Android Monitor 连接设备后 No Debuggable Applications 的解决

No Debuggable Applications问题解决。
坐着游戏的火箭 发布于 3个月前 阅读 57

给新手程序员的一些话

我编程的时间,已超过 20 年了。截至目前,我开的编程入门课,也有六七门了。传授编程的总时间,大约也有 1000 小时了。下面这些话,没有特别的前后顺序,我对自己学员不止说过一次。
linux-tao 发布于 3个月前 阅读 22

线性插值针对位置量和角度量

位置量是偏序的,进行线性插值比较简单,A-B Mathf.Lerp(A, B, rate) 即可 1:而角度是循环的,对于两个角度的线性插值,首先计算角度 差值 ,确保差值在 -180 180 内 2:接着对差值 做线性插值 0 到 diff 3:将diff 加到 起始角度上 得到 插值的 实际角度
李勇2 发布于 4周前 阅读 6

在notepad++中直接运行python代码

1.在notepad++的plugin manager中安装“pynpp” 2.在plugin manager中找到“pynpp”后,选择“install”,插件会自动安装,并提示是否需要重新启动notepad++ 第二种方法: 在notepad++中,按F5,在窗口中输入 “cmd /k  c:\python27\python "$(FULL_CURRENT_PATH)" & PAUSE & EXIT”,最后点运行,能在新窗口中看到结果
真是杨晓光 发布于 9小时前 阅读 3

Unreal Engine中导入HTC Vive Controller模型

首先,其实在openvr库里,是包含controller模型的,可以通过openvr库里的LoadRenderModel_Async及LoadTextureXXX系列函数来动态的请求到模型,并绘制到引擎中。不过这个方法我还没使用过,不太熟,有时间研究一下再说。 另一种方式,是直接导入现成的controller模型。如果安装了Steam软件,在C:\Program Files (x86)\Steam\steamapps\common\SteamVR\resources\rendermodels\目录下能找到你本机steam平台支持的模型。这是我本地的路径,具体视自己的机器来定。这个目录下的模型大都是mtl和obj格式的。其中,obj格式的模型,可以用windows 10系统自带的[View 3D]或[3D Builder]程序来打开。我用[View 3D]打开了vr_controller_vive_1_5目录下的vr_controller_vive_1_5.obj文件,如下: 将这个文件拖拽到unreal窗口,会弹出Import Options窗口: 如上红框设置后,点击Import All即可完成导入。   同样操作可以导入HTC Vive Tracker模型。该模型在我本地路径是: "C:\Program Files (x86)\Steam\steamapps\common\SteamVR\drivers\htc\resources\rendermodels\vr_tracker_vive_1_0\vr_tracker_vive_1_0.obj"   额外记录: controller模型没有贴图,导入unreal后会生成并使用一...
小保哥 发布于 3天前 阅读 3

开源中国全球专享福利,云栖大会购票大返现!

开源中国为大家带来了全网专享福利!开源中国的会员复制优惠码,在购票时填入,就可以在云栖大会现场开源中国展台处领取现金福利哦!先到先得,赶紧把这个消息传递给好朋友吧,我们云栖大会见!
阿里云栖大会

java 多线程—线程怎么来的?

并发处理的广泛应用是使得amdah1定律代替摩尔定律成为计算机性能发展源动力的根本原因,是人类压榨计算机运算能力的最有力武器。
wier 发布于 3天前 阅读 637 评论 2 点赞 1

曲线间平滑计算方法

Unity曲线编辑器和bezier曲线插值-----该篇是对上篇的曲线间平滑过渡问题的展开。 上面的曲线间平滑多度强烈依赖于2条二阶曲线粘合处的平滑。 1.5点线性平滑处理,大致思想是通过历史点信息 通过线性预测方法得出插值的点,该方法如果不加以校正的话,会蝴蝶效应,例如依据的点是越来越偏离真实点。图中 A B就是根据历史p0 p1 p2 一定方法(一般可以是曲率做为参考依据)计算出来 2.利用三阶bezier曲线的,一个三点一线特性,大致是第一条曲线的第二个控制点和第一条曲线的终点和第二条曲线的第一个控制点,三点在一条线上的话,连接处就是平滑的,但是在实践的时候发现1个问题,虽然连接处平滑了,但是曲线 的曲率变化可能会偏差很大,导致过渡后曲率偏离过大, 也会导致抖动问题,看起来像是拐角突然变大or小。也依赖于拖动曲线的时候的让曲线间曲率变化不大。 如图p2 p3 p4 在同一条线上。这个特性在editor时候可以做自动微调计算,让他们在同一个线段上   3.一片论文提到的方法 http://www.ixueshu.com/document/720e4fbfdf8eec55318947a18e7f9386.html       TODO...
梦想游戏人 发布于 3天前 阅读 10

UGUI的优点新UI系统四 开源

UGUI的优点新UI系统四 开源
大学霸 发布于 7天前 阅读 5

游戏中有哪些作弊方法?

了解一些游戏中的作弊方式,方便你氪金。
wier 发布于 7天前 阅读 829 评论 8 点赞 3

Unity曲线编辑器和bezier曲线插值

Unity曲线编辑器和bezier曲线插值 在上一篇的基础上扩展 曲线编辑,可用于不规则路线,N个2阶bezier 替代高阶,达到曲线插值 的额性能和速度平衡     BezierMgrEditor.cs using UnityEngine; using UnityEditor; using System; using System.Collections; using System.Collections.Generic; [CustomEditor(typeof(BezierMgr))] public class BezierMgrEditor : Editor { private SerializedObject m_Object; private SerializedProperty m_ShowWayPointInGame; private SerializedProperty m_IsTest; private SerializedProperty m_Id; //called whenever this inspector window is loaded public void OnEnable() { //we create a reference to our script object by passing in the target m_Object = new SerializedObject(target); m_ShowWayPointInGame = m_Object.FindProperty("showWayPoint"); m_IsTest = m_Object.FindProperty("isWayPointTest"); m_Id = m_Object.FindProperty("id"); } //called whenever the inspector gui gets rendered public override void...
梦想游戏人 发布于 7天前 阅读 10

UGUI的优点新UI系统三效率高效果好

UGUI的优点新UI系统三效率高效果好
大学霸 发布于 7天前 阅读 3

对动画过度参数Transition Duration的理解

        首先旧动画到新动画的过度是用has exit time进行控制的,如果没有勾选则为控制条件为真则转换,如果勾选则默认动画执行完才转换。之前对Transition Duration这个动画过度设置有理解的偏差,其实它的作用就是混合动画权重,用于自然的过度动画状态,比如如果是0,旧动画过度到新动画时在执行新动画时不会参杂任何旧动画的成分在里面,如果是0.25,会在新动画执行的时候有一个0.25s的旧动画到新动画的过度时间在里面,不会影响到新动画的执行。
gametodoN 发布于 1周前 阅读 5

关于unity3d动画设置参数延迟的问题

        今天在写动画状态过度的时候发现的一个问题,比如我们要做取消技能(动画)后摇时候可能会遇到,比如现在我们有两个动画状态A和B,通过一个bool类型值对他们之间进行转换,当bool类型为true时从A到B,当bool类型为false时候从B到A,两个过度状态都不勾选has exit time,我们测试在Start函数里面设置bool类型为true然后用invoke函数过个0.1s去把这个bool类型设置为false,按照我们之前的设想它应该会0.1s后返回动画B,但是其实它并没有,而是有一定的延迟。我们用动画去测试,我们的动画是0.66秒,0.4秒时候会出发攻击特效,但是我不过给invoke函数多少延迟让它去设置bool类型为false ,都不会按照我们的设想返回动画A,而且每次都把攻击特效发出去了。           刚开始测试的时候,我是在invoke函数里面不去设置动画bool类型为false,而是直接让它Play动画A,它是可以精确的执行的,比如invoke在0.39后设置攻击特效就不触发,但是在0.41设置就会触发攻击特效。但是这种方法不是我们想要的。后来想到了Animator.StringToHash这个方法,之前并没有体会到这个方法的用处,在这里深刻理解到了它存在的意义,如果我们用Animator.SetBool这个方法去设置bool类...
gametodoN 发布于 1周前 阅读 9

UGUI的优点新UI系统二 直观、易于使用

UGUI的优点新UI系统二 直观、易于使用
大学霸 发布于 1周前 阅读 4

曲线插值-N阶Bezier贝塞尔曲线生成

可用于赛道的生成,当然为了性能 和精度 可以几个低阶的bezier 合并起来作为一个完整的 public static List<Vector3> GetBezierPoints(List<Vector3> pathToCurve, int interpolations) { List<Vector3> tempPoints; List<Vector3> curvedPoints; int pointsLength = 0; int curvedLength = 0; if (interpolations < 1) interpolations = 1; pointsLength = pathToCurve.Count; curvedLength = (pointsLength * Mathf.RoundToInt(interpolations)) - 1; curvedPoints = new List<Vector3>(curvedLength); float t = 0.0f; for (int pointInTimeOnCurve = 0; pointInTimeOnCurve < curvedLength + 1; pointInTimeOnCurve++) { t = Mathf.InverseLerp(0, curvedLength, pointInTimeOnCurve); tempPoints = new List<Vector3>(pathToCurve); for (int j = pointsLength - 1; j > 0; j--) { for (int i = 0; i < j; i++) { tempPoints[i] = (1 - t) *...
梦想游戏人 发布于 1周前 阅读 11

Unity链接SqlServer数据库并进行简单的数据查询

1、我写的程序不需要数据库     写了好久的unity单机应用,终于鼓起勇气说服自己尝试连接数据库,并着手学习写网络应用了。谨以此纪念我不思进取的青春吧。     在unity中,数据的存储方式很多,但是最实用的仍然还是用数据库的方式。那么具体应该怎么操作呢?   2、我需要点什么     首先,我需要给自己的电脑装上SqlServer数据库。至于怎么下载和安装,请未来的我自己百度,这里不做赘述。     第二,我们安装好SqlServer之后,打开SqlServer配置管理器,启动如下服务。     第三,创建名为Test的数据库,创建一个Table_1的表,并添加一条数据为张三,如下图所示:     到此关于SqlServer方面的准备就已经做好了。     第四,既然是Unity的数据连接,当然需要你的电脑至少有Unity和VS啦。我这里用的版本是Unity2017和VS2017。   3、那么开始吧     首先,打开Unity,创建新工程。并在unity的安装路径下找到 System.Data.dll 文件。具体路径为 Unity安装路径\Unity\Editor\Data\Mono\lib\mono\unity\。将此文件复制到Unity工程Assets目录下。     这样就可以开始写脚本连接数据库对数据进行操作了,但是这样会存在一个问题,就是当程序发布...
落叶-归根 发布于 1周前 阅读 10

斗地主JAVA简要实现

import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.TreeSet; public class ddzDemo2 {     /**      * 斗地主--最终版      *       * @param args      *            定义牌 装牌 洗牌 发牌 看牌      */     public static void main(String[] args) {         // 按从小到大存放牌         HashMap<Integer, String> hmcard = new HashMap<Integer, String>();                  // 定义牌的序号         ArrayList<Integer> indexcard = new ArrayList<Integer>();                  String[] colorCard = { "♣", "♦", "♥", "♠" };         String[] digitCard = { "3", "4", "5", "6", "7", "8", "9", "10", "J",                 "Q", "K", "A", "2" };         // 装牌         int index = 0;         for (String d : digitCard) {             for (String c : colorCard) {                 hmcard.put(index, c.concat(d));                 ind...
xxj123gogo 发布于 2周前 阅读 23

图片要转PDF文件该怎么去转

    大家每天都要面对不同的文件格式,为了方便于工作和学习,进行文件格式的转换是很有必要的,尤其是图片转换成PDF文件格式,那么快速将图片转换为PDF格式的方法有哪些?这是很多人都想要了解的,接下来就一起来学习下吧!     今天小编就给大家介绍一款优秀的转换器——图片转pdf转换器。大幅改进图片的解析算法,成功地对文件的转换效果进行了大幅提升。 图片转pdf转换器http://dl.pconline.com.cn/download/354031.html 是专业的转换软件,它不仅拥有极强的文本识别功能,而且界面简洁、操作简单,用户只要下载到PC端就能轻松上手操作。没有繁琐的步骤,无需任何专业知识。     下面是图片转换成PDF文件的步骤:     第一步:下载安装"​迅捷图片转pdf转换器";     第二步:双击软件快捷图标,运行软件;     第三步:选择“图片转pdf”按钮;     第四步:批量添加图片;     第五步:选择是否将图片合并成一个PDF文件,开始转换。        以上就是小编跟大家推荐的转换方法,根据步骤进行操作,这样就可以快速将图片转换为PDF文件了,非常的简单方便! ​...
dayu444 发布于 2周前 阅读 4

游戏中的加密算法

游戏的中常见的加密方式介绍,以及优缺点详解
wier 发布于 2周前 阅读 825 评论 14 点赞 1

H5游戏引擎整理

一、LayaAir 官网地址:https://www.layabox.com/ LayaAir是HTML5开源引擎 提供Canvas和Webgl同时渲染,如果Webgl不可用,则可自动切换到Canvas模式。引擎为高性能游戏设计,支持AS,TS,JS三种语言开发,一套代码三端齐发(Flash,HTML5,APP)。 LayaAir特点 极致性能 LayaAir优先使用webgl渲染,如果webgl不可用,自动无缝转为canvas渲染,引擎设计过程中处处以性能为优先原则,LayaAir是为裸跑而设计的HTML5引擎。 轻量易用 LayaAir API设计上追求精简,简单易用,上手容易,引擎本身非常注意自身大小,是目前同等功能最小的HTML5引擎。 支持多语言开发 LayaAir同时支持ActionScript3、TypeScript、JavaScript三种语言开发HTML5 功能齐全     同时支持2D,3D,VR、时间轴动画,缓动、UI系统、粒子动画、骨骼动画、物理系统等 提供可视化辅助开发及工具流 LayaAirIDE提供代码开发工具及可视化编辑器,清晰的工作流,让美术,策划,程序紧密配合,提高开发效率 开源免费 引擎全部开源并托管到github,并且全部免费使用,包括商用     更多: 图片识库整理 树结构节点关系图整理 Vue相关UI框架整理...
tianma3798 发布于 2周前 阅读 13

回合制-战斗机制-实现分析

记录一下,想到哪里写到哪里。 回合制游戏一般流程是 一定时间内等待玩家输入,服务器计算该回合战斗数据,客户端收到数据后进行画面表现。 以此循环到战斗结束. 设计难点在于服务器返回怎样的数据结构,既简单又实现方便,数据量小,等具备常规工程化的特点。   梦幻举例: 1.对于一些概率性的技能等,输出肯定是一个确定的,比如触发or未触发。 2.对于伤害数值,输出的是一个具体数字,包含暴击,等相关信息。 方案1: 数据格式如果基于招式(技能,平A也可以看做是一个技能)的话,那么每个可攻击单位的每次攻击行为的数据可能像这样 对于一次完整的战斗,可达20个单位,每个单位的每次攻击大约是 220字节,一个回合大约就是4kb的数据量,最大上限可能是9kb。对于一个10回合的战斗,将会是40kb,还没包括玩家信息召唤兽信息等数据 官网找的一个录像帮战5回合, 每个 回合攻击序列都是这样一个SkillAction数组,依次播放,这样做存在的问题。是如果有技能是和该攻击行为有交互,比如反震,那么就很棘手了。方案1 pass   方案2: 根据方案1的缺点,方案2做了如下改进,客户端参与战斗逻辑处理,对于数值,几率等是服务器发送的,其余都可以是本地产生的结果。就算出外挂...
梦想游戏人 发布于 3周前 阅读 9

C#序列化反序列化对象为base64字符串

之所以序列化为base64 字符串 方便传输,可存储在本地 也可以是服务器   public class Serializer { private Serializer() { } public static string Serialize<T>(T obj) { try { IFormatter formatter = new BinaryFormatter(); MemoryStream stream = new MemoryStream(); formatter.Serialize(stream, obj); stream.Position = 0; byte[] buffer = new byte[stream.Length]; stream.Read(buffer, 0, buffer.Length); stream.Flush(); stream.Close(); return Convert.ToBase64String(buffer); } catch (Exception ex) { Debug.LogError(" Serialize error " + ex.Message); return null; } } public static T Deserialize<T>(string str) { T obj = default(T); try { IFormatter forma...
梦想游戏人 发布于 3周前 阅读 8

图解LZ77压缩算法

数据压缩是一个减小数据存储空间的过程,目前被应用在软件工程的各个地方,了解其一些原理,方便我们更好的甄选压缩方案。
wier 发布于 3周前 阅读 3355 评论 7 点赞 15

图解LZ77压缩算法

数据压缩是一个减小数据存储空间的过程,目前被应用在软件工程的各个地方,了解其一些原理,方便我们更好的甄选压缩方案。
wier 发布于 3周前 阅读 3355 评论 7 点赞 15

游戏服务器架构演进(完整版)

王者荣耀技术分析第三篇,服务器架构模型分析...
wier 发布于 1个月前 阅读 6563 评论 37 点赞 19

73款阿里巴巴开源软件详解!

详细解读阿里巴巴开源技术,包括框架、组件、引擎、数据库/存储、平台/系统、解决方案、工具、中间件、Web Sever、设计等十大类73款!
阿里巴巴

从王者荣耀聊聊游戏的帧同步

通过王者荣耀,我们来聊一聊帧MOBA游戏的技术实现以及同步方式
wier 发布于 2个月前 阅读 8064 评论 58 点赞 36

有趣的二进制—高效位运算

位运算是一种比较特别的数学运算。一般情况下,位运算的运算效率比加减乘除等常规数学运算要高得多。此外,位运算具备一些常规数学运算所没有的特点和规律,我们可以利用位运算的相关特性来完成一些非常巧妙的程序设计。
wier 发布于 5个月前 阅读 3183 评论 29 点赞 6

有趣的二进制

优秀应用算法都大量用到位运算,而位运算在工作中很少用到,所以借助其算法,我们看一下位运算的优势以及应用,但是大多数教材只会教大家二进制和十进制如何互换,都是死记硬背式的,并没有去讲解真正含义,换一个进制之后,依然不会,我们回到最根本的一些计数方法上,从10进制来推算,希望用一种更简单的方式介绍其原理
wier 发布于 5个月前 阅读 5103 评论 22 点赞 11

WinformGDI+入门级实例——扫雷游戏(附源码)

本文将作为一个入门级的、结合源码的文章,旨在为刚刚接触GDI+编程或对相关知识感兴趣的读者做一个入门讲解。游戏尚且未完善,但基本功能都有,完整源码在文章结尾中。
穆翔 发布于 11个月前 阅读 1462 评论 4 点赞 1

几款 Pokémon Go 开源项目介绍

Pokémon Go是由任天堂发布的增强现实(AR)游戏,一经推出,火遍全球,收获众多玩家。想必很多只猿,也沉浸其中。在这里,介绍几款 Pokémon Go开源项目,感兴趣的猿,可以尝试尝试。
催呀催呀 发布于 1年前 阅读 5656 评论 14 点赞 3

Xgame 合服工具技术设计文档

这是一篇介绍“合服工具”的技术文档;合服工具代码可以参考:https://git.oschina.net/afrxprojs/xgame-php_tool,注意:合服工具使用 PHP 语言开发!为什么使用 PHP,我后面会简要说明;该文档的主要目的是说明开发“合服工具”的思维过程,而不仅仅是使用说明!技术文档的价值在于过程而不是结论;我假定你对游戏行业的技术岗位工作有所了解。如果你亲身参与过游戏合服工作,这篇文档阅读起来可能会比较轻松;这是一篇不合规范的文档,所有符合规范的文档,没有人喜欢读……该文档以“轻松、易读、实用”作为规范;
hjj2017 发布于 2年前 阅读 1052 评论 3 点赞 2

C#程序员整理的Unity 3D笔记(十五):Unity 3D UI控件至尊–NGUI

目前,UGUI问世不过半年(其随着Unity 4.6发布问世),而市面上商用的产品,UI控件的至尊为NGUI:影响力和广度(可搜索公司招聘Unity 3D,常常能看到对NGUI关键词)。 NGUI虽然不是Unity 官方原生的,但以其强大的能力和友好的操作性,成为了事实上的王者—-无他,OnGUI太挫了。
王文刚_AR_VR 发布于 2年前 阅读 15143 评论 4 点赞 7 打赏 1

C#程序员整理的Unity 3D笔记(十三):Unity 3D基于组件的思想

如果你接触过《设计模式》、软件架构的编程思想,就会知道优秀的设计准则:“组合优于继承的”。 这句话很简短,但开始学习OOP的时候,真切的是—-不太好理解(以我个人当初学习为例)。
王文刚_AR_VR 发布于 3年前 阅读 1988 评论 4 点赞 2

网络版五子棋(Nodejs+socket.io)

这是刚学Node的时候写的,很久了,虽然比较简陋,也许还有BUG,但总归也是作品,也提交上来充个数吧,项目地址:http://git.oschina.net/scgywx/five-chess/ 简介 NodeJS + Socket.io开发的网络版五子棋,类似QQ游戏的五子棋,有大厅、用户列表、房间、聊天等功能。 安装 1、下载源代码,安装socket.io 2、运行服务端, 进入server目录,执行node index.js 3、使用http server(nginx或apache)将目录指向client目录(需要访问图片,html等文件) 4、修改服务器IP和端口(分别位于index.html第70,87,88行) 5、访问index.html即可 图片
呵大官人 发布于 3年前 阅读 2954 评论 10 点赞 4

Lua脚本怎么样调用外部脚本?

Lua脚本在游戏中的应用
borey 发布于 3年前 阅读 6704 评论 14 点赞 2

第一个libgdx程序--仿别踩白块

唉,从想到做拖了很久 ==||
贺路的路 发布于 3年前 阅读 4443 评论 6 点赞 2

【深入Cocos2d-x】使用MVC架构搭建游戏Four

基于Cocos2d-x2.2.3框架,并使用MVC架构,搭建了游戏Four。提供了相应的源代码,apk文件等等,希望您在GitHub上Star这个项目。
王选易 发布于 3年前 阅读 10148 评论 12 点赞 15

2048 C++源代码by Reason

2048 C++实现 源代码
ChenReason 发布于 3年前 阅读 9933 评论 27 点赞 23

开源游戏 “Elvish Bird”

这是一个纯javascript语言开发的自虐、冒险、死磕类游戏,它的名字叫“Elvish Bird”,主体开发了5个工作日,内部含有全部的代码。希望大家学习学习。运行这款游戏可以在IE8以上浏览器运行。运行时如果屏幕分辨率不兼容,你可以缩放到最佳显示效果。
BruceWan 发布于 3年前 阅读 3620 评论 15 点赞 11

开源游戏 “打飞机”

这是一个纯javascript语言开发的射击类游戏,它的名字叫“打飞机”,主体开发了4个工作日,内部含有全部的代码。希望大家学习学习。运行这款游戏可以在IE8以上浏览器运行。运行时如果屏幕分辨率不兼容,你可以缩放到最佳显示效果。
BruceWan 发布于 4年前 阅读 9697 评论 62 点赞 58

【笔记】试玩 cocos2d-x-3.0beta on android

[cocos]: http://www.cocos2d-x.org/ [sdk]: http://developer.android.com/sdk/index.html [ndk]: http://developer.android.com/tools/sdk/ndk/index.html [ant]: http://ant.apache.org/ [python]: http://www.python.org/ [javase]: http://www.oracle.com/technetwork/java/javase/downloads/index.html?ssSourceSiteId=ocomen # 试玩 cocos2d-x-3.0beta on android ## 1 环境准备 * [Cocos2d-x][cocos]: v3.0beta * [Android SDK][sdk]: Revision 22.3(SDK Tools) * [Android NDK][ndk]: Revision 9c * [Apache Ant][ant]: 1.9.3 Released * [Python][python]: 2.7.6 Android SDK Manager: ![][1] ps: 这次儿我把环境都提升到了最新状态,除了[Java][javase]仍为jdk-7u45。 ### 1.1 前提说明 1. 首先,以下都是在Win7 32位上操作的。 2. 其次,这里假设上述环境都安装在了E:盘。 ### 1.2 配置环境变量 ANDROID_SDK_ROOT = E:\android-sdk-windows NDK_ROOT = E:\android-ndk-r9c ANT_HOME = E:\apache-ant-1.9.3 PY_HOME = E:\Python27 JAVA_HOME = C:\Program Files\Java\jdk1.7.0_45 NDK_TOOLCHAIN_VERSION = 4.8 `ANDROID_SDK_ROOT`太长了,可以另外设个: SDK_RO...
加壹 发布于 4年前 阅读 7411 评论 4 点赞 4

OpenGL超级宝典笔记——深度纹理和阴影

之前我们介绍过简单的把物体压平到投影平面来制造阴影。但这种阴影方式有其局限性(如投影平面须是平面)。在OpenGL1.4引入了一种新的方法阴影贴图来产生阴影。 阴影贴图背后的原理是简单的。我们先把光源的位置当作照相机的位置,我们从这个位置观察物体,我们就知道哪些物体的表面是被照射到(被光源看到)的,哪些是没有被照射到(被遮挡住)的(在某个方向上离光源最近的表面是被照射的,后面的表面则没有被照射到)。我们开启深度测试,这样我们就可以得到一个有用的深度缓冲区数据(每一个像素在深度缓冲区中的结果),然后我们从深度缓冲区中读取数据作为一个阴影纹理,投影回场景中,然后我们在使用照相机的视角,来渲染物体。 光源视角 首先我们把视角移到光源的位置。我们可以通过glu库的辅助函数: gluLookAt(lightPos[0], lightPos[1], lightPos[2], 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f); 把光源的位置设置为观察的位置。 为了以最佳的方式利用空间来产生阴影贴图。从光源的角度看过去的透视可视区域要适应窗口的比例,且透视的最近平面位置是里光源最近的物体的平面,最远的平面位置是离光源最远的物体的平面。这样我们就可以充分的利用场景的信息来填充深度...
Mario_Q 发布于 4年前 阅读 10988 评论 7 点赞 13
顶部