我正在考虑编写基于Dart的浏览器游戏。我喜欢将核心游戏逻辑与客户端渲染和事件处理代码分开。这样我就可以在多人游戏系统中的服务器Dart VM端运行相同的逻辑代码。这就是今天许多游戏所做的事情(例如Quake系列):即使您玩单人游戏,您也拥有本地服务器。
所以在我的场景中:
逻辑隔离向主线程循环发送关于游戏事件的消息(如游戏对象的状态正在更新,地图更改等),主线程发布客户端事件(基于按键的播放器移动,命令)逻辑。
我想知道在这一层管理邮件的最佳方式是什么。从MessageBox的文档:“消息的内容可以是:原始值(null,num,bool,double,String),IsolateSinks的实例,以及其元素是其中任何一个的列表和映射。”这些都适用于简单的数据传输,但如果我想传递整个数据bean呢?我找到的唯一解决方案是JSON序列化,可以使用JsonObject相对轻松地完成。现在我们有一个可以通过MessageBox / WebSocket传递的String。
我想知道这个设计有多好?对连接上的每个数据进行JSON序列化和反序列化。我很担心这个引入的开销,这个频道会被大量使用。
我能做些什么来改善这个?
答案 0 :(得分:1)
有几种可能性:
约翰