Diablo

Diablo2徒然その5

ネットでググるとDiablo2は未だに遊ばれているようで色々出てくる。ゲーム自体は古いが古い分だけ今どきの環境ではサポートされてないなったりするがその辺りはパッチが出ていたりしてなんとか動くようにしている。

Android での動作

基本的にはエミュレータなんだけど、素直に動かしたい場合にはハンドヘルドが他のWin10ゲーム端末のGPD WINなんかでも動かしている人がいる。

GPD WINでの動作

コントローラーの使い勝手が如何ほどかによるが結構良さそうな気もする。どこでもできるというのは面白い。

今日の釣果

  • Ber
  • Secret Targe (Regi+45)、その他微妙な白物

ドリーム盾を作る準備が出来てしまった。トレハンBotチームは設定が難しい、同じコースでも出るアイテムでないアイテムに差がある。アイテムごとにやはり狩場があるんだろうか。しかしこれだけ自動で回してもLv99なんて絶対に行かない。世の中の廃人怖い。そもそもHCでLv90まで行くというのが怖い。。

パラ用のトーチ!

そして!ついにパラスキルのトーチを手に入れました!もう作業になるくらいには慣れてきた感じがします。いやーしかもレジMAXでしばらくは積極的にカギ厚めをしなくても良いかなと思います。他のキャラの分が欲しくなったらまた頑張りたいですが

Diablo2徒然その4

Botはどうやって強調して動くのか?一つはゲーム内のChatメッセージのやり取りを「コマンド」として捉えて動く。も一つはBotEngine内の中でやり取りをする。そしてプログラム処理は、特殊なコンソールエリアともう一つは、Head Upのメッセージで行われる。仕組みを見ているとよく出来ているなと思う。特に面白いのはManualモードがあるので残り2から7キャラを従えて遊ぶことができる。このオレオレ兄貴モードは面白い。メッセージで「come」や「go diablo」などのコマンドを送るとワラワラと動いてくれる。 もしBattle.netに入って頻繁にそのようなコマンドを送っているキャラがいればそれはBotかもしれない。

こんなのを見たことがあるかもしれない、親切な人だなーって無邪気に思っていた時期もありました。チャットコマンドで指示を出すBotだったとは・・・

これはBotのプログラム状態を簡単に知るために me.overhead(“Logged char: ” + me.name); してる、メッセージ。 

今日の貢物

まったくアイテムは出てなかったけどDiablo Cloneを倒したのでアニーをゲット。数値的にもいい感じなものが手に入ってよかった。ACT2の ARCANE SANCTUARY からすぐのポータルを戻って出た所付近というWiki情報とおり。

Diablo2徒然その3

Diablo2を取り巻く環境はまだ進化していてシングルやプライベートサーバ環境では高解像度で遊ぶことできるようになっている。 Maphack系を利用し補助を出しり画面上にもう少し情報を出すこともできる。以前はBN専用だった機能もシングルで遊べるようになってる。 もう少しそれっぽく遊んでみたかったので今回プライベートサーバを起動してなんちゃってBNで遊んでいる。

Linux上で高解像度化した状態(Glide-3dfx)

Diablo2はまだまだ熱狂的なファンがいるようで、未だにBNにつなぐとユーザがいて驚く、そしてまだ新しいMod(Diablo2を改造したもの)を搭載したプライベートサーバが出ておりDiscordではユーザが盛り上がっている。まるで17年前にタイムトリップしたかのような気分だ。 新作の「Project Diablo II」はなんと2020年11月6日から始まる! 密かに楽しみにしている。

Project Diablo2

こういったMod系は高解像度化やゲーム自体のバランス調整が行われているのが特徴。 

今日の貢物

  • JahからのLast Wish
最終兵器?Last Wish

作ってしまった。やっちまったなーって感じのハイルーンの塊。もうすっからかん。

弓アマの様に取っておいたのだが全くベースアイテムが出ないので諦めてこちらを作ってしまった。可変値Crashing BlowがMax70%!パラとしてはもうこれ以上はないのだけど実際につかてみるとそれほど無双ってわけじゃない。マナ吸いがないためか速度が遅くなったためかヒットもしてない気が(Smitなのでそれはないと思うが)、なのでCBは十分にあるので装備を修正しなければならなそうだ。

Diablo環境色々 – Wine on Windows10(X+WSL2)編

もう完全に色々な環境で動かして見るための題材になりつつあるDiablo2。Windowsでいじるときのネックはレジストリなどの環境が分離できないこと。なのでアプリ1つが環境全体に及ぼす影響が大きい。Linuxでは最近では色々な形式はあれどSandbox化されてきていていい感じにアプリを利用できる。例えばLinuxではWineを利用すると環境をアプリ単位で切り替えて利用することができる(正確にはファイルシステムとレジストリが分離できる、まぁDockerと同じようなもんだ<乱暴)

ふと思った「Windows10にVirtualboxとか入れていたけどよく考えたらX-Windows+Wineで環境きれいに利用できるやん!」そしてDiablo2はレガシーなアプリなので32BitのXPで動くような枯れた素材。

Diablo(sw renderng) on WLS2 with X (Windows10)

結論からいえば動く、音は設定してないので出てないが一応は遊べそうな感じがする。DirectDrawも glide-3dfxとソフトウェアレンダリングも動いている

WineHQの導入

今回は普段利用しているWSLのUbuntu環境を利用しています。Winehqから新しいバージョンを入れて利用をしてみます。今回は最低限が動けばいので設定等は行いません。

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-key adv --keyserver keyserver.ubuntu.com --recv-keys DFA175A75104960E
sudo apt update
sudo apt install --install-recommends winehq-stable

これで入ると思います。入らない場合には公式サイトを見てもらればなんとかなるはずす。WSLの環境にはWineは既存で入っていないと思いますがある場合には消してから始めます。

環境構築

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

WINEARCH=win32 WINEPREFIX=~/.wine_w32  wineboot

アプリの導入

Windowsの本体側にイメージがおいてある前提ですが、Windows側でマウントするとDドライブのように新しいドライブレターでマウントされた際には以下のコマンドでWSL上から利用できるようにします。

<strong>mount -t drvfs d: /mnt/d

便利ですね。逆は難しいですがWSLからは簡単にできるようになってきています。

X-Windowサーバの導入

なにはなくともXが必要です。VcXsrvというソフトがあるので使ってみました。他にもたくさんあるので好きなものを選べばよいかともいます。設定する際に以下のオプションを入れています(どこかのサイトに書いてあったので)

いくつか設定をしておきます。

WSL側でWindowsのフォントを見るために /etc/fonts/fonts.conf に以下のようにWindowsディレクティブを追加しておきます。

<dir>/mnt/c/Windows/Fonts</dir>
<dir>/usr/share/fonts</dir>
<dir>/usr/local/share/fonts</dir>
<dir prefix="xdg">fonts</dir>
<!-- the following element will be removed in the future -->
<dir>~/.fonts</dir>

これで winecfg で豆腐にならないです。変更をしたら以下のコマンドでキャッシュを更新しておきます。

sudo fc-cache -fv

Winecfgでの設定は2箇所で、アプリをXPにすること。以下のようにDirectDraawをオーバーライドしておくこと。これをしておかないとWineに付属のものが利用されて動かない

実際に起動する際には以下のようにする

export DISPLAY=192.168.0.1:0
WINEARCH=win32 WINEPREFIX=~/.wine_w32 winecfg

アプリケーションの設定

メインのDiablo2の設定は特に特別なことはない、普通に動く。いつものようにシングル向けに 1.12 で導入して 1.13dにアップグレードしてから https://github.com/whipowill/d2-plugy-qol を入れている。

起動時に -3dfx とつけると glide-3dfx で起動、 -w だとソフトウェアレンダリング、 無指定だとDirectDrawになる。(正しく設定が反映されているかは起動後に /fps チャットコマンドで表示されるので確認ができる)

それ以外は普段のDiabloの設定と同様に行うことができる。レジストリへの変更も同じように regedit を利用することができるので特に問題はないだろう。

まとめ

Chromebookのようなこねくり回した部分はなくてWSLとXは素直な関係のようだ(現在は特にOS側がサポートしているわけでもないので当然だが)。最近のMS方向性はまさに今回のようなWSLを利用、アナウンスではXアプリケーションも動くとのことだ、今更X動かしてどうするんだよって思ったけど動いて嬉しかったのでWindows10の機能拡張を楽しみに待つことにする。記事を読むとWaylandをネイティブでサポートするらしいので期待

Windowsがもっと構成ファイル(レジストリ)とかを汚さないで動いてくれればいい気もするのだけど仮想環境を作るほどでもないというものはWineのような手段も取れるといういいお試しになった。

接続先はいつものプライベートサーバ

Diablo2徒然その2

今回の新しく環境を作っていく上でクラウドを利用しようと決めていた、ローカルの環境にいれなくても今どきの通信速度とパフォーマンスで20年の前のゲームなんて余裕だろうと。画面だって800×600しかないんやし。

が、問題はそこではなかった。Battle.netはクラウドサービス上からの接続を「許可してない」ということ。そして「許可してない」は、「BAN」されるという結果をもたらす。今回は久しぶりにWindowsだと意気込んでMicrosoftの提供するAzure上のWindowsVM上でDiablo起動したのだがそのままそのKeyはBANされて使えなくなった。これで俺のBattle.netへのモチベーションはほぼゼロになってしまった。ちなみに、ライセンスキーとアカウントは紐付いていないためキーがBANされても別のキーから入ればアカウントは使える。ちなみにその後、BANされたキーを家のネットワークから利用することで「IPBAN」もくらいついにテザリング以外では利用できない状況になった。

結果的にいまは復旧して利用できるが怖くて接続できてない。

わかっていたけど気にしてなかったんだがRemote DesktopでAzureとつなぐと当たり前だが下りの通信が発生する。

Data Transfer Out (GB) – bandwidth524%78.68 / 15 1 GB2020/10/10 に超えました

あっという間に無料枠を超過した。。。ちょっと気楽に使えない。

教訓)Diabloをクラウド上のサーバから実行してはいけない。

今日の貢物

  • Jah, Sur, Pul, Mal, Um
  • Shaftstop, String of Ear, Raven Frost

ルーンがいい感じに溜まってくるのだがいかんせんベースが手に入らない。MFがまったくない方が良いのだろうか。

上部へスクロール