常用开源游戏服务端框架比较

基本信息

框架

出现年份

维护者/社区

自身语言

支持使用的语言

是否支持脚本扩展

文档完善程度

社区支持度

适用游戏类型

Nakama

2015年

Heroic Labs

Go

Go, C#, Java, JavaScript, Lua, Python

支持

4

5

跨平台游戏、社交游戏、实时多人游戏

Photon

2009年

Exit Games

C++, C#, Java

C++, C#, Java, JavaScript, Objective-C, Swift, Python

不支持

3

4

实时多人游戏

Pitaya

2017年

Pitaya Network

Go

Go, C#, Java, Lua, Python

支持

3

3

实时多人游戏

KBEngine

2014年

kbengine

Python

Python

支持

3

4

大型多人在线游戏、实时战略游戏、休闲游戏

Skynet

2012年

cloudwu

C

Lua

支持

2

4

网络服务、游戏后台、物联网

DarkRift

2010年

DarkRift Networking

C#

C#

不支持

2

3

实时多人游戏

Colyseus

2017年

endel

TypeScript

TypeScript, JavaScript

不支持

4

4

策略游戏、卡牌游戏、MOBA

功能特性

框架

分布式

帧同步

实时多人

非实时多人

聊天系统

排行榜

社交系统

匹配系统

脚本扩展

数据库

Nakama

支持,使用Raft协议

支持,基于客户端预测和服务器校验

支持

支持

支持

支持

支持

支持,基于Elo算法

支持,使用Lua

支持PostgreSQL和CockroachDB

Photon

支持

支持,基于客户端预测和服务器校验

支持

支持

支持

支持

支持

支持,基于Elo算法

不支持

支持NoSQL和MySQL

Pitaya

支持,使用Raft协议

支持,基于客户端预测和服务器校验

支持

支持

支持

支持

支持

支持,基于Elo算法

支持,使用Lua

支持MongoDB和Redis

KBEngine

支持

支持,基于状态同步

支持

支持

支持

支持

支持

支持,基于Elo算法

支持,使用Python

支持MySQL、MSSQL、Oracle等多种数据库

Skynet

不支持

不支持

支持

支持

不支持

不支持

不支持

不支持

支持,使用Lua

支持MySQL和MongoDB

DarkRift

不支持

支持,基于状态同步

支持

支持

不支持

不支持

不支持

不支持

不支持

不支持

Colyseus

不支持

支持,基于客户端预测和服务器校验

支持

支持

不支持

不支持

不支持

不支持

不支持

支持MongoDB和SQLite

功能特性2

框架

用户认证

数据同步

通信协议扩展

房间管理

AI

AOI

寻路

后端物理

大世界支持度

Nakama

支持

支持,支持状态同步和事件同步

支持自定义协议

支持,具有灵活的房间管理和自定义属性

支持

支持

支持

不支持

支持

Photon

支持

支持,支持状态同步和事件同步

支持自定义协议

支持,具有多种房间类型和灵活的房间属性

支持

支持

支持

支持

支持

Pitaya

支持

支持,支持状态同步和事件同步

支持自定义协议

支持,具有多种房间类型和灵活的房间属性

支持

支持

支持

不支持

不支持

KBEngine

支持

支持,支持状态同步和事件同步

支持自定义协议

支持,具有多种房间类型和灵活的房间属性

支持

支持

支持

支持

不支持

Skynet

不支持

支持,支持状态同步和事件同步

支持自定义协议

不支持

不支持

不支持

不支持

不支持

不支持

DarkRift

不支持

支持

支持自定义协议

支持,具有多种房间类型和灵活的房间属性

不支持

不支持

不支持

不支持

不支持

Colyseus

支持

支持,支持状态同步和事件同步

支持自定义协议

支持,具有多种房间类型和灵活的房间属性

不支持

不支持

不支持

不支持

不支持

其他

Pitaya 作为 Go 语言的游戏服务端框架,使用了很多 Go 社区的组件,比如 etcd 和 NATS 。具体而言,使用 etcd 作为服务注册和发现的中心,用于管理服务器集群的状态和位置信息;而使用 NATS 作为消息中间件,用于实现服务器之间的通信和消息路由。