有没有人知道如何从商业过渡到游戏编程?怎么会有人开始游戏编程?这似乎更令人兴奋和有益(更好的支付?).但看起来大部分失学的工作都是为了商业编程.有关如何操作或是否可以完成的任何建议或见解?
这不是你问题的直接答案,"我怎样才能过渡?" 但相反,我建议你不要走这条路,或者至少对它是什么感觉要现实.为了支持这一点,我将引用2004年igda对游戏开发者生活质量调查的一些统计数据:
34.3%的开发商希望在5年内离开该行业,并在10年内离开该行业51.2%.
只有3.4%的人表示他们的同事平均经历了10年或更长时间.
关键时刻无处不在,受访者每周工作65至80小时(35.2%).平均每周工作超过80小时(13%).加班通常是无偿的(46.8%).
44%的开发人员声称他们可以在项目中使用更多人或特殊技能.
配偶可能会回应"你工作太多......"(61.5%); "你总是感到压力." (43.5%); "你赚不到钱." (35.6%).
与预期相反,更多人表示,游戏只是他们的许多职业选择之一(34%),而不是游戏是他们唯一的选择(32%).
很多年前,我自己创建了几个游戏开发网站,然后是GameDev.net的创始人之一.我这样做的原因之一是建立联系并专业地进入游戏开发.这绝对有效,一些共同创始人的人已经继续在这个行业工作,我相信我也可以这样做,但我所学到的关于这个行业的一切都教会了我以下几点:
那里有无数的开发人员认为游戏开发真的很酷.雇用该行业的人都知道这一点,并且几乎不会向你付钱,因为他们依赖于这个基本上无穷无尽的人群.
行业内的许多开发人员可能对3D或声音或许多其他主题都不错,但他们往往缺乏您或我可能认为必不可少的基本软件实践经验.在那个类别中,我会提供诸如源代码控制,测试第一个设计,设计模式等等.甚至当他们知道更好的时候紧急关闭时,通常会让他们在愚蠢的尝试中抛弃良好的软件实践以节省时间.
在游戏中工作两年很快就会比在任何其他计划上工作两年没有什么不同.也就是说,当你不得不日复一日地挖掘程序的内容并处理它的错误时,只有那一个游戏,它似乎不再那么有趣了.事实上,你可能会发现自己玩其他游戏只是为了摆脱它一段时间.
什么说你打算在Half-Life X上工作,或者每年都会出现几十个很酷的游戏?记住,有人在那里建造与下一部Will Farrell电影相关的游戏,它可能会成为你.看看出来的大部分残骸.那些东西不会发展自己.
这是一个过渡期!思维方式的最大区别在于,从业务领域对抽象的依赖转移到了一个领域,在这个领域,你更专注于你所针对的特定硬件,并在严格的时间和内存预算下运行.游戏编程更像是嵌入式编程而不是像Web编程一样 - 你必须考虑所有内容的确切内存占用,并且CPU时间非常宝贵.
这是一个MMO服务器程序员甚至是这样,因为a)服务器必须在80毫秒内回答每个客户端命令才能感觉到响应,并且b)服务器上游戏的占用空间越大,你拥有的硬件就越多买,这需要真正的钱.
首先,你应该学习C++,如果你还没有.现在几乎所有的游戏都是用C或C++编写的.游戏机具有严格限制的内存,如果你分配一个字节超过512mb它不会减速,它会崩溃; 同时,每次通过主app环路都要在33ms或更短的时间内完成,所以我们不能依赖垃圾收集和智能指针.游戏开发世界是那些特殊应用程序之一,您真正需要进行所有这些优化,这里的人们说你永远不需要再做了.
另外,算上你的数学.游戏是由线性代数和运动学构建的 - 不仅仅是图形,还有世界的状态以及每个角色和物体的行为.我喜欢Eric Lengyel的游戏数学书 ; 多年来它一直是我的圣经(虽然还有许多其他好的).
您可以尝试学习一些图形数学和编程,但现在这是一种亚专业,通常只有游戏团队中的几个人真正在DirectX调用级别工作.我怀疑你对游戏逻辑和服务器后端更感兴趣,后者不太专业.
制作游戏.有许多框架可以帮助您入门.XNA的优势在于它是真正的游戏随附的实际产品,与PyGame或SDL不同,PyGame或SDL可以快速启动和运行,但几乎没有商业支持.
人们过渡到游戏行业的一个共同路线是作为游戏开发团队的工具开发人员开始.
这些工具通常用C#等高级语言编写,用于帮助开发游戏.例如,您可以帮助维护或修改团队内部地图级别编辑器,或帮助开发将一种媒体文件格式转换为其专有文件格式的工具.
在您花了一些时间作为工具开发人员之后,您可以开始学习侧面的领域知识并自然地转换为众多类型的游戏程序员之一:
游戏物理程序员
人工智能程序员
图形程序员
声音程序员
游戏程序员
编剧
UI程序员
输入程序员
网络程序员
游戏工具程序员
移植程序员
技术程序员
主角游戏程序员
现代游戏通常由角色方面的庞大且高度分裂的团队制作.所以,选择上述专业之一并开始学习,当你试图踏上门时,可能是值得的.毫无疑问,你应该精通C++和一个主要的图形库(OpenGL,DirectX等).不要强调学习两者,只需选择一个并学习它.一般来说,非常了解一个人的人可以在需要时过渡到另一个人.