[思考]3D游戏引擎:独立vs整合

 
 最近一直在思考一个问题,3D游戏的渲染模块与游戏逻辑完全分离真的好吗?还是需要更加紧密的整合起来?
 根据软件工程的知识,为了使得模块更容易重用,你应该似的模块之间的界限尽量清晰,耦合性尽量弱。从这个观点出发3D游戏的3D渲染模块应该和游戏逻辑完全分离。这种设计在制作的过程中往往形成这种现象,对于游戏中的某个对象,渲染模块需要数据A,而游戏逻辑需要数据B,前者被存入一个数据文件中提供给3D渲染模块使用,而后者存入另外一个文件中供游戏逻辑使用。举例来说:一个简单的3D游戏差不多是这样完成的:
 1、由美术在3D MAX中构建整个场景;
 2、程序将这个场景输出成引擎所需的文件格式,通常要使用Octree来进行管理;
 3、由于上述场景部分是死的,不能进行交互,所以如果场景中有一个可以交互的东西,例如宝箱(调查后打开),那么需要在游戏地图编辑器中放入这个对象。这个对象的位置,模型名称是渲染模块需要知道的,调查后产生什么样的结果是游戏逻辑负责的。通常是指定调查后触发一个什么样的脚本。为了便于Octree树管理场景,需要把这个模型记录到Octree中(一个文件),为了记录对象的交互,有要使用一个地图文件(第二个文件),脚本也需要存入一个文本文件(第三个文件)。
 
 但是象《魔兽世界》这样庞大的游戏世界肯定不能这样制作,如此多的可交互物体,上述三个文件的同步修改将是非常困难的。例如一个路牌,鼠标指向它时,它需要变亮,然后弹出一个信息泡。从游戏制作的需求而言,3D游戏引擎能够对渲染内容和游戏逻辑进行整合,某个对象的所有信息可以一次编辑、修改应该是更方便的!完成这样的整合需要一个什么样的体系结构呢,数据应该如何组织,各个层次和模块之间如何通讯呢?最近一直在思考这个问题...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值