V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
lights
V2EX  ›  问与答

[找不到就问]游戏开发中的 ECS 经验请教?

  •  
  •   lights · 2021-01-04 16:29:40 +08:00 · 1599 次点击
    这是一个创建于 1448 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目前是游戏开发,公司采用 ECS 思想做架构,但参考 Entitas 与云风大佬的博客,会觉得我或者我所在的公司对 ECS 的理解有些不够
    云风大佬的博客分享的干货不少,但想问问还有没有更多的经验分享呀

    我遇到的具体问题:

    • Entity A 产生 Entity B,其中 EntityB 中的参数动态的收到 EntityA 中的参数影响,这个时候是应当做一个专门的 System 处理这种参数的影响么?然后夹在 A 的 System 与 B 的 System 中间调用?
    • ECS 中的订阅、分发消息机制应不应该有?(而不是更改 Component 的状态,再让 System 去执行)
    • ECS 编写后,策划是如何参与到 ECS 系统的构筑的?

    我所在的公司是 ECS 与 OOP 混合的做法,所以会有一些混乱

    *游戏开发的 ECS 与 ECS 云服务重名,spam 严重,很难在 V 站搜到,所以我特意加了 游戏 ECS *有没有专门的 ECS 开发交流群呀

    11 条回复    2021-01-05 11:56:26 +08:00
    opengps
        1
    opengps  
       2021-01-04 16:34:21 +08:00
    先往简单里理解,ECS 只是一台虚拟机。
    然后再往架构里理解,ECS 可以轻松的横向拷贝机器数量,来实现负载均衡下的动态增加承载量。
    云弹性架构,往简单里去理解,也就这么点东西,往复杂里理解,还可以延伸出很多云产品,这类问题可以跟我聊聊,上云的入门级问题我应该能答上来不少
    opengps
        2
    opengps  
       2021-01-04 16:35:39 +08:00
    看博客介绍,ECS 一词似乎有些歧义,对于 ECS 游戏框架和 ECS 云服务器,建议区分下
    lights
        3
    lights  
    OP
       2021-01-04 16:36:50 +08:00
    @opengps #2 标题中有游戏开发呀
    opengps
        4
    opengps  
       2021-01-04 16:43:56 +08:00
    @lights 好吧,无视我的 1#2#回复,我对游戏开发不在行,如果是 socket 通信层那么会有一点共同话题
    ryV60s
        5
    ryV60s  
       2021-01-04 17:19:04 +08:00
    1. 你说的参数应该是个单独的 Component,只需要一个单独处理这个 Component 的 System 就行
    2. ECS 的 System 就有点类似订阅和分发了,有它自己的执行顺序
    3. 策划不懂 ECS
    lights
        6
    lights  
    OP
       2021-01-04 17:46:26 +08:00
    @ryV60s #5
    策划的部分,主要是我们是做 roguelike 游戏,需要策划调整数值和编排玩法,但 ECS 设计下的系统,不知道要在哪一部分让策划介入

    只是管理数值的话(表格管理 component 数值),太简单了,不够 rogue,而让策划编排 system,又感觉哪里不太对
    ryV60s
        7
    ryV60s  
       2021-01-04 18:15:52 +08:00
    @lights #6 策划只提需求,只配表,不会关心你们的具体实现,更不会去了解什么 System 。

    程序要做的只是把策划的需求细分,整理出不同的模块,做到能让策划随意组合起来用。
    (至于是配表组合还是单独写编辑器组合看策划需求了)
    Go1c
        8
    Go1c  
       2021-01-04 18:31:23 +08:00
    不说引擎的吗? unity 可以单独使用部分 dots 技术,逻辑 UI 还是面向对象要香。如果全套 ecs 的话 有点痛苦
    lights
        9
    lights  
    OP
       2021-01-05 09:33:51 +08:00
    @Go1c #8
    ECS 与游戏引擎是独立的呀
    levelworm
        10
    levelworm  
       2021-01-05 10:12:27 +08:00 via Android
    Google 里头一大把呀,搜 ECS game programming 好了
    lights
        11
    lights  
    OP
       2021-01-05 11:56:26 +08:00
    @levelworm #10
    啊,忘了这茬,我也搜一搜,感谢
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   881 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 20:48 · PVG 04:48 · LAX 12:48 · JFK 15:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.