跳到正文
Nobukz Code · AI辅助RPG开发· 来源·· 3 小时前AI 评分33

从 Firebase 到家用 PC:AI 辅助 RPG《EverPulse》服务器迁移与优化实录

無料の Firebase をやめて、自宅でゲームサーバを動かしている話 ― NAS で限界を知り、小さな PC に落ち着くまで

正文 · AI 翻译

通知:测试者招募将延长至11月8日(周日)21:00。 测试按原计划从10月31日(周六)开始,中途加入也可以。详情请见文章末尾。

前言

上次讲的是在本地PC上制作音乐、音效和语音。
这次讲的是这个游戏运行在哪里。

这款游戏可以让多人进入同一个世界。可以看到其他玩家走动,还能一起击败相同的魔物。
为此,需要一个“服务器”来汇总所有人的位置以及魔物的剩余血量。

目前,该服务器运行在我家里的一台小型PC中。在它稳定运行之前,经历了两次迁移:从免费服务迁到旧NAS(存放文件的盒式小服务器),再从NAS迁到PC。

画像
广场上有两名玩家(v0.19.0时期)。另一名玩家的移动通过服务器传递。

最初是 Firebase

2026 年 2 月的首个原型是在 Google 的免费服务 Firebase 上构建的。
登录、位置交换和页面分发等功能都已就绪,使用非常便捷。

9 月 20 日恢复工作时,我决定放弃该方案,转而使用自有服务器(v0.3.0)。原因有三:

  • 希望让镇上的人与 AI 对话。 如果将调用 AI 的密钥放在浏览器中,存在被盗风险。因此必须从服务器内部进行调用。

  • 未来的费用问题。 超出免费范围后,将按实际使用量付费。

  • 希望减少对 Google 的依赖。

家里的NAS上,已经通过Docker(在一台机器中将多个服务器以容器形式运行的机制)运行着其他工具制作相关的服务器。我决定以同样的方式运行游戏服务器。

目前的NAS已经使用了6年,性能规格严重过时。虽然想更换,但资金不足,只能将就使用至今。

ARMv7、内存1GB的限制

这台NAS使用的是与智能手机类似的CPU架构(ARMv7),且内存仅有1GB,无法扩容。
10月10日测量时,已用内存为900MB,剩余可用内存仅100MB。除了游戏之外,还有12个服务器共存运行。

因此,我首先决定“不再增加任何内容”。程序组件仅限3个。由于该CPU存在大量无法执行的指令,新增组件时必须逐一验证。数据存储采用单一文件的小型数据库。
这些规则也写入了给AI的约束条件中,以便在每次开发新功能时,AI能够自行进行验证。

将繁重的处理移至浏览器或本地PC

1GB 的机器无法承载所有功能。因此,我们将繁重的任务卸载到了外部。这种分工方式至今未变。

  • 地牢地图 由每位玩家的浏览器生成。由于同一楼层必定生成相同形状,因此大家看到的地图是一致的。

  • 图像、音乐和语音的生成 在本地配备显卡的 PC 上完成。服务器仅负责分发已生成的内容。

在构建城镇冒险者在地图上行走并与怪物战斗的机制时(v0.80.0),我们预先在 NAS 上进行了负载测试。
即使以每 0.5 秒的频率移动 84 名玩家,对其他玩家的响应延迟也仅为约 7 毫秒,处于人类无法感知的范围内。

画像
在地图上行走的城镇冒险者(哈尔和克鲁特)。正在运行的是服务器。

“使用手机需要等待数十秒”

在手机上打开时,画面出现前花了数十秒(v0.84.0)。
让 AI 检测后,原因是图片。因为每次都在重新生成所有图片,且图片格式过大。

改变图片的传递方式和格式后,在模拟 4G 网络的测试中,画面从之前的 16.4 秒、37.1MB 变为首次加载 6.7 秒、14.0MB,第二次及之后则缩短至 2.7 秒。

此后,从家外访问时仍感觉沉重(v1.18.1)。
虽然图片是以每格 256 像素绘制的,但在屏幕上显示约为 48 像素。改为向游戏提供小尺寸图片后,图片总大小从 239MB 减少到 50MB。

画像
用轻量图片绘制的地下二层城镇(约 v1.18.1 时期)。

在本地和生产环境两处构建

开发工作是在本地 PC 上进行的。服务器端则是实际游玩的“生产环境”。
让 AI 制作了将本地修改同步至生产环境的工具,并确立了“操作前查看差异”、“完成后进行同步”的规则。

然而,生产环境一侧也发生了改写。我在管理界面中修改了魔物的数值并保存后,生产环境的文件也随之改变。
在 NAS 时期,这里曾发生过两次事故。

第一次(10月2日):自动备份覆盖了生产环境
每小时的自动备份执行的是“将目标设置为与源完全相同”的同步处理,导致我用本地旧版本覆盖了在管理界面中保存的内容,甚至将未完成的程序也推送到了生产环境。
我将自动备份改为仅向不同于生产环境的其他位置进行“追加式”复制。

第二次(10月3日):刚保存的笔记被删除
这次是反向操作。由于 AI 未能识别差异,从 NAS 复制到了本地,导致我刚保存的笔记(待办事项列表)被旧版本覆盖。
当时,我使用的编辑器在内部保留了正在编辑的内容,因此 AI 从中提取并恢复了原状。

此后,我在复制前会确认“生产环境中是否有更新的文件”,如果存在任何一个则停止操作。
实际上,之后也确实发生过这种情况(10月6日)。经调查,发现我之前在管理界面中更改了世界设置并保存。如果继续复制,该更改就会被消除。
这一机制至今搬家后仍以相同形式使用。只要 AI 和我在不同位置操作同一文件,“一旦停止,首先阅读”就是最好的防御措施。

NAS 已无法满足需求

10月11日,我让AI调查了同时能有多少人游玩。答案是NG,“第一道墙是NAS”。
可用内存大约只有384MB,不足的部分用磁盘来补充(交换空间)。由于程序结构的原因,实际上几乎只能使用一个CPU核心。

作为迁移目标,比较了新NAS、迷你PC和租用服务器(VPS)三年的费用,结果都在4.6万至11.6万日元之间。

于是我想起了家里闲置的一台小型PC。CPU是Core i3,内存是8GB,是NAS的8倍。
10月14日,我删除了这台PC上的Windows,安装了用于服务器的Linux,并将生产环境迁移过来(v1.41.0)。没有购买任何新设备。停止了在NAS上玩游戏,现在将其用作备份存储。

安装过程停滞了30分钟

Linux的安装方式是将配置文件放在USB闪存驱动器上,无需回答任何问题即可安装。之后的所有设置都由AI通过远程操作我的本地PC完成。

然而,在安装过程中停滞了30分钟。屏幕上不断滚动着同一行内容。
起初,AI怀疑是LAN断开了。展示屏幕截图后,发现LAN连接正常。查看安装程序的日志,也只显示每40秒出现一次的固定通知。
真正的原因是,“是否自动继续(yes / no)”这个提问被淹没在聊天窗口滚动的行中而看不见了。输入yes后便继续进行了。

画像
安装界面。同一行不断滚动,确认提问被隐藏了。

腾出空间后能做的事

由于内存有了余量,在 NAS 上无法实现的功能得以补充。

  • AI 备用方案。镇民的回复由 Google Gemini 生成。为应对 Gemini 拥堵变慢或不可用的情况,我在 PC 中运行了一个小型 AI(Gemma 4 最小版本)。由于没有显卡,每句话需要 9~15 秒。通过在玩家发出第一句问候时预先读取固定说明,将时间缩短至 7.5~9.6 秒。如果 Gemini 的回复未在 6 秒内到达,则同时运行两者并采用先返回答案的一方。

  • 关闭屏幕后继续游玩。将策略(自动战斗设置)交给服务器后关闭屏幕,服务器中的“无头浏览器”会作为该玩家介入并继续游戏(hd0.43.0)。当本人返回时接替其位置。

今天(10 月 30 日)测量显示,7.5GB 内存中使用了约 3GB。游戏服务器占用 289MB,负责关闭屏幕后继续游玩的组件占用 253MB。已连续运行 15 天未停止。

家的外部访问通过 Cloudflare 隧道实现。由于是从 PC 端向外连接,因此无需在家庭路由器上开放入口。

稳定的形态

目前的状态如下。

  • 生产环境: 家中的迷你 PC(Linux・Docker)。用于游戏服务器、备用 AI 以及即使关闭屏幕也能继续运行的服务

  • 工作机: 个人使用的电脑。修复后的内容会先进行差异比对,再同步至生产环境

  • 备份: NAS。每小时仅追加增量数据进行同步

并非完全没有担忧。如果发生停电或家庭线路故障,系统就会停止。尽管如此,在测试期间,我们认为这种形式已经足够。

总结

  • 为了交换位置信息并保护 AI 密钥,从 Firebase 迁移到自有服务器

  • 在 1GB 内存的 NAS 上,不增加硬件,将繁重处理交给浏览器和本地 PC。这种分工方式至今仍然有效

  • 如果不够用,首先查看家中现有设备。利用闲置的 PC,无需花费即可将内存提升 8 倍

  • 如果在两处制作,需要在复制前加入‘确认哪一方更新’的机制

下次将分享用AI制作游戏开场视频的经历。通过让静态图片动起来、拍摄游戏画面,并配合音乐进行剪辑组装。同时也会介绍如何修复崩坏的视频内容。

具体步骤计划整理在付费的步骤篇中。

延长测试员招募

我们将把前两次文章中通知的封闭Beta测试员招募截止日期延长至11月8日(周日)21:00。

画像
YouTube:[脉动迷宫:EverPulse] 地牢视频
  • 测试期间:10月31日(周六)至11月8日(周日)。将按原计划开始。也欢迎中途加入

  • 指南: 在延期期间申请的用户,我们将在您申请后1天内通过邮件发送游戏地点和邀请暗号。

  • 费用: 免费。仅使用浏览器即可游玩(推荐PC,手机也可玩)。

  • 回馈: 游戏内的称号【聆听初始心跳之人】以及片尾字幕中的姓名展示(作为测试玩家参与)

目前名额仍有富余。文中提到的小型电脑将迎接各位的冒险。想与镇上的人交谈的朋友,或者希望把策略交给他人、自己在一旁观望的朋友都可以。请务必来玩。

申请入口: https://nobukz.uk/beta-tester?tab=everpulse

来源:Nobukz Code · AI辅助RPG开发 · note.com