想做游戏开发,是选择做服务端还是客户端。?
21 个回答
不再纠结!全面分析,搞定游戏客户端、服务端如何选择
不同的方向各方面都完全不同,这里从技能点、优缺点、难度、待遇、发展前景五个角度对比分析。
1. 技能点
客户端
- 语言基础: C++/C#/Python/LUA
- 游戏引擎:Unity/UE
- 计算机基础:数据结构、操作系统
- 游戏专业方向:图形学、游戏逻辑
语言基础和所选择的引擎相关,一般标配是会两种,即主要语言+ 脚本语言。unity对标C#,UE对标C++。脚本语言LUA/Python来说,市面上用LUA的公司远多于python。
游戏引擎的选择,主要看个人了。希望深入了解引擎,并且有C++基础,可以考虑UE。想选择面更广,工作机会更多的可以考虑Uinty。当然,目前来看,UE的需求正在逐步增加,说不定过五年十年就超过Unity。游戏方向的技能点不同游戏不一样。一些通用的可以深入研究,如AI、渲染、动画等等。
服务端
- 语言基础:C++/LUA/Python
- 计算机基础:数据结构、操作系统、网络、数据库、设计模式、Linux系统
- 游戏专业方向:游戏逻辑
- 网络深入:高并发、同步、性能优化
游戏服务端基本上用C++ 和 一门脚本语言,计算机基础部分重点是网络和数据库,都可以深挖。
客户端和服务端的技能点除了语言和计算机基础,很大部分是不相同的。选择的时候就需要考虑兴趣和知识背景了。
2. 优缺点
再来谈谈客户端和服务端的优缺点比较。
客户端优点:
- 需求大
- 出问题容易解决
- 入门容易
客户端缺点:
- 知识面广、杂
- 迭代次数多
客户端的优缺点很分明,一般不会出啥问题,有问题在写代码或测试的时候就能发现。但是要求的知识点很杂,因此存在许多的深入方向。
服务端优点
- 技术面窄、要深度
- 迭代少
- 一通百通,一招鲜,转行容易
服务端缺点
- 出事就是大事故
- 随时被叫回来维护
- 需求少
- 入门门槛相对高
服务端最大的优点就是相对客户端更容易转行,无论是转入还是转出。一些在入行游戏时担心以后路越来越窄的人会优先考虑服务端。缺点也很明显,需求少。
之前我做过一个简单的需求调研,
发现目前客户端:服务端 = 6 :1
原文如下,里面也有一些其他结论可供参考
3. 难度
服务端入门比客户端难,为什么呢?
- 资料少
谈及游戏开发,默认指游戏客户端。市面上的书籍、视频、博客各种教程,客户端远大于服务端。
- 自学时必须会客户端,不然无法验证服务端逻辑
光有服务器无法做游戏,光有客户端却可以做单机游戏。对于初学者,想验证游戏逻辑,一定需要客户端支撑。也就是说在前期,需要话一定时间学习客户端。
- 更抽象,难理解
服务端的逻辑都是抽象的,一些能通过客户端验证的逻辑如AI、状态机还是很友好的。一些逻辑验证不了的就很麻烦了,比如高并发。这也是为什么服务端水平可以通过实现过多少并发的服务器来衡量。就是理论再动一大堆,还需要事实支撑。
4. 待遇
不同公司待遇不一样。对于同样初级水平的人,客户端和服务端待遇是一样的。
这里从拉勾网上统计,每个岗位20个工资数据,取平均工资数。情况如下,
对于校招 ,是不区分客户端服务端的。都是一个价。
对于社招 ,客户端比服务端工资略高。
当然,平均数据不能代表个人水平,实际工资由个人技术水平决定。
5. 前景、发展空间
前景和发展空间是一个很虚的话题。
从技术发展方向来看 ,客户端发展方向很多,引擎、TA、主程。服务端终点就是主程。发展到后面,客户端主程、引擎和服务端主程都很牛逼,没有谁比谁差。
从工资水平来看 ,到后面也没什么区别,真正区别在于技术价值是否放大,游戏分红多少,股份占有多少等等。真正的高端人才,无论是客户端还是服务端还是引擎,都是稀缺的。任何一个方向都可以深挖下去,成为高端人才。
从游戏行业角度看 ,服务端或客户端都是必不可少,游戏未来有云游戏,重服务端,有AR/VR,重客户端,都很有发展空间。
总之,一个方向深耕,做到稀缺,前景都很光明。
6. 个人见解
最后,再回归原题,选客户端还是服务端?
眼光不应该聚焦在岗位上,思考的点不应该是待遇、前景、难度等等,区别并没有多大,而是应该回归自身。
- 自己喜欢客户端还是服务端?
- 客户端和服务端的日常工资状态自己想要哪个?
- 选游戏开发的目的是什么?
- 自身目前技术积累是什么?和哪个更相近?
- 自己需求是什么?在校生准备找一个方向学习?在职人员准备快速换一份工作?为了兴趣?为了钱?
这里有我写过的一篇各个岗位日常可供参考。
最后,祝愿看到该文章的你不再纠结,都能得到一份满意的工作。
若觉得不错, 点赞 、 关注 支持下吧~
从几个方面回答你吧。
1.技能点需求
服务器,一般叫后端。需要用到的知识有:数据库,数据结构,网络编程等等。是不是感觉和其他行业的差不多,而且基本都是大学里学到的。可能大学里唯一没接触过的是Linux开发和脚本语言
客户端,一般叫前端。技能点方面,图形学应该是其他行业很少接触到的。龙书应该是绕不过的
2.编程语言
服务器的主流是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.你会遇到的困难
服务器,咋一看,很多其他行业转游戏后端很美好。基本可以无缝转。但是实际情况呢。
开发团队对服务器最重要的3点需求:稳定,稳定,还是tm的稳定。这就意味着,后端不太爱用新人,也不太爱动架构。你会看到一些上了年纪的项目十年如一日的用着老旧的架构。程序员明知道那里底层有问题,但是考虑到稳定性,就缝缝补补又三年。
所以,这就表示,一来你能拿到的面试机会就少。二来,就算你真的成功拿到offer,你就要去死磕一些很绕很绕的代码。甚至有可能为了补一个窟窿,另一个程序员又插了段代码进来,然后,按了葫芦起了瓢。各种奇怪的东西插进来。当然前端也有这种情况,但是前端对稳定性的需求远没有后端高。很多时候可以放心的大段大段重构代码
再就是开发的难度,前端大部分情况就是所见即所得,我做对了,我能看得到。而后端则是很虚的东西,简单的讲就是面对一堆数据,还不能出错。我到底做对没?打个断点看看,打个日志看看。这种情况会发生吗?我怎么模拟?单人的情况没问题,多人的情况会有问题吗。人很多的时候会不会爆炸?
另外就是运营事故的发生,这是后端最怕的。如果是前端出了大bug,顶多就是个别客户端崩溃,闪退。但是数据还在啊,玩家没实质损失。但是后端就不一样了,后端无小事。首先外面能在运营,并能活下去的项目,起步都是同时在线四五千以上(日活几万十万)。更不用说那些大项目,几百万同时在线了。一旦出现服务器崩溃(玩家登录不上,数据回档),写出个恶性bug(玩家东西不见,或者能刷东西),那意味着什么。你不仅要面对外网玩家山呼海啸的责骂,整个部门都会盯着你,别的市场,运营,客服部门也在bb你。
所以,实际上后端你能拿到的机会远比前端的少,入门难度则比前端的大
4.发展前景
因为我不是hr,所以不了解具体的薪资。
但是就感觉而言,新人入门,做服务器的工资应该比做客户端的高一些,毕竟物以稀为贵嘛。
但是越到后面双方的差距会越小。到了主程级别,就没区别了。那时不在于你是后端主程或是前端主程,而是在于你牛不牛逼咯