デモンズソウルの「プライベートサーバー」が早速公開される!PS3から接続する方法&自鯖で動かす手順を紹介! | Linux Fan

デモンズソウルの「プライベートサーバー」が早速公開される!PS3から接続する方法&自鯖で動かす手順を紹介!

2018年3月18日

海外のプレイヤーにより、デモンズソウルの「プライベートサーバー(エミュ鯖)」が開発されています。PlayStation 3のネットワーク設定を変更するだけでオンラインプレイが可能です。特別な改造は必要ありません。なお、プライベートサーバーのソースコードは公開されており、Linuxにセットアップして自分で動かすこともできます。

「デモンズソウル(Demon's Souls)」は、2009年2月に発売されたPlayStation 3用アクションRPGです。高い難易度、システムやストーリーの緻密な作り込み、独特なオンラインプレイシステムなどから人気を呼び、世界中で多くのユーザーにプレイされてきました。「ダークソウル(DARK SOULS)」シリーズの原点としても有名です。

デモンズソウルのマルチプレイ機能は、発売から9年に渡り追加料金なしで利用することができました。他のプレイヤーを「青いファントム」として呼び出したり、「黒いファントム」として他のプレイヤーの世界に侵入して妨害する様子を、ゲーム実況で目にしたことがある人も多いのではないでしょうか。

しかし、残念ながら2018年2月28日をもってデモンズソウルのオンラインサービスは終了となりました。そこで公開されたのが、非公式の「プライベートサーバー」です。これを使えば、今でもデモンズソウルのマルチプレイが可能です。

海外のプレイヤーが「プライベートサーバー」を開発

オンラインサービスの終了を受けて、海外のプレイヤーによりデモンズソウルの「プライベートサーバー」が開発されています。ソースコードは、以下のGitHubレポジトリから取得可能です。

このソースコードをダウンロードしてプライベートサーバーを動かしているユーザーもいるようです。本記事執筆時点で、以下のフォーラムに運用中サーバーのIPアドレス(正確にはフェイクDNSサーバーのIPアドレス)が掲載されていました。

PS3からプライベートサーバーに接続するには

PS3からプライベートサーバーへの接続は、「DNSサーバー(ドメインネームサーバー)」を変更するだけで可能です。ただし、公式な方法ではないため、PS3やPSNアカウントに問題が発生する可能性もあります。自己責任で行ってください。

日本語版のデモンズソウルは、オンラインを有効にすると「demons-souls.scej-online.jp」に接続します。プライベートサーバーを使うには、本来の「demons-souls.scej-online.jp」のIPアドレスではなくプライベートサーバーのIPアドレスを返す「フェイクDNSサーバー」を使うよう、PS3に設定します。

まず、PS3のメニューから「ネットワーク設定」を選びます。

「インターネット接続設定」を開きます。そして設定方法として「カスタム」を選択します。

ネットワーク設定を進めていきます。通常、「DNS設定」が出るまでは変更しなくていいでしょう。「DNS設定」の画面では「手動」を選びます。

そして「プライマリDNSサーバー」に、プライベートDNSサーバーのIPアドレスを設定します。公開されているサーバーのIPアドレスは、前述のフォーラムや動画実況サイトなどで調べてください。

あとは変更せず、ネットワーク設定を進めて完了させます。「接続テスト」でエラーが出なければ問題ないでしょう。

PSNにサインインした状態でデモンズソウルを起動し、セーブファイルをロードしてプライベートサーバーからのメッセージが表示されれば成功です。

デモンズソウルのプレイを終了したら、忘れず設定を元に戻しておきましょう。

Ubuntuでプレイベートサーバーを動かす方法

すでに運用されているプライベートサーバーを使ってもプレイできますが、常に稼働しているかどうかは分かりません。また、知らない人のサーバーを使うのは不安という人も多いでしょう。
確実にオンラインプレイしたいなら、自分でプライベートサーバーを構築して使うという方法もあります。IPアドレスを公開するか、一緒にプレイしたい人に教えれば、好きな時にオンラインプレイが可能です。
とはいえ非公式のプレイ方法ですので、実行する場合は自己責任で行ってください

ここでは、Ubuntu 16.04 LTSにプライベートサーバーとフェイク用のDNSサーバーをセットアップする方法を解説します。
なお、インターネットに公開せず、LAN内で遊ぶだけならグローバルアドレスは必要ありません。
インターネットに公開するなら、VPSなどのクラウドサーバーを使うのが便利でしょう。自宅サーバーなら、ルーターでポートを開くなどの対応が必要です。
いずれにしても、設定にはサーバーのIPアドレスが必要になるので確認しておきましょう。

まず、以下のコマンドで必要なパッケージをインストールします。

sudo apt install python python-crypto git

以下は、「/opt/demons_souls/」にインストールする例です。まずは、プライベートサーバーと、IPアドレスを入れ替えるためのDNSサーバーのソースコードを取得します。フェイク用のDNSサーバーは他のものを用いても問題ありません。

sudo mkdir -p /opt/demons_souls/
cd /opt/demons_souls/
sudo git clone https://github.com/ymgve/desse
sudo git clone https://github.com/Crypt0s/FakeDns
cd desse/

エミュレーター本体を設定しましょう。まず、desseディレクトリにあるinfo.ssをテキストエディタで開き、IPアドレス部分を自分のサーバーのIPアドレスに書き換えます。
仮にIPアドレスが「203.0.113.203」なら、以下の内容になります。

<ss>0</ss>
<lang1></lang1>
<lang2></lang2>
<lang3></lang3>
<lang4></lang4>
<lang5></lang5>
<lang6></lang6>
<lang7></lang7>
<lang8></lang8>
<lang11></lang11>
<lang12></lang12>
<gameurl1>http://203.0.113.203:18666/cgi-bin/</gameurl1>
<gameurl2>http://203.0.113.203:18667/cgi-bin/</gameurl2>
<gameurl3>http://203.0.113.203:18668/cgi-bin/</gameurl3>
<gameurl4>http://203.0.113.203:18668/cgi-bin/</gameurl4>
<gameurl5>http://203.0.113.203:18667/cgi-bin/</gameurl5>
<gameurl6>http://203.0.113.203:18667/cgi-bin/</gameurl6>
<gameurl7>http://203.0.113.203:18667/cgi-bin/</gameurl7>
<gameurl8>http://203.0.113.203:18667/cgi-bin/</gameurl8>
<gameurl11>http://203.0.113.203:18668/cgi-bin/</gameurl11>
<gameurl12>http://203.0.113.203:18668/cgi-bin/</gameurl12>
<browserurl1></browserurl1>
<browserurl2></browserurl2>
<browserurl3></browserurl3>
<interval1>120</interval1>
<interval2>120</interval2>
<interval3>120</interval3>
<interval4>120</interval4>
<interval5>120</interval5>
<interval6>120</interval6>
<interval7>120</interval7>
<interval8>120</interval8>
<interval11>120</interval11>
<interval12>120</interval12>
<getWanderingGhostInterval>20</getWanderingGhostInterval>
<setWanderingGhostInterval>20</setWanderingGhostInterval>
<getBloodMessageNum>80</getBloodMessageNum>
<getReplayListNum>80</getReplayListNum>
<enableWanderingGhost>1</enableWanderingGhost>

では、dbディレクトリを作成し、サーバーを起動してみましょう。

sudo mkdir db
sudo python emulator.py

以下のように出力されれば問題ありません。Ctrl+Cを押して、終了しましょう。

Loaded legacy messages into database
Created user database
Loaded legacy replays into database
Server listening

次にフェイクDNSサーバーの設定です。

cd ../FakeDNS/

以下の内容で、dns.confを作成します。これも「203.0.113.203」は例なので、実際のIPアドレスに置き換えてください。

A ds-eu-c.scej-online.jp 203.0.113.203
A ds-eu-g.scej-online.jp 203.0.113.203
A c.demons-souls.com 203.0.113.203
A g.demons-souls.com 203.0.113.203
A cmnap.scej-online.jp 203.0.113.203
A demons-souls.scej-online.jp 203.0.113.203

試しにフェイクDNSサーバーを実行してみましょう。

sudo python fakedns.py -i 203.0.113.203 -c dns.conf

以下のように出力されれば問題ありません。

>> Parsed 6 rules from dns.conf

プライベートサーバーはroot権限でなくても動くので、専用のシステムユーザー「desse」で動かすことにしましょう。
以下のコマンドでユーザーを追加し、/opt/demons_souls/desse/以下の所有者を変更しておきます。

adduser --system desse
chown -R desse.nogroup /opt/demons_souls/desse/

仕上げに、起動スクリプトを作成します。以下の内容で「/etc/systemd/system/desse.service」新しく作ってください。

[Unit]
Description = desse

[Service]
WorkingDirectory = /opt/demons_souls/desse/
ExecStart = /usr/bin/python emulator.py
Restart = always
Type = simple
User=desse
Group=nogroup

[Install]
WantedBy = multi-user.target

また、以下の内容で「/etc/systemd/system/fakedns.service」を作成します(IPアドレスは書き換えてください)。

[Unit]
Description = fakedns

[Service]
WorkingDirectory = /opt/demons_souls/FakeDns/
ExecStart = /usr/bin/python fakedns.py -i 203.0.113.203 -c dns.conf
Restart = always
Type = simple

[Install]
WantedBy = multi-user.target

以下のコマンドでsystemdに登録し、デーモンを起動します。

sudo systemctl enable desse.service
sudo systemctl start desse.service
sudo systemctl enable fakedns.service
sudo systemctl start fakedns.service

これで、PS3にIPアドレスを設定し、ログインできるか試してみましょう。
うまくログインできれば、「/opt/demons_souls/desse/emulator.log」にログが出力されます。
長期間稼働するなら、logrotateなどで自動ローテートする設定を入れたほうが良いでしょう。