|
明确两点:
1.游戏开发只是借助了电脑和图形学,没有这两个,一样可以开发游戏。
2.图形学是为了在电脑里模拟物体而形成的一门研究领域。
目前,游戏公司偏重于成熟稳定的框架,这样更有利于快速开发游戏,毕竟根本是为了赚钱。只有很少一部分大公司需要自己去搞游戏引擎,只有当开发或者定制游戏引擎的时候,才会用到一点图形学的知识,不过总的来说,游戏只用到了很少一部分图形学知识。更多的图形学知识,会用于建模/电影之类的。如果你感兴趣于游戏,那么图形学会让你走的更远,不过短期来看并没有什么卵用,不如踏踏实实把一款游戏引擎用好,这样游戏公司大部分的工作才适合你。
上面全是废话,下面才是我想说的:
首先,无论外部环境如何艰难,作为一个有志于游戏开发的程序员,你都不该自暴自弃,学习更高深的东西,有百利而无一害。同时,作为社会人,你需要提供高质量的服务,这是你应该承担的责任。下面主要是针对对游戏开发和图形学有兴趣,却不知如何下手的同学的一些小小的建议。
--------------------------------------游戏工程---------------------------------------------
在中国,游戏在很大程度上是服务业,不是制造业。一款游戏更多的是内容驱动(美工,策划),程序员反而成了辅助,为游戏的实现而提供技术方案。
其次,1.游戏顾名思义是为了娱乐而制定的一套规则,它的可玩性高于一切。可玩性是游戏施加给玩家的挑战组合,一个游戏如果能让玩家觉得有无限的可能性,那么就说明这个游戏可玩性比较高。一个规则可能很简单,但是当多个规则组合起来,就会产生不可预测的结果,这就是游戏的魅力。More is Different。可以试试用编程来玩玩生命游戏。还有一个梗,如果计算机在一个游戏中无法战胜玩家,那么就说明这个游戏有很高的可玩性。2.游戏是一场赌博,比如游戏中的生物,如果它们的属性都千篇一律,是不是很无聊,而如果仅仅是加入了一点随机,会让玩家感觉这个游戏更真实,更有想玩的冲动。 计算机的出现,让游戏开发变得更加学科化,因为计算机可以代替人脑来执行规则。这意味着,作为程序员,你就是秩序的象征,你就是上帝。 建议:
0.如果只想写游戏逻辑,只用熟悉框架,熟悉语言。客户端框架推荐unity3d,unreal4,cocos2d,这些框架都有完整的工具链(脚本,资源管理,编辑器),可以让你快速上手,同时社区也比较火热,不用担心遇到问题没地方问。服务端不太了解,每个公司都有自己的服务端引擎吧,我比较看好一款叫kbengine的开源引擎和云风大哥的skynet,希望朋友们可以推荐一下还有哪些开源的游戏网络引擎对初学者比较友好。
1.如果觉得引擎不符合你的要求,你想自己定制,做一个引擎geek。那么ogre是个很好的选择(虽然有人说它过分设计,但是你如果很厉害,还是可以改的嘛)。另外,龚大大(叛逆者)的klayGE不错。
2.如果想本科毕业后从事更为核心的设计。学好线代/信号系统/数学分析/概率统计(重要程度由高到低)很重要,然后去找一些图形学初期的论文看看,主要是理解别人的意思。线代不用说了,游戏中的各种变换都依赖于线代提供的数学工具。信号系统提供的思路,如何从不同的基来表达信号,很大程度会改变你的世界观,对,世界观,然后游戏中的pre/postprocess很多用到信号系统(本科的同学Oppenheimer懂得吧)。数学分析,会培养你的数学演绎能力,这点在数学建模,特别是游戏这样一个理想国里,是非常有用的。概率统计,AI不能多说。
3.大学期间,如果想开发游戏证明自己,绝对不要要求太高。如果你能找到一个美工同学,那么跟他/她一起成长再好不过。千万别因为想自己做一款游戏而走偏了方向。我就因为想做游戏而自学了建模,在youtube上下载了将近200G的blender教程,到最后,可以做一些基本的物体,调一些动作,做一些纹理,而且全是用一个鼠标完成,至今不会用数字板。这些工作你可以投入一些时间,但是这些时间你可以用来做更有意义的事情,比如成为一个编程高手。
4.可以考虑实现一个软渲染器,很多人推荐,虽然我没去做过,不过应该收益蛮大。它可以让你对渲染的本质有所理解,同时增加你的代码掌控力。推荐《3d游戏编程大师》,理解核心即可。
5.电子游戏开发,需要各方面学科的能力,c++/directx(问我为什么不写opengl),软件架构,编译原理,网络,数据库。都要尝试动手去做(比如学操作系统,你就可以试着给一些简单的cpu写个系统,不要是x86架构,因为你还只是个学生;数据库的话,你可以先尝试写keyvalue型的数据库;网络的话,可以自己试试写个网络库(推荐@陈硕大哥的muduo,因为有书可以配合理解);编译原理,一个简单的脚本语言;这些你都可以去尝试,比你考高分有用的多)。这句话我想说三遍。
6.gamedev/stackover,希望你常去看看。
7.记得把你作品保留下来,然后不断对它迭代,如何把它保留下来是门学问,我就因为太关注于本身能力的修炼而忽略了这个。大四之前写过的代码和硬盘因为一杯咖啡全送进了回收站Forever。如果你是一个有心的人,那么找一份游戏相关的工作完全不是问题。
8.紧接着上面的一点。学会使用github,自己写个博客。很重要,不要嫌麻烦。血泪教训。
9.说到图形学与游戏的关系。不得不谈到一个人,也是我最崇拜的一个人。3D游戏引擎之父-john carmack。关于他的逸闻趣事有许多。最出名的是那个开根号的magicnumber,0x5f3759df,让游戏中最常用的函数快了4倍!也是那本《doom启示录》让我对图形学和游戏开发更加神往。
10.上面说了点工程方面的,更多是围绕游戏领域。然而在图形学这个领域中,有许多细小的分支更值得关注。具体的一些见硕鼠酱的答案。
-------------------------------图形学--------------------------------------
图形学还是交给大牛们介绍比较好,不过作为入门,我挑了几个经典有趣核心的方面说说。
0.Physic中的Deformable Body。这是我比较喜欢的一个子领域。它主要是研究物体的物理性质,如何模拟物体的受压形变及其恢复过程。比如一个植物,你将它折弯,松开,它会摆动,如何在计算机中表示这些摆动呢?有两个可选方案,1.Mass Spring System.是将物体受压运动看成由很多小弹簧共同震动产生的。我记得我刚读大学的时候就拜读了Milo Yip大神在麻辣马《爱丽丝梦游魔镜》中关于头发的建模(如果我记得没错,就是MY写的吧?同时感谢他翻译的《游戏引擎架构》,质量很高),那篇文章算是DBody的一个入门吧。2.有限元方法。
刚加入知乎,如果稍微有点帮助,希望读者给个赞。 |
|