Linux/C++ && 游戏服务器必坑指_North

学了,但又没完全学


0. 情况

21届,秋招从互联网后台转游戏服务器开发。

情况特殊,不构成任何参考和建议。入行需谨慎。

虽然后台开发是就业中的热门方向,但是游戏服务器开发还是挺小众的。网络上几乎找不到关于这个岗位的资料。

本(水)文定位是提供一个视角,简要描述一下游戏服务器开发的工作内容,以及相关的技术栈和知识体系。实际上读完本篇,游戏服务器开发还没开始,其实连门槛都没看到,更别说摸一摸了。这就是个扫盲贴

1. Overview

游戏服务器开发这个岗位只会在 C-S 架构的网络游戏中出现。

游戏服务器主要作用是:

  1. 进行游戏数据的校验,防止作弊,维护游戏的公平;

  2. 实现游戏逻辑,客户端表现始终需要和服务器保持同步;

  3. 实现联机玩法。

注意。一般来说,游戏后台可能并不属于游戏服务器开发。这里的游戏服务器开发,指的是游戏项目组的服务器开发,而游戏后台岗位很有可能是平台服务,属于中台的一部分,在公司内为多个项目组提供支持。

此外,游戏 AI 部分也是服务器控制的。可能 AI 策略需要算法同学来实现,但是控制是由服务器实现的。一般用在 PVE 机器人 NPC 之类上面。

2. 技术栈

游戏服务器开发技术栈比较杂,不同的项目之间差别非常大。这主要取决于游戏品类。

常见的品类有 MMO,SLG,枪战,卡牌,棋牌,超休闲等。

游戏服务器没有标准答案,同一品类内只有参考答案。为了在服务器性能和开发效率间取得平衡,游戏服务器在开发过程中会使用多种编程语言。

重度游戏,如对服务器要求较高的 MMO 和枪战品类,基本上是 Linux/C++ 环境开发。初级工程师主要掌握的技能是 Linux/C++ 环境下的开发和调试,C++ 11标准,网络协议和网络IO相关。

轻度的游戏服务器会追求开发效率以及后续维护,使用 Lua/Golang 进行开发,需要掌握这些语言的生态。

卡牌游戏或者休闲游戏,使用 Golang/JavaScript/Erlang 进行开发,原因同上,只是业务逻辑更简单,开发速度更高,维护时需要的人数更少。

大概总结一下就是:编程语言 + 操作系统 + 网络编程。

3. 知识体系

互联网更倾向于分布式架构,面对海量数据的业务场景,以及高并发、低延迟、高可用、scalability(不知道怎么翻译,应该是可扩展性)的业务需求,已经有一套相对成熟的解决方案。

游戏服务器更注重高性能。至于原因先按下不表。

如果目标是在游戏公司获得一份后台开发的工作,那么学习互联网平台的相关体系,然后寻找平台开发的相关机会,是比较合适的选择。

游戏公司的平台开发虽然相较于互联网,发展比较一般,但下班相较于互联网要早。(互联网加到9点不鲜见,但是游戏平台业务一般 7 点前后就可以离开)。业务内容和互联网类似。

如果目标是游戏服务器开发,建议学习 C/C++ 语言,C++ 标准/标准库(比如 STL),以及系统编程以及网络编程的相关知识。前者有 C++ 通用学习体系,后者可以借助于几本砖书,比如《Unix环境高级编程》,《Unix网络编程》卷一,《TCP/IP详解》前两卷。

4. 发展前景

游戏服务器开发的岗位相较于客户端方向要少一些。和客户端负责 Gameplay 部分大致相同。

游戏服务器开发和游戏开发技术没有多大的关系,大多还是后台的技术。互联网后台和游戏后台一定程度上可以互转,很多内容是相通的。

游戏服务器业务还有相当大的进步空间,业务场景比较广阔。

游戏服务器开发的收入会高一些,但是不同项目间的差距会非常大。而且会出现项目被砍这种极度打击精神和财务的事件。

5. 结尾

欢迎交流。有疑惑建议提到评论区,也可以私信。

水平有限,观点很有可能是片面的而且是错的,请多批评指正。

6. 推荐资料

因为确实没有什么资料,所以推荐 云风的BLOGSkywind Inside,以及 skywind3000 的 知乎
此外是文中推荐的 UNIX环境高级编程(第3版) 和 [UNIX网络编程]
(https://book.douban.com/subject/1500149/) 以及 RFC-793(TCP)。

在读上述资料前需要有一些基础,上来就直接开搞会蒙圈。

水完了,社区等级应该不会跌到 5 级了。

#Linux##学习路径#
全部评论
感谢分享。对游戏服务器和后台开发两边投的同学帮助很大。
1 回复 分享
发布于 2022-03-21 17:46

相关推荐

评论
6
34
分享

创作者周榜

更多
牛客网
牛客企业服务