最新 | 最热门 | 最高评价

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

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

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

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

+0  Tag set 的数据结构优化

Tag: ECS | 算法
云风 发于 2021年07月27日 10:44 | 点击: 431 | 展开摘要
在最近实现的 ECS 库中,Tag 是一种非常重要的数据结构。它是一类特殊的 Component ,不携带数据,但会关联到同一 Entity ,最重要的用途是用于筛选。我在设计 Comonent 的数据结构时,采用了一种简单的数据结构 。它采用连续内存储存的数组,按 Entity id 有序排列。并在查询算法上做了一些优化,可以使得大部分查询时间小于 Log(N),接近常量时间。

但是,这样做的代价是插入和删除操作都是 O(n) 的。为了避免大量的插入删除操作堆积在一起时,

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

+0  ECS 模型下的处理模式

Tag: ECS
云风 发于 2021年07月19日 18:11 | 点击: 508 | 展开摘要
最近在公司内做了一次两小时的分享,介绍了一下我最近几年对 ECS 模型的一些想法以及最近在项目中的应用心得。

我分享的主题不叫 ECS ,而用了一个更宽泛的名字 Data oriented design 。因为我不想局限在 Entity Component System 这些具体名词上。从 wikipedia 上看 ,DOD 的提出是源于游戏软件对性能的追求,
它主要围绕的都是其数据在内存中的组织形式不同。和 C++ 这类可以直接控制对象内存布局的 OOP 的语言的默认布局

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

+0  缓存在 Lua 中的配置表

Tag: ECS | lua与虚拟机
云风 发于 2021年06月09日 20:00 | 点击: 346 | 展开摘要
最近在尝试做一个类似异星工厂的游戏原型。由于最终希望在内存有限的手机上运行,所以不得不考虑内存如何有效利用的问题。

这是因为,我在玩异星工厂(加上一些 mod )时,发现 PC 内存能占到 10G 以上,且这些内存大部分都不是图像资源,是实打实的逻辑数据。我稍微估算了一下,在一些内容丰富的 mod 中,游戏内的对象能够达到数十万,甚至上百万之多。用传统方法使用的内存势必以 G 计算。

如果希望同样的逻辑跑在手机上,我希望把逻辑数据控制在 500M 之下。除了从游戏玩法做做

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

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

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

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

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

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

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

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

+0  粒子系统的设计

Tag: ECS | 语言与设计
云风 发于 2020年11月20日 16:28 | 点击: 279 | 展开摘要
这几天在重构引擎中的粒子系统。之前用 lua 做了个原型,这次用 C/C++ 重新实现一次。目前还是基于 CPU 的粒子系统,今后有必要再实现基于 GPU 的版本。

去年写过一篇 blog 也是谈粒子系统的 。 思路大致类似,但这次在数据结构的细节上做了一些专门的设计,有觉得还有点意思,值得写写。

首先,粒子对象本身就是一个集合了多种数据的数据块。我限制了同时最多 64K 个粒子片,这些粒子对象可以放在一块连续内存中,并且可以用 16bit 的 id 进行索引。

当粒子

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

+0  新的工作和研究方向

Tag: 杂七杂八 | 生活 | ECS,弹性计算
Yu Feng 发于 2018年01月05日 14:04 | 点击: 1644 | 展开摘要
原创文章,转载请注明: 转载自系统技术非业余研究

本文链接地址: 新的工作和研究方向

和大家更新下:

做了将近8年数据库后,我的工作和研究方向将会延伸到虚拟化和计算相关的云服务,希望能够和大家一起进步,Happy New Year!

预祝大家玩得开心!

 

 

Post Footer automatically generated by wp-posturl plugin for wordpress.

查看全文: http://www.udpwork.com/item/16593.html
|<<<1>>>| 一共1页, 7条记录