目录
来源一个某乎的作者,各服务器对比貌似来自台湾
个人锐评论一下,总结服务器入门
最后分享一个Pomelo入门-详细
这个服务器选型也说得不错
评价来源X3
pomelo实战1
pomelo实战案例2
来源一个某乎的作者,各服务器对比貌似来自台湾
上篇介绍了go版本的游戏服务器,这篇介绍下其它语言版本:
Skynet | kbengine | NoahGameFrame | Pomelo | Pinus | ET | |
---|---|---|---|---|---|---|
使用的语言 | C/Lua | C++ | C++ | Nodejs | TypeScript | C# |
概述 | 云风前辈开源的框架 | mmo框架server | 一个快速的、可扩展的、分布式的C++游戏服务器引擎/框架 | 网易开源的游戏框架 但不再维护 | Pomelo的TS版本 | 基于事件机制的框架 模块可在客户端和服务器双端使用 |
是否跨平台 | 否(Linux不需要跨平台) | 是 | 否 | 是 | 是 | 否(Linux都不能用?) |
文档情况 | 较多(云风会写文档?) | 较多(民间几乎没有(国内)) | 较少 | 较少(官方少,民间多) | 较少 | 较少 |
是否支持热更 | 是 | 是(框架这么臃肿,能热更表示怀疑) | 是 | 是 | 是 | 是 |
skynet框架
skynet网上介绍文章比较多,最大特色是使用lua来完成逻辑开发,代码级别的可热更。
kbengine and NoahGameFrame
Pomelo,Pinus,ET
总结:
1、从开发效率和速度来说,skynet和pomelo,pinus是最快的
2、从开发成本来说,ET可以双端执行,对独立开发者来说是很友好的
3、大型点的项目还是推荐skynet和kbengine,文档和issue都还在持续更新
(个人不是很认同,台湾同胞估计对国内形势不是很了解,对自身的境遇的估计不足)
个人锐评论一下,总结服务器入门
总结补充
- 其实还有被遗忘的Erlang,Erlang最大的好处就是不依赖系统,本身就是为了专用机器E瑷玛斯开发的,所以在windows单机版本也跑的很好,无需迁就Linux(我能说是做私服很好么,但其实就是没有很多人用,这行业我其实也不懂)
- skynet和pomelo的开发效率最快,那还用说的么,lua或者js,本身就不是编译语言(却是非常现代的现代语言,也是学校不会教的语言)
- ET框架其实比较搞笑,我就不展开说的,个人不是不建议用,是不建议你碰,见到就绕路走就好了,虽然我还是个c#博主
- 大型项目kbengine 还不错是因为作为c++的例子很多,比较适合愿意从头学习c++,闭关学习2~3年。总体来说也是很搞笑的,游戏战场现在都一片红海,快打到外太空了,它还在更新Issue是不是搞笑?
- Pomelo 网上内容多,适合学;Pinus 几乎没有内容,只有一个非常简陋的文档;
- 服务器硬件,搭建还是需要很多基础知识的
- 易学难精,先甜后苦,知易行难,从来都是如此
- Pomelo是网易2012年开源的服务器架构,如果懂得云风,丁丁和网易得恩怨刚好就是从那时候开始得,网易是不可能主推skynet框架的,如果云风使用js 的服务器框架也不可能存活到现在,毕竟竞争激烈,Pomelo也不容易
- 说了这么多skynet和Pemolo,大概你懂我意思?就是他两个是独一档的,比较底层,比较通用,和其他所谓的服务器”引擎“不是一回事,
- 说了这么多,真没说具体服务器如何开发;外行真的很难懂这些,但行内随便一个小公司就都用的还是这些,就是实在不行,进个厂吧,比自己摸索靠谱
最后分享一个Pomelo入门-详细
pomelo使用笔记_pomelo request_IT 哈的博客-CSDN博客
这个服务器选型也说得不错
高性能分布式游戏服务器框架-蒲公英云 (dandelioncloud.cn)
评价来源X3
https://www.cnblogs.com/dwjaissk/p/4494174.html
- skynet
- pomelo(node.js)
- elixir(erlang)
周末研究总结 手游这两年发展来看,感觉对实时性要求越来越高,有同事在研究Elixir开发,google得知这东西是基于erlang搞出来的,语法类似ruby;
公司现在客户端采用全cocos2d + c++ + lua,新项目unity3d + c# + lua, lua在产品开发中使用比较频繁,同事了解程度也比较深;
完美情况下自然最好是服务端也使用lua开发,之前就经常发生在服务端ruby代码中写lua的囧像。
周末花了两天时间做了下研究,关于高性能服务器架构的知识;无非就是
- 高性能io处理,
- 多进程多线程模型,
- 透明化分布式,
- 脚本热更新
etc 这些东西;
关于io处理 epoll和windows的iocp,对比select模型,效率对比就是轮询一堆端口:o(n)跟直接注册回调:o(1)的差别;
pomelo: 内部使用websocket或者socket.io的实现,内部也是使用epoll实现
skynet: 同样使用epoll/kqueue实现,代码在socket_epoll.c socket_kqueue.c
erlang:同skynet 据说erlang 处理1百万个空tcp链接很轻松,
这块几个研究对象区别不是特别大;
关于进程线程
pomelo:单进程单线程模型,具体原因是node.js的实现就是这样的;
skynet: 多进程多线程模型;
erlang: 单进程多线程模型;
pomelo进程之间通信是通过socket完成(包括同机),每个进程中都有一个消息循环,rpc都是异步完成,可见效率一般;
skynet是单进程内预制n个线程,每个服务有自己的消息循环,没消息的时候挂起,有消息的时候,选择一个线程来跑服务,消息队列的消息投 递使用原子锁;处于同进程内的服务间,消息通信效率还是比较高的,消息可以拷贝也可以不拷贝,建议拷贝;
erlang封装了自己的进程概念,实际上类似skynet(其实是skynet借鉴了erlang vm),每个进程对应的是操作系统线程,
综上,erlang的设计很好,所以skynet也借鉴了设计,但是介于lua开发的方便性,个人更倾向于skynet; 关于透明化cluster: 这点做的最好的是erlang,因为它在语言层面上就不需要关心物理机器,进程这些东西;skynet在这方面跟pomelo差不多,还是需要关心物 理机; 关于热更新 erlang和skynet都是可以实现热更新,pomelo新版本中能实现某些逻辑关系不复杂的模块热更新;
其他:lua的coroutine的方便之处,在异步的操作过程中,一般做法就是调用-》回调-》调用-》回调…,这种嵌套的调用代码书写很麻烦,使用协程可以方便的在一个函数内实现异步调用,挂起等待结果回调的同步效果;
写了这么多还是自己赶紧动手搞个例子比较靠谱,否则就变得纸上谈兵了
你们赶紧去练
我再多说两句,有人说Pemolo是单进程多现成,要真是这么利害,网易官方也不会不维护了现在js的特性决定的,要不是nodejs阵型的分裂还做不了服务器呢,Pemolo应该早就一统天下了,其实从诞生之初可能就是几个网易的实习生捣鼓出来,各种Lib,rpc概念封装一下,路由不错,扩展还行,就是现在pomelo半红不黑的样子
而云风的skynet就不多说了,虽然我吐槽他很多,但是巅峰时期的巅峰作品,神作
最后Erlang是1990年代诞生的产物,论架构,方法论都是顶尖,就是很难用,国内一手资料几乎没有(或者某高校计算机专业里有流传,但是不是研究生,不是博士,很难了)
//上世界90年代( •̀ ω •́ )y
pomelo实战1
Nodejs学习笔记(十六)--- Pomelo介绍&入门 - porschev - 博客园 (cnblogs.com)文章来源:https://www.toymoban.com/news/detail-678171.html
pomelo实战案例2
treasures实战 · Pomelo 中文文档 (gitbooks.io)文章来源地址https://www.toymoban.com/news/detail-678171.html
到了这里,关于游戏开发服务器选型的横向对比的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!