1、发信人: brianyao (kuku), 信区: CCST标 题: 写给以游戏业为梦想的师弟师妹们:)发信站: 吉林大学牡丹园站 (Mon Nov 27 08:40:19 2006)前段时间终于签约北京金山的网络游戏事业部,完成了自己的游戏梦想 ,感慨万分.大学四年,在游戏编程方面花了大量的时间和心血,走了不少弯路,快要毕业了, 特把自己积累的一些经验和感受与大家分享,希望能对像我一样想从事游戏行业的朋友一些帮助.一.关于编程语言.目前的游戏编程语言主要是 c/c+,移动设备使用 J2ME.平台游戏上基本不用JAVA,原因很简单,跨平台性就意味着你永远接触不到底层.而游戏引擎的编码与优化与底
2、层息息相关.不过对于手机平台,J2ME 是目前最好的解决方案 ,不过这也是限制手机平台运行大型 3D 网络游戏速度的主要因素.推荐参考书:1)2),3)4)5)6) 二.关于脚本语言.脚本语言是解除硬编码,防止重编译的利器.任何大型游戏都有自己的脚本系统.目前比较流行的脚本语言有 Python,LUA,Ruby 等,我写的引擎是用 LUA,因为其轻量,高效,易学,接口干净(魔兽三就是使用的它).当然 Python 也有大量的应用, 有兴趣的同学可以自己学学.推荐参考:1)LUA5 的帮助文档(这个写得相当全了)2)LUA 官方网站3)三.关于操作系统.其实操作系统的知识对游戏而言也是非常重要的
3、,我们需要学的不是某个操作系统的 API,而是学习一些关键技术,如多线程,文件 IO 技术,内存分配技术等. 重要的是思想,因为我们可能面对不同的平台,而不同的平台 API 不一样, 而对游戏而言,相同的平台会使用不同的技术构件不同的引擎 .我写的引擎是面向 Windows 的(实际上大部分的网络游戏也是),对 windows 平台研究比较多.推荐参考:1)2)3)4)四.关于计算机体系结构与汇编.了解计算机体系结构,有助于对游戏底层进行优化. 对于像 XBOX360,PSP 等平台的结构,与经典计算机结构基本相同.要写一个完美的游戏引擎,需要对平台的结构作充分的了解.另一个非常重要的话题是汇
4、编优化 .恩,对于 2D 游戏而言,MMX 指令集做优化是非常高效的,而对于 3D 游戏而言 ,汇编优化基本就局限在SSE 指令写数学库上面了.当今的编译器已经非常完善, 不用再考虑逻辑代码汇编优化,大部分的优化应该是放在算法上,而要使硬件的能力充分发挥,计算机平台靠 DirectX/OpenGL,游戏机平台上靠基层 API.推荐参考:1)2)汇编语言相关资料3)IntelMMX,SSE 指令集手册五.关于编程工具和 Framework ,.NET ,COM.到很多家公司看过,基本都是使的 VS2003,我用的是 VC6 和 VS2005,用 VC6 的原因仅仅是为了使连接库通用.不推荐使用
5、VC6 编码,因为 Bug 实在太多了.测试工具用 VTune.在 Framework 方面,MFC 主要用在工具的编写方面,在客户端方面有游戏自己的引擎支持足够,基本不使用 MFC.不过.NET 技术有用武之地,这个我也正在学习中.另外,写引擎需要了解 COM.推荐参考:1)MFC 深入浅出2).NET 技术相关资料3)COM 框架结构六.关于通用游戏编程与 2D 游戏编程.游戏编程入门其实很简单,而且大多数游戏在程序框架上其实有通用性 .这一方面,我感觉自己似乎走了不小的弯路,因为太多的时间放在了 2D 游戏优化与引擎开发上面,而这一部分的内容现在已经非常完善了 ,没有更多的研究空间.另一
6、方面,用 3D 相关的技术其实能在充分利用 GPU 的条件下使 2D 更快. 不过,不可否认,2D 游戏尚还有众多忠实的玩家,了解其中的奥妙,应该还是算游戏程序员的基本素质吧.推荐参考:1)2)3)4) 云风5)DirectX9 手册,特别是以下组件:DirectDrawDirectSoundDirectShowDirectInput6)游戏引擎相关资料 ,推荐 游戏引擎网 .七.关于 3D 游戏编程 .正如前面所说,我真不是 3D 方面的高手,直到 8 月份完成游戏之后,才开始正式研究 3D 技术.3D 游戏,作为今后游戏的发展趋势 ,的确是技术含量最高的部分.如果想写 3D 引擎,必须有扎
7、实的数学,图形学基础.并且能充分的了解 3D pipline 与 GPU,还需要为美工提供完美的工具集.在这方面,我只能列出一些自己已经看了或正在看的书,希望对大家有帮助:推荐参考:1)2)3)4)5)6)8)Direct3D 手册, 学习用 HLSL 写 Shader.9)如果你更喜欢 OPenGL,需要了解更多 OPenGL 的东东八.关于人工智能.人工智能在游戏中的应用没有象工业或机器人中那么复杂,但涉及的技术也挺多.很多技术不要以为望不可及,不要以为像人工神经网络,基因算法没利用价值,其实它们都很基础,而且很多游戏都有其简化形式的使用.当然,在目前的 MMOGame 中, 人工智能往往
8、成为瓶颈,但在网速日益加快的未来,这种瓶颈会越来越小!推荐参考:1)2)3)中 AI 的部分也写得非常好4)九.关于网络与数据库.我个人的研究是在单机和客户端的引擎构架上,所以在网络服务器架构上面真的是一窍不通.但这一部分也是一门大学问,需要考虑服务器的承载量,考虑算法分配,防外挂.我最近也在学习和了解这方面的东西,资料就只能推荐一本咯.推荐参考:十.关于构架与项目.游戏也是软件项目,程序员最后也需要上升到架构和项目管理的层次上 .这需要经验,也需要许多技术.软件的模式复用与工程化方法是重要话题 .推荐参考:十一.关于游戏程序员的素质.哎,程序员命苦啊.游戏程序员和普通程序员一样,都面临着高强
9、度持续使用的生涯.因此,我觉得,游戏程序员首要的素质就是有健康的体魄! 记得我在做的时候,每天就睡 5,6 个小时,再想想华为挂掉的那个工程师 哎.还好我喜欢跳街舞,身体底子好,尚能扛得起,大家想走这条路, 一定要好好锻炼啊! 另一方面,游戏程序员还需要无休止的学习,特别是朝国外的技术学习,英语能力很重要,要写 Shander,最妙的算法,国内很难找到的不过, 既然喜欢,就有动力啦.推荐参考:Hiphop 街舞视频或健美操录象带 ,每天运动 10 分钟以上.十二.关于择业.上帝是公平的,只要你下狠心学了,结果会是好的.游戏业的薪水待遇, 只要你不是特别差,尚算理想.北京,上海的机会很多,关于在于选择.提醒师弟师妹们, 关键要看中到公司后能学的东西,培训计划,薪水待遇是其次的.我上北京找工作的一周,面试了四家公司,收到两个 offer,其实另一个公司给的薪水是金山的两倍, 但我最后还是选择了金山,原因就是感觉氛围,环境非常好,特别是能学到非常多的东西.走出校园的第一步很重要.嘿嘿,写了这么多.其实我也不是游戏编程方面的专家,也不聪明,只不过花了很多时间在上面,说出来作为给师弟师妹的纪念, 希望大家能用得上,当然,也欢迎指正与交流.最后说一句,游戏之路很艰难,要想做游戏,很多时候,你不得不放弃玩游戏,但为了梦想,一切都是值得的. 你比我聪明,加油啊!