一般游戏引擎包括如下几个部分:
周边引擎:
渲染引擎(OpenGL、Direct),这个用来实际的把三维顶点显示到屏幕
碰撞/物理引擎(NEWTON、Havok、Bullet、ODE),这个用来检测3d物体的碰撞,并且模拟物体在力的作用下的反映(例如模拟牛顿定律,重力,摩擦力)
AI引擎(Havok、OpneAI),这个用来实现通用的AI算法,例如最短寻路。
网络引擎(RakNet),这个用来实现网络相关功能,例如网游、局域网。
声音引擎(OpenAL、fmod)
脚本引擎(Lua、python),这个用来实现游戏次要逻辑(MOD作者都熟的)
输入引擎(OIS、SDL),这个用来封装鼠标、键盘、游戏手柄等输入设备
2D图形界面(MyGui、OpenGui),这个用来实现游戏里出现的对话框,平面图片,文字等非3D
粒子系统,比如雨点,烟雾等玩意
剩下的最重要的就是:
游戏引擎(Ogre),这个东西不要和广义的游戏引擎混了,广义的包含以上的所有,这个的功能是:
1、动态加载管理资源(CommonRes里的东西,包括材质、mesh、动画等),并且对资源进行程序抽象(例如在C++里用个类表示每种资源,做一些操作接口)。
2、场景管理(SceneObj里的场景信息,在程序里用树形结构管理所有的3d物件形成一个场景,有个重要分支是Terrain地形,就是我们打架的那个静态地图部分,动态部分,包括人物、物品等都要通过场景管理器来管理)、
3、实现一些上层封装,例如程序窗口的回调机制、摄像机(就是玩家视角)逻辑、光源等。
说白了,资源+周边引擎+游戏引擎(狭义)+游戏主要逻辑(游戏设计者代码)=游戏。