当你在吃鸡,王者农药的时候是否有想过如何才能做出一款这样让人神迷的游戏?
游戏开发这个方向看起来目标很明确,但其实是个领域很广的方向,入门的时候如果得不到指点一二,很容易误入歧途,相反,如果走这条路之前能得到前人的一些指引,是可以事半功倍的。
下面就结合自己的学习历程和大家分享下游戏开发的学习路线。
1.介绍
游戏开发分为客户端和服务端两条不同的路线,路线不同,所需的技能也不同。
但有些技能还是通用的,比如都需要掌握基础开发语言,数据结构与算法,计算机网络等。
2.游戏客户端学习路线
1.首先,一开始可能对游戏引擎没什么概念,建议先入门一两个游戏引擎(我推荐可以先去学习Cocos2d-x和Unity3D两个引擎,市面上大多数游戏是利用这两个引擎开发的)。入门阶段要做的就是看该引擎的教程(书籍、视频、网上博客、网上教程、官方帮助文档等),并且熟练该引擎所使用的编程语言。
因为不同平台下的性能不同,支持的编程语言也不尽相同,所以针对不同平台下的流行的游戏引擎也是不同的。下面列举一些现在流行的游戏引擎。
windows或游戏主机:【Unreal】、寒霜、CE3
苹果IOS:【unity3D】、【cocos2d-x】、【Unreal】、sparrow、sprite kit。
安卓:【unity3D】、【cocos2d-x】、【Unreal】、AndEngine、libgdx。
网页:【Egret】、【cocos2d-js】、Fancy3D、unity3D。
当然并不是不同平台的游戏开发,就毫无共通之处,学了这个到了另一个平台就无用了。不是这样的,编程的世界里你走得越远你会发现很多东西的本质都是相似的,例如你如果扎实地理解了C++的基本语法,日后再转Java语言也不是很难的事情,因为它们本质的面向对象特性还有各种编程语言特性都是相通的。
2. 因为游戏开发就是一门实时渲染的艺术,所以离不开图形库的学习。现在主流的图形库是Windows平台专用的DirectX 11和通用平台的Opengl。这两个图形库,至少需要入门其中一个。
3.然后,你就可以开始看计算机图形学的书籍了。如果你发现你的理论底子不足,这个时候就需要补一下线性代数、基本的微积分、还有3D数学的知识。
4.游戏引擎中包含了各个部分,上面的渲染只是游戏引擎的一部分。还有其它诸如着色器编写、地形编写、物理引擎编写、模型和动画、人工智能体设计、网络编程等等,完成渲染部分的基本学习后,你可以选择自己感兴趣的部分进行专攻,毕竟我们实际工作大多数时候是团队开发,而不是单打独斗,每个人都应该精通自己所擅长的那部分。
5.至此,独自开发一款小型游戏已经完全不在话下了。也具备了加入公司合力开发一款大型游戏的能力。
3.游戏服务端学习路线
1.首先需要熟悉一门服务端语言,比如C/C++、PHP等,会使用一个开发框架。
2.会在服务器上搭建环境,拿lamp来说linux和apache、mysql、php四者担任的角色要清楚。大多服务器会选择搭建在Linux环境下,所以也需要熟悉Linux操作命令。
3.至少熟悉一种数据库。比如关系型数据库mysql,能熟练写出增删改的语句和不算很复杂的查询语句,再比如了解各种方式的多表查询有哪些不同等数据库技能也是需要的。
4.了解网络编程及多线程等。比如http通信协议。跨平台的交互一般http是使用比较广泛的,需要大体了解,你得清楚请求报文通常包含哪些部分、常见的服务器返回码对应的含义。
5.会使用至少一种数据格式。服务端和客户端建立了联系,数据的传输也需要一种协议格式去统一。json是目前使用率最高的格式了。json的数据格式还是简单明了易学的,主要是要了解如何使用它较好的去定义接口。
关于学习路线,我觉得对于学习者,尤其是初学者来说,非常有用,它的作用就是一幅地图,让你在浩瀚的知识丛林不至于迷失方向,甚至放弃在 99% 的地方。
作为一个过来人,我深知初学者的迷茫和无助,我当初也走了很多弯路。现在有些坑我替大家踩了,分享我总结的学习路线,是希望大家能站在我的肩膀上走的更远更容易些。
作者:小码哥
座右铭:追求平淡不平凡,做一个不甘平凡的码农!
个人公众号:码之有道