1作者: meehai10 天前原帖
你好,在过去的一个月里,我对ECS(实体组件系统)学习了很多。 我目前正在从零开始开发一个机器人模拟器(使用Python和Raylib),由于缺乏游戏开发经验,我采用了“完全面向对象编程”的方式。我的场景对象(SceneObject)有很多继承的接口(例如,Collidable、Movable等),这些接口在运行时被继承并固定。 主循环不可避免地变成了: ```python for scene_object in sim.scene_objects: scene_object.update(...) for scene_object in sim.scene_objects: scene_object.draw(...) ``` 结果发现,如果场景对象数量很多,这可能会成为瓶颈,因为计算机喜欢连续的内存来进行缓存、物理计算/数学向量化等。 最近我学习了更多关于ECS的知识,开始在一个沙盒环境中进行一些实验,将update()函数转变为ECS。我的想法是将数据存储在列式的numpy数组(组件)中,并进行许多数据结构优化,以便快速查询场景对象和快速访问,例如: ```python qr = scene.query(HasMotion, HasPosition) # 查询结果像一个形状为(N, ...)的numpy数组 qr.position += ... # 像numpy一样操作/向量化 ``` 无论如何,这个独立库只需要Python和numpy。Raylib仅用于渲染,但原始数据结构并不需要它。 我希望能得到一些反馈,比如它缺少什么,或者在模拟器开发过程中我可能会遇到的陷阱。 作为一个小插曲:我把Claude当作“工程经理”,我自己编写代码,它负责代码审查、任务管理和测试(对于边缘案例非常有用)。 [1] [hytale的ECS视频(适合初学者)](https://www.youtube.com/watch?v=qglU107_DA4) [2] [Casey Muratori关于游戏行业第一个ECS的最新视频](https://www.youtube.com/watch?v=73Do0OScoOU)
2作者: anonymous-bear10 天前原帖
从小我就被开了兴奋剂来“治疗”严重的注意力缺陷多动症(ADHD)。当时我大约7岁,根本不知道发生了什么,也从未真正质疑过这一切。快进18年:经过大量的自我反思,我很高兴地说我并不处于我想要的状态。 兴奋剂是有代价的。 我逐渐意识到,患有ADHD的人通常是: - 观察力强 - 社交能力好 - 通才 我也注意到自己是: - 专才 - 僵尸 - 反社交 “锁定”= 专才。 我讨厌专业化。它很脆弱。历史上,通才一直占据主导地位。企业家是通才。我想成为一名企业家。 我现在在一份工作中,软件工程师。我常常在想,如果我停止使用兴奋剂,我该怎么办?我对自己现在的生活完全不满意。我会找到摆脱这种状态的方法。 我并不是一个内向的人,但我却像一个内向者一样成长。这种感觉很孤独,看到别人社交却奇怪地感到格格不入。 我通过反复试验确认了这一切。停止使用兴奋剂,再重新开始。 在20多岁时发现自己与想象中的完全不同,真是一种奇怪的体验。 当你第一次以原始的视角看待世界时,它变得美丽。食物的味道变得美妙。时刻变得神奇而强大。让人发笑并进行深入交谈的感觉令人愉悦。我不相信有很多人能如此突然地体验到这种差异。