划词......

用数据驱动思想来设计游戏-读《游戏编程精粹1》

    游戏由两部分组成,逻辑和数据。这是一种对游戏的有效划分。逻辑部分定义游戏引擎的核心原则和算法,数据部分则提供其内容 和行为的具体细节。在最初的游戏开发的过程中,大家总是喜欢将逻辑和数据都写入代码中,这样的代码可移植性很差,重用性也差,还容易出现数据的不统一。如果要进行些许修改,甚至有可能牵一发而动全身。

    数据驱动设计可以比喻成是一种面向对象的游戏设计,它将游戏数据存储在文件中,而不再是嵌入在代码里面。游戏过程中,通过动态的载入并读取和写入数据文件来对数据进行操作。在游戏开发过程中使用数据驱动思想需要注意以下几点。

  1. 文件解析系统:

          这是数据驱动思想的基础。游戏数据存储在文件中,必须要有一个文件解析系统来对数据文件进行解析读取等操作。比如我们玩一个单机游戏时经常以通过修改存档的方式来达到作弊的目的。

  2. 不要硬编码:

          硬编码是指将可变变量用一个固定值来代替的方法。这种方法可以暂时的解决游戏的某些问题,并且暂时看不出有什么缺点,但当代码编写到一定程序之后,对于更深程度的开发与修改将成一个噩梦。而不使用硬编码的好处很明显,比如现在多数游戏都有的自定义游戏按键。硬编码的问题在程序员中是一个很严重的问题,经验不丰富的程序员经常在这个问题上犯错,而经验丰富的程序也常常在赶进度的时候妥协。

  3. 用脚本语言写控制流:

          脚本 是一种在代码外定义行为的方法。脚本对于定义的步骤顺序或需要触发的游戏事件非常有用。最典型的应用是魔兽地图的制作,魔兽3便用是JASS脚本语言对游戏进行控制。但脚本语言并非是万能的,虽然很多功能都写入脚本中可以极大的提高游戏的灵活性,但脚本语言通常是一种效率比较低下的语言,而且越复杂的脚本将会消耗程序员越多的时间来编写脚本分析器、编译器或调试器。而这些功能其实可以用程序代码得到更好的实现。

  4. 避免重复数据:

         复制代码让开发变的简单而无聊之余,让整个系统也变的更加的臃肿。面向对象中的继承思想也可以使用的游戏数据的处理中,如下图:

     

  5. 开发工具生成数据:

          当游戏系统越来越大,游戏数据量将变的很宏大,这个时间单纯的用文本文件进行编辑操作将变的不在现实。此时,开发一款游戏数据的编辑器将是一个很不错的选择。比如:魔兽争霸3的地图编辑器就是一款很好的游戏数据生成工具。

 

    现在稍稍比较专业点的游戏都是采用数据驱动的思想来进行开发,但程度各异。而如何最大限制度的利用数据驱动的思想开发游戏,使游戏更具有自定义特性,提高玩家的游戏参与感,是未来游戏的主流。

posted on 2010-03-11 21:34  双心  阅读(3178)  评论(0编辑  收藏  举报

导航