このページでは、Kerbal Space Programでマルチプレイを実現するDark Multi Playerについて説明します。
クライアント
インストール
GitHubからDarkMultiPlayer.zipを入手して展開します。DarkMultiPlayerフォルダをKSPのGameDataフォルダ(Steamから普通にインストールしたのならC:\Program Files (x86)\Steam\SteamApps\common\Kerbal Space Program\GameData)へコピーします。
接続
Player nameにプレイヤー名を入力します。ここで入力した名前はチャットなどで表示されます。他のプレイヤーと同じ名前を使うと、サーバに接続できません。
Addボタンを押します。
Name: サーバを区別するための名前を入力します。
Address: サーバのIPアドレスを入力します。
Port: サーバが動作しているポート番号を入力します。
Add Serverボタンを押します。
先ほど入力したサーバの名前をクリックして、Connectボタンを押します。
これでスペースセンターの画面になるはずです。
- d-mp.orgのServerlistをクリックすると、公開されているサーバの一覧を見ることができます。
プレイ
Dark Multi Playerのメインウィンドウです。ここからチャット、クラフト、スクリーンショットの各ウィンドウを開くことができます。他のプレイヤーがチャットメッセージを送った、クラフトファイルをアップロードした、スクリーンショットをアップロードした場合には、ボタンが赤く変化し新着を通知します。右上の[-]ボタンを押すことでコンパクト表示へ切り替えることができます。
クライアントごとにタイムワープを設定できるので、プレイヤーは異なる時刻に存在します。このウィンドウではサーバにログインしている各プレイヤーがどの時刻に存在しているかを表示します。最新の時刻のプレイヤーにSyncすることで、時刻を同期させることができます。
チャットウィンドウ
他のプレイヤーにチャットメッセージを送るためのウィンドウです。右に表示されるプレイヤー名をクリックすることで、特定のプレイヤーにだけメッセージを送ることも可能です。
craftウィンドウ
VAB/SPHで設計した機体を共有できる機能です。上に示した状態は閲覧モードであり、プレイヤー名をクリックすると共有されている機体データを取得できます。
[Upload]ボタンを押すとアップロードモードに切り替わり、クライアントに保存されている設計データをサーバにアップロードできます。
スクリーンショットウィンドウ
スクリーンショットを共有するためのウィンドウです。プレイヤー名をクリックすると、最新のスクリーンショットを見ることができます。Uploadをクリックすると、自分の現在の画面を共有します。
サーバ
必要スペック
物理計算はクライアント側で行われます。サーバはデータを同期させるための通信をしているだけで、低いスペックでも動きます。
CPU: ほとんど使用しません。
メモリ: DMPServer.exeが使用するメモリは数MBです。
HDD: 保存するスクリーンショットやログの量にもよりますが、100MBでも足ります。
IPアドレス: グローバルIPアドレスを必要とします。一部のケーブルテレビが提供するサービスなど、プライベートIPアドレスしか取得できない場合は、DMPServerを運営できません。
インストール
d-mp.orgのDownload the Server hereをクリックして、DMPServer.zipを入手して展開します。DMPServer.exeをダブルクリックして実行します。最低限これだけで動きます。
その他に必要な設定
ポートの開放: ルータでNATをしている場合は、ポートを開放する必要があります。DMPServerはTCPのポート6702を使います。ポートを開放する具体的な手順は、ルータの機種によって異なります。
ファイアウォールの設定: DMPServer.exeを実行する時にファイアウォールの警告が出る場合があります。「アクセスを許可する」を選択します。OSの設定によっては、コントロールパネルから登録する必要があります。
Dynamic DNSの設定: 動的IPアドレスの場合は、Dynamic DNSに登録すると便利でしょう。
設定
DMPServerSettings.txt
address: 同一のポート番号で複数のサーバを動作させるという特殊な場合に、listenするIPアドレスを指定します。
port: サーバがlistenするポート番号を指定します(デフォルト6702)。
warpmode: クライアントにタイムワープを許可するかを指定します。デフォルトの4では、クライアントごとに異なるタイムワープ倍率を選択できます。
gamemode: サンドボックス/サイエンス/キャリアモードを選択します。サイエンスポイントや資金はクライアントごとに管理されます。
gamedifficulty: ゲームの難易度を指定します。
whitelisted: ホワイトリストモード(許可されたプレイヤーのみがサーバに接続できる)の有効無効を切り替えます。
modcontrol: MODのパーツが使われている場合の対応を決めます。デフォルトの1では他のプレイヤーと同期されません。
keeptickingwhileoffline: クライアントが接続していない場合に、サーバが時間を進めるかどうかを設定します。
sendplayertolatestsubspace: サブスペースに関する設定らしいが詳細不明。
useutctimeinlog: ログの時刻をUTC(協定世界時=おおよそイギリス基準のこと)にするかどうかを設定します。
loglevel: ログをファイルに残すレベルを指定します。小さいほど詳細に記録します。
screenshotsperplayer: 一人のプレイヤーが保存できるスクリーンショットの数を指定します。
screenshotheight: スクリーンショットの縦のピクセル数を指定します。
cheats: チートの有効無効を切り替えます。
httpport: サーバの状態を見るために、Webブラウザでアクセスするポート番号を指定します。
servername: サーバ名を指定します。
maxplayers: サーバに接続できるプレイヤーの最大数を指定します。
screenshotdirectory: スクリーンショットを保存するディレクトリを指定します。
autonuke: KSCのそばにある物体を自動的に消去する/nukekscコマンドを自動実行する間隔を分単位で指定します。
autodekessler: デブリを自動消去する/dekesslerコマンドを自動実行する間隔を分単位で指定します。
numberofasteroids: アステロイドの生成数を指定します。
consoleidentifier: サーバからクライアントにチャットメッセージを送る時に使用する文字列を指定します。
servermotd: クライアントが接続した時に表示するメッセージを指定します。%name%と記述するとプレイヤー名に置き換えられます。日本語を記述する場合はDMPServerSettings.txtをUTF-8で保存します。
expirescreenshots: 古いスクリーンショットを自動消去する期限を日単位で指定します。
compressionenabled: 通信に圧縮を用いるかどうかを指定します。圧縮するとCPU使用率が上がる代わりに通信量が減ります。
expirelogs: 古いログを自動消去する期限を日単位で指定します。
DMPModControl.txt
MODを使用する場合は、DMPModControl.txtを作成します。
この部分はクライアントでの操作です。
Dark Multi Playerのウィンドウで、Optionsボタンを押します。
Generate blacklist DMPModControl.txtかGenerate whitelist DMPModControl.txtのボタンを押します。これでクライアントと同じMODを要求するDMPModControl.txtが自動生成されます。このファイルをサーバ側のDMPServer.exeと同じディレクトリに置いて実行します。
- blacklist方式
- クライアントはブラックリストに指定されていない(MODの)DLLを使用できる
- whitelist方式
- クライアントがホワイトリストに指定されたDLLのみを使用できる(つまり厳しい)
参考例: 開拓サーバで使用しているDMPModControl.txt
コマンド
サーバーコンソールで以下のコマンドを実行することができます。
- /admin
- 指定したプレイヤーを管理者とします。
- /ban
- 指定したプレイヤーがサーバに接続することを禁止します。
- /banip
- 指定したIPアドレスからサーバに接続することを禁止します。
- /bankey
- クライアント固有のGUIDを指定してサーバに接続することを禁止します。
- /connectionstats
- サーバの通信量を表示します。
- /countclients
- 接続しているクライアントの数を表示します。
- /dekessler
- デブリを消去します。
- /exit
- サーバを終了します。
- /help
- コンソールコマンドの説明を表示します。
- /kick
- 指定したプレイヤーをサーバから切断します。
- /listclients
- 現在接続中のプレイヤー名一覧を表示します。
- /nukeksc
- スペースセンターと滑走路に存在する「全ての」船を消去します。
- /pm
- 特定のプレイヤーだけにメッセージを送信します。
- /quit
- サーバを終了します。
- /restart
- サーバを再起動します。
- /say
- 全てのユーザにチャットメッセージを送信します。
- /shutdown
- サーバを終了します。
- /whitelist
- サーバにログインできるプレイヤーを指定するホワイトリストを変更します。
ディレクトリツリー
サーバのディレクトリ構成は以下の通りです。
├─logs: ログファイル ├─Plugins: プラグインをインストールするディレクトリ └─Universe: ワールドの状態を保存するディレクトリ ├─Crafts: プレイヤーがアップロードした設計がプレイヤー名のディレクトリに保存される ├─Flags: プレイヤーの旗の画像? ├─Kerbals: Kerbalsの状態が保存される ├─Players: プレイヤーごとのRSA鍵が保存される ├─Scenarios: キャリアモードのシナリオをどこまで進めたかが保存される? ├─Screenshots: プレイヤーがアップロードしたスクリーンショットがプレイヤー名のディレクトリに保存される └─Vessels: 飛行中の船に関する情報が保存される
リンク
- フォーラムのDMPスレッド
- DMPの公式サイト: サーバプログラムを配布している。稼働中のサーバリストを見ることができる。
- GitHub: クライアントを配布している。サーバ、クライアントとも一通りの使い方が説明されている。
コメント
- サーバを運用するなら、特にVesselsフォルダのバックアップは取るべき。よく消える。 -- 2015-02-01 (日) 17:03:06
- 現在のDMPで2km以内に接近したら、2fpsくらいだった -- 2015-02-01 (日) 20:11:09
- それはパーツ数とパソコンの性能に依存します。 -- 2015-02-03 (火) 15:15:37
- ネットワーク(RTT)じゃなくて? -- 2015-02-03 (火) 19:11:13
- DMPはそんなに通信量は多くない。演算量が増えるわけだから -- 2015-02-03 (火) 21:27:43
- ↑ミス 近づくと演算量が増えるから重くなってfpsが下がる。 -- 2015-02-03 (火) 21:30:01
- それはパーツ数とパソコンの性能に依存します。 -- 2015-02-03 (火) 15:15:37
- サーバはデバッグログを大量に出すのでloglevelは1がお勧め -- 2015-02-02 (月) 22:24:24
- サーバ選択して、Connect選択→Connected→Connection timedoutと遷移して接続出来ないのですが・・・考えうる原因としては、何がありますかね? -- 2015-12-12 (土) 22:27:26
- ↑自己解決しました。プロバイダの問題でした。 -- 2015-12-19 (土) 13:30:54
- 対象のコンピューターによって拒否されたため、接続できませんでした。ってなるんですけど、原因は何ですか? -- uriuri? 2021-03-22 (月) 19:43:41
- アドレスかポートを間違えた or 鯖が開いてない(ホストがDMPserver.exeを実行していない)だと思う -- 2021-09-12 (日) 14:21:29