1. k4nagatsuki
  2. CardWirthPy Reboot

Wiki

Clone wiki

CardWirthPy Reboot / Home

CardWirthPy Reboot


お知らせ

お知らせを飛ばす(次の項目までジャンプ)

2016年9月24日

CardWirthNextからスキンを自動生成した時に動作が不安定になる問題が報告されています。

当該の問題が発生した場合、CardWirthPy/Yadoフォルダ内にあるショートカットをすべて削除する事で解決できますので、お試しください。

2016年8月15日

CardWirthPy 1.1をリリースしました(ダウンロード)。

バージョン1にシナリオのプレイに支障をきたすような問題が発見されたための臨時リリースです。バージョン1をご利用の方はアップデートをお薦めします。

2016年8月1日

8月7日追記: バージョン1にシナリオのプレイに支障をきたすような問題が発見されたため、今月半ば頃にバージョン1.1のリリースを予定しています。バージョン1をご利用の方は、1.1リリース後のアップデートをお薦めします。

CardWirthPy 1をリリースしました。バージョン0.12.3bに続く最新のリリース版です。

  • バージョン0.12.3bから1にかけての更新内容についての紹介ページがあります。
  • バージョン1にはCardWirthPy独自のシナリオ形式の機能強化が含まれます。詳細はWSNシナリオの新機能のページをご覧ください。

多くの方からの助言・提案・報告・そしてコードやデータの直接の寄贈といったご協力のおかげで、ようやくバージョン1をリリースする事ができました。

それらの方々と、CardWirthPyを使用してくださっている方々に、改めてお礼申し上げます。ありがとうございます!



これは何?

これはCardWirthPy Developer's Siteで開発中だったCardWirthPyのフォークです(フォークについての説明)。本家側の更新停止が続いているため、Rebootと称して独自に開発を継続しています。

原開発者の方に連絡を取ったところ、恐らく本家側の更新は今後も無いという事なので、事実上開発を引き継いだ形になっています。

開発に参加したりさらに引き継いだりしてくれる方を募集中です。

CardWirthPy&XEditor攻略wikiや、takuto_cwさんのよくまとまった紹介記事もご覧ください。

開発に興味のある方は開発者向け情報をご覧ください。


最新版のダウンロード

フルバージョンであっても、設定やプレイデータは含まれていないため、ダウンロードし解凍した内容をそのまま上書きすれば更新が可能です。


バージョン1.1には以下の不具合が確認されています。当該操作を行う際はご注意ください。

  • デバッグモードでキャラクター情報の編集を行うと、レベル上限が10でないキャラクターであっても10になってしまう場合がある。このバグは1人パーティでキャラクター情報の編集を行う事で回避できます。
  • 一部スキンで使用可能な初期EPが0以外の種族のキャラクターの種族を変更すると、EPが初期化されてしまう(issue #416)。
  • CardWirthNextからスキンを自動生成した時に動作が不安定になる。この問題が発生した場合、CardWirthPy/Yadoフォルダ内にあるショートカットをすべて削除する事で解決できます。

次期バージョンα版のダウンロード

開発版の1月3日時点でのスナップショットです。1.1のリリース後に搭載された新しい機能が使用できますが、正しく動く事は保証されません。宿データのバックアップを取るなど自己防衛策を講じてからご利用ください。


さらに新しいテスト版やスキンのダウンロードとそのChangeLog


CardWirthからの移行方法

冒険者の宿の変換が必要です。起動してから「スタート」カードを選ぶと宿の選択ダイアログが出ますが、そこで「変換」ボタンを押してCardWirthのYadoフォルダ内にある冒険者の宿のフォルダを選択するか、宿のフォルダをダイアログにドラッグ&ドロップしてください。宿は自動的に変換され、CardWirthPyで使用できる状態になります。

また、Scenarioフォルダ内にはショートカットを置く事ができるので、まずはCardWirthのScenarioフォルダへのショートカットを作るといいでしょう。

バリアントからの移行方法

バリアントのエンジンの実行ファイル(例えばModernWirth.exe)をCardWirthPyのウィンドウにドロップすると、そのバリアントのデータからスキンを自動生成するダイアログが出ます。

そのまま「決定」ボタンを押せば、必要なデータが自動的に抽出され、そのバリアントをそのまま移植したスキンが生成されます。スキンは右下の歯車ボタンで開く設定ダイアログから切り替える事ができます。

スキンの生成と同時にそのバリアントのシナリオのフォルダへのショートカットがCardWirthPyのScenarioフォルダに自動的に生成されますが、宿のデータは変換されません。必要な宿を個別に変換してください。


CardWirth 1.30以前のシナリオとの互換動作について

適宜シナリオの対応エンジンの情報を与えることで、CardWirthPyに過去のCardWirthエンジン相当の動作を行わせる事ができます。

例えば、CardWirth 1.20から1.28への移行の時、メニューカードの位置がプレイヤーカードの上に表示されていたのに、1.28ではその位置関係が逆になり、1.20環境で作られた一部シナリオのメニューカードがプレイヤーカードの背後に隠れて見えなくなるといった事が起きました。CardWirthPyは、普段は1.28エンジンのようにプレイヤーカードを上に描画しますが、「このシナリオのこのエリアは1.20のようにメニューカードを上に表示するべき」であると判断すると、自動的にそのような描画に切り替えます。これを互換モードと呼びます。

互換モードに切り替える判断材料には次のようなものがあります。

互換性データベース

いくつかのシナリオについては、エンジン本体に同梱された互換性データベースによって、自動的に互換モードに切り替わります。

全てのシナリオの互換性を調査する事は容易ではないため、互換性データベースに入っているシナリオのリストは不完全です。CardWirthエンジンのバージョンアップで動かなくなったシナリオ等について、皆様からの情報提供をお待ちしております。

そういったシナリオを見つけたら、Issueを作成してお知らせください。タイトルは【互換性DB】から始め、説明には該当するシナリオの情報(シナリオ名やどこで手に入るか等)を書き、Kindはenhancementを選択するとよいでしょう。出来る限り速やかに対応させていただきます。

入手不能なシナリオを登録させたい場合は、互換性情報の生成のしかたをご覧ください。

mode.ini

互換性データベースには情報が無いが、とりあえずすぐに互換モードで動かしたいシナリオ等が存在する場合、シナリオのフォルダにmode.iniというファイルを追加する事で、CardWirthPyに互換モードで動くよう指示を出す事ができます。

mode.iniはテキストファイルで、内容は次の2行です。

[Compatibility]
engine=1.20

ここで、2行目がengine=1.20となっているとCardWirth 1.20相当の互換モードで動きます。1.28相当のモードにしたい場合は、これをengine=1.28にしてください。

互換モードの詳しい内容

現在の互換モードがどの程度まで過去のエンジン相当の挙動をするかについての詳細はIssue #17で見る事ができます。


テスト版のバージョン

最新リリースと同等か、それよりも新しいバージョンがDownloadsにあるかもしれません。これらはテスト版としてソースコードに更新があるたびにビルドされているバージョンです。

以下のファイルをダウンロードし、出てきたフォルダを統合する事で遊べるようになります。

  • cardwirthpy_[日付].zip
  • skin_classic_[日付].zip
  • font_[日付].zip

実装メモ

CardWirthエンジンを実装するにあたって直面した互換性やバグなどについてのメモを作成したので掲載しておきます。エフェクトブースターについてのメモなど、実際のシナリオ作成時などの参考となるかもしれません。


CardWirthPyの目標

ここに書いてあるのは個人的に決めた事なので、他の開発者の意向で変更されるかもしれません。

フリー・オープンソースの維持

フリー・オープンソースを維持します。大方針と反しない限りにおいて、協力をできるだけ受け入れます(もちろん大方針に反するforkも可能です)。

事故や開発者側の都合によって永遠に開発が打ち切られるというリスクをこれによって軽減します。

CardWirth(~1.50)との99%の互換性を目指す

過去に作られた全てのCardWirthシナリオがプレイ可能な環境を提供する事を目指します。

ただし「完璧にプレイできる」ようにする事は困難ですので、それは理想として掲げつつ、現実的には「全てのシナリオが充分にプレイできる」事を目指す事になります。

これにはCardWirth 1.30以前のバージョン用として作られたシナリオや、各種バリアント用のシナリオも含まれます。

互換性に対する考え方について

例えばCardWirth 1.28と1.50で仕様が異なる時にどうした対応をするかですが、次のような理由で、ほとんどの場合は1.50に合わせるのが妥当と思われます。

  • 最新のバージョンに対応したシナリオは今後増加しますが、最新でないバージョンに合わせたシナリオは増加が見込めません。
  • 「最新」のバージョンは常に改まっていくものですが、過去のバージョンは変化しませんので、一度互換性DBなどを用いた対応を行えば、以後は手を入れる必要がありません。

また、仕様の違いが、シナリオをプレイするに当たってほとんど無視できるほど小さなものである場合は、内部的・外面的な複雑さの増大と将来に渡る保守リスクを加味した上で検討し、リスクに対するメリットが無いと判断された場合は無視した方がよいでしょう。

追加・拡張機能とその互換性について

追加・拡張機能は将来的な互換性を考えて慎重に実装するべきです。例えば追加のイベントコンテントなどは、将来のCardWirth側の拡張と衝突する可能性があるため、特に注意しなくてはなりません。単体のソフトウェアではなくプラットフォームである以上、意思決定は軽々しく行うべきではないのです。

一方で、新しい機能の提供によって、シナリオ作者の負担を軽くしたり、新しい事ができるようにする事も、やはり必要です。この2つの考え方は矛盾するようですが、どこかで折り合いをつけなければなりません。

さて、CardWirthPyでは、最初から独自シナリオ形式(WSN形式)のシナリオを遊ぶ事ができます。バージョン1以降には、そのWSN形式の機能拡張も含まれます。WSN形式に追加された新しい機能は、「CardWirth側の拡張との衝突の可能性をできるだけ低くしつつ有用なもの」というような基準で検討され、選択されたものです。

WSN形式の機能拡張を行う際の方針についての詳細は、issue #184で見る事ができます。


このwikiサイトのライセンス

特に著作権情報の記載されている画像などを除き、すべてCC0の通りに利用してください(何をしようとも完全に自由で、許諾は不要)。

なお、このwikiサイトの内容はMercurialで管理されており、以下のようにして取得する事ができます。

hg clone https://bitbucket.org/k4nagatsuki/cardwirthpy-reboot/wiki

Updated