StickEngine-架构5-GamePlay基础结构
整体概述是 http://dreamyouxi.com:7129/blog/1203
这里指的是战斗部分的基础代码结构,在这个结构之上,可以构建自己的GamePlay架构。
在服务端中,基础代码结构和Unity引擎类似,传统的面向对象组件式编程,通过这种策略,让使用者尽可能用组合替代继承。
GamePlay基础主要概念:
1.GameObject:
组件的运行实体和容器,对象通信载体和组件间的中间件,内存布局上对象建是平行关系,但是可以借助Transform组件,构建树形管理型对象。
2.CppBehaviour:
脚本基类,大部分业务逻辑将会在这个里面进行运作,生命周期函数,和Unity引擎类似,Awake Start Update OnDestroy OnTrigger OnContactEnter OnContactStay OnContactExit 等。
3.Transform:
3D数学变换组件,和Unity引擎类似,基础属性有position scale rotation,构建三维世界的基础,可组成树形场景结构,提供基础3D运算。
4.Rigidbody,Collider,Joint, Ragdoll 等
提供基础物理属性和概念,作用和语义和Unity引擎保持一致,赋予服务器物理模拟和查询的能力。
5.Prefab:
提供序列化和反序列化,构成服务端游戏资源管理,用于构建游戏对象(GameObject)
以上是游戏对象相关,在服务端还有另外一个概念,叫房间组件。
基本语义是非游戏逻辑对象的东西,是单例组件,用ECS中的概念来举例的话,这更像是System,举几个例子说明他们的区别:
1.弹道计算,这个是GameObject,书写CppBehaviour进行逻辑开发,
2.载具生成器,这个是房间单例,本身是非游戏对象,只是单纯的逻辑概念,他会生成坦克汽车等游戏对象。
3.游戏结束,这个是房间单例,全局游戏结束的逻辑块。没有任何游戏对象生成,根据已有的信息进行逻辑决策。
4.快照生成器,这个是房间单例,每一帧结束时,如有必要会生成当前游戏世界快照。
总结:
上面是提供基础的GamePlay结构,在此之上,可以构建其他GamePlay体系,比如ECS,MVC模式等
从这个基础角度来看,那么这个的定义就是一些超底层的抽象:IO,网络,物理,资源,生命周期等。