投稿者名:TOKIDA

このサイトは備忘録であるとともにIT界隈の人に情報をお返し出来たら良いなぁという物です。

Diablo2 on Linux (Mint 20.1)

他のOS上でのWineと同様なので特筆するところは特にないので以下のリンクも合わせて参照してください。 Wineが正しく導入されていればLinux上が一番安定して動作しています。特にWindows10でのセキュリティ強化のため、DEPエラーが多発してしまい、この状態になるとレジストリなどの問題でどうにもできなくなってしまったりします。

Winehqの導入

こちらはすでにWineを導入している場合には削除してWnehqから導入をします。

sudo dpkg --add-architecture i386
wget -nc https://dl.winehq.org/wine-builds/winehq.key
sudo apt-key add winehq.key
sudo add-apt-repository 'deb https://dl.winehq.org/wine-builds/ubuntu/ focal main'
sudo apt install --install-recommends winehq-devel

ここでは、Develバージョンを入れてみます。

❯❯❯ wine --version
wine-5.20

現在のバージョンは 5.20 になっていました。 英語で利用していくぶんには特にこのままでも問題ないですが日本語環境で利用したい場合には winetrickなどでフォントを修正して使うとよいかと思います。

環境構築

Wineは環境変数で環境を分けることができるので基本的はPREFIXをつけて動かすほうが良いです。単一環境で複数のアプリを入れることのメリットは少ないので常にクリーンな状態で動かす事が望ましいです。

WINEARCH=win32 WINEPREFIX=~/.wine_pd2  wineboot

Diabloは32Bit環境で動作するため、上記ように指定をおこない動かします。上記では .wine_pd2 という閉じられた環境になります。Wineの良い点はアプリ単位でこのようにクリーンなWindows環境で動かすことができることです。(レジストリなども完全に別になるのでLinuxでWineを使うときにはアプリについてはなるべくこのように環境を分けることが望ましいです。

注意) Project Diablo2 は 64bitなのでこのwin32指定はしないでおきます

環境を設定は winecfg コマンドで行います。

WINEARCH=win32 WINEPREFIX=~/.wine_pd2 winecfg

上記 Windowsバージョンを WindowsXP にしておきます。ライブラリの設定でDLLのゆうん線順位を変更することが出来ます。これは独自の ddraw を利用する際などに指定します。

Diablo2の導入

導入メディア

導入イメージは 1.12 があると良いですが、ない場合にはインターネット上から探して来る必要があります。 ブリザード社のサイトでライセンスが登録されていると導入イメージをダウンロードすることが出来ます。サイトからダウンロードした場合には 1.14d になるのでシングルでModなどを利用したい場合には注意しましょう。

ライセンスキー

ライセンスは昔々のCDROMについている場合には、ブリザード社のサイトに行って新しいライセンスキーに変換する必要があります。注意する点は複数のキーがある場合には都度ブリザード社のアカウントが必要となります(一人で複数個を買うことを想定されていないようです)

導入

メディアは、ISOファイルで用意される場合には下のような感じでファイルマネージャで見えます。CDROMから直接したい場合にはMountすれば見えますね(もうここ数年、CDROMドライブが見えるPCを使っていません)

Linux Mint の場合には特に考えることなくダブルクリックすると、マウントされます。環境変数を忘れずにInstallerを起動します。同じように LoDまで導入を行います。

WINEARCH=win32 WINEPREFIX=~/.wine_pd2 wine /media/hideaki/D2-1.12A-enUS/Installer.exe

ここから先は特に迷うことはないと思いますのでそのまま勧めます。

パッチの導入

利用したいDiabloのバージョンにより何を選ぶのかによります。この段階でBattle.netに接続して最新にするよりも一度ローカルで当てておいたほうが何かと良いかと思います。
http://plugy.free.fr/en/index.html
のサイトに各種パッチがリンクされているので利用します。ここでは 1.13d をダウンロードしてみます。

WINEARCH=win32 WINEPREFIX=~/.wine_pd2 wine /media/hideaki/D2-1.12A-enUS/Installer.exe

実行後に、Diabloが起動してしまいます。もしかするとVideoの問題でエラーが出るかもしれません。

WINEARCH=win32 WINEPREFIX=~/.wine_pd2 wine ./LODPatch_113d.exe

補足

起動の仕方

環境変数を指定して起動します。

WINEARCH=win32 WINEPREFIX=~/.wine_pd2 wine ~/.wine_pd2/drive_c/Diablo\ II/Game.exe -w

いくつかのオプションがありますが、 -w をつけることで Windowモードで起動できます。 X-Windowsの場合にはこちらのほうが良いかと思いますが最近の解像度が高いディスプレイで 800×600とか小さすぎるのでいくつかの選択が出来ます。自由にサイズを替えたい場合には、 glide-3dfx というドライバを利用するのが良いです。

Battle.netの無効化

普通に利用している分には、特に問題ないと思いますがModとか入れたい場合にはライセンスがBANされたりする可能性もあるので無効化しておきます。有名なModでありシングルプレーヤーはほぼ必須になっているPlugYなどはディフォルトでOffになっています。

HKEY_CURRENT_USER\Software\Battle.net\Configuration

のキーを変更します。以下のゲートウェイの設定を変更します。これで誤操作しても接続が出来ないので安全です。

追加でパッケージ等の導入

この環境に追加で何かを入れたい場合には、同じ環境変数をしていして導入を行います。また導入するものが msi 形式である場合には以下のように指定します。

WINEARCH=win32 WINEPREFIX=~/.wine_pd2 wine msiexec /i ./ProjectD2Installer.msi

概ね msi 形式でもとくになにか注意することはなく普通に導入が出来ます。

Diablo2 オレオレ兄貴を作る

(この項目はBotプログラムである Kolbotを利用して動かしています)

ACTには雇える兄貴達がいますが自分のキャラを引き連れて遊びたいということがあると思います。ありますよね?

Kolbotでは、自動でキャラを動かすことができますがその際のリーダ役をマニュアル操作することで他のキャラクタをワラワラ引き連れて動かすことが出来ます。

護衛として、パラディンを従えることも可能です。 aoff というコマンドを送ると攻撃はしないで後ろを付いてきてくれます(Botの兄貴は構わず攻撃してしまいますが)。Lv差がありすぎなのでレベリングには全く向いてないですね。エンチャントを持ったSocなどを入れておくと常にAct1でエンチャントをかけるために待機してくれます(この場合同じエリアに入ってないので素直に攻撃力だけあげるのでレベリングに非常に助かりますね)

Bot側の設定で以下のスクリプトを有効にします。これ以外の Scripts.xx が先に動かないようにします。Leaderにはマニュアル操作をしたいキャラの名前を記載しておきます。標準のスクリプトではなく、FollowerSilentの方が優秀なのでこちらからダウンロードして bot ディレクトリに保存しておきます。Documentsにもありますが外部サイトだったのでこちらに保存してあります。

Scripts.FollowerSilent = true; 
Config.Leader = "atack-nec"; 
Config.QuitList = ["atack-nec"]; 
Config.QuitListMode = 0; 
Config.QuitListDelay = [1, 3]; 

エンチャントソーサを待機しておく場合には以下のようにしておきます。これでACT1で待機していてくれるので Chatにて chant と入れればエンチャントをしてもらえます。

Config.Leader = "atack-nec"; 
Config.QuitList = ["atack-nec"]; 
Config.QuitListMode = 0;
Config.QuitListDelay = [1, 3];

Scripts.Enchant = true;
Config.Enchant.Triggers = ["chant", "cows", "wps"]; 
Config.Enchant.GetLeg = false; 
Config.Enchant.AutoChant = true;
Config.Enchant.GameLength = 20; 

次に、このBot側のプロファイルの設定は次のようになります。 EntryScriptは PubJoinにしておきます(これはフォロワーでも良いですが)

PubJoinの設定は D2BotPubJoin.dbj の以下を修正します。

var IncludeFilter = [
	["manual"],
	["bot"]
];

これでこのBotは待機していることになります。後はマニュアル操作ををするためのキャラを起動して先程の manuarl , bot といった名前のゲーム名で起動すると動作出来ます。

Botを操作するためのコマンドは先程の js ファイルの中にコマンドが記載があります。主に使うのは 1 とかシンプルなコマンドで実装されています。パラディン兄貴の場合にはAuraを指定できるので必要に応じてフォローしてもらうと助かります。 レベリング的には先程も書いたようにあまりにも差があると倒しても1程度しか入ってこないので使い物になりませんが、鍛え上げたパーティを引き連れてUberやバールランするのも楽しめます。

Diablo2徒然その11

今更ながらにネットを見ていると、以下に相手のダメージを最小限するかというビルドが出ておりとても面白い。単体攻撃で100ー200をセーブしようねという話でアイテムをやりくりして実現している。装備がガッツリクラフト系でちょっとめまいがするが。この中ではネクロが最も有効とあり興味深い。

公式のBattle.netだとレベリングにバールランなどに参加ができるけど個人だと出来ないので自家製バールランということでBotに引っ張って行ってもらう。これで2,3レベル挙げれるまで進めよう。 エンチャントソサもこれで最終装備って感じになるのであればもうチドRespecしたいところ。本当はCharmなしでなんとかなりたかったが。

せっかくのベースを拾ったが穴あけに失敗(>< なかなか良い弓を手に入れることが出来きず弓アマは塩漬けになっている。

新しくネクロをはじめて見る。サイゴンセットが装備できるまで地道にLvをあげる。そんなに時間取れないのでのんびり行こう。 せっかく Enchant Soc を作ったのでBotに用意されているEnchant Scriptがあるようなのでちょっと使ってみても良いかもしれない。

Diablo2徒然その10

そもそもBotシステムでやりたかったことは最強の兄貴を連れ回すこと。若干は手間だが常にPubJoinする設定に兄貴をしておけば呼び出すことができる。(しかし死にそうになるとチキンモードでLogoutされてしまいあとはもう助けてくれない(苦笑))

このオレオレ兄貴がゆうこと聞かずに攻撃をしてくれないことがあるが概ね連携して戦うことができる。

時間も限られているのでサポートを得て3馬場を乗り越えていく。Silent Followerというこのスクリプトの機能は結構おもしろい。色々とChatコマンドでBotに指示を出せる。このままHELL バールをクリア。

ググっていたらDiablo2のゲームファイルを編集するためのドキュメントが転がっていた。かなり詳しく修正の仕方が書いてある。

Diablo2徒然その9

エンチャントソーサリーが富豪モードになりすぎているのだけどDemonMachineが無くなってしまったのでRW Bando を作成している。操作が細かいけど弓と剣を切り替えてテレポで位置取りしてと楽しい。Youtubeを見ると骨檻が出せるMarrowwalkとのあわせ技でUberを戦っていたりするので模倣してみたい。

レジが足りなすぎる気もするのでGrandCharmのスキルからSmallCharmに変更をしていきたい。レジ(11%) +of Balance(+5% First Hit Recovery )のSmallCharmが欲しいところ。

上部へスクロール