Wiki

Clone wiki

CardWirthPy Reboot / Compatibility

互換性情報の生成のしかた

前置き

CardWirthPyには、過去のバージョンのCardWirthへ向けて作られた全てのシナリオを正常動作させる事を目標に、互換モードが搭載されています。

この互換モードはプレイヤーが手動で実行させる事もできますが、基本的には、本体内蔵(Data/Compatibility.xml)の互換性データベースにより、互換モードで動くべきシナリオを遊ぶ時に自動で切り替わる事を目指して作られています。

遠い過去に作られたシナリオを現在でも入手するのは容易でない場合があります。あるシナリオを互換性データベースに登録するべきであっても、CardWirthPyの開発者はそのシナリオを入手できないかもしれません。その場合、当該シナリオを所持している方にデータベース登録用の情報を提供していただく必要があります。

どのような情報が必要か

必要なのは、シナリオに含まれるSummary.wsmMD5ハッシュ値です。詳しい説明は他のWebサイトに譲るとして、ここでは「ファイルの内容から計算して出した32文字分の値」と覚えておけば問題ありません。

MD5の値は、ファイルの内容が少しでも異なればまったく違う値になります。翻って同じファイルであれば同じ値になります。CardWirthPyは、シナリオのファイルを読み込む時にファイルごとのMD5値を計算し、それを互換性データベースと照合しています。

つまり互換性データベースにはMD5値が登録されています。この値と、シナリオの名前だけあれば、互換性データベースにそのシナリオを登録する事ができます。

MD5ハッシュ値を得る方法

Unix環境ではそのものずばりmd5というコマンドがあるのですが、あいにくCardWirthは元々Windowsのゲームです。普通のプレイヤーはWindowsを使っているはずです。

Windows環境でMD5を計算する方法は様々あるのですが、ここでは、最近のWindowsであれば必ず入っているPowerShellを使ったやり方を紹介します(古いWindows XPには入っていないかもしれませんが、Windows Updateで提供されているはずです)。

  1. Windows+Rキーを押します。
  2. 出てきたダイアログにpowershellと入力します。
  3. 黒い・または青いウィンドウ(コマンドプロンプト)が出てきたら、cd "<シナリオのフォルダ>"と入力してEnterを押します。
    • シナリオはCAB圧縮などされておらず、展開済みの必要があります。
    • シナリオのフォルダの場所はエクスプローラーのアドレスバーからコピーできます。
    • フォルダの場所にスペースや(などの文字が入っている場合、""で囲わないと失敗してしまいます。cd "C:\Folder Of Scenario\ゴブリンの洞窟"のように、""で囲って指定してください。
  4. 次のコマンドをコピー&ペーストして、Enterを押します。

    [string]::concat(([Security.Cryptography.MD5]::Create().ComputeHash((gi Summary.wsm).OpenRead())|%{$_.ToString('x2')}))

出てきた23a452ff13fafb74e3814d450cd2a957のような値が、MD5ハッシュ値です。

これを何らかの方法で(Issueを作るなど)CardWirthPyの開発者に伝えれば、互換性データベースに登録されるはずです。

Updated