AX 爱鲜报

综合 / 后端 · 2026-10-03 08:26 · 2 阅读 · 0 赞

做小游戏别自己写后台了:免费开源的 Nakama 把登录、排行榜、存档全包了

Nakama 是一款 Apache-2.0 开源游戏服务器,Docker 一条命令即可部署,自带网页后台,支持 TypeScript、Go、Lua 写自定义规则。本文分享用它实现游客登录、排行榜、云存档和防作弊的实践,并总结了默认密钥、连接密钥、合法域名、登录凭证过期四个常见坑。

著名哲学家张先生曾经说过:“好的后台需要开源,不好的后台随便你怎么熬夜。”

做小游戏的人,迟早会撞上同一堵墙:后台。玩法写完了,才发现还得有登录、排行榜、存档,最好还能防作弊。一个人从零写?写到头秃,上线那天还不敢睡。

我最近给自己的一个小游戏接后台,用的是 Nakama。这篇不推游戏,就推它。

它是什么

一个开源的游戏服务器,Apache-2.0 协议,自己部署不花钱。

Docker 一条命令就能跑起来,还自带网页后台:玩家、存档、排行榜,点开就能看。

服务器上的自定义规则,可以用 TypeScript、Go 或 Lua 写。

嫌部署麻烦,官方也有付费托管。

它帮我干了四件事

游客登录:第一次打开游戏,随机生成一个编号当身份证,玩家不用注册。官方文档也这么建议,别拿手机硬件号当身份。

排行榜:“总榜”和“我附近的名次”,两个现成接口。想做周榜,建榜时写一条定时规则,到点自动清零。

云存档:存档带版本号,两台手机同时存,旧版本写不进去,不会悄悄把新进度盖掉。

防作弊:服务器上能写自己的规则。我是开局发一张“卷子”,通关交一本“账”,服务器复盘一遍才给名次。

坑 1:默认钥匙,上线前全换掉

鲁迅(没)说过:

“我的服务器上有两把钥匙,一把是 defaultkey,还有一把是 defaulthttpkey。”

网页后台的账号密码,默认是 admin 和 password。

这些都是装好就有的默认值,网上人人都知道。

不改,等于把钥匙挂在门上。上线前第一件事:全换成自己的。

网页后台默认在 7351 端口,能不对外就别对外。

坑 2:连接密钥不是密码

阿Q(没)说过:

“客户端里的钥匙,别人扒得,我扒不得?”

Nakama 的连接密钥本来就要写进游戏里,而写进游戏的东西,谁都扒得出来。

所以它只能说明“这是哪个游戏”,挡不住坏人。

真正的安全,靠服务器自己校验。

比如排行榜,建的时候设成“权威榜”:客户端交不了分,只有服务器能写。

坑 3:开发者工具里能连,真机上连不上

鲁迅(没)说过:

“当我在开发者工具里跑的时候,我觉得充实;我将上真机,同时感到空虚。”

微信小游戏访问服务器,地址得先在微信后台配成“合法域名”:必须 https,必须备案,不能直接写 IP。

Nakama 默认走 7350 端口。配域名时端口要一起写上,配了端口,就只能请求这个端口。

开发者工具里能勾“不校验合法域名”,所以电脑上一切正常,一上手机就连不上。

上线前,把那个勾去掉,再测一遍。

坑 4:登录凭证,默认只活 60 秒

孔乙己(没)说过:

“登录能管多久?多乎哉?不多也,六十秒。”

Nakama 的登录凭证默认 60 秒过期,续期凭证默认 1 小时。

不处理的话,玩家玩着玩着,排行榜就刷不出来了。

我的做法:快过期就自动续;续不上,就用那个游客编号悄悄重新登录。玩家全程无感。

顺便说一句,我用的官方 JS 包自带网络兼容,Cocos 打出来的微信小游戏里直接能用。

最后:

一个人做游戏,时间要花在玩法上,别花在重复造轮子上。

登录、排行榜、存档,别人已经做好了,还开源了。

我唯一要亲自动手的,是把默认密码改掉。

著名哲学家张先生还说过:

“轮子能借就借,头发只有一头。”

标签 开源 Docker 后端开发 TypeScript 小游戏

评论

登录后才可评论

0 条评论

  • 暂无评论,来写第一条吧。