FAQ
・どうやって使えばいいの?
・ごちゃごちゃしてて全然分かんないよ!
・コンパイラ?逆コンパイラ?リンカ?プレーヤー?
・コンパイラとかを実行しても何も起こらないんだけど?
・コンパイラとかを実行しても何かエラーが出るんだけど?
・メイクファイルの書き方を教えて!
・"_d"がついた実行ファイル(およびDLL)は?
・ScriptPlayerとScriptPlayer2は何が違うの?
・AbyssLibはyaneSDKを使ってしか動作しないの?
・ScriptPlayerはWindows Vistaでは動作しないの?
スクリプタ向け、プログラマ向けのチュートリアルがあります。
まずはそちらに目を通してみましょう。分からないことはFAQを確認するか掲示板で質問してみてください。
ざっと説明しますと、
AbyssLib | アドベンチャーゲーム(以下、AVG)システムライブラリのコア |
BasicCommands | AVGシステムライブラリで使用可能な基本的な命令の集合DLL |
ScriptCompiler | スクリプトのコンパイラ |
ScriptDecompiler | スクリプトの逆コンパイラ |
ScriptLinker | スクリプトのリンカ |
ScriptPlayer | スクリプトのプレーヤー(その1、yaneSDKで下位部分を実装) |
ScriptPlayer2 | スクリプトのプレーヤー(その2、DX9Aで下位部分を実装) |
……といった感じです。
コンパイラ | スクリプトを記述したテキストファイル(以下、テキストファイル)は、そのままでは実行することができません。 テキストファイルからAVGシステムライブラリが読み込める形式のファイル(以下、オブジェクトファイル)に変換してあげる必要があります。 その作業を行うのがコンパイラです。コンパイラはテキストファイルを読み込み、内容の正誤をチェックし、オブジェクトファイルを出力します。 |
逆コンパイラ | テキストファイルをコンパイラに通すと、オブジェクトファイルが出力されます。 オブジェクトファイルは、テキストファイルとは逆に人間が読むことができません(いわゆるバイナリコードです) そういった人間が読むことのできないファイルの内容を人間が読むことのできる形で表示するのが逆コンパイラです。 (元のテキストファイルを削除せずに残していれば、そちらを読めばいいのですが……) |
リンカ | 規模の大きなシナリオを書く場合、シーン単位でテキストファイルを分割することが稀によくあります。 それらのテキストファイルはコンパイラを通すことでオブジェクトファイルに変換できますが、まだひとつには纏まっていません。 それらのオブジェクトファイルをひとつに纏めるのがリンカです。リンカは複数のオブジェクトファイルを読み込み、 内容の矛盾をチェックし、複数のオブジェクトファイルの内容をひとつに纏めたファイル(以下、シナリオファイル)を出力します。 |
プレーヤー | シナリオファイルを実行し、記述されたスクリプトに従ってAVGを進行させるのがプレーヤーです。 ScriptPlayerとScriptPlayer2が現在用意されてますが、独自のプレーヤーを作成することも可能です。 |
コンパイラ | テキストファイルをドラッグ&ドロップすることでコンパイルを行います(複数同時可) |
逆コンパイラ | オブジェクトファイルまたはシナリオファイルをドラッグ&ドロップすることで内容の表示を行います(複数同時不可) |
リンカ | リンクするファイルの一覧を記述したテキストファイル(以下、メイクファイル)をドラッグ&ドロップすることでリンクを行います(メイクファイルのみ) |
共通 | BasicCommands.dllが同一フォルダ内に入っていますか? 同一フォルダ内にない場合、BasicCommands.dll内で定義された命令を使おうとすると「そんな命令ねぇよ!」って表示されますよ! |
プレーヤー | シナリオファイルが同一フォルダ内に入っていますか? 同一フォルダ内にない場合、「再生するシナリオファイルがねぇよ!」って表示されますよ! ある場合は、ファイル名が正しいかを確認してください(ScriptPlayer、ScriptPlayer2の場合のデフォルトは「scenario.dat」) |
たとえばA.txt.objとB.txt.objとC.txt.objをリンクさせる場合は、
A.txt.obj B.txt.obj C.txt.obj |
……といった感じで記述します。
複数の場合は必ず改行を行ってください。また、リンクさせるオブジェクトファイルはメイクファイルと同一のフォルダ内に配置してください。
デバッグ用です。"_d"が付いていないものよりもより細かくエラーを検出し表示します(その反面、実行速度は遅いです)
・ScriptPlayerとScriptPlayer2は何が違うの?
下位部分を実装しているライブラリが異なります。
〜〜〜〜〜↓ここから下、プログラマ向け説明↓〜〜〜〜〜
AbyssLibはグラフィック描画やサウンド再生といった下位部分の実装は一切行っておりません!
理由は下位部分の実装をライブラリ内で行ってしまいますと、あらゆる既存システムへの対応が不可能になるからです。
AbyssLibはAVGにおいて必要な要素のアルゴリズムのみを用意することで、下位部分がDirectXだろうとOpenGLだろうと問題なく実装できるようにしています。
〜〜〜〜〜↑ここから上、プログラマ向け説明↑〜〜〜〜〜
ScriptPlayerは下位部分をyaneSDKで実装し、ScriptPlayer2は下位部分をDX9Aで実装しています。
yaneSDKとDX9Aの特徴を以下に記します。
yaneSDK | 枯れた古き良きライブラリです、古い環境(Windows95など)に対応していますが如何せん古いためWindowsVista以降では多少動作に問題があります。 |
DX9A | 私が現在制作しているライブラリです、DirectX 9.0cがベースなためWIndowsVista以降でも問題なく動作します。 |
上記のような特徴があるため、ScriptPlayer2の使用を推奨します。
・AbyssLibはyaneSDKを使ってしか動作しないの?
〜〜〜〜〜↓ここから下、プログラマ向け説明↓〜〜〜〜〜
そんなことはありません、AbyssLibのグラフィック機能やサウンド機能やユーザー入力機能に対するアクセスは全てインターフェースクラスを通して行ってます。
よって、AbyssLibの仕様に従いインターフェースクラスを継承し実装すれば他のライブラリでも動作可能です。
実際に、ScriptPlayer2はDirectX 9.0cベースのライブラリで下位部分を実装しています。
〜〜〜〜〜↑ここから上、プログラマ向け説明↑〜〜〜〜〜
・ScriptPlayerはWindows Vistaでは動作しないの?
ScriptPlayerをWindows Vista上で実行すると、画面に何も表示されません。
これはyaneSDK(もっと詳しく言うとDirectDraw)の問題であり、AbyssLibが原因ではありません。
解決方法としては、「ScriptPlayer.exeのプロパティ」→「互換性」→「デスクトップ コンポジションを無効にする」をチェックで画面が正しく表示されるようになります。