同一 Entity 包含多个同类 Component 的问题 (blog.codingnow.com)

【简介】

ECS 中,同一个 Entity 是否可以由多个同类型的 Component 构成?在 Unity 中,答案是可以。我们的引擎在设计之初也是可以的。
当时有一个问题:在 Lua 中,如何访问同类型的 Component ?如果有多个同类 Component ,最自然的方式是把它们放在一个数组里。但是、绝大多数情况下我们用不上这个特性,每次访问 Component 都加一次 [1] 或 [0] 的数组索引显得画蛇添足。若单个 Component 不用数组,多个才用数组,写起来又有极大的心智负担。因为这样做,它们就成了两个不同的类型。
后来,我们干脆利用 Lua 的特性,把数组和 Component 本身放在一个 table 中。如果有多个 Component 就把这个数组直接放在第一个 Component 的 table 内。就这样用了一段时间后,最后还是受不了这个脏技巧。等到用 C 编写 luaecs 后,就砍掉了这个特性。

点击查看全文 >>

@技术头条 2023-02-12 14:00分享 / 原作者微博:@简悦云风 / 0个评论
赞过的人: @IT技术博客大学习
要不要再学学下面的文章?
短 ID hash 映射的问题 (blog.codingnow.com)
我们正在开发的游戏中,会用一个 id 来表示一个游戏对象到底是什么。比如,“铁片” 是 1 ,“煤” 是 2 ,“采矿机” 是 3 …… 这样,在运行时,C 代码可以根据对象的类型方便的查询对象的属性。而对象的属性则是用 Lua 配置好,在运行期不变的。例如每燃烧一个单位的“煤”,可以产生 100KJ 的热量;一箱“铁片”有 100 个。

为了在 C 和 Lua 间快速共享这些配置数据,我还专门写了一个 cache 模块 。

问题出在 ID 的持久化上。因为游戏中的物品种类并不是特别多,出于时间以及空间性能的考量,我把 ID 设计为 16bits 。64K 种物品种类的上限看起来足够了。但 ID 的分配却比较麻烦。
by @技术头条 2023-04-09 10:06 分享 查看详情
多年老司机,面对这些Go并发问题,也迟疑了 (colobu.com)
Go一向以它的简单易学而著称,我也遇到过同学说只需半天就能掌握Go语言了,两三年的Go开发经验就称专家了。

想比较Rust等编程语言,Go语言的确容易上手,查看Go语言的规范你也会看到,它的语言规范相比较其它编程语言非常的简短,的确可以一个小时就可以读完。但是如果你深入了解这门语言(其它语言也是类似情况),就会发现很多细节的地方,需要花谢心思和时间仔细琢磨琢磨。这不,我先来几道Go并发的源代码考考你,看看你能回答上来不?
by @技术头条 2022-12-18 20:08 分享 查看详情
Linux 下解决 grep is directory 问题 (droidyue.com)
Grep 是一个很便捷有用的终端工具,它可以帮助我们快速过滤筛选出一些内容。通常配合 find 命令,可以实现更加强大的能力。
但是我们在执行的时候,总会遇到这样的错误提示输出:grep: ./example/android/.gradle: Is a directory。
之所以出现这个问题,原因是 find . -name "*.gradle" 匹配到了 .gradle 目录,而使用 grep 只是单纯扫描这个目录(非包含内部文件)没有任何意义。
还在解决方法有很多,可以轻松规避这个错误输出。
by @技术头条 2022-08-18 23:30 分享 查看详情
Python爬虫requests爬取页面的编码问题 (www.ipcpu.com)
很多时候,我们发现,requests库返回的页面编码都是ISO-8859-1,需要指定为UTF-8才能正确读取。这是为什么呢?
by @技术头条 2022-08-18 23:10 分享 查看详情
SpringBoot解决跨域问题的3种方案! (mp.weixin.qq.com)
前后端分离大势所趋,跨域问题更是老生常谈,随便用标题去google或百度一下,能搜出一大片解决方案,那么为啥又要写一遍呢,不急往下看。
by @code小生 2022-08-14 09:25 分享 查看详情
解决https接口无法访问的问题 (blog.darkmi.com)
最近为我司系统接入某第三方服务,假设该第三方服务为W系统,使用https协议对外提供接口,访问W系统接口的时候,收到如下错误:
org.springframework.web.client.ResourceAccessException: I/O error on GET request for "https://open.wwww.com/api/device/status": Received fatal alert: protocol_version; nested exception is javax.net.ssl.SSLHandshakeException: Received fatal alert: protocol_versionat org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:746)at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:672)
根据日志提示,可猜测为SSL协议版本问题造成的异常。
by @技术头条 2022-07-31 23:56 分享 查看详情
Android 框架问题分析案例 - 谁杀了桌面? (androidperformance.com)
写这篇文章的契机是因为一个实际遇到的问题 , 这个问题其实不难 , 不过在分析了这个问题然后写日记的时候 , 我突然觉得这个问题分析的过程有必要记录一下 , 分享给大家 . 分析过程中有用到一些工具 , 一些方法 , 也从另外一个聪明的小伙伴梅明那里学到了一些分析技巧和工具的使用技巧 。
by @技术头条 2022-07-24 21:15 分享 查看详情
DDD 中的几个困难问题 (insights.thoughtworks.cn)
在做 DDD 的培训和工作坊时,会遇到来自客户或学员的疑问,有些问题值得我们深入思考。我整理了一些常见的问题,欢迎补充和讨论。结合 DDD 社区最近的讨论成果,这里我先给出一个简单的参考答案。
by @Thoughtworks 2022-07-14 11:05 分享 查看详情
层次组件的问题 (blog.codingnow.com)
最近思考了 ECS 框架中的一些问题。

具体业务中,有许多组件的构成非常复杂,本质上数据是有层次结构的。用一个二维表的结构很难清晰表述。它还牵扯到另一个问题:是否需要支持一个实体有多个统一类型的组件。例如,玩家实体身上多个装备栏、多个技能 Buf 该如何表达?
by @技术头条 2022-06-19 19:22 分享 查看详情
一款SQL检查审核神器!再也不担心写SQL出问题了 (mp.weixin.qq.com)
今天要分享的这款工具是一个和SQL相关的开源神器,它可以在一定程度上解决运维和开发之间常见的痛点一环(相信可能有小伙伴也有所体会),对于开发和运维来说也算是一种福音。
by @code小生 2022-05-15 09:50 分享 查看详情