誰が世界を動かすか
それぞれのゲームで敵を動かし、結果を合わせる(これまで)
世界はホストだけが動かし、ほかの人には「人形」を見せる(その後)
最初は各自のゲームで敵の AI を動かし、結果をそろえようとしました。AI・アニメーション・ダメージ・死亡が少しずつ食い違い、合わせきれませんでした。いまはダメージも死亡もドロップも、ホストが決めて全員に届けます。
ひとりで潜るゲーム(これまで)
仲間と潜って、倒れた仲間を起こしに行くゲーム(その後)
1 人用のゲーム SULFUR に、協力マルチプレイを追加する mod です。ステージを作るシードをそろえ、敵とボスの動き、ダウンと救助までをホスト側で決めて全員に届けます。参加はゲーム内の Options 画面から、Steam の招待か IP の直接入力で行います。
いまも Public Beta で、全員のゲームと mod のバージョンをそろえる必要があります。
ダウンロード数とバージョンは Thunderstore(2026-10-26 時点)。
友だちと一緒に潜る手段がない
SULFUR は 1 人で遊ぶゲームで、協力プレイの仕組みがありません。同じステージを一緒に進むことも、倒れた仲間を助けに行くこともできませんでした。
遊び方はそのまま、隣に仲間がいる
決めたこと、決め直したこと
それぞれのゲームで敵を動かし、結果を合わせる(これまで)
世界はホストだけが動かし、ほかの人には「人形」を見せる(その後)
最初は各自のゲームで敵の AI を動かし、結果をそろえようとしました。AI・アニメーション・ダメージ・死亡が少しずつ食い違い、合わせきれませんでした。いまはダメージも死亡もドロップも、ホストが決めて全員に届けます。
全部を共有する(これまで)
キャラクター・持ち物・成長・セーブは 1 人ずつ(その後)
自分のセーブで育てたキャラクターのまま参加できます。ドロップの共有は選択式で、初期設定はオフです。エンドレスモードでは、成長を個別にするか、共有して投票でカードを選ぶかをホストが決めます。
メニューを開くとゲームが止まる(これまで)
マルチプレイ中は止めない(その後)
ゲストがバッグを開くと敵が動かなくなる、という問題がありました。原因はメニューを開くとゲームが一時停止することでした。Minecraft の LAN と同じように、マルチプレイ中は止めないようにしました。
Steam 用に別の通信の仕組みを作る(これまで)
Steam も同じ通信の下に置き、接続の確認やチェックはそのまま使う(その後)
IP の直接入力でも Steam の招待でも、上に乗っている処理は同じです。片方だけ直し忘れる、ということが起きません。
作るうえで苦労したこと
SULFUR は 1 人用なので、敵は手元のプレイヤーしか見ていません。ゲーム自身のプレイヤー一覧に、動かない「影のプレイヤー」を登録して、元からある視線の判定がほかの人にも反応するようにしました。一人称視点のゲームで体のモデルがないので、ほかの人はゲーム内の神父の絵で表示し、倒れると横になります。
皇帝戦だけ、マルチプレイ中にカクつきました。同じシードで単独とマルチを自動で比べ、「接続しているだけで重くなる」ところまで絞り込んで、物理の処理の中で毎回走っていた探索を見つけました。
53 fps・カクつき 23 回 → 113〜118 fps・0 回(1 人で遊ぶ時と同じ)
0.19 の更新でゲーム側の関数の名前と引数が変わり、ほかの人の弾が一切見えなくなりました。名前を探すやり方を、後から引数が足されても見つけられる形に変えています。
変更の経緯はバージョンごとに CHANGELOG に残しています。
遊んだ人から返ってきたもの