RMMZ-OS — RPG Maker MZ 用の公式マルチプレイヤーサーバー(開発中)
皆さん、こんにちは。
私が構築しているプロジェクトをご紹介したいです。それは RMMZ-OS で、RPG Maker MZ のプロジェクトを別のエンジンでゲームロジックを書き直すことなく、オンラインマルチプレイヤーゲームに変えるための、ゼロから作り上げたクライアント・サーバーインフラストラクチャです。
コアとなるアイデア
RPG Maker MZ は、マップ、イベント、データベース、スプライト、そしてエディタのワークフロー全体など、得意なことに徹します。RMMZ-OS は、既存の MZ ランタイムの上に ネットワークおよびサーバー権威レイヤー を追加し、複数のプレイヤーが同じライブワールドを共有できるようにします。概念的には、かつて RPG Maker XP 向けに存在した Netplay 1.7 にインスピレーションを受けていますが、ポート(移植)ではなく、モダンなクライアント・サーバーアーキテクチャによる完全な再構築です。
最も重要な設計上の決定は、初日からサーバーが権威を持つこと です。クライアントは共有ワールドに関する真実を決定することはありません。クライアントは意図(例:「左に移動したい」)を送信し、サーバーがそれを検証して確認します。これは実際のマルチプレイヤーゲームが採用しているモデルと同じであり、これにより、後付けではなく、チート対策やデシンクなしでの再接続が可能になります。
現在動作している機能
- アカウントとキャラクター — 実際のバックエンド(Postgres)を介した登録/ログインと、セッショントークンフロー。キャラクターはアカウントに属しており、ワールドに参加する前に1つを選択します(これは、外部ランチャーは必要とせず、プラグインオーバーレイとして構築されたゲーム内
Scene_Login/Scene_CharacterSelectUI とともに提供されます)。 - 共有ワールドと移動の同期 — プレイヤーは同じマップ上で他のプレイヤーの移動をリアルタイムで確認でき、位置や方向の真のソースはサーバーです。
- 永続性 — キャラクターの位置はセッションや再接続をまたいで保存および復元されます。
- チャットとパーティー — 同じプロトコルを介した基本的なチャットメッセージングとパーティー(グループ)サポート。
- サーバー権威のイベント — マップ上の RPG Maker イベントは共有/権威ありとしてマークでき、その状態(セルフスイッチ、結果など)は各クライアントで独立して実行されるのではなく、サーバーによって解決されます。
- MMO スタイルの名札 — 各プレイヤーのキャラクター名が、ログイン時に使用されるサーバーが把握しているキャラクター名に基づいて、スプライトの上に浮遊表示されます(クライアント側の推測は不要です)。
すべてはプレーンな RPG Maker MZ プラグインとして提供されます(ゲームをプレイするためにビルドステップは不要)が、パブリックエンジン API にフックしています。MZ コアランタイムのいずれも修正またはフォークされていません。
アーキテクチャの概要
RPG Maker MZ ランタイム <--> RMMZ-OS クライアントプラグイン(WebSocket) <--> ゲームサーバー(権威あり) <--> Postgres
ワイヤープロトコルは、WebSocket 上のバージョン付き JSON Envelope です。サーバー側は TypeScript のモノレポで、明確に分離されたパッケージ(ワールド/エンティティシミュレーション、プロトコル、認証、サーバーコア)が、小さな「コンポジションルート」ファイルで結び付けられています。これにより、シミュレーションロジック自体は WebSocket やデータベースのことを一切知らず、その逆も同様です。
明確にまだ実装されていないこと
スコープについて率直に申し上げますと、これは初期段階です:
- コンバット/PvP はなし。
- インベントリ/クエスト/ギルドシステムはなし。
- シャーディング/複数のゲームサーバーなし(現時点では1つのワールドにつき1つのゲームサーバー)。
- モバイル/コンソールなし — デスクトップ/ブラウザのみ。MZ 自体がサポートするターゲットと同じです。
これはファウンデーションファーストのプロジェクトです:各フェーズでは、単なるスケルトンではなく、実際に実行可能でテスト可能なものを提供しなければなりません。
投稿する理由
主に進捗状況の共有と、実際に RPG Maker ゲームを作成している方々からのフィードバックを得るためです。上記で既にカバーされていない、MZ 向けの「MMO レイヤー」から何を求めていますか? 移動/デシンクの感触、アカウントフロー、イベントの権威モデルなど、何でも結構です。
アーキテクチャや現在の機能セットに関する質問にお答えします。


