【令和最新】 .NET Core で Susie Plug-in 呼び出し

みなさんは Susie をご存じでしょうか…
SusieはWindows 3.1の頃からあるグラフィクスビューアです。
画像ファイルのみならずアーカイブファイルにも対応したオープンなプラグイン仕様によって、多種多様なプラグインが有志によって作られていて、かつては日本でかなり使われていたんじゃないかというような素晴らしいビューアでした。


前置きはその辺にしておいて、.NET CoreでSusie Plug-inを呼びだして扱えるようにした。プラグイン呼び出し部分は一通り出来たので、あとはアプリケーション部分を飽きるまで。

https://github.com/longod/WhiteAlbum/tree/main/WA.Susie

 

ことの発端は、最近HDDのデータを整理をしているときに、古い画像ファイルとともに、昔使っていたプラグインが出土したことに起因する。
Susieは長らく更新が停止して動作が怪しくなりつつあるし、OSの更新でいつ動かなくなるかも分からない。プラグインに対応した他のアプリケーションも同様に軒並み古くなってしまったし、そもそもアーカイブまでサポートされたものは少なかった記憶がある。
プラグインもプラグインで、インターネット上に存在するプラグインはサイトの消滅と共に徐々に消えつつあり、惜しい状態だ。同様にインターネット上に存在するプラグインに関する情報も徐々に消えつつある。
じゃあ、今のうちに、次を満たす呼び出し側(ホスト)を作っておくか、というのが動機だ。

  • オープンソース
  • 扱いやすい
  • 今の時代にモダンに動作する
  • 将来的にも動作する可能性が高い

.NET CoreのバージョンはPrismの都合で3.1になったが、単体だけなら5とかに6に上げても動作すると思う。

x86 (32-bit) の影響を受ける

当たり前だけれど、プラグインは時代的に32-bitライブラリとして作られている。
正攻法でプラグインを呼び出すには、呼び出し側もx86でなくてはならない。それに伴って連鎖的にアプリケーション全体がx86になってしまう。今の64bit OSが主流の時代に。

プラグイン仕様書だけを見て作るのは大変

本家のプラグイン仕様書は、Plug-in packageのプラグイン集にテキストファイルとして同梱されている。プラグインを作る側はこれでも大体は問題ないが、プラグインを呼び出す側となると、Susieの内部挙動が公開されていないので大変だ。

このあたりの先人の知見は特に役に立った。

自分でダミーのプラグインを作る

いきなり既存のプラグインを叩いてみると、見事にデバッグ出来ない状況でクラッシュしたりハングアップしたりする。呼び出し方が悪いのか、プラグインそのものに問題があるのかを把握するために、自分で仕様書を元に適当なプラグインを作ってそれを呼び出してみた方が良い。
プラグインは当時の状況を想像しながら作る必要がある。

  • 当然x86で作る。原理的には、x86以外にx64版プラグインも作れるだろうけれど、それに対応したアプリは皆無だろう。
  • 時代が時代なので、非Unicodeのマルチバイト文字セットで作る。
  • dllexportは、例えばMSVCだと既に無くなっているので、コンパイラが新たに提供している命令に置き換える必要がある。
  • cdeclとstdcallを正しく指定する必要がある。正しくないといとも簡単にクラッシュする。仕様書にはPASCALを全般に渡って使用しているが、今はそれだと駄目だった。

WHITE ALBUM 2 EXTENDED EDITION

前作WHITE ALBUMは、昔から思い入れのあるゲームで、冬になると時折リプレイしたくなったり、サウンドトラックを聴きたくなったり、よく楽曲を演奏したりしていたのだが、同じメーカーであるLeafのTo Heart 2を境にめっきりとその機会も減っていった。
今冬になって久しぶりにそのモチベーションがふと再燃して、WA1をリプレイしたくなったのだが、Windows 10 64-bitにインストールして動作させるために色々調べていたところ、WHITE ALBUM 2のPC版の完全版(EXTENDED EDITION)が2018年にリリースされていたのを初めて知った。

タイトルから話は逸れるが、最後にWA1をプレイしたのはHDDに残っていた古いデータのタイムスタンプを見る限りだと2006年の年末で、10年以内に1回くらいはやってたような感覚よりもずっと昔の話だった。また、WA1に限らず古いLeafのゲームを64-bit OSにインストールしてちゃんと動作させるのは少々面倒だったのだが、それはまた機会があれば記載するかもしれない。

話を戻して、WA2は2010年の発売前にPS3でリリースされることを当時知っていたのだが、そのころには特に興味も無かったし、そもそもPS3を持っていないので、今となってはその存在をすっかり忘れ去ってしまっていた。

続きを読む →

Blasphemous #5 Rare Achievements

久しぶりにやるついでに、取り損ねていた実績を取っておくかと思って全獲得。

残っていたのは、Crossing SoulsとRequiem Aeternam。大抵の人はこの二つが最後まで残るんじゃなかろうか。あるいは、3時間以内に最初の4ボス倒すBronze Medalだが、これは単純にプレイヤースキルさえあれば2時間もかからないくらいなのでやる気次第だろう。

Crossing Soulsは、プレイヤースキルは要求されないのだが、ゲームの終盤まで進める必要があって、ちょっとフラグの順序を間違えると最初からやり直しなのが面倒くさい。
Requiem Aeternamは、プレイヤースキルが必要なのに加えて、条件が明確にされていないので達成したと思っても達成できていないことがある。そうなったらこれも最初からやり直しである。

実績の取得の仕方は、海外のwalkthroughか動画で説明されているのでそれを見れば分かるのだが、どちらも細かいところを抑えていないとすぐ最初からやり直しになるので、ここではそのハマリポイントを書いておく。

続きを読む →

RimWorld

ゲーム内時間215日でクリア。1年60日なので3年半くらい。DLC無し。

前から結構長時間遊んでいたんだけれど、これまでは適当な環境で適当に住まわせて生き死にのドラマを観察するような、言わばThe Simsみたいな遊び方をしていたんだけれど、Graveyard Keeperをやった所為なのか何が切っ掛けなのかはよく分からないが、いい加減真面目にプレイしてクリアするか、という気になった。

それなりにやっていただけあってセオリーは多少分かっているのだが、クリア目的でやるとなると、最初の不時着した瞬間にじっくり時間をかけてコロニーの最終形を考えて設計して記さないといけないので、なかなか腰が重い。
このゲームは時間が経過してコロニーの資産価値が増えるほど、敵が強くなってさらに有限の資源も枯渇していって難しくなるので、最初の設計が済んでしまえば、後はなるべく早く省エネでコロニーを発展させて宇宙船を建造して脱出させてしまえばいい。

脱出に必要な宇宙船に必要な資源は集めるのが結構大変なので、序盤から意識して立ち回りたい。…のだが、今回はエリアにそれらの資源が全然無くて、反応炉の研究が済んだあとで長期戦になりそうだからと、あんまりやりたくない採掘関連の研究をしたのだが、それが済んだ途端にクエスト報酬でAIコアが手に入って、鉱石積んだ商船もやってきてと、急に反応炉作ってクリアする目途が立った。

3年目が終わる直前に反応炉を起動後して防衛した後は、それでも資源がなかなか足りなくて、不足分の先進コンポーネントをチマチマとつくっていたのでそこで大分時間がかかった感じがある。ウランがあまりにギリギリだったので、冬眠カプセルは一つだけになってしまった。
脱出できる入植者が一人だけとなると、誰を乗せてクリアするのかが悩ましい。なんだかんだ時間をかけてプレイしたので意外に思い入れがあった。悩んだ挙句に、3年半の貢献具合や思い出で考えるのは止めにして、最初のキャラクターロールで確か一番上に設定したであろう人物を乗せて脱出させた。

Graveyard Keeper

35時間かけてエンディングまでプレイしたが、なかなかしんどいゲームだった。

プレイする前までは、墓場のマネージメントが主なのかと思っていたが、むしろ墓場は添え物で町の開拓が主で牧場物語的だった。牧場物語といえば、最近のは一切知らないが、大昔にやった記憶だと同じ作業の繰り返しで飽きて止めたのだが(農業って大変だ)、このゲームもまさしくそれだ。黎明期のアジア圏のMMOにも近いかもしれない際限のないチマチマとした生産作業が続く。
ゲームの進行はQuest GiverのNPCとのやりとりによるのだが、こいつらはゲーム内時間の1週間のうちの1日しか出てこないので、その1日を逃すと1週間後に持ち越しだし、Questの進行は連続して出来なくて1週間に一つずつという無用な間が最後まで続く。

ゲームの途中で、ゾンビにある程度の作業を肩代わりさせることができるのだが、これがないと到底無理だったろう。そして恐ろしいことに、このゾンビはパッチ1.3で追加されるまで無かったというのだから、それまではどんな悍ましいゲームだったんだろうかと考えさせられる。ゾンビは本来DLCだったのを無料で本編に追加したそうだから、そこは英断だっただろう。
ゾンビに作業を肩代わりさせられる、といっても限定的で、ゾンビは出来ないことも多いので、PCはその出来ないことをやるためにひたすら忙殺させられる。ベルトコンベアのないFactorioが近いだろう。

また、全体的に説明が不足していて、テクノロジーツリーも前提条件順に並んでいなかったりして不親切な部分がかなり多い。
あるアイテムを作るのにどこで何をやったら作れるのか分かりにくくて、あるテクノロジーを取得して、それをとある場所で使用して設備を作って、その設備を利用して作る必要があるのか…を知るのが説明不足のため途方にくれる。そして、誤った順番でテクノロジーを取ってしまうと、そのテクノロジーで必要なアイテムは別のテクノロジーが無いと作れなくてしばらくポイントの無駄になるなんてことも簡単に起こるようになっている。最序盤にこれが起こってしまうと割と致命的で、ただただ時間を浪費している間に死体はどんどん墓地を占領していく。そしてゲームデザインを理解していない序盤ほどこれに陥ってしまう。

自力で試行錯誤して見つけ出そうとするとあらゆる要素がとんでもない労力を要するので、攻略ガイドを見ながらやった方が良いだろう。