本人是一名四年工作经验的游戏服务端开发,有时候会感慨游戏服务器的技术栈陈旧,每家公司基本上都有自己的一套或者几套传家宝似的底层框架,而与游戏服务器开发相关的论坛比起互联网端更是少之又少。 所以有时会渴望和同行业的前辈们交流。 希望有在此行业里打拼的小伙伴们冒个泡呀。让我知道我不是一个人哈哈
![]() |
1
Joey2022 OP 亦或者是游戏开发的客户端伙伴,甚至是对游戏开发感兴趣的朋友,也可以踊跃发言~
|
![]() |
2
Joey2022 OP 也希望佬们可以推荐一些有意思的游戏开发相关的 blog
|
3
pointerman 23 天前
现在游戏行业是不是没经验简历看都不看一眼
|
4
sunny352787 23 天前 ![]() 没错,游戏这边确实爱用旧架构,稳定快速出活儿。架构好几年不变太正常了。啥时候你当主程决定技术栈的时候就可以用点新东西。
|
![]() |
5
kiracyan 23 天前
反正我感觉每个公司的都不一样
|
![]() |
6
kiracyan 23 天前 ![]() 我司的游戏网关服务器少说有 20 年历史了
|
7
zuosiruan 23 天前 via iPhone ![]() 我司的游戏后端的那套 c++也就 10+年吧
|
![]() |
8
myxingkong 23 天前 ![]() OP 有没有听过 “仙剑修”,我现在还在改二十年前的游戏客户端\服务端代码😂
|
9
hwdq0012 23 天前 via iPhone ![]() dx 群里看他们 cpp20 都库库上 协程 反射
我制造业还在 ubuntu16 + gcc5.4 |
10
Lockroach 22 天前
目前国内游戏服务端的主流技术栈和国外的分别是什么?
|
11
choiceice 22 天前 ![]() 三年客户端,已经是 UE 的形状了 hhh
|
![]() |
12
p1gd0g 22 天前 ![]() 6 年游戏全栈,这个圈子确实太封闭了,每个公司自己搞一套。
|
13
jackOff 22 天前 ![]() 之前去过三家,第一家的项目架构研究大半年得出结论,服务端代码就是 0 几年网游页游的 java 后端代码,原始版本的 spring 架构(魔改屎山)+mysql 存储过程(屎山)+mina 通信+memcached(数据库缓存+同一个机子不同实例对象的共同缓存)+redis(排行榜积分)+表结构代码生成框架(强制性拉平所有人代码风格)+hibernate+unity2d ,这套架构吃了十来年,非常稳定,就是网游这种东西改成手游画质也是一言难尽,属于非常公式化的氪金手游模板项目
第二家抽象了,spring 全家桶,看起来像是直接魔改商业版本的 web 项目改的,mybaits(xml),mq 通信,redis,unity3d,其他的记不清了,这一家技术储备比较差,项目 bug 很多,我进来挑太多 bug 估计也得罪人了,但是因为 bug 太多导致公司很快就解散了。 第三家技术力最强,游戏非常稳定,也是这几家里最好玩的。是 3d 的 moba 类对战游戏,c++程序员写前后端,unity 和 java 后端都是一个人写的,唯一的问题是全部代码没有任何注释,没有文档,全局变量随处写,java 写的和 c 语言似的,结构体都整出来了,数据库里随处可见的 arr1,arr2,arr3 这种莫名其妙的东西,估计是个人 carry 全部项目后的自由风格,反正一直看不明白项目写的啥玩意,但是的确很佩服这个项目的负责人,虽然完全从这个项目里感受不到任何程序设计之美,技术很杂很乱,客户端是 ue4 技术,和我玩 steam 游戏的感觉一模一样,后端是 mysql,redis ,memcached,kafka 还是 rabbitmq?一直没看明白这代码风格写的啥玩意,反正项目和人能跑一个就行。 总之,第一家是比较成功稳定的传统手游厂商,第二家技术储备不足,第三家非常创新大胆,敢于突破一切技术常识,尤其是在 ue 客户端开发上做了很多研究设计。 游戏性和画质是第三家最棒,第一家次之,第二家感觉像是魔兽争霸的画质 |
14
way2create 21 天前 ![]() 以玩家的角度好奇开发游戏客户端非核心玩法部分的那些操作设置之类的界面操作为什么感觉都完全不考虑简便性跟用户体验,是没时间优化还是无所谓纯偷懒还是别的原因?
玩过不少国内的端游手游这方面都很 shi ,有时候上线领个东西设置个东西都点的累死,要是点卡游戏还说故意耗费时间,有些不是的也是,完全没有非游戏产品的体验好,甚至还很感觉个别是为了方便开发强行搬不符合操作习惯的别的功能界面过来 |
15
ggzhyipeng 21 天前 ![]() @way2create 还是有一些拉在线率的原因在,还有可能是资源不够去搞其他业务了,或者干脆就是因为策划能力不足,游戏策划这行业门槛低,但是做得好的没几个
|
![]() |
16
kepenj 21 天前 ![]() 1. 游戏行业整体来讲就是周期短,需求量大。
2. 沾上这两点就不可能有大而美的框架/程序设计,全部都是拿来就用,能跑就行。慢慢的就会形成了一个公司一套系统,甚至一个项目一套系统的现状了。 3. 我之前公司的卡牌游戏全都是买的同行的,技术栈都是 10year+ ,除了卡牌项目组,其他项目组的游戏压根用不了买的那套。 4. 敢从 0 开始撸的团队/公司,要么不差钱,要么项目死公司基本也就黄了。 |
17
zuosiruan 21 天前 via iPhone
@ggzhyipeng 同感,策划属于上限和下限拉的极大的职业的,另外混子非常多。
|
![]() |
18
anynull777 21 天前
使用 php + swoole 的游戏后端见过吗
|
19
sunny352787 21 天前 ![]() 大部分都是吐槽哈哈哈哈哈,那我说点有用的吧
目前的项目是卡牌,功能偏单机,只有部分功能会有玩家交互。根据这种游戏的特点,客户端 Unity 服务端 Go ,Http API+json 进行主要功能逻辑的通讯,外加一条 websocket 做服务器主动推送消息(跑马灯之类的),聊天接第三方 SDK 。数据库 MongoDB ,Redis 做缓存。服务间通讯用 GRPC 。服务器使用 docker 镜像,线上 k8s 无状态集群。 这个架构的好处是能充分利用云服提供的各项服务:无状态服务保证你负载均衡路由到任何一个节点都可以正常运行,并且干掉了传统游戏服务器的网关;使用 Mongo 可以不用过多考虑 MySQL 之类关系数据库的建表问题,随时加功能随时扩展字段; http+json 的组合让客户端自己写服务器逻辑,不用考虑 protobuf 的协议转换;我在 gin 当中封装了数据库操作使得这帮客户端不用操心 find 、insert 等,只处理 if else 就够了,对玩家数据的修改会统一做脏数据检测存盘,这样开发效率极高也没有前后端扯皮问题;日志不存盘,直接让云服去容器控制台捞就好了。 总的原则就是降低人员成本,无论是运维人员还是开发人员。运维只需要把内网测试完毕的镜像推到云上让 k8s 滚动更新,对玩家来说就是永不停服。负载均衡会把流量路由到合适的节点。分片 Mongo 性能也能保证,热点数据丢 Redis 缓存。开发人员只需要招几个 Unity 客户端,写客户端逻辑的时候顺手就把服务端写了,反正都是 if else 。当然这套架构服务端如果换 C#可能会更方便,但我个人比较喜欢 Go 所以就没和客户端统一语言。 |
![]() |
20
funcman 21 天前 ![]() 不谈和 Web 服务器差不多的卡牌游戏的短连接服务端。MMO 游戏服务端,除了负载,最主要是有状态且要执行复杂的游戏逻辑。像守望先锋,基本上服务端要处理近似物理模拟的游戏逻辑。国内的大部分不太会去做这么复杂的模拟,但至少到后来也是往 WOW 的 cell 架构去做的。当然现在很少有网游是 MMO ,随便拿些 Web 常见技术也能用。
高并发、低延迟的系统,用常见通用技术很难做出来。 |
![]() |
21
ouou0701 21 天前 ![]() 每个公司多有自己的祖传代码,之前公司都是一套 cocos2dx 框架用好多年,不过公司有技术梯度,cocos2dx - u3d - ue4 ,cocos 赚钱的时候开始搞 u3d ,u3d 赚钱的时候开始搞 ue4 ,然后一点点淘汰之前的技术,不过后端是万年一套,都是当年 4399 那套
|
![]() |
22
guyeu 21 天前 ![]() 游戏技术栈地域性很强,不同的公司/品类/团队往往也有自己的一些小巧思,但是整体上还是没办法把很多 web 领域的前沿实践给落地,有水土不服的原因也有研发团队求稳守旧的原因。
|
23
ShawnLeex 21 天前 ![]() @way2create 你都说了是非核心玩法的一些交互,这部分在开发中的权重不高是可以一个个版本去迭代的,国内商业游戏肯定是优先考虑赚钱,先去优化能让玩家充值的系统或者核心玩法
|
24
way2create 21 天前 ![]() @ShawnLeex 有些是过于逆天了 我才会疑问一下 我都无语了 曾经玩过一个网游叫剑网 3 里边有时候特殊节日会送个小饰品福袋 你知道怎么领的吗?他那个饰品分左右 忘记多少个了 反正那个福袋打开每页可能有个 5~10 个,然后可以点下一页,我需要怎么领呢:
1 进入商城试穿预览 看哪个好看 然后记住名称 但是不能这里领 2 退出商城,打开左边福袋 翻个 10 几页 点击领取 确定 不小心点错了取消就得重新翻 3 打开右边福袋 重复 2 我会有这种疑问就是因为这种交互放在其他市面上产品 感觉就不可能上线 感觉也就玩游戏能遇到这么离谱的 所以在纳闷是玩家太宽容了还是这一行有什么特殊 |
25
ShawnLeex 21 天前 ![]() @way2create 哈哈哈你的感觉没错,我自己在开发的时候也会吐槽策划的脑瘫交互,不止难操作还增加了开发量。但是连王者荣耀这种体量的游戏,那些新出的活动有时候也很逆天,所以大部分情况是系统策划没有花多少心思在交互上,也是国内游戏行业的通病了,过于逐利而缺乏工匠精神
|
26
v2shuffle 21 天前
@anynull777 hyperf ?
|
27
BALDOOR 21 天前 ![]() 游戏服务器就是大杂烩,几乎就是现代软件工程上的“瞎几把乱修”(不是邪修,比邪修更恶劣),什么没见过,没听过的技术/实现方式都有,就连自研语言(脚本),自研储存引擎都有,不是几千上万人大公司,而是几十人的小公司,直呼牛逼!
所以各家解决方案哪怕同种语言的差别比人和狗都大,各种技术不管合不合适瞎几把堆上去,除了只有一个他们想要的优点之外,剩下的全是缺点,运行起来完全靠运气,更不存在稳定性这种东西,别以为大厂没有,他们甚至更夸张。 但不妨碍他们《换皮》就是快这个可以忽视其他所有缺点的优点,你看到市面上的大部分买量中小公司的“新”游戏,其实都在换皮+换个新世界观+几个新规则而已,管你什么技术不技术的,就是能赚钱。而被你们经常骂的腾讯网易等,人家起码真的在做新游戏。 其实别说服务器,就连客户端都一样,几乎都有一套基于特定引擎的,积累好多年的脚手架之类的,对于大部分功能,UI Boy 能迅速复制粘贴+修改就能完成功能,甭管好不好,就是能用,就问你快不快。 能赚钱的技术就是好技术,赚不到钱,你技术能上天也没用 先赚到钱,然后才是技术上的迭代,当然,除非你的技术是在当下能改变世界的那种,就像 AI 对于大多数人,如果你不能改变,那就去融入,当然不是叫你一出道就当个守着几十年前的技术不愿意变的老顽固,老的能用就尽量用,该革新的就革新 重点的重点,呵护好自己的头发,还有身体!!! |
![]() |
28
xiaoliuzhenshuai 21 天前 ![]() java 游戏服务端 5 年
第 1 家 java+netty+mysql+redis mmo xmx4096m 一服上限 150 人 第 2 家 spring+java+netty+mysql+redis+zookeeper 回合制卡牌 xmx2048m 一服上限 1500 人 游戏内重要的内容:1.战斗 2.大世界玩法 3.养成线 4.活动 5.充值 |
![]() |
29
anynull777 18 天前
@v2shuffle 就是原生 php+swoole ,回合制的游戏
|