论文部分内容阅读
几年前,我们对“游戏引擎”或"Game Engine"这一词还十分陌生,如今,任何一个游戏开发人员都应该非常了解游戏引擎,甚至迮游戏玩家说出这个词的频率也与日俱增。这种转变除了要归功于我国数字娱乐产业的快速发展外,同时也证明了游戏引擎在游戏开发中的重要地位。
游戏引擎是一个为运行某一类游戏的机器所设计的能够被机器识别的代码(指令)集合,它控制着游戏的运行。一个游戏作品可以分为游戏引擎和游戏资源两大部分,用公式表示就是:游戏=引擎(程序代码)+资源(图像、声音、动画等)。游戏资源包括图像、声音、动画等部分,游戏引擎则是按游戏设计的要求顺序调用这些资源,在这其中游戏引擎一般需要实现从画面输出、碰撞检测、物理系统和物体的相对位置,到接受玩家的输入,以及按照正确的音量输出声音等功能。
本文就最容易影响游戏引擎效率的大规模室外地形绘制和室内场景管理做深入分析,给出了地形生成、绘制的算法并予以优化,最终完成一个3D游戏地形绘制系统。该系统能根据用户的输入,自动生成所需的地形高度图,并绘制出最终地形。同时,生成绘制地形的代码极具可扩展性,便于在今后的游戏开发中重用。同时还分析了场景管理的BSP算法,并给出了最优分割面选择算法。
大规模室外地形绘制分为两个部分,第三章描述第一部分:地形生成;第四章描述第二部分:地形绘制。在第三章中,首先给出常见的几种分形算法并对它们之间的优缺点进行比较,接着论述了目前先进的Perlin噪声生成法,并以此为基础,完成了3D游戏地形绘制系统的第一部分。在第四章中,首先分析传统的基于顶点的LOD算法,接着提出了ROAM算法,并使用双队列优化法进行节点的分裂与合并,在本章中完成了3D游戏地形绘制系统的第二部分。
第五章涉及室内场景管理,描述了BSP算法,并详细讨论了如何选取最优分割面以生成高效的二叉树,最后通过一个分割实例来证明我们的结论--当取MINIMUMRELATION=0.8,MINRELATIONSCALE=2时,可以获得符合要求的二叉树。
本文中实现的地形绘制系统使用DirectX和C++在.NET平台下完成,运行于Windows系统,在跨平台方面有一定的局限,有待进一步改进。