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

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

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

正文 · 原文

お知らせ: テスターの募集を 11 月 8 日(日)21:00 まで延長します。 テストは予定どおり 10 月 31 日(土)から始まり、途中からでも参加できます。詳しくは記事の最後に書きました。

はじめに

前回は、曲・効果音・声を手元の PC で作る話でした。
今回は、このゲームが どこで動いているか の話です。

このゲームは何人かで同じ世界に入れます。ほかのプレイヤーが歩いているのが見え、同じ魔物を一緒に倒せます。
そのためには、みんなの位置や、魔物の残りの体力をまとめて持っている「サーバー」が要ります。

今、そのサーバは私の家にある小さな PC の中で動いています。そこに落ち着くまでに、無料のサービスから古い NAS(ファイルを置いておく小さな箱型のサーバ)へ、NAS から PC へと、2 回引っ越しました。

画像
広場に 2 人のプレイヤー(v0.19.0 の頃)。もう 1 人の動きは、サーバを通して届きます。

最初は Firebase だった

2026 年 2 月の最初の試作は、Google の Firebase という無料サービスの上で作りました。
ログイン・位置のやり取り・ページの配信まで、全部用意されていて、とても手軽でした。

9 月 20 日に作業を再開したとき、これをやめて自前のサーバにしました(v0.3.0)。理由は 3 つです。

  • 町の人を AI で話させたい。 AI を呼ぶための鍵をブラウザに置くと、盗まれるリスクがあります。サーバの中から呼ぶ必要がありました

  • 将来の料金。 無料の範囲を超えると、使った分だけ払う形になります

  • Google への依存を減らしたい

家の NAS では、すでにほかの道具づくりのサーバが Docker(1 台の機械の中で、いくつものサーバを箱に分けて動かす仕組み)で動いていました。同じ形でゲームのサーバも動かすことにしました。

今のNASは6年使っていて、かなりスペックが時代遅れになりました。買い換えたいのですが先立つものが無く、我慢して今に至ります。

ARMv7・メモリ 1GB という制約

この NAS は、スマホに近い種類の CPU(ARMv7)で、メモリは 1GB しかなく、増やすことが出来ない仕様です。
10 月 10 日に測ると、使っているメモリが 900MB、空きは 100MB でした。ゲームのほかに 12 個のサーバが同居していました。

そこで最初に「これ以上足さない」と決めました。プログラムの部品は 3 つだけ。この CPU だと動かない命令が多いので、新しく足すときは必ず確かめる。保存は 1 つのファイルに入る小さなデータベースにする。
この決まりは、AI に渡す約束事にも書きました。新しい機能を作るたびに、AI 自身が確かめられるようにするためです。

重い処理はブラウザか、手元の PC へ

1GB の機械に何でも載せるわけにはいきません。そこで、重い仕事は外に出しました。この分け方は今も変えていません。

  • ダンジョンの地図 は、各プレイヤーのブラウザが作ります。同じ階なら必ず同じ形になる作り方なので、みんな同じ地図を見られます

  • 画像・曲・声の生成 は、グラフィックボードのある手元の PC で。サーバは出来た物を配るだけです

町の冒険者が地図の上を歩いて魔物と戦う仕組みを作るときは、先に NAS の上で負荷を測りました(v0.80.0)。
84 人を 0.5 秒ごとに動かしても、ほかのプレイヤーへの返事の遅れは 7 ミリ秒ほど。体感できない範囲でした。

画像
地図の上を歩く町の冒険者(ハルとクルト)。動かしているのはサーバです。

「スマホだと数十秒待つ」

スマホで開くと、画面が出るまで数十秒かかりました(v0.84.0)。
AI に測ってもらうと、原因は絵でした。毎回すべての絵を取り直していたのと、絵の形式が大きかったのです。

絵の渡し方と形式を変えると、4G くらいの回線を真似した測り方で、画面が出るまで 16.4 秒・37.1MB だったのが、1 回目 6.7 秒・14.0MB、2 回目からは 2.7 秒になりました。

その後、家の外からアクセスすると、まだ重く感じました(v1.18.1)。
絵は 1 マス 256 ピクセルで描いてありますが、画面では 48 ピクセル前後です。ゲームには小さい絵を渡すようにして、絵の合計は 239MB から 50MB になりました。

画像
軽い絵で描いた地下 2 階の町(v1.18.1 の頃)。

手元と本番の 2 か所で作る

開発作業は手元の PC でしています。サーバの方は、実際にプレイする「本番環境」です。
手元で直した物を本番に写す道具を AI に作ってもらい、「作業の前に違いを見る」「終わったら写す」を決まりにしました。

ところが、本番の側でも書き換えが起きます。私が管理画面で魔物の数値を直して保存すると、本番の側のファイルが変わります。
NAS の頃、ここで事故が 2 回起きました。

1 回目(10 月 2 日): 自動のバックアップが本番を上書き
毎時の自動バックアップが「写す先を写す元とまったく同じにする」同期処理だったので、管理画面で保存した内容を手元の古いバージョンで上書きし、書きかけのプログラムまで本番に出していました。
自動の分は、本番とは別の置き場に「足すだけ」で写すように変えました。

2 回目(10 月 3 日): 保存したばかりのメモが消えた
今度は逆向きです。AI が違いを見ずに NAS から手元へ写したため、私が保存したばかりのメモ(やり残しの一覧)が、古いバージョンで上書きされました。
この時は、私が使っていたエディタが作業中の中身を内部に残していたので、AI がそこから取り出して元に戻せました。

この後、写す前に「本番の方が新しい物が無いか」を確かめ、1 つでもあれば止まるようにしました。
実際、その後に止まったこともあります(10 月 6 日)。調べると、少し前に私が管理画面で世界の設定を変えて保存していました。そのまま写していたら、その変更が消えるところでした。
この仕組みは、引っ越した後の今も同じ形で使っています。AI と私が同じファイルを別々の場所で触る以上、「止まったら、まず読む」が一番の守りだと思っています。

NAS では足りなくなった

10 月 11 日、何十人もが同時に遊べるかを AI に調べさせました。答えはNGで、「最初の壁は NAS」でした。
使えるメモリは 384MB ほどで、足りない分はディスクで補っていました(スワップ)。プログラムの作り上、CPU も実際に使えるのはほぼ 1 つです。

引っ越し先として、新しい NAS・ミニ PC・レンタルのサーバ(VPS)の 3 年分の費用を比べてもらうと、どれも 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 の一番小さい物)を動かしています。グラフィックボードの無い PC なので、1 言に 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、画面を閉じても遊び続ける係

  • 作業: 手元の PC。直した物は、違いを見てから本番へ写す

  • バックアップ: NAS。毎時、足すだけで写す

心配が無くなったわけではありません。停電や家の回線の故障があれば止まります。それでも、テストで遊んでもらう間はこの形で十分だと判断しました。

まとめ

  • 位置のやり取りと AI の鍵を守るために、Firebase から自前のサーバへ

  • メモリ 1GB の NAS では、部品を足さず、重い処理はブラウザと手元の PC へ。この分け方は今も役に立っている

  • 足りなくなったら、まず家にある物を見る。眠っていた PC で、費用をかけずに 8 倍のメモリになった

  • 2 か所で作るなら、写す前に「どちらが新しいか」を確かめる仕組みを

次回は、ゲームのオープニングの動画を AI で作った話です。1 枚絵を動かし、ゲームの画面を撮り、曲に合わせて組み立てました。崩れた映像を作り直した話も書きます。

具体的な手順は、手順編(有料)にまとめる予定です。

テスター募集を延長します

前々回の記事でお知らせしたクローズドベータのテスター募集を、11 月 8 日(日)21:00 まで延長 します。

画像
youtube:[脈打つ迷宮:EverPulse]ダンジョン動画
  • テストの期間: 10 月 31 日(土)〜 11 月 8 日(日)。予定どおり始めます。途中からの参加も歓迎です

  • 案内: 延長の間にご応募いただいた方には、ご応募から 1 日以内に、ゲームの場所と招待の合言葉をメールでお送りします

  • 費用: 無料。ブラウザだけで遊べます(PC 推奨、スマホでも遊べます)

  • お礼: ゲームの中の称号【始まりの鼓動を聴きし者】と、エンドロールへのお名前の掲載(テストプレイ協力)

まだ枠に余裕があります。この記事で書いた小さな PC が、皆さんの冒険を受け止めます。町の人と話してみたい方、作戦に任せて放っておくだけでも構いません。ぜひ遊びに来てください。

応募はこちらから: https://nobukz.uk/beta-tester?tab=everpulse

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