最新 | 最热门 | 最高评价

+0  ECS 中的 Entity

Tag: 游戏开发 | 语言与设计
云风 发于 2018年11月30日 16:04 | 点击: 305 | 展开摘要
我认为 ECS 框架针对的问题是传统面向对象框架中,对象数量很多而对象的特性非常繁杂,而针对对象的不同方面 aspect 编写处理逻辑会非常繁杂。每个针对特定的方面执行业务,都需要从众多对象中挑选出能够操作的子集,这样性能低下,且不相关的特性间耦合度很高。

所以 ECS 框架改变了数据组织方式,把同类数据聚合在一起,并用专门的业务处理流程只针对特定数据进行处理。这就是 C 和 S 的概念:Component 就是对象的一个方面 aspect 的数据集,而 System 就是

查看全文: http://www.udpwork.com/item/17223.html

+0  动作游戏中的击打判定

Tag: 游戏开发
云风 发于 2018年09月20日 16:26 | 点击: 548 | 展开摘要
最近在玩怪物猎人世界,断断续续差不多 100 小时了,加上之前花在这个系列上的几百小时,不敢说是个老猎人,忠实粉丝还是算得上的。

因为职业原因,我又琢磨了一下这类游戏的实现方法。在网上搜不到太多直接资料,所以这篇 blog 更多的是对自己的想法的记录。这次主要还是想理解一下游戏中是如何处理武器和怪物之间的击打判定的。

我知道动作游戏和格斗游戏侧重点不同,但也有类似之处。格斗游戏尤其是 2D 格斗游戏资料比较全,制作方法成熟,从网上能找到不少资料介绍原理。浅谈格斗游戏的精髓

查看全文: http://www.udpwork.com/item/17094.html

+0  lockstep 网络游戏同步方案

Tag: 游戏开发
云风 发于 2018年08月31日 11:27 | 点击: 805 | 展开摘要
今天想写写这个话题是因为上周我们一个 MOBA 项目抱怨 skynet 的定时器精度只有 10ms (100Hz),无法满足他们项目 “帧同步” 的需求。他们表示他们的项目需要服务器精确的按 66ms 的周期向客户端推送数据,而 skynet 只能以 60ms 或 70ms 的周期触发事件,这影响了游戏的“手感” 。

讨论下来,我认为,这是对所谓“帧同步” 算法有什么误解。我们客户端运行时不应该依赖服务器的准时推送消息才能得到(手感)正确的结果。虽然在 skynet 下你可

查看全文: http://www.udpwork.com/item/17036.html

+0  虚拟文件系统的自举

Tag: 游戏开发
云风 发于 2018年08月16日 11:43 | 点击: 731 | 展开摘要
我们给游戏引擎设计了一个虚拟文件系统,可以挂接不同的文件系统实现,比如本地文件系统模块,内存文件系统模块,网络文件系统模块。比如前几天谈到的资源仓库,就是一个文件系统模块。

这个虚拟文件系统是用 lua 编写的,这就有了一个小问题:lua 代码本身也是放在虚拟文件系统中的,那么就需要解决自举。这些代码很有可能需要从网络更新(网络文件系统模块),而网络模块也是 lua 编写的,代码同样放在这套文件系统内。

这篇 blog 我想谈谈自举是怎样完成的。

首先我不想做的太复杂。

查看全文: http://www.udpwork.com/item/17004.html

+0  Lua 虚拟机的封装

Tag: lua与虚拟机 | 游戏开发
云风 发于 2018年08月15日 16:06 | 点击: 712 | 展开摘要
我打算就我们在开发客户端引擎框架时最近遇到的两个问题写两篇 Blog ,这里先谈第一个问题。

我们的框架技术选型是用 Lua 做开发。和很多 C++ 开发背景(现有大部分的游戏客户端引擎使用 C++ 开发)的人的认知不同,我们并不把 Lua 作为一个嵌入式脚本来看待,而是把它当成一种通用语言来设计整个引擎框架。

其实这更接近 HTML5 流行之后,用 javascript 设计游戏引擎框架:虽然 javascript 的虚拟机本身是用 C++ 开发的,但和游戏引擎相关的部

查看全文: http://www.udpwork.com/item/17003.html

+0  游戏资源仓库及升级发布

Tag: 游戏开发 | 语言与设计
云风 发于 2018年08月15日 11:20 | 点击: 701 | 展开摘要
去年底,我为我们的 3d engine 设计了资源仓库的结构。

随后交给开发组的一个同学实现,这半年来,一直在使用。最近做了引擎一个小版本的内部验收,我感觉这块东西还有比较大的改进余地。因为资源文件系统目前和开发期资源在线更新部分现在掺杂在一起,而网络更新部分似乎还有些 bug ,偶尔会卡住。我觉得定位 bug 成本较高,不如把这块重新实现一遍,顺便把新的改进想法加进去。

这段时间,我重新思考了资源仓库应该怎样设计更合理。越细想越觉得和 git 要解决的问题基本一致。我们

查看全文: http://www.udpwork.com/item/17002.html

+0  通过斜切变换 2d sprite 提高装箱率

Tag: 游戏开发
云风 发于 2018年01月19日 17:05 | 点击: 1311 | 展开摘要
现代 2d 游戏的图形地层绝大多数也是基于 3d api 实现的。为了提高性能,通常要把若干图元 (sprite) 装箱在整张贴图中。这个装箱过程可以是在线下完成,也可以是在运行期来做。

TexturePacker 就是做这件事的优秀商业工具。不过我认为把它放在开发工具链中还有一些不足。图元的装箱和根据装箱结果合成贴图是两件事情,如果我们是手工操作,合在一起完成当然方便;但如果是在自动化流程中,分开独立完成更好。因为迭代开发过程中,每次重新打包资源,都只会修改少部分图元,且

查看全文: http://www.udpwork.com/item/16607.html

+0  资源文件系统的设计

Tag: 游戏开发
云风 发于 2017年12月20日 11:47 | 点击: 1025 | 展开摘要
上次说到,我们的引擎打算在 PC 上开发,设备上直接调试。如果是按传统的开发方式:运行前将 app 打包上载然后再运行,肯定是无法满足开发需要的。所以必须建立一套资源的同步机制。

目前,我们已经实现了基本的资源文件系统,大致是这样工作的:

所有的资源文件,包括程序代码本身(基于 Lua),都是放在开发 PC 上的。开发环境会缓存每个文件的 md5 值,文件系统将用此 md5 值为标准,默认 md5 相同的文件,其内容也是一致的,暂不考虑 md5 冲突的问题。

在设备上,

查看全文: http://www.udpwork.com/item/16552.html

+0  近期在 bgfx 上做的一些工作

Tag: 我爱折腾 | 游戏开发
云风 发于 2017年10月26日 14:58 | 点击: 1067 | 展开摘要
这段时间玩 bgfx ,除了前段公布的 lua binding 外,还颇做了一些别的工作。

首先是帮 bgfx 的 directx 12 driver 打了补丁,使之可以用 mingw build 出来正确运行。也就是之前 blog 上提到的 Direct3D12 的接口设计 bug 。这个 pr 已经被官方接纳。

然后是我给 bgfx 的 debug text 做了中文的支持。 bgfx 专门做了一个层,模拟 VGA 的 text mode 。一开始我学着过去 dos

查看全文: http://www.udpwork.com/item/16475.html

+0  BGFX 的一个 lua 封装库

Tag: lua与虚拟机 | 我爱折腾 | 游戏开发
云风 发于 2017年10月21日 20:14 | 点击: 1321 | 展开摘要
前两年有同学给我推荐了 BGFX 这个库,第一眼被它吸引是它的口号:"Bring Your Own Engine/Framework" style rendering library 。这动不动就说自己是 3d engine 的时代,好好做好一个渲染库,仅仅做好渲染库,是多难得的一件事情。

今年国庆节的时候,偶然间我又翻到这个仓库,居然作者一直在更新。坚持了五年,一直在维护这么个小玩意,让我对这个项目多了点信心。节后我饶有兴趣的研究了一下它的代码。

现在我觉得,这个库的设

查看全文: http://www.udpwork.com/item/16467.html

+0  MMORPG 的同步设计

Tag: 游戏开发
云风 发于 2017年08月30日 16:23 | 点击: 1411 | 展开摘要
前段时间有一个友商来了一个技术团队到我公司交流,主要是想探讨一下他们即将上线的一款 MMORPG 游戏在内部测试中发现的网络卡顿问题是否有好的解决手段。

经过了解,卡顿主要是在压力测试中表现出的网络消息流量过大造成的,又没有找到合适的方案减少流量。

关于 MMORPG 的网络部分的设计,我之前写过很多 blog 。最近两年写过这样两篇:MMORPG 客户端的网络消息框架 、如何只基于请求回应模式实现 MMO 级别的场景服务 。

昨天,我们自己的一个 MMORPG 项目中

查看全文: http://www.udpwork.com/item/16398.html

+0  Paradox 的数据文件格式

Tag: 游戏开发
云风 发于 2017年08月08日 20:06 | 点击: 1377 | 展开摘要
Paradox 是我很喜欢的一个游戏公司,在所谓 P 社 5 萌中,十字军之王和钢铁雄心都只有浅尝,但在维多利亚和群星上均投入了大量时间和精力。

这些游戏基于同一套引擎,所以数据文件格式也是共通的。P 社开放了 Mod ,允许玩家来修改游戏,所以数据文件都是明文文本存放在文件系统中,这给了我们一个极好的学习机会:对于游戏从业者,我很有兴趣看看成熟引擎是如何管理游戏数据和游戏逻辑的。

据我所接触到的国内游戏公司,包括我们自己公司在内,游戏数据大都是基于 excel 这种二维

查看全文: http://www.udpwork.com/item/16338.html
|<<<1234567>>>| 一共10页, 109条记录