使用Go 语言开发大型 MMORPG 游戏服务器怎么样
从2013年起,经朋友推荐开始用Golang编写游戏登陆服务器, 配合C++做第三方平台验证 到编写独立工具导表工具GitHub - davyxu/tabtoy: 跨平台的高性能便捷电子表格导出器 以及网络库GitHub - davyxu/cellnet: 简单,方便,高效的Go语言的游戏服务器底层 最终使用这些工具及库编写整个游戏服务器框架, 我的感受是很不错的
细节看来, 有如下的几个点:
语言, 库
Golang语言特性和C很像, 简单, 一张A4纸就能写完所有特性 你想想看, C++到了领悟阶段, 也只用那几个简单特性, 剩下的都是一大堆解决各种内存问题的技巧 而Golang一开始就简单, 何必浪费生命去研究那一大堆的奇技*巧呢
Golang的坑只有2个:1 interface{}和nil配合使用, 2 for循环时, 将循环变量引入闭包(Golang, Lua, C#闭包变量捕获差异) 完全不影响正常使用, 复合语言概念, 只是看官方后面怎么有效的避免
用Golang就忘记继承那套东西, 用组合+接口
用Golang服务器如何保证解决游戏服务器存盘一致性问题 stop the world是肯定的, 但是Golang可以从语言层并发序列化玩家数据, 再通过后台存盘
channel是goroutine虽然是Golang的语言特性 但是在编写服务器时, 其实只有底层用的比较多
Golang的第三方库简直多如牛毛, 好的也很多
不要说模板了, C#的也不好用, 官方在纠结也不要加, 使用中, 没模板确实有点不方便 用interface{}/反射做泛型对于Golang这种强类型语言来说,还是有点打脸
运行期
Golang和C++比性能的话, 这是C++的优势, Golang因为没虚拟机, 只有薄薄的一层调度层 因此性能是非常高的, 用一点性能牺牲换开发效率, 妥妥的
16版后的GC优化的已经很好了, 如果你不是高性能,高并发Web应用, 非要找出一堆的优化技巧的话 只用Golang写点游戏服务器, 那点GC损耗可以忽略不计
和其他现代语言一样, 崩溃捕捉是标配功能, 我用Golang的服务器线上跑, 基本没碰到过崩溃情况
热更新: 官方已经有plugin系统的提交, 跨平台的 估计很快就可以告别手动cgo做so热更新
开发, 调试, 部署, 优化
LiteIDE是我首选的Golang的IDE, 虽然有童鞋说B格不高 但这估计实在是找不到缺点说了, 别跟我说Visual Studio, 那是宇宙级的
曾经听说有人不看好Golang, 我问为啥: 说这么新的语言, 不好招人,后面打听到他是个策划 好吧
真实情况是这样的: Golang对于有点编程基础的新人来说, 1周左右可以开始贡献代码 老司机2~3天
开发效率还是不错的, 一般大的游戏功能, 22人一周3~4个整完 这换C++时代, 大概也就1~2个还写不完 对接服务器sdk的话, 大概1天接个10多个没问题
Golang自带性能调优工具, 从内存, CPU, 阻塞点等几个方面直接出图进行分析, 非常直观, 可以参考我博客几年前的分析: 使用Golang进行性能分析(Profiling)
Golang支持交叉编译, 跨平台部署, 什么概念 linux是吧 不问你什么版本, 直接windows上编译输出一个elf, 甩到服务器上开跑不超过1分钟时间
socketio适合做mmorpg游戏。因为socketio适用于游戏服务器开发,也可用于开发高实时Web应用。大型的多玩家角色扮演的游戏叫MMORPG。MMORPG是非常流行的网络游戏类型,具有极大的市场占有率。如魔兽世界、神鬼认证、怪物猎人online、龙之谷、剑侠情缘网络版3、天下三、永恒之塔、神鬼世界、永恒世界、剑灵,以及被公认为第三代网游的上古世纪等都属于MMORPG。MMORPG具有一个持续的虚拟世界,玩家离开游戏之后,这个虚拟世界在游戏营运商提供的主机式服器里继续存在,并且不断演进。
其实mmorpg游戏是两个词,前者的mmo代表的是大型多人在线,相信大家应该是比较了解大型多人在线这个词的就这么来举个例子,一般这个词指的就是任何具有网络连接的游戏,在服务器上可以让大量的玩家,注意,这个大量玩家是最起码要1000个人左右的,让1000人同时在线的游戏就可以称之为是大型多人在线游戏。
接着拿前几年很火爆的逆水寒这款游戏来说吧,它就是网易旗下的一款大型多人在线游戏,能够同时支持1000个人进行玩耍的游戏。事实上这款游戏的热度在巅峰时期的时候,其实我不说大家也明白,可能都有几十万人同时在线了。
而后方的rpg这个词,其实我倒是觉得大家应该是较为熟悉的吧,对于rpg这个词,大家应该理解的都是较深的,他就是角色扮演的意思。
角色扮演的意思就是让玩家去负责扮演一个或多个角色,简单一点来说,就是以第一视角或者说是第三视角来进行的一系列剧情行为,像这种角色扮演玩法能给玩家们带来很好的代入感,是目前主流的大型游戏都必备的一个。
mmorpg是根据英文MassiveMultiplayer Online Role-Playing Game转换成中文,就是大型多人在线角色扮演游戏的意思了。
就比如说大家一直是奉为经典的魔兽世界,就是属于大型多人在线角色扮演游戏的一种。
另外再给大家说,一个可能没有怎么想到的地方,就比如说前几年非常流行的传奇游戏,什么贪玩蓝月等等之类的,其实这种游戏它也是属于这个大型多人在线角色扮演游戏的范围的。
大型多人在线角色扮演游戏,虽然说在剧情的设定上和世界观人物观等等之类,不如单机游戏设定的那样真实强悍,但是也是具有着一定剧情的,可以让玩家们了解到游戏的背景丰富了一些的游戏体验。
其实不得不说mmorpg这个词汇一开始我也是不明白的,毕竟后者我是知道是角色扮演的意思的,现在比较流行的天涯明月刀和天谕以及一些端游等等都是属于角色扮演的,毕竟角色扮演的热度很高,基本上每一个大型的游戏都会带一点这种剧情元素。但是mmo是真的很难懂,直到上网查才能够知道是一种什么意思。
最后再给大家通俗易懂的讲解一下大型多人在线了,这里我一开始也是不懂的,但是后来我明白了一个通俗的说法,只要不是单机,只要服务器厉害,能够让大量的玩家同时玩游戏,它就是一款大型多人在线游戏。
结语:
大型多人在线角色扮演游戏一般来说质量都是比较高的,因为不仅仅是有着一个较好的服务器,而且还拥有着一定的精良剧情,所以说一般体验都是比较不错的。
MMORPG,是英文Massive(或Massively)Multiplayer Online Role-PlayingGame的缩写。
也就是大型的多玩家的角色扮演的游戏都叫MMORPG。
至今尚未有MMORPG的正式中文译名,而在中国比较常见的译法则是"大型多人在线角色扮演游戏",是网络游戏的一种。在所有角色扮演游戏中,玩家都要扮演一个虚构角色,并控制该角色的许多活动。
MMORPG与单机游戏(例如三国志系列)和其他小型的、由多人参加的角色扮演游戏(例如CS)的区别在于:MMORPG具有一个持续的虚拟世界;玩家离开游戏之后,这个虚拟世界在网路游戏营运商提供的主机式服器里继续存在,并且不断演进。
MMORPG是非常流行的网络游戏类型,具有极大的市场占有率。现有市面上的游戏如魔兽世界、神鬼认证、怪物猎人online、龙之谷、剑侠情缘网络版3、天下三、永恒之塔、神鬼世界、永恒世界、剑灵,以及被公认为第三代网游的上古世纪等都属于MMORPG。
0条评论