学游戏开发,从客户端还是服务端开始?

##前言
近几年,游戏开发行业风生水起,入行的个个都赚个盆满钵满,这种现状反过来又吸引着更多人源源不断地进行这个行业。

学游戏开发,从客户端还是服务端开始?

那么,对于刚刚转行到游戏开发或者有意转行的朋友来说,应该从哪里开始学起呢?

这个问题,Blake老师也多次讲到。今天,我们换一个角度,请一位学员结合自己的经历谈一谈这个问题。

可能更能引起共鸣吧。

学游戏开发,从客户端还是服务端开始?


简单来说,就是客户端和服务端,要学哪个?

接下来,我们通过两者的分析试着让大家都能从中找到一个更适合自己的方向。

首先

技能点需求不同。

服务器,又称后端。

需要用到的知识有:数据库,数据结构,网络编程等等。是不是感觉和其他行业的差不多,而且基本都是大学里学到的。可能大学里唯一没接触过的是Linux开发和脚本语言。

客户端,又称前端。

技能点方面,图形学应该是其他行业很少接触到的。龙书应该是绕不过的。

其次

编程语言不同。

服务器的主流是c或c++,一般会搭配一个脚本语言lua,这也基本是国际上的主流。

有些另类,像广州的页游系有用erlang的,网易有个别项目有用纯Python的。c#的,Java的也有遇到过一两个但是整体不多。

在我看来语言只不过是个工具而已,从业越久就越不在乎语言,重点是服务器架构的设计。

主程(程序部的老大)在乎的是高乘载高容错,快速开发等等。

即使我是用c的,和用py的人,聊设计也能聊得通。当然,对于入行新人来说,语言挺重要的。

我的建议是,**如果想做服务器,可以从c++入手。**对于lua则是多做了解。但是对于面试机会,任何语言的岗位都不要错过。因为一些非主流的语言岗位(erlang,py)对于语言精通的宽容度是很高的。

学游戏开发,从客户端还是服务端开始?

至于前端,要看你想从事哪种游戏的开发(服务器则不存在这个问题,因为服务器的载体基本都是Linux)。

如果你想从事的是单机游戏开发的话,可能就要研究市面上的一些主流的引擎。大部分引擎都是基于c++上开发的。但是最大的问题是在于,现在国内做单机的厂家很少了,你能得到的机会也相对少很多网络端游,基本和单机游戏差不多,但是也有一些项目是用自研引擎的。不过,语言基本都是c++。

端游的问题和单机游戏遇到的一样:基本没几家网游公司会开端游项目了。能开的起的都是大公司,他们会从自己内部抽调一批老手来做,不缺人,所以嘛……

页游,as是过去页游用到的。但是,同样的,传统的页游市场在萎靡(当然有新兴的页游市场,下面会提到)。很多厂商都转战手游了。加上页游处于玩家鄙视链底端,估计你选择这条路的可能性很小。

学游戏开发,从客户端还是服务端开始?

手游,现在国内主战场。没什么好说的,unity,Cocos2dx。个人建议是unity,基本都在用。

另外,提一嘴,虽然unity支持c#和JavaScript,但是大家都是在用c#来做。另外的另外,一般用unity的项目都会外接lua来写逻辑层。对,又是那个lua。尤其是在苹果商店上线的游戏,不接lua就很难频繁的迭代版本(噢,这该死的ios审核)

学游戏开发,从客户端还是服务端开始?

一些新兴的市场,例如能在手机上玩到渣渣辉。简单的理解就是跨平台页游。h5,白鹭引擎都是可以值得关注的点。

咋一看下来,是不是觉得前端的语言更多更细,不知道从何入门。

其实不然,首先你先确定自己想发展的领域。前面提到了,在国内想一入门就做端游,基本就是要靠爱发电了。手游是国内目前发展机会最多的领域,而新兴市场也值得关注。但是个人感觉短时间内很难取代手游。

学游戏开发,从客户端还是服务端开始?

至于,将来手游市场饱和,各大厂商转战其他市场怎么办?

其实这种情况在中国游戏发展史里经历过很多次,我就遇到一些从端游转到页游,再转到手游的人。就像我之前提到的语言只不过是工具,你可以把当作敲门砖入行,但是之后就要靠自己的悟性去入门。

再次

遇到的困难不同。

服务器。乍一看很多其他行业转游戏后端很美好,基本可以无缝转,但是实际情况呢?

开发团队对服务器最重要的3点需求:稳定稳定,还是tm的稳定。这就意味着,后端不太爱用新人,也不太爱动架构。你会看到一些上了年纪的项目十年如一日的用着老旧的架构。程序员明知道那里底层有问题,但是考虑到稳定性,就缝缝补补又三年。

学游戏开发,从客户端还是服务端开始?

所以,这就表示,一来你能拿到的面试机会就少。二来,就算你真的成功拿到offer,你就要去死磕一些很绕很绕的代码。甚至有可能为了补一个窟窿,另一个程序员又插了段代码进来。然后,按了葫芦起了瓢,各种奇怪的东西插进来。

当然前端也有这种情况,但是前端对稳定性的需求远没有后端高。很多时候可以放心的大段大段重构代码。

再就是开发的难度,前端大部分情况就是所见即所得,我做对了,我能看得到。

而后端则是很虚的东西,简单的讲就是面对一堆数据,还不能出错。我到底做对没?打个断点看看,打个日志看看。这种情况会发生吗?我怎么模拟?单人的情况没问题,多人的情况会有问题吗。人很多的时候会不会爆炸?

学游戏开发,从客户端还是服务端开始?

另外就是运营事故的发生,这是后端最怕的。

如果是前端出了大bug,顶多就是个别客户端崩溃,闪退。但是数据还在啊,玩家没实质损失。

但是后端就不一样了,后端无小事。

首先外面能在运营,并能活下去的项目,起步都是同时在线四五千以上(日活几万十万)。更不用说那些大项目,几百万同时在线了。一旦出现服务器崩溃(玩家登录不上,数据回档),写出个恶性bug(玩家东西不见,或者能刷东西),那意味着什么。你不仅要面对外网玩家山呼海啸的责骂,整个部门都会盯着你,别的市场,运营,客服部门也在bb你。

所以,实际上后端你能拿到的机会远比前端的少,入门难度则比前端的大。

学游戏开发,从客户端还是服务端开始?

##最后

发展前景不同

因为我不是hr,所以不了解具体的薪资。

但是就感觉而言,新人入门,做服务器的工资应该比做客户端的高一些,毕竟物以稀为贵嘛。

但是越到后面双方的差距会越小。到了主程级别,就没区别了。那时不在于你是后端主程或是前端主程,而是在于你牛不牛逼咯。

再一次声明,这仅是我基于个人经验得出的经验,不一定适合每一个人,但绝对保证真实。

希望能对大家有所启迪和帮助。

再见。