|
个人观点,架构应该尽量脱离引擎,与引擎解耦.
引擎只是一个工具,而游戏就是使用引擎提供的接口来实现功能.大部分引擎都是以渲染引擎为中心.所以其实一般情况下只需要把引擎当作一个渲染引擎就好.如果有需要引擎提供的东西就直接调,没有就自己写.
我本身就是一直使用这样的思想写自己的游戏架构.我的架构最开始是自己从opengl开始写的,后来用了unity,就把渲染的部分全部去掉,保留整体架构.接入unity渲染,然后再搭配unity提供的各种功能.
即便是换到虚幻,同样也是调用引擎来渲染,然后逻辑在自己的架构下搭建.与引擎解耦,才能尽量避免一些不必要的坑.而且中间封装一层用以隔离引擎层的应用层.这样使用任何引擎基本都不会对应用层造成太大影响.
虽然引擎基本都会搭配一套自己的开发模式.以unity为例,提供了MonoBehaviour作为脚本基类,引擎自动调用脚本的部分函数.使用户只需要关心逻辑本身,而不需要关心程序入口,调用顺序等等.实际上这样对于小demo是很不错的.但是项目规模一旦扩大.比如代码量上10万行,就会出现各种难以把控的问题.因为这样的代码不是100%可控的,所以一旦出现任何问题都会很麻烦.比如断点调试查看堆栈,查找引用,查找调用关系,逻辑执行顺序等等.而这些恰恰是大项目的关键所在.
我的观点就是让自己拥有对代码的100%控制权.自己的控制权越大,出错的几率也就越小,出错也就越容易解决. |
|