最新 | 最热门 | 最高评价

+0  预制件和对象集的管理

Tag: ECS | 游戏开发
云风 发于 2021年08月20日 16:23 | 点击: 476 | 展开摘要
最近在用自研引擎开发项目时,发现了一些问题。在解决问题的同时,也逐步对之前的设计做了一些调整。一开始只是一些小修复,慢慢的发展成了大规模的代码重构。

最开始源于我重新设计了 ECS 框架。在新设计下,可以用 C/Lua 混合组织数据。为未来优化热点做好准备。我们借此机会重新思考了 ECS 框架下应该如何组织代码的问题。发现一个关键点就是,要尽量去掉系统中对象之间的引用关系。每类对象最好是成组分批的处理业务,每个模块都只做最简单的事情。但同一件事情尽量处理更多的数据、对象。

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

+0  fbx 到 gltf 转换问题

Tag: 游戏开发
云风 发于 2021年03月22日 16:02 | 点击: 484 | 展开摘要
我们的游戏引擎采用的资源格式是 gltf 2.0 。

gltf 在这几年发展很迅猛,我认为是 3d 文件格式中标准化做的最好的一个。可惜,游戏行业中,美术创作人员常用的 max maya 等工具对其支持还有瑕疵。Autodesk 在 2019 年作为 contributor 成员加入了 Khronos 组织,在 max maya 这些 Autodesk 工具中看到官方的 gltf 支持应该不会等太久。来自官方的消息 ,‎在 2020 的 3 月底,gltf

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

+0  粒子系统中的材质组织

Tag: 游戏开发
云风 发于 2020年12月04日 11:32 | 点击: 323 | 展开摘要
粒子系统中,势必会引入多种材质。要么按材质分为不同的管理器对象,要么把所有粒子片放在一个管理器下,但增加材质的属性。

如果是前者,即使粒子的其它属性都有共性,也无法一起处理;而后者,则涉及材质分类的问题。

我们不大可能在渲染阶段无视粒子的材质属性,每个粒子片都单独向渲染器提交材质。因为无论是面片粒子,还是模型粒子,都应该批量提交粒子的空间结构数据,然后一次渲染。如果粒子是面片,那么就应该把一组粒子的顶点信息组织在同一个顶点 buffer 中;如果粒子是模型,就应该把每个个

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

+0  粒子管理器的 C++ 封装

Tag: ECS | 游戏开发 | 语言与设计
云风 发于 2020年11月27日 23:09 | 点击: 396 | 展开摘要
这篇接着上一篇 粒子系统的设计。

TL;DR 在花了一整个晚上用 C++ 完成了这一块的功能后,我陷入了自我怀疑中。到底花这么多精力做这么一小块功能有意义么?强调类型安全无非是为了减少与之关联的代码的缺陷,提高质量;但代码不那么浅显易懂却降低了质量。

我们用 C 实现了一个基于 ECS 结构的粒子系统的管理器,代码 psystem_manager.h 在这里。

先来回顾一下设计:在这个粒子系统中,我期望把粒子对象的不同属性分开管理。

即:传统的面向对象的数据结构中,一

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

+0  有限与无限的游戏

Tag: 生活 | 阅读 | 游戏
Yu Feng 发于 2020年01月08日 16:13 | 点击: 437 | 展开摘要
原创文章,转载请注明: 转载自系统技术非业余研究
本文链接地址: 有限与无限的游戏

有限的游戏,其目的在于赢得胜利;无限的游戏,却旨在让游戏永远进行下去。
Post Footer automatically generated by wp-posturl plugin for wordpress.

The post 有限与无限的游戏 first appeared on 系统技术非业余研究.

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

+0  新游戏模式的思考

Tag: 随想 | 出海 | 商业模式 | 游戏
Luke Fan 发于 2019年04月06日 10:05 | 点击: 394 | 展开摘要
这里所说的游戏主要是电子游戏。也就是由计算机,游戏机以及手机给大家提供的游戏方式。
最早的游戏可能是由程序员的爱好,或者是梦想,或者是其他的东西所产生的。但随着计算设备运算能力的不断增加,以及电子游戏这种商业模式逐渐被整个社会所接受。这种完全由业余爱好或者仅仅是依靠理想与热情来产生的游戏,已经越来越远离我们。现在的绝大多数游戏都是一种主要由商业利益所驱动的产物。
到底是什么在影响游戏的模式呢?主要是游戏发行的环境,以及游戏发行平台的各种规则。当然,作为一种可以进行自由竞争的商

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

+0  设计了一个数据格式

Tag: 游戏开发 | 语言与设计
云风 发于 2019年01月31日 14:06 | 点击: 4851 | 展开摘要
最近一段时间在忙着设计和实现我们游戏引擎用到的数据格式。

在此之前,我们一直在直接使用 lua 描述数据;但最近随着数据类型系统的完善,同事建议设计一种专有数据格式会更好。希望专用格式手写和阅读起来能比 lua 方便,对 diff 更友好,还能更贴近我们的类型系统,同时解析也能更高效一些。lua 的解析器虽然已经效率很高,但是在描述复杂数据结构时,它其实是先生成的构造数据结构的字节码,然后再通常虚拟机运行字节码才构造出最终的数据结构。这样的两步工作会比一趟扫描解析构造要慢一

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

+0  粒子系统的设计

Tag: 游戏开发
云风 发于 2019年01月09日 16:44 | 点击: 2573 | 展开摘要
因为需要为我们的 3d engine 添加特效系统的模块,我最近读了一篇文章:Efficient CPU Particle Systems 。文章的作者为很多 MMO / MOBA 游戏设计过粒子系统,其中最有名的是上古卷轴 Online 。所以我认为他的实践很有参考价值。

文章很长,夹杂着设计思路,优化,算法实现,渲染实现。对于我来说,由于过去我做过好几版粒子系统,所以读起来不太费力,很多细节可以直接略过,我今天写一篇 blog 把我认为文章中对我最有参考价值的部分列出来

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

+0  一种 16 倍抗锯齿字体渲染的方法

Tag: 算法 | 游戏开发
云风 发于 2019年01月08日 18:01 | 点击: 2486 | 展开摘要
昨天读了几篇文章,讲解了一种新的抗锯齿字体渲染的方法 。

我觉得颇有意思,就试着实现了一版 CPU 版本,想看看针对中文的效果。虽然最后觉得这个算法对游戏领域的实用性不大,不过还是挺有启发的。这里写写我对这个算法的理解,以及我所理解的算法局限性。

原文讲解的非常细致,还配了不少图片,我就不再重复了,只简单说两句。

我认为发明这个算法的动机是 “Our UI has a lot of smooth animation, text should be able to mov

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

+0  ECS 中的 Entity

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

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

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

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

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

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

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

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

+0  lockstep 网络游戏同步方案

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

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

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