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