游戏编程的一些东西
2011-05-04 00:09
246 查看
前段时间终于签约北京金山的网络游戏事业部,完成了自己的游戏梦想,感慨万分.大学四
年,在游戏编程方面花了大量的时间和心血,走了不少弯路,快要毕业了,特把自己积累的一
些经验和感受与大家分享,希望能对像我一样想从事游戏行业的朋友一些帮助.
一.关于编程语言.
目前的游戏编程语言主要是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,其实另一个公司给的薪水是金山的两倍,但我最后还是选择了金山,原因就是感觉
氛围,环境非常好,特别是能学到非常多的东西.走出校园的第一步很重要.
嘿嘿,写了这么多.其实我也不是游戏编程方面的专家,也不聪明,只不过花了很多时间
在上面,说出来作为给师弟师妹的纪念,希望大家能用得上,当然,也欢迎指正与交流.最后说
一句,游戏之路很艰难,要想做游戏,很多时候,你不得不放弃玩游戏,但为了梦想,一切都是
值得的.你比我聪明,加油啊!
年,在游戏编程方面花了大量的时间和心血,走了不少弯路,快要毕业了,特把自己积累的一
些经验和感受与大家分享,希望能对像我一样想从事游戏行业的朋友一些帮助.
一.关于编程语言.
目前的游戏编程语言主要是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,其实另一个公司给的薪水是金山的两倍,但我最后还是选择了金山,原因就是感觉
氛围,环境非常好,特别是能学到非常多的东西.走出校园的第一步很重要.
嘿嘿,写了这么多.其实我也不是游戏编程方面的专家,也不聪明,只不过花了很多时间
在上面,说出来作为给师弟师妹的纪念,希望大家能用得上,当然,也欢迎指正与交流.最后说
一句,游戏之路很艰难,要想做游戏,很多时候,你不得不放弃玩游戏,但为了梦想,一切都是
值得的.你比我聪明,加油啊!
相关文章推荐
- 游戏编程的一些东西
- 关于.net的一些基本的东西
- hustoj相关学习资料以及一些问题的整理还有乱七八糟的东西
- shell的一些很有用但是易忽略的东西
- 有关结构体的一些东西(自己总结的书上的)1
- 关于php线程安全的一些东西
- 写了一些不知所谓的东西
- ODBCAPI和数据库编程的一些东西
- 一位大师总结的东西---J2EE学习中一些值得研究的开源项目
- PHP语法结构中的一些东西
- 关于link的一些东西, 摆脱default lib
- 本人的一些有用的东西的汇总
- 如何在用户登录时SAP时自动执行Tcode或者其他一些东西
- 声明指针需要注意的一些东西
- android 杂记6:Android xml资源文件的一些东西
- 一些琐碎的东西
- 安卓设计的一些东西
- spring项目中监听器作用-ContextLoaderListener(项目启动时,加载一些东西到缓存中)
- 对接银行接口时写的一些通用东西
- spring项目中监听器作用-ContextLoaderListener(项目启动时,加载一些东西到缓存中)