- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
游戏开发 游引擎中的通用编程技术
广东汇众教育 提供
HYPERLINK HYPERLINK
游戏开发:游戏引擎中的通用编程技术
你是否正在考虑构建一个游戏引擎呢?你对如何构建一个游戏引擎是否已经有了一个明确的
计划呢?你是否已经对如何组织游戏引擎各个模块之间的关系有了一个通盘的考虑?如果没有,
那么本文将对你建立一个良好的游戏架构提出一些有益的方案,如果你已经对上面的问题有了一
个明确的答案,那么本文不是你需要阅读的内容。本文的目的是给那些没有任何建立完整游戏引
擎经验的人提供一些入门性的知识,使他们初步了解一下如何来构建一个游戏引擎,构建游戏引
擎应该注意哪些方面的问题,并提供了一些成熟的设计模版并指出这些设计模版使用的范围,我
希望这些内容对那些中级编程人员也有一个良好的参考作用。
这里必须再次提醒你,本文介绍的是一些通用的游戏编程技巧,虽然是通用但是可能并不是
非常全面,可能存在这样或那样的缺陷,因此如果你希望它发挥最大的效用必须恰当的使用它,
而不是不分场合的滥用。切记切记,一个初学者最容易犯的错误就是任意使用一些设计模版而不
顾它的使用范围。
在开始构建一个游戏引擎时你需要先考虑哪些方面的问题呢?这是你必须认真考虑的问题,
我的答案是首先必须考虑代码的可读性,尤其是在多人进行开发时更必须高度重视,如果你写的
代码其他人需要花费非常大的精力进行阅读,那么根本谈不上提高工作效率,下面是提高代码可
读性的一些良好建议:
1、建立一份简单明了的命名规则。一份良好的命名规则可以大幅提高代码的可读性,规则必须
简单明了,通常只需要两三分钟的阅读应该可以让其他人掌握,例如在代码中直接使用匈牙利
命名法这种大家熟知的规则,使用字母I作为接口类的首字母,使用C开头作为实现类的首字母,
使用g_开头的变量名作为全局变量,s_开头作为静态变量名,m_开头作为内部变量名,使用_开
头作为类内部使用的函数名等等,通过名字就可以使你大概了解对象的使用范围和基本功能。
2、不要讨厌写注释。一个???程者易犯的错误就是不写注释,认为它会增加自己的工作量,但是
他没有考虑到相应的工作量已经转移到代码阅读者的身上,可能看代码的人会花费比写注释时间
两倍或者三倍的时间来阅读代码,这是一种非常不负责任的行为,通过一段简短的注释可以使阅
读者迅速的了解代码的功能,从而把时间更多的用到功能的扩展上。下面是一些良好的建议:尽
量对每一个变量标明它的功能。对每一个函数声明的地方标明它的功能,对于复杂的函数还应当
写清参数和返回值的作用,注意是在声明函数的头文件中。在关键的代码处写清它的作用,尤其
是在进行复杂的运算时更应如此。在每一个类声明的地方简要的介绍它的功能。
3、减少类的继承层次。通常对于游戏编程来说每一个类的继承层次最好不要超过4层,因为过多
的继承不仅会减少代码的可读性,同时使类表指针变长,代码体积增大,减低类的执行效率。还
要注意要减少多重继承,因为不小心它会形成编程者非常讨厌的“钻石”形状。同时还要注意如
果能使用类的组合的话那么就尽量减少使用类的继承,当然这是设计技巧的问题。
4、减少每行代码的长度。尽量不要在一行代码中完成一个复杂的运算,这样做会增加阅读难度,
同时不符合现代CPU的执行,由于CPU现在都使用了超长流水线的设计,它非常适合执行那些每行
代码非常短而行数非常多的代码,例如对一个复杂的数学运算,写成一行不如每一步骤写一行。
以上建议是我的一些粗略看法,如果你还有什么好的看法可以给我指出来,同时上面的建议
并不是绝对的,例如类的继承并不是绝对不能超过4层,如果你需要的话可以使用更多的继承,前
提是这样带来的好处大于代码执行效率的损失。
接着看看要考虑什么,在Game Programming Gems3的《一个基于对象组合的游戏架构》一文
指出了几个值得考虑的问题,首先是平台相关性与独立性和游戏相关性与独立性的问题,也就是
说应当作到引擎的架构与平台和游戏都无关。为什么要做到与平台无关性呢?这是因为你必须在
开始架构引擎考虑它的可移植性,如果在开始你没有注意到这个问题,那么一旦在游戏完成后需
要移植到其他的游戏平台上,你会发现麻烦大了,你需要修改的地方实在是太多了,所有与平台
相关的API调用都需要修改,所有使用了平台特定功能的模块也需要修改,这是一个非常耗费精力
的事情,可能需要花费和开发一个游戏一样的时间,而如果你在开始的时候就考虑到这个问题,
那么非常简单,只需要写一个相应平台的模块替换掉原来的模块即可.
这样精力就可以放在如何
充分的利用特定平台的能力来提高游戏的表现力上,而不是代码修改上。下面简单的谈一下如何
使引擎作到与平台无关。
1、注意操作系统的差异。现在主流的操作系统主要是Windows和
文档评论(0)