You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
Let me use Chinese first. Hopes the machine translation results are readable.
之前提到过,我准备把bot包和server包做成一个模块化的系统以方便使用。目前bot包还算比较成功,而server包的开发遇到了一点阻碍。
在用面向对象(OOP)思维方式编程时,我们会把跟一个对象相关的属性放在一起,例如我们很可能有一个
Player
对象:然后我们会把所有玩家放到一起:
Anyway, 这种方式并不适合用于组件化的开发框架。例如,当我想编写一个用于接收玩家动作、管理玩家位置的组件时,我会想把一个
Position
字段添加到Player
上,而这是做不到的。这时候其实可以使用标题中我提到的ECS模型了。这是非常适合对游戏世界建模的一种编程范式,面向数据而不是面向对象,我可以把之前的
Player
分解成多个组件使用(注意ECS中的“Component”已经和我前文提到的组件概念上完全不一样了)ECS可以极大地降低系统的耦合程度,使得可维护性增加,并还有包括CPU缓存友好等等好处。当然前提是我能正确地实现它。
我这两天正在学习理解和测试这种新的编程范式,并且十分确信这就是我们当前所需要的东西。依靠这种新的思想,go-mc可以走得更远,未来甚至能实现一个全功能的生存服务器。
致有意向使用go-mc开发服务端的开发者:
可以开始了解和学习ECS了,我们很快就会有所实践!
我会尽量尝试兼容已有的组件,尽管可能需要做一些小修改,但请不要担心。
Beta Was this translation helpful? Give feedback.
All reactions