1. 背景 - nottvlike/EGP GitHub Wiki

EGP是最近写的一个游戏框架,其实之前也写过几个,比如simple_game_tool_luasimple_game_tool_ecs,一方面是我有点闲暇时间可以做点研究,另一方面也是因为我并没有看到有什么比较好用的开源的Unity开发框架。

simple_game_tool_lua算是我开发的第一款框架,它的设计思路很简单,主要是c#写底层,lua主导逻辑,这样设计是为了处理热更的问题,在差不多基本实现这个框架的时候,我发现给lua的权限还是过大了并且无法有效的进行约束,这样热更确实没问题了,但是二次开发很难隐藏我不希望暴露的方法,毕竟lua没有private这种封装概念,如果我希望实现mod这种功能,接下去会很难写,所以一开始为了热更让lua主导逻辑在那时候看来不是一个好的想法。

所以后来我打算先用纯c#实现一个框架的,暂时不考虑lua扩展和热更的问题,simple_game_tool_ecs是基于这个版本的改良版,主要是看了守望先锋那篇文章后,在网上(主要是维基)查了点ecs的相关,想要对ecs框架做一次尝试,就基于新的框架做了点改动,就有了simple_game_tool_ecs,这个框架沿用了很多simple_game_tool_lua的底层代码,当然为了降低耦合度也做了一些改动,加了Notification模块,也有不少问题,比如解耦合做的还不够(各个系统的耦合还是太高),Module实现的也太过复杂(主要是和Unity挂钩的,Update,FixedUpdate,LateUpdate实现和扩展起来比较复杂),资源加载的api也比较陈旧。这个框架还有很大的优化空间,我也会继续维护这个框架,对这几个问题的继续优化做一点尝试。

EGP是我目前来说比较满意的一个框架,依据我的尝试经验来看,使用UniRx配合面向数据的ECS框架,确实不但能极大的降低各个系统或者功能的耦合性,也使得代码编写设计更简单更容易维护。