文書の過去の版を表示しています。
ハイハイスクールアドベンチャー SDL版
概要
そういえば、Windowsで動くバージョンがないじゃないか。 まあウェブ版は動くわけだし、全くないわけじゃないけれど、Windows版とはいいがたい。
なければ作ればいいじゃないか。
ということで、Windows版を作ろうと思ったわけです。
基本的に、ハイハイスクールアドベンチャーが移植できるかどうかはビットマップに点を打てて、打ってある点の色を読み出せるかどうかが鍵なのですが、バカ正直に読みだそうとすると今どきのグラフィックスシステムは驚くほど遅いので、大抵はバッファを用意しといて、読み出しはそこから読むので、実際には読み出しはできなくてもあまり問題はないのですが。
逆に言うと、ダブルバッファ的な処理ができないと実装困難ということになります。
今更 Windows版を作るなら C++でごりごり Win32 APIをひっぱたくのではなく、C#で作りたい。 ユニバーサルアプリを作るときに、ビットマップラスをバッファ代わりに使うのがどうも簡単ではないようなので、じゃあSDLでも使えばいいんじゃない?
なので、SDL2版を作ることにしました。
ビルドと実行
ソース一式は例によって Githubに置いてあるので、それを持ってきてください。 Net 8.0をターゲットにしていますので、Net 8.0 SDKがインストール済みであることを前提としています。
Net 8.0なので Windows版といいながら、実は Ubuntuや Debianでも動きます、Net 8.0が入っていれば。
ビルドは、Visual Studio や Visual Studio Codeを使ってもできますが、コマンドラインからもできます。
C:\Users\foo\source\HHSAdvSDL> dutnet build
SDL2版なので、実行には SDL2のDLL1)が必要になります。 もしインストールされていないなら、SDL2, SDL2_image, SDL2_tff, SD2_mixier をインストールしてください。 単純にDLLをHHSAdvSDLと同じフォルダーに放り込んでおくのでも構いません。
Linux版の場合は実はSDL2のC#バインディングである SDL2-CSにやや問題があって、標準的にインストールされている libSDL2.so などを認識しません。HHSAdvSDLのバイナリがあるディレクトリに、SDL2.dll.so, SDL2_image.dll.so, SDL2_ttf.dll.so, SDL2_mixer.dll.so という名前のシンボリックリンクをそれぞれの共有ライブラリに対して作成しておくことでこの問題を回避できます。
Ubuntu 24.04の場合はこんな感じにやればいいです。
lrwxrwxrwx 1 foo bar 36 9月 10 21:34 SDL2.dll.so -> /usr/lib/x86_64-linux-gnu/libSDL2.so lrwxrwxrwx 1 foo bar 42 9月 10 21:36 SDL2_image.dll.so -> /usr/lib/x86_64-linux-gnu/libSDL2_image.so lrwxrwxrwx 1 foo bar 42 9月 10 21:36 SDL2_mixer.dll.so -> /usr/lib/x86_64-linux-gnu/libSDL2_mixer.so lrwxrwxrwx 1 foo bar 40 9月 10 21:35 SDL2_ttf.dll.so -> /usr/lib/x86_64-linux-gnu/libSDL2_ttf.so
実行に際してはデータファイルも必要になります。 AppData というフォルダ名で同梱してありますので、これを配置してください。
Windowsで、ユーザ名が foo だとしたら、
C:\Users\foo\source\HHSAdvSDL> mkdir C:\Users\foo\AppData\Local\HHSAdvSDL C:\Users\foo\source\HHSAdvSDL> copy AppData\Local\HHSAdvSDL\*.* C:\Users\foo\AppData\Local\HHSAdvSDL
のようにやってください。
Linuxの場合は、.local/share/AppData においてください。
$ cp -ax AppData/Local/HHSAdvSDL ~/.local/share
これで準備完了です。 あとは
C:\Usrs\foo\source\HHSAdvSDL> dotnet run
$ dotnet run
のように dotnetコマンドで実行するか、生成されたバイナリを直接起動してください。
設定の変更
SDL2は基本的にゲームを実装するための仕掛けなので、メニューやダイアログといったツールキットが基本的に提供しているような気の利いたものがありません。
必要ならSDL2の機能を使って実装することになります。
ゲーム中のダイアログっぽいものもSDL2を使って実装しています。
そんなわけで、設定を変更するためのUIを作る必要があるわけですが、ぶっちゃけめんどくさかったので作っていません。
それでも、いくつかの項目については、ユーザ側でいじれるように設定ファイルを用意してあります。
設定ファイルは、一度起動して、終了させるとデータフォルダ内に HHSAdvSDL.json という名前で、JSON形式のファイルが作成されます。
現状サポートしているのは、ゲーム中で使用するTrueType フォント2)、オープニングのストーリーの表示をするかどうかと、音を鳴らすかどうかの三項目です。
{"FontPath":"C:\\Windows\\Fonts\\YuGothR.ttc","OpeningRoll":true,"PlaySound":true}
それぞれを好みの値に変更して起動すればその設定で動きます。 フォントを変えてみたり、何度もリトライするときにいちいちオープニングは見たくない、音はちょっと困る、など、事情に応じてこのファイルを編集してご利用ください。