当前位置:游戏 > 程序开发

游戏设置与引擎代码的分离问题

来源:游戏邦 编辑:jacky 发布时间:2011年12月19日

免责声明:火星网文章来源于作者原创或整理自互联网,仅为提供更多信息,不代表火星时代同意其观点或描述,版权归原作者所有,如需转载,请联系原作者并注明出处,如涉及作品内容、版权或其他问题,请及时与我们联系,我们将在第一时间予以更改或删除,感谢您的理解和包容!

作者:Alistair Doulin

我曾经使用三种不同的游戏引擎,并且它们的游戏设置和引擎都与源代码紧扣在一起。在Unity中,所有的游戏物体都源于MonoBehaviour,并受益于Unity的强大功能。但是,最近我不再使用这种方法了,而是更加关注于“分离问题”。也就是主张完全分离游戏设置,保持游戏引擎的独立性。并且事实也证明了这个方法的可用性,我将在此讨论这种分离游戏设置的方法以及它值得推荐的原因。

为什么要将游戏玩法与游戏的其它部分分离开来?以下有几点原因:

虽然不同游戏间也有很多相同之处,如渲染,视频,动画及输入装置等系统上的共同点,但其游戏代码却各不相同。(游戏邦注:例如《战地风云3》与《NFS: The Run》虽然拥有相同的游戏引擎,但游戏玩法大不相同)。

游戏设置代码的所有权与游戏中的其它系统有所不同。大多数游戏开发团队中都有游戏设置和引擎开发两个小团队。而这两块领域要求的技能也不相同,这也是为何要特别区分它们的原因。但是这两个团队的规模通常都是一样大小。

设计者只需要接触游戏设置的相关内容,而不用涉及着色器或任何特殊的输入代码。分离这些代码能够简化设计者的工作,也有利于保护他们的工作内容和游戏引擎。

允许针对于游戏代码的单元测试。而因为这是关于游戏设置的测试组,所以更容易执行与维护。

游戏开发中最困难也是最重要的部分便是“寻找乐趣”。通过分离游戏设置,开发者可以着重关注特定的任务而无需担心其它引擎的相关问题。需要处理的代码越少,开发者越能够以更高的效率开发出最好的游戏。

如何做?

我们在游戏开发中使用Unity和C#,并且将游戏设置进行分离,归于它自己单独的一个程序库(特别是.dl)。这个程序库与Unity无关,并不从属于任何特定的引擎。理论上来讲,我们可以用XNA或者其它能够与.NET程序库相交流的引擎替换Unity。

游戏引擎便包含了这种程序库,并利用这种程序库去模拟游戏世界。在Unity中,这么做就与将.dll拖放到游戏中并因此快速利用各种公共类一样简单。有一种选择便是通过界面让游戏引擎上的所有内容访问程序库。这么做能够让你更好地完全区分游戏引擎与游戏设置。我在开发第一款游戏的时候使用了这种方法,建议那些大型游戏开发者或团队以使用这种通过界面进行所有系统交流的方法。

我曾经在使用XNA开发一款游戏的时候发现了这一技巧,认为这是一个非常简单的操作过程。你只需要将参考数据添加到游戏设置.dll中便可以围绕它进行编码。

程序开发