MOD・ツール/Dark Multi Player

Last-modified: 2021-09-12 (日) 14:21:30

このページでは、Kerbal Space Programでマルチプレイを実現するDark Multi Playerについて説明します。

クライアント

インストール

GitHubからDarkMultiPlayer.zipを入手して展開します。DarkMultiPlayerフォルダをKSPのGameDataフォルダ(Steamから普通にインストールしたのならC:\Program Files (x86)\Steam\SteamApps\common\Kerbal Space Program\GameData)へコピーします。

接続

c01-playerinfo.png

Player nameにプレイヤー名を入力します。ここで入力した名前はチャットなどで表示されます。他のプレイヤーと同じ名前を使うと、サーバに接続できません。
Addボタンを押します。

c02-serverinfo.png

Name: サーバを区別するための名前を入力します。
Address: サーバのIPアドレスを入力します。
Port: サーバが動作しているポート番号を入力します。
Add Serverボタンを押します。

c03-connect.png

先ほど入力したサーバの名前をクリックして、Connectボタンを押します。
これでスペースセンターの画面になるはずです。

  • d-mp.orgのServerlistをクリックすると、公開されているサーバの一覧を見ることができます。

プレイ

cp01-mainwindow.png

Dark Multi Playerのメインウィンドウです。ここからチャット、クラフト、スクリーンショットの各ウィンドウを開くことができます。他のプレイヤーがチャットメッセージを送った、クラフトファイルをアップロードした、スクリーンショットをアップロードした場合には、ボタンが赤く変化し新着を通知します。右上の[-]ボタンを押すことでコンパクト表示へ切り替えることができます。
クライアントごとにタイムワープを設定できるので、プレイヤーは異なる時刻に存在します。このウィンドウではサーバにログインしている各プレイヤーがどの時刻に存在しているかを表示します。最新の時刻のプレイヤーにSyncすることで、時刻を同期させることができます。

チャットウィンドウ

cp02-chat.png

他のプレイヤーにチャットメッセージを送るためのウィンドウです。右に表示されるプレイヤー名をクリックすることで、特定のプレイヤーにだけメッセージを送ることも可能です。

craftウィンドウ

cp03-craft0.png
cp04-craft1.png

VAB/SPHで設計した機体を共有できる機能です。上に示した状態は閲覧モードであり、プレイヤー名をクリックすると共有されている機体データを取得できます。

cp05-craft2.png

[Upload]ボタンを押すとアップロードモードに切り替わり、クライアントに保存されている設計データをサーバにアップロードできます。

スクリーンショットウィンドウ

cp06-screenshot.png

スクリーンショットを共有するためのウィンドウです。プレイヤー名をクリックすると、最新のスクリーンショットを見ることができます。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の設定によっては、コントロールパネルから登録する必要があります。

s-firewall.png

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ボタンを押します。

s-option.png

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
  • サーバはデバッグログを大量に出すので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