当前位置:谷粒网 > 干货分享 > 正文

总结:那些热门的开源游戏服务器框架 还不看你就out了 (2022年热门总结)

作者:赵颂鸣 干货分享 2023-06-01 04:53:48 阅读:23

作为一名业内资深的游戏开发人员,经常会遇到实习的新同事在工作中会问到这样的问题:

总结:那些热门的开源游戏服务器框架 还不看你就out了 (2022年热门总结)

工作中到底有哪些开源游戏服务器框架,该去值得学习呢?

囊括到node.js 、java、C#、golang 、c++、python 等技术栈有各种各样的游戏框架。

本文给大家总结了一些github上star和fork比较常用的且有一定数量的较为完整的框架做了一个说明,大家可以往下看。

地址: https://github/cloudwu/skynet

基于此引擎开发的游戏众多,很多棋牌小企业在用,例如简悦的 陌陌争霸 食物战争 等等很多产品...

地址: https://github/NetEase/pomelo

一花科技等棋牌在用

地址: https://github/ketoo/NoahGameframe

代表作全民无双

地址: https://github/kbengine/kbengine

已经被电魂网络收购

地址: https://github/egametang/ET

经过产品验证并且教程比较完善

地址: https://github/topfreegames/pitaya

zooba appstroe排行很高的moba、吃鸡类游戏

但是,像c++类的框架对新手要求较高。

亦或者node.js类框架性能确实差一些,毕竟它是针对io密集型。

阿博自己的话使用的是pitaya这套框架。毕竟支持分布式使用的技术比较新,也经过各种验证。 其他的就先不做评价,留着给大家发表一下意见。

毕竟,只要适合自己的才是最好的。

是的不......

如何在自己电脑上架设游戏服务器

为什么golang的开发效率高?

golang是一编译型的强类型语言,它在开发上的高效率主要来自于后发优势,不用考虑旧有恶心的历史,又有一个较高的工程视角。良好的避免了程序员因为“ { 需不需要独占一行 ”这种革命问题打架,也解决了一部分趁编译时间找产品妹妹搭讪的阶级敌人。

它有自己的包管理机制,工具链成熟,从开发、调试到发布都很简单方便;

有反向接口、defer、coroutine等大量的syntactic sugar;

编译速度快,因为是强类型语言又有gc,只要通过编译,非业务毛病就很少了;

它在语法级别上支持了goroutine,这是大家说到最多的内容,这里重点提一下。首先,coroutine并不稀罕,语言并不能超越硬件、操作系统实现神乎其神的功能。golang可以做到事情,其他语言也可以做到,譬如c++,在boost库里面自己就有的coroutine实现(当然用起来跟其他boost库一样恶心)。golang做的事情,是把这一套东西的使用过程简化了,并且提供了一套channel的通信模式,使得程序员可以忽略诸如死锁等问题。

goroutine的目的是描述并发编程模型。并发与并行不同,它并不需要多核的硬件支持,它不是一种物理运行状态,而是一种程序逻辑流程。它的主要目的不是利用多核提高运行效率,而是提供一种更容易理解、不容易出错的语言来描述问题。

实际上golang默认就是运行在单OS进程上面的,通过指定环境变量GOMAXPROCS才能转身跑在多OS进程上面。有人提到了的pomelo,开源本来是一件很不错的事情,但是基于自己对callback hell的偏见,我一直持有这种态度:敢用nodejs写大规模游戏服务器的人,都是真正的勇士 : ) 。

2、Erlang与Golang的coroutine有啥区别,coroutine是啥?

coroutine本质上是语言开发者自己实现的、处于user space内的线程,无论是erlang、还是golang都是这样。需要解决没有时钟中断;碰着阻塞式io,整个进程都会***作系统主动挂起;需要自己拥有调度控制能力(放在并行环境下面还是挺麻烦的一件事)等等问题。那为啥要废老大的劲自己做一套线程放user space里面呢?

并发是服务器语言必须要解决的问题;

system space的进程还有线程调度都太慢了、占用的空间也太大了。

把线程放到user space的可以避免了陷入system call进行上下文切换以及高速缓冲更新,线程本身以及切换等操作可以做得非常的轻量。这也就是golang这类语言反复提及的超高并发能力,分分钟给你开上几千个线程不费力。

不同的是,golang的并发调度在i/o等易发阻塞的时候才会发生,一般是内封在库函数内;erlang则更夸张,对每个coroutine维持一个计数器,常用语句都会导致这个计数器进行reduction,一旦到点,立即切换调度函数。

中断介入程度的不同,导致erlang看上去拥有了preemptive sche***ng的能力,而golang则是cooperative shce***ng的。golang一旦写出纯计算死循环,进程内所有会话必死无疑;要有大计算量少io的函数还得自己主动叫runtime.Sched()来进行调度切换。

3、golang的运行效率怎么样?

我是相当反感所谓的pingpong式benchmark,运行效率需要放到具体的工作环境下面考虑。

首先,它再快也是快不过c的,毕竟底下做了那么多工作,又有调度,又有gc什么的。那为什么在那些benchmark里面,golang、nodejs、erlang的响应效率看上去那么优秀呢,响应快,并发强?并发能力强的原因上面已经提到了,响应快是因为大量非阻塞式io操作出现的原因。这一点c也可以做到,并且能力更强,但是得多写不少优质代码。

然后,针对游戏服务器这种高实时性的运行环境,GC所造成的跳帧问题确实比较麻烦,前面的大神 @达达 有比较详细的论述和缓解方案,就不累述了 。随着golang的持续开发,相信应该会有非常大的改进。一是屏蔽内存操作是现代语言的大势所趋,它肯定是需要被实现的;二是GC算法已经相当的成熟,效率勉勉强强过得去;三是可以通过incremental的操作来均摊cpu消耗。

用这一点点效率损失换取一个更高的生产能力是不是值得呢?我觉得是值得的,硬件已经很便宜了,人生苦短,让自己的生活更轻松一点吧: )。

4、基于以上的论述,我认为采用go进行小范围的MMORPG开发是可行的。

怎么架设游戏服务器?

搭建游戏服务器首先需要确定整个游戏程序的框架,这样才能确定游戏服务器所需要物理架构。

大型多人在线游戏服务器,负载,稳定,效率(包括反馈延迟和开发效率)是这种服务器基本要求。游戏服务器,是一个会长期运行程序,并且它还要服务于多个不定时,不定点的网络请求。所以这类服务的特点是要特别关注稳定性和性能。这类程序如果需要多个协作来提高承载能力,则还要关注部署和扩容的便利性;同时,还需要考虑如何实现某种程度容灾需求。由于多进程协同工作,也带来了开发的复杂度,这也是需要关注的问题。

让菜鸟和穷人也能架成自己的征途服务器:

首先你要忘掉网上发表的繁琐的架设教程,那都是有意无意的骗子,按本方法保证能很方便地架起自己的真征服务器。

一,机器需求。

内存必须大,建议4G,cpu要求不高,只要是64位的就行,比用amd

4200+,这套机器下来,价格在2000元元以下。

二,安装RHEL

5.0,可以电驴上搜索,DVD版的,下载后打人刻在一张DVD盘上。

Red

Hat

Enterprise

Linux

(Server

including

virtualization)系列号:2515dd4e215225dd

安装时,选则上mysql

web

等服务,其它可以不选,玩不转linux的人请关闭防火墙。

三,安装成功后,进入图形界面,界面很容易上手,在这里把网卡IP设好,这里假设为

192.168.0.200

然后

服务

中把

mysqld

httpd

选上启动并保存。

四,把home.tgz放在根目录,在图形界把它解开,在home目录里生成有server

ztgame

BAK三个目录。

把/home/BAK/MySQL.shared-compat-5.0.45-0.rhel5.x86_64.rpm安装上。

五,建立数据库用户zt10game

开通远程和本地权限

默认的root密码是空,第一进入要设置root密码,一定要把它记住。然后用以下命令建议名为zt10game密码是12345678的用户:

grant

all

privileges

on

*.*

to

'zt10game'@'localhost'

identified

by

'12345678'

with

grant

option

grant

all

privileges

on

*.*

to

'zt10game'@'%'

identified

by

'12345678'

with

grant

option

六,建立和导入游戏数据库

在客户机安装SQLyog

Enterprise。把home.tgz中的BAKsql解在本地机,按名字建立数据库把把内容导入。

七,客户机管理工具主要用两个

SecureCRT

WinSCP3,前者是远程操作的,后者是文件管理。用WinSCP3设置所有文件为777属性。

八,用SecureCRT登录,cd

/home

然后

./4g.sh等待游戏启动。出现三个

可以进游戏啦,服务端启动完毕。

九,客户请用1.04加三合一补丁。

十,登录器请用

可注册的完美登录器,这些网上都有。实在找不到的请回贴索取。

声明:这个端是一个朋友弄的,一不小心被我拿到,现发出来供大家学习、研究,据说用综合了网上可能找到的紫龙1.04

征途资料

做征途最新版这三个素材而成,学习者请在24小时后删除,绝不可用于商业用途,发生法律纠纷由使用者承担法律责任,本人概不责。(转)

以上就是关于总结:那些热门的开源游戏服务器框架,还不看你就out了全部的内容,如果了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

版权声明:本文内容由用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。转载请注明出处:https://www.gulizw.com/guli/165410.html

网友评论

  • 随机文章

  • 热门文章

  • 最新文章