Nakama

 

基本信息

Nakama是由Heroic Labs开发的开源分布式游戏后端框架,采用Go语言开发,以gRPC作为基础通信协议。

功能特点

• 开源与自托管:开源的特性让开发者能自由查看代码,自托管方式可自行部署,相比PlayFab、Photon等SaaS型解决方案,成本更低,且能让开发者拥有更大的灵活性和控制权。

• 架构高效可扩展:基于Go语言开发,性能出色,分布式架构可支持大规模并发请求,在高并发场景下稳定性佳。

• 多语言扩展支持:为熟悉Lua的游戏开发者和Golang后端开发者都提供了友好的扩展接口,通过运行时SDK能用多种方式为服务器定义自定义业务逻辑。

• 内置丰富功能模块:涵盖用户注册与认证(支持第三方OAuth)、实时多人匹配、聊天与社交功能、排行榜与奖励系统、云存储与文件存储等,降低了开发门槛,使开发者能专注于游戏创新。

技术核心

• 服务架构:包含API网关,处理玩家请求并路由;实时引擎,支持WebSocket和gRPC进行实时数据流交互;存储服务,提供分布式NoSQL数据存储能力;脚本运行时,运行开发者编写的Golang或Lua扩展逻辑。

• 用户匹配机制:有随机匹配,自动将相似条件用户匹配在一起;分组匹配,允许开发者自定义逻辑,实现更灵活的匹配。

• 实时游戏会话:对实时会话提供Match模型,开发者可编写自定义Match Handlers控制会话流程,包含如matchLeave()等管理玩家离开会话时清理工作的生命周期方法。

Nakama适用于多人在线游戏、社交网络集成等场景,能为游戏开发者快速构建功能丰富的游戏服务器,让其将更多精力投入到游戏创意和用户体验上。

 

一、简介

Nakama是Heroic Labs开发的开源分布式游戏后端框架,用Go语言编写,以gRPC作为基础通信协议。它专门面向社交和实时游戏场景,为开发者提供一整套构建在线游戏服务器的解决方案,能帮助开发者快速搭建功能丰富的游戏后端。

二、功能特点

1. 开源与自托管:Nakama开源,开发者可自由查看和修改代码,还能自行部署在各种云平台(如Google Cloud、Azure、AWS 等)或私有服务器上。与PlayFab、Photon这类SaaS型解决方案相比,自托管降低了长期成本,开发者对服务器有更大控制权,能根据游戏需求灵活调整服务器配置和功能 。

2. 高效可扩展架构:基于Go语言开发,Go语言的并发性能优异,能让Nakama高效处理大量并发请求。其分布式架构设计,使得在面对高并发场景,如多人在线竞技、大型团战等情况时,依然可以稳定运行,支撑游戏的流畅运转,轻松实现水平扩展,满足不断增长的玩家数量需求。

3. 多语言扩展支持:Nakama为不同背景的开发者提供便利,它支持使用Golang和Lua编写扩展逻辑。熟悉Lua的游戏开发者可以利用Lua脚本来定制游戏规则、战斗逻辑等;而Golang开发者则能用Golang开发更复杂的后端服务扩展,通过运行时SDK可以用多种方式为服务器定义自定义业务逻辑,极大地拓展了框架的灵活性和适用性。

4. 丰富的内置功能模块:

◦ 用户管理:支持多种用户注册和登录方式,如通过社交网络(Facebook、Google等)、电子邮件或设备ID进行认证登录,方便玩家快速进入游戏,同时也便于游戏运营方管理玩家账号信息。

◦ 实时多人匹配:提供随机匹配和分组匹配两种模式。随机匹配能根据玩家的段位、地域、游戏时长等条件,自动将相似条件的玩家匹配在一起,保证公平竞技;分组匹配则允许开发者通过自定义逻辑,根据玩家的特殊偏好和条件,如组队开黑、公会战等场景,实现更灵活的匹配机制,满足多样化的游戏玩法需求。

◦ 聊天与社交功能:集成了1对1聊天、群组聊天和全局聊天功能,消息能够持久化存储,方便玩家查看聊天历史。同时还支持用户添加好友、加入群组,内置的社交图谱展示用户之间的关联,让玩家在游戏中构建社交关系,增加用户粘性和游戏社交氛围 。

◦ 排行榜与奖励系统:支持动态排行榜和季节性排行榜,玩家可以实时查看自己在排行榜中的排名以及周围成员的排名情况,激发玩家的竞争意识。开发者还能根据游戏内活动和玩家表现设置各种奖励机制,进一步激励玩家参与游戏 。

◦ 云存储与文件存储:能够存储玩家的游戏记录、角色信息、设置以及其他对象,支持集合式的数据组织方式,方便开发者管理和读取玩家数据。同时提供文件存储功能,可用于存储游戏内的图片、音频、视频等资源。

三、技术核心

1. 服务架构:

◦ API网关:作为玩家请求的入口,负责接收所有玩家的HTTP或gRPC请求,并根据请求类型和内容将其路由到正确的内部模块进行处理,起到请求分发和管理的作用。

◦ 实时引擎:支持WebSocket和gRPC协议进行实时数据流交互,确保玩家之间的实时通信,如实时对战中的操作同步、聊天消息的即时传递等,保证游戏的实时性和流畅性。

◦ 存储服务:采用分布式的NoSQL数据存储,如CockroachDB,具备强一致性和高可用性,能安全可靠地存储大量的玩家数据和游戏状态信息,满足游戏高并发读写的需求 。

◦ 脚本运行时:运行由开发者编写的Golang或Lua扩展逻辑。开发者可以在不重启服务器的情况下,通过热更新Lua脚本来修改游戏逻辑和业务规则,大大提高了开发迭代速度,降低维护成本 。

2. 用户匹配机制:

◦ 随机匹配算法:收集玩家相关属性信息,如等级、段位、历史胜率等,将这些属性量化为匹配分数。根据匹配分数设定一定的匹配范围,在玩家发起匹配请求时,从等待匹配的玩家池中筛选出分数在该范围内的玩家,进行随机组合,形成对战或合作队伍。

◦ 分组匹配实现:开发者可以通过编写自定义的匹配逻辑函数,定义玩家分组规则。比如根据玩家所在公会、自定义房间号、特定活动要求等条件,将符合条件的玩家精准分组,实现公会战、好友组队赛等特定玩法的匹配。

3. 实时游戏会话(Match实现):

◦ Match模型:Nakama用Match来表示实时游戏会话,每个Match都有唯一的ID,包含参与玩家列表、游戏状态、会话配置等信息。

◦ Match Handlers:开发者可编写自定义的Match Handlers来控制整个会话流程。例如定义matchCreate()函数,在创建Match时初始化游戏场景、设置初始资源等;matchJoin()函数用于处理玩家加入Match时的逻辑,如分配初始位置、同步玩家数据等;matchLeave()函数在玩家离开Match时,进行资源清理、更新游戏状态等操作。

四、应用场景

1. 多人在线竞技游戏:利用Nakama的实时多人匹配和高效的通信机制,实现公平、流畅的竞技对战,如MOBA、射击类竞技游戏。玩家能快速匹配到实力相当的对手,在对战中实时同步操作,保证竞技的公平性和游戏体验。

2. 社交休闲游戏:借助其丰富的社交功能和云存储能力,社交休闲游戏可以让玩家轻松与好友互动、分享游戏成果,比如农场经营类、消除类社交休闲游戏,玩家可以互相访问农场、赠送道具,游戏进度和数据也能安全存储。

3. 大型多人在线角色扮演游戏(MMORPG):通过分布式架构和强大的存储服务,支撑大量玩家同时在线,管理复杂的角色成长系统、任务系统、交易系统等。玩家在庞大的游戏世界中冒险时,能实时与其他玩家交流协作,Nakama确保游戏世界的稳定运行和数据的安全可靠。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cmakerpymakerhtmler

能为我买一杯咖啡吗谢谢你的帮助

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值