用户名 密码 联盟服务 关于我们 联系方式 收藏本站
返回网站首页 PgMP认证,美国项目管理协会高端项目管理认证!大型项目与项目群管理Program Management全球权威认证


网站登录:会员 企业 专家 服务商
企业服务:PMP培训  内训课 公开课
工 具 箱:发表文章 提问题 发案例
首页动态 | 文库 | 下载 | 书架 | 访谈 | 专栏 | 专题 | 人才 | 培训 | 软件 | PMC 互动:活动 | 案例 | 问答 | 论坛 | 博客 | 圈子 
应用:基础工程软件制造活动研发  认证:PMPNPDPACPPgMPIPMPP2ISPMPIMCP建造师MPM  特色:热点奖项

PMI-ACP®认证

适合敏捷开发项目
敏捷项目管理最佳实践

网络课程

PMI-PBA®认证

重视项目商业分析
商业价值与需求分析能力

网络课程

NPDP®认证

产品管理国际认证
全球产品管理最佳实践

网络课

PMP®认证

单项目管理经典指南
年轻项目经理首选

北京 | 直播 | 录播

PgMP®认证

大型复杂项目全球标准
定位高级项目管理层

网络班

PfMP®认证

链接战略与项目
实现组织资源投资回报

全球直播

软考项目管理

信息系统项目管理师
系统集成项目管理工程师

计划 | 报名 | 经验

敏捷项目管理ACP认证培训
国际产品经理NPDP认证

游戏项目开发管理经验

作者:佚名   提交人:项目管理者联盟[佚名]   属性:提交人转载   发布时间:2012/11/5   点击:8879   【收藏本文

  你是否正在考虑构建一个游戏引擎呢?你对如何构建一个游戏引擎是否已经有了一个明确的计划呢?你是否已经对如何组织游戏引擎各个模块之间的关系有了一个通盘的考虑?如果没有,那么本文将对你建立一个良好的游戏架构提出一些有益的方案,如果你已经对上面的问题有了一个明确的答案,那么本文不是你需要阅读的内容。本文的目的是给那些没有任何建立完整游戏引擎经验的人提供一些入门性的知识,使他们初步了解一下如何来构建一个游戏引擎,构建游戏引擎应该注意哪些方面的问题,并提供了一些成熟的设计模版并指出这些设计模版使用的范围,我希望这些内容对那些中级编程人员也有一个良好的参考作用。项目管理者联盟

  这里必须再次提醒你,本文介绍的是一些通用的游戏编程技巧,虽然是通用但是可能并不是非常全面,可能存在这样或那样的缺陷,因此如果你希望它发挥最大的效用必须恰当的使用它,而不是不分场合的滥用。切记切记,一个初学者最容易犯的错误就是任意使用一些设计模版而不顾它的使用范围。项目管理者联盟

  在开始构建一个游戏引擎时你需要先考虑哪些方面的问题呢?这是你必须认真考虑的问题,我的答案是首先必须考虑代码的可读性,尤其是在多人进行开发时更必须高度重视,如果你写的代码其他人需要花费非常大的精力进行阅读,那么根本谈不上提高工作效率,下面是提高代码可读性的一些良好建议:项目管理者联盟

  1、建立一份简单明了的命名规则。一份良好的命名规则可以大幅提高代码的可读性,规则必须简单明了,通常只需要两三分钟的阅读应该可以让其他人掌握,例如在代码中直接使用匈牙利命名法这种大家熟知的规则,使用字母I作为接口类的首字母,使用C开头作为实现类的首字母,使用g_开头的变量名作为全局变量,s_开头作为静态变量名,m_开头作为内部变量名,使用_开头作为类内部使用的函数名等等,通过名字就可以使你大概了解对象的使用范围和基本功能。项目管理者联盟

  2、不要讨厌写注释。一个编程者易犯的错误就是不写注释,认为它会增加自己的工作量,但是他没有考虑到相应的工作量已经转移到代码阅读者的身上,可能看代码的人会花费比写注释时间两倍或者三倍的时间来阅读代码,这是一种非常不负责任的行为,通过一段简短的注释可以使阅读者迅速的了解代码的功能,从而把时间更多的用到功能的扩展上。下面是一些良好的建议:尽量对每一个变量标明它的功能。对每一个函数声明的地方标明它的功能,对于复杂的函数还应当写清参数和返回值的作用,注意是在声明函数的头文件中。在关键的代码处写清它的作用,尤其是在进行复杂的运算时更应如此。在每一个类声明的地方简要的介绍它的功能。项目管理者联盟

  3、减少类的继承层次。通常对于游戏编程来说每一个类的继承层次最好不要超过4层,因为过多的继承不仅会减少代码的可读性,同时使类表指针变长,代码体积增大,减低类的执行效率。还要注意要减少多重继承,因为不小心它会形成编程者非常讨厌的“钻石”形状。同时还要注意如果能使用类的组合的话那么就尽量减少使用类的继承,当然这是设计技巧的问题。项目管理者联盟

  4、减少每行代码的长度。尽量不要在一行代码中完成一个复杂的运算,这样做会增加阅读难度,同时不符合现代CPU的执行,由于CPU现在都使用了超长流水线的设计,它非常适合执行那些每行代码非常短而行数非常多的代码,例如对一个复杂的数学运算,写成一行不如每一步骤写一行。项目管理者联盟

  以上建议是我的一些粗略看法,如果你还有什么好的看法可以给我指出来,同时上面的建议并不是绝对的,例如类的继承并不是绝对不能超过4层,如果你需要的话可以使用更多的继承,前提是这样带来的好处大于代码执行效率的损失。www.mypm.net

  接着看看要考虑什么,在Game Programming Gems3的《一个基于对象组合的游戏架构》一文指出了几个值得考虑的问题,首先是平台相关性与独立性和游戏相关性与独立性的问题,也就是说应当作到引擎的架构与平台和游戏都无关。为什么要做到与平台无关性呢?这是因为你必须在开始架构引擎考虑它的可移植性,如果在开始你没有注意到这个问题,那么一旦在游戏完成后需要移植到其他的游戏平台上,你会发现麻烦大了,你需要修改的地方实在是太多了,所有与平台相关的API调用都需要修改,所有使用了平台特定功能的模块也需要修改,这是一个非常耗费精力的事情,可能需要花费和开发一个游戏一样的时间,而如果你在开始的时候就考虑到这个问题,那么非常简单,只需要写一个相应平台的模块替换掉原来的模块即可,这样精力就可以放在如何充分的利用特定平台的能力来提高游戏的表现力上,而不是代码修改上。下面简单的谈一下如何使引擎作到与平台无关。项目管理者联盟

  1、注意操作系统的差异。现在主流的操作系统主要是Windows和Linux两种,当然还有Unix和Mac,在编程时你必须注意这一点,当你需要包含Windows的头文件时,你必须将它包含在宏_WIN32中,下面是一个简单的例子:项目管理者联盟

  #ifdef _WIN32项目管理者联盟

  #include "windows.h"项目管理培训

  #endif项目管理者联盟

  而你使用Windows平台特定的API时也应当如此,这样在其他平台上编译时可以保证Windows平台相应的代码不会被编译进去。对于其他平台也应当如此。项目管理论坛

  2、注意编译器的差异。现在通用的编译器主要有VC,BC和gcc几种,在进行Windows平台编程时,你通常会使用VC或BC,而对Linux平台编程时通常使用gcc,使用VC编译器你不可能编译出用于Linux平台的代码,因此在编程时也需要注意,你可以使用上面的方法通过特定的宏来将不同的编译器分离开。举一个简单的例子:service.mypm.net

  #ifdef _WIN32项目管理者联盟

  #ifdef _MSC_VERpmp.mypm.net

  typedef signed __int64 int64;项目管理者联盟

  #endif项目管理者联盟

  #elif defined _LINUX项目管理者联盟

  typedef long long int64;项目管理者联盟

  #endif项目管理者联盟

  在不同的编译器中对64位变量的命名是不同的,因为它并不是C++标准的一部分,而是编译器的扩展部分。另外一个例子是编译器使用的内联汇编代码,在VC中你可以使用_asm来指明,而对于Linux平台的编译器你需要使用它的专用关键字了。项目管理者联盟

  3、注意CPU的差异。对于不同平台来说它通常会使用不同的CPU,不过幸好Windows和Linux都支持X86的CPU,这也是PC游戏的主流CPU平台,而XBOX使用的也是X86的CPU,除非你需要移植到PS2平台,否则这将大大减轻你的编程负担,在X86平台上提供了一个cpuid的指令可以非常方便的检查CPU的特性,如是否支持MMX,SSE,SSE2,3DNow!技术等,通过它你可以使用特定的CPU特性来加速你的代码执行速度。项目管理者联盟

  4、注意图形API的差异。现在图形API主要存在两种主流的平台DirectX和OpenGL,DirectX只能用于Windows平台,而OpenGL几乎被所有的平台所支持。因此你需要为不同的图形API进行封装,将它做成不同的模块,在需要的时候进行切换。完成这个工作最好的方法是使用后面介绍的类厂模式。项目管理者联盟


<<上一页 1 2 3 4 下一页>>
项目管理者联盟PMP认证中心
[相关文章] [网友互动]
·项目经理、产品经理和研发人员之. (1239)项目管理者联盟08-24
·如何对项目的研发团队进行年终绩. (1124)项目管理者联盟07-07
·整车新产品研发的多项目管理分析 (1798)项目管理者联盟01-24
·理想的体制,无言的结局 ——一个 (2224)赵春明01-10
·研发质量管理的“红与黑” (2116)项目管理者联盟11-03
·产品经理与研发经理要如何分工? (1485)项目管理者联盟07-08
·研发项目经理如何做好需求管理? (1617)项目管理者联盟06-24
·挥起三板斧,做有效有用的研发IT. (1513)项目管理者联盟06-21

04-14[帖子] 产品研发项目如何借力易趋项目管理平台. (113)
02-26[帖子] 项目管理交流会 AI+研发提效:聚焦交付. (548)
02-08[帖子] 研发效率低下?试试这些改进方法 (741)
12-10[帖子] 易趋携手华立科技,联合搭建研发信息管. (845)
11-20[帖子] 项目管理交流会 产品研发项目管理主题会 (858)
02-19[帖子] 易趋中标北汽重卡项目管理系统项目,助. (6922)
04-18[帖子] 价值导向型研发管理数字化建设方案——. (11229)
02-27[帖子] “研发型企业PMO体系的建设与发展”项目 (9625)
[发表评论]
本站热点
· 华师大CTO学院:科创生态建设与创新项
·宏发电声江玫瑰谈PgMP:“下好一盘棋”
·PgMP:交付能力与创造未来的项目管理方
·开放讲座|《项目组合管理与PfMP认证》
·开放讲座|项目组合管理与PfMP认证
·开放讲座|PgMP:项目管理思维与方法论
·开放讲座|《项目组合管理与PfMP认证》
·网络讲座|《项目组合管理与个人职业发展》
·开放讲座|《项目组合管理与PfMP认证》
栏目说明
    《文库》栏目为项目管理者联盟网站核心栏目,收录了十大行业项目管理文章5000余篇,囊括了项目管理五个阶段、九个知识领域的相关文章,是广大项目管理爱好者学习的知识库,欢迎大家发表原创文章、转贴文章,或直接发给编辑。须联盟会员且登陆后才能发表文章。
敏捷项目管理ACP培训
项目管理活动
活动QQ群:531390275
免费积累PDU,仅500人

2022年项目管理活动计划
2021活动精彩回顾
原创排行榜
 项目管理评论杂志 311 高扬 106
 乔东 100 项目管理 84
 高国伟 61 人月神话 60
 张为 59 郭致星 52
 蒋昕炜 46 肖杨 38
 曾伟强 37 潘德有 36
搜索文章
关键词:
行  业:
团 队   成 本   风 险   进 度
沟 通   采 购   质 量   合 同
更多>> 专题集锦

企业项目化管理

PMO实践与应用

如何处理项目客户关系

更多:
经理访谈
更多:
个人专栏

王树文

赵春明

高国伟

更多:
项目管理者联盟特刊
联盟特刊是对网站会员发行的内部刊物,刊物内容包括:案例及分析等,得到了会员好评。
电子期刊:
特刊下载:
2017合刊  2016合刊  2015合刊 
2014合刊  2010合刊  2009合刊 
2008合刊  2004合刊  2005合刊 
2006合刊  2007合刊       
施工企业管理
《施工企业管理》创刊于1986年1月,中国施工企业管理协会主办,是反映施工企业管理杂志。
浏览往期:
建造师杂志
《建造师》杂志由清华国际工程项目管理研究院主办,是中国面向建设企业管理人的高端杂志。
浏览往期:
更多>> 推荐文章
09-02·项目集管理:构想一种不同.
08-17·项目经理“催活儿”的正确.
08-17·建筑工程项目管理中施工现.
08-17·进阶项目经理必备的复盘方.
08-17·项目管理协会PMI发布新人才
08-17·互联网大厂项目经理面试的.
08-17·项目经理要如何提高自己的.
08-17·管理改进中几个确实有用的.
08-17·项目经理提升职场能力的20.
06-14·项目经理搭建团队,需要看.
06-14·5A学员董雏:PMP取证重要,
06-14·成功管理能源项目的技巧和.
06-14·拥抱敏捷—计划发布与冲刺
06-14·从PMP到PgMP :不畏浮云遮.
06-14·这30+项目管理工具,优秀项
06-14·深度剖析项目管理五大痛点.
关于联盟 | VIP会员 | 培训服务 | PMP认证 | PgMP认证 | 刊物出版 | 沙龙会议 | 人才服务 | 广告投放 | 联系我们 | 友情链接

项目管理者联盟 版权所有 | 京ICP备10055250号-11 | 京公网安备 11010202009440号

如转载本站文章,必须于文章开头处注明转自“项目管理者联盟”,并注明原作者
PMI,Project Management Professional, OPM3, PMBOK, PMP,PgMP,PfMP,PMI-ACP,PMI-PBA
and the PMI Registered Education Provider logo are registered trademarks of the Project Management Institute, Inc.