综合 / 后端 · 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 打出来的微信小游戏里直接能用。
最后:
一个人做游戏,时间要花在玩法上,别花在重复造轮子上。
登录、排行榜、存档,别人已经做好了,还开源了。
我唯一要亲自动手的,是把默认密码改掉。
著名哲学家张先生还说过:
“轮子能借就借,头发只有一头。”