熵义

*.entropy.press

Prototype in Rust

我个人的软件开发的风格是零碎的。

有时候会尝试性地写一些个模式,然后发现并不好用或解决不了问题,于是git stash。写作stash读作删除。

就和自我构思一个拼插玩具的模型,无所谓结果,甚至没有结果,但是过程一定是反复尝试反复否定自己。

经过不断地尝试,逐渐形成了game.entropy.press的原型。大致分为四个部分,从上到下依次是:

  • 一个世界 World
  • 一个实体数据库 Db
  • 很多系统 System
  • 事件总线 Event

世界

包含了所有的数据、操作模式、以及其他的一切。

实体数据库

集中管理有状态的数据部分,并且封装一些高效操作的接口。例如可直接传入一个数值的Delta,由数据库原子化地将Delta合并入已有数据,这个操作的具体逻辑在System中预定义,且在加载预热时被写入实体数据库。同时也要支持将闭包迭代应用至整个分片的能力,借此可以进行内存空间优化,将连续的数据放置在一起,充分利用寄存器缓存。将数据库单独抽象,也为分布式部署提供了可能。

系统

一个系统即:预定义的数据格式+每tick时调用的内部方法(只关注逻辑,同步等操作由World进行)+数据的merge方法(在初始化时传递给数据库)+自我事件上行接口与事件格式+监听其他数据总线并处理。

系统的特性由trait保证

事件总线

根据事件的发出者不同,提供了不同的订阅接口,各个系统可以订阅其他系统的事件,并做出反应。系统自身也会获得(由trait保证)一个上行队列的接口,用于将本系统的数据推送出去。系统需要在每tick(也许未来也可以异步)即使地处理其订阅的其他系统的事件。

原型使用Rust编写,仓库地址在Github托管。


已发布

分类

来自

标签:

评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注