鸿 网 互 联 www.68idc.cn

游戏编程的一些东西

来源:互联网 作者:佚名 时间:2015-10-09 05:42
http://www.gamengines.com/article-699.html 前段时间终于签约北京 金山 的 网络 游戏 事业部,完成了自己的 游戏 梦想,感慨万分.大学四 年,在 游戏 编程 方面花了大量的时间和心血,走了不少弯路,快要毕业了,特把自己积累的一 些经验和感受与大家分享,希望能

http://www.gamengines.com/article-699.html


前段时间终于签约北京金山网络游戏事业部,完成了自己的游戏梦想,感慨万分.大学四

年,在游戏编程方面花了大量的时间和心血,走了不少弯路,快要毕业了,特把自己积累的一

些经验和感受与大家分享,希望能对像我一样想从事游戏行业的朋友一些帮助.

一.关于编程语言.
    目前的游戏编程语言主要是c/c++,移动设备使用J2ME.平台游戏上基本不用JAVA,原因

很简单,跨平台性就意味着你永远接触不到底层.而游戏引擎的编码与优化与底层息息相关

.不过对于手机平台,J2ME是目前最好的解决方案,不过这也是限制手机平台运行大型3D网络

游戏速度的主要因素.
    推荐参考书:1)<<Thinking in c++>>
               2)<<Effective C++>>,<<More Effective C++>>
               3)<<Inside the c++ mode>>
               4)<<C++ premier>>
               5)<<Exceptional C++>>
               6)<<C++ Standard Library>>

二.关于脚本语言.
    脚本语言是解除硬编码,防止重编译的利器.任何大型游戏都有自己的脚本系统.目前比

较流行的脚本语言有Python,LUA,Ruby等,我写的引擎是用LUA,因为其轻量,高效,易学,接口

干净(魔兽三就是使用的它).当然Python也有大量的应用,有兴趣的同学可以自己学学.
    推荐参考:1)LUA5的帮助文档(这个写得相当全了)
             2)LUA 官方网站
             3)<<Premier - Game Scripting Mastery>>

三.关于操作系统.
   其实操作系统的知识对游戏而言也是非常重要的,我们需要学的不是某个操作系统的AP

I,而是学习一些关键技术,如多线程,文件IO技术,内存分配技术等.重要的是思想,因为我们

可能面对不同的平台,而不同的平台API不一样,而对游戏而言,相同的平台会使用不同的技

术构件不同的引擎.我写的引擎是面向Windows的(实际上大部分的网络游戏也是),对windo

ws平台研究比较多.
   推荐参考:1)<<操作系统>>
            2)<<Windows 程序设计>>
            3)<<Win32 多线程程序设计>>
            4)<<WINDOWS核心编程>>

四.关于计算机体系结构与汇编.
   了解计算机体系结构,有助于对游戏底层进行优化.对于像XBOX360,PSP等平台的结构,与

经典计算机结构基本相同.要写一个完美的游戏引擎,需要对平台的结构作充分的了解.另一

个非常重要的话题是汇编优化.恩,对于2D游戏而言,MMX指令集做优化是非常高效的,而对于

3D游戏而言,汇编优化基本就局限在SSE指令写数学库上面了.当今的编译器已经非常完善,

不用再考虑逻辑代码汇编优化,大部分的优化应该是放在算法上,而要使硬件的能力充分发

挥,计算机平台靠DirectX/OpenGL,游戏机平台上靠基层API.
   推荐参考:1)<<计算机体系结构>>
            2)汇编语言相关资料
            3)IntelMMX,SSE指令集手册

五.关于编程工具和Framework ,.NET ,COM.
    到很多家公司看过,基本都是使的VS2003,我用的是 VC6 和 VS2005,用VC6的原因仅仅

是为了使连接库通用.不推荐使用VC6编码,因为Bug实在太多了.测试工具用VTune.在Frame

work方面,MFC 主要用在工具的编写方面,在客户端方面有游戏自己的引擎支持足够,基本不

使用MFC.不过.NET技术有用武之地,这个我也正在学习中.另外,写引擎需要了解COM.
   推荐参考:1)MFC深入浅出
            2).NET技术相关资料
            3)COM框架结构

六.关于通用游戏编程与2D游戏编程.
    游戏编程入门其实很简单,而且大多数游戏在程序框架上其实有通用性.这一方面,我感

觉自己似乎走了不小的弯路,因为太多的时间放在了2D游戏优化与引擎开发上面,而这一部

分的内容现在已经非常完善了,没有更多的研究空间.另一方面,用3D相关的技术其实能在充

分利用GPU的条件下使2D更快.不过,不可否认,2D游戏尚还有众多忠实的玩家,了解其中的奥

妙,应该还是算游戏程序员的基本素质吧.
   推荐参考:1)<<Game Programming All in One>>
            2)<<Windows编程大师技巧>>
            3)<<Game Coding Complete>>
            4)<<游戏之旅---我的编程感悟>> 云风
            5)DirectX9手册,特别是以下组件:
                DirectDraw
                DirectSound
                DirectShow
                DirectInput
            6)游戏引擎相关资料,推荐 游戏引擎网 .

七.关于3D游戏编程.
     正如前面所说,我真不是3D方面的高手,直到8月份完成游戏<<天下第一宝>>之后,才开

始正式研究3D技术.3D游戏,作为今后游戏的发展趋势,的确是技术含量最高的部分.如果想

3D引擎,必须有扎实的数学,图形学基础.并且能充分的了解3D pipline与GPU,还需要为美

工提供完美的工具集.在这方面,我只能列出一些自己已经看了或正在看的书,希望对大家有

帮助:
   推荐参考:1)<<3D游戏与计算机图形学中的数学方法>>
            2)<<计算机图形学>>
            3)<<3D计算机图形学>>
            4)<<3DGame>>
            5)<<Tricks Of The 3D Game Programming Gurus>>
            6)<<Beginning DirectX9>>
            8)Direct3D手册,学习用HLSL写Shader.
            9)如果你更喜欢OPenGL,需要了解更多OPenGL的东东

八.关于人工智能.
     人工智能在游戏中的应用没有象工业或机器人中那么复杂,但涉及的技术也挺多.很多

技术不要以为望不可及,不要以为像人工神经网络,基因算法没利用价值,其实它们都很基础

,而且很多游戏都有其简化形式的使用.当然,在目前的MMOGame中,人工智能往往成为瓶颈,

但在网速日益加快的未来,这种瓶颈会越来越小!
   推荐参考:1)<<AI.Techniques.for.Game.Programming>>
            2)<<AI.for.Game.Developers>>
            3)<<游戏编程核心算法>>中AI的部分也写得非常好
            4)<<游戏编程人工智能真言>>

九.关于网络与数据库.
    我个人的研究是在单机和客户端的引擎构架上,所以在网络服务器架构上面真的是一窍

不通.但这一部分也是一门大学问,需要考虑服务器的承载量,考虑算法分配,防外挂...我最

近也在学习和了解这方面的东西,资料就只能推荐一本咯.
   推荐参考:<<Programming.Multiplayer.Games>>

十.关于构架与项目.
    游戏也是软件项目,程序员最后也需要上升到架构和项目管理的层次上.这需要经验,也

需要许多技术.软件的模式复用与工程化方法是重要话题.
   推荐参考:<<软件工程>>
            <<UML参考手册>>
            <<设计模式>>
            <<Code complete 2>>

十一.关于游戏程序员的素质.
    哎,程序员命苦啊.游戏程序员和普通程序员一样,都面临着高强度持续使用的生涯.因

此,我觉得,游戏程序员首要的素质就是有健康的体魄!记得我在做<<天下第一宝>>的时候,

每天就睡5,6个小时,再想想华为挂掉的那个工程师~~ 哎.还好我喜欢跳街舞,身体底子好,

尚能扛得起,大家想走这条路,一定要好好锻炼啊! 另一方面,游戏程序员还需要无休止的学

习,特别是朝国外的技术学习,英语能力很重要,要写Shander,最妙的算法,国内很难找到的

. 不过,既然喜欢,就有动力啦.

   推荐参考:Hiphop街舞视频或健美操录象带,每天运动10分钟以上.

十二.关于择业.
    上帝是公平的,只要你下狠心学了,结果会是好的.游戏业的薪水待遇,只要你不是特别

差,尚算理想.北京,上海的机会很多,关于在于选择.提醒师弟师妹们,关键要看中到公司后

能学的东西,培训计划,薪水待遇是其次的.我上北京找工作的一周,面试了四家公司,收到两

个offer,其实另一个公司给的薪水是金山的两倍,但我最后还是选择了金山,原因就是感觉

氛围,环境非常好,特别是能学到非常多的东西.走出校园的第一步很重要.

    嘿嘿,写了这么多.其实我也不是游戏编程方面的专家,也不聪明,只不过花了很多时间

在上面,说出来作为给师弟师妹的纪念,希望大家能用得上,当然,也欢迎指正与交流.最后说

一句,游戏之路很艰难,要想做游戏,很多时候,你不得不放弃玩游戏,但为了梦想,一切都是

值得的.你比我聪明,加油啊!

网友评论
<