チュートリアル

 

それではさっそくチュートリアルを始めます、習うより慣れろです。
なお、本チュートリアルはVCの取り扱いを心得ていることを前提に記述されています。
 

★AbyssLibをあなたのソリューションに追加する

まずは、AbyssLibをあなたのソリューションに追加する方法について説明します。

1.AbyssLibSet.zipを解凍します。

2.AbyssLibのソリューションファイル(.sln)を開きます。
 あなたがVC2005を使用しているのならAbyssLibSet→Src→AbyssLib→Projects→VC2005を、
 あなたがVC2008を使用しているのならAbyssLibSet→Src→AbyssLib→Projects→VC2008を、
 あなたがVC2010を使用しているのならAbyssLibSet→Src→AbyssLib→Projects→VC2010を、
 あなたがVC2012を使用しているのならAbyssLibSet→Src→AbyssLib→Projects→VC2012を開いてください。

3.AbyssLib.slnをダブルクリックし、VCを起動してください。そして、DebugビルドとReleaseビルドを行ってください。

4.AbyssLibを追加したいソリューションを開いてください。

5.メニューから「プロジェクトの追加」→「既存のプロジェクト」を選択し、AbyssLib.vcprojを指定します。

6.AbyssLibを必要とするプロジェクトを右クリックして「追加」→「既存項目の追加」を選択し、AbyssLib.libとAbyssLib_d.libを追加します。

7.AbyssLib.libをReleaseビルド用、AbyssLib_d.libをDebugビルド用に設定します。
 AbyssLib.libを右クリックして「プロパティ」を選択し、「構成」をDebugにしてから「ビルドから除外」を「はい」にします(「ビルドから除外」は、「構成プロパティ」→「全般」に存在します)
 同じようにAbyssLib_d.libを右クリックして「プロパティ」を選択し、「構成」をReleaseにしてから「ビルドから除外」を「はい」にします。

8.プリコンパイル済みヘッダ(stdafx.h)で、AbyssLibのindex.hとstdafx.hをincludeします。
 プリコンパイル済みヘッダを指定していない場合は、AbyssLibを利用する全てのソースファイル(.cpp)で上記の二ファイルをincludeしてください。

9.プロジェクトの依存関係を設定します、AbyssLibを必要とするプロジェクトを右クリックして「プロジェクトの依存関係」を選択してください。
 「プロジェクトの依存関係」ダイアログが表示されますので、依存先にAbyssLibを指定します(AbyssLibにチェックを入れる)

以上で、AbyssLibをあなたのソリューションに追加する方法についてのチュートリアルは終了です。

※ランタイムライブラリについて
AbyssLibのランタイムライブラリは、Debug時はマルチスレッド デバッグ、Release時はマルチスレッドとなっています。
AbyssLibを必要とするプロジェクトに合わせて、ランタイムライブラリを変更する必要があるかもしれません。
(とはいえ、VC2005以降にはシングルスレッドの指定が無いので気にする必要はありませんが………)

★AbyssLibを利用する

次に、AbyssLibをあなたのソリューションで利用する方法について説明します。

1.まずは、上記を参考にAbyssLibをあなたのソリューションに追加してください。

2.以下のクラスを継承し純粋仮想関数を実装してください、必要であれば仮想関数の再定義も行ってください。
 NovelPlayer(実装例)、BaseInputManager(実装例)、BaseSoundManager(実装例)、BaseDrawManager(実装例

3.アプリケーション開始時にvoid LoadPlugin();を、アプリケーション終了時にvoid FreeCommand(INovelEngine* Outer);とvoid FreePlugin();を呼び出してください。
 アプリケーション終了時の呼び出しは、必ずFreeCommand→FreePluginの順番で行ってください(さもないと、アクセス違反等のエラーが発生します!)

4.bool NovelPlayer::LoadScript(const string& FileName);でスクリプトファイルを読み込み、void NovelPlayer::Run();でスクリプトを実行してください。
 スクリプトが実行されている状態(≒AVGパート)かは、unsigned int NovelPlayer::GetState() const;で判断可能です(詳細は、リファレンスを参照してください)

以上で、AbyssLibをあなたのソリューションで利用する方法についてのチュートリアルは終了です。

※NovelPlayerクラスについて
NovelPlayerクラスはノベルエンジンの中核となるクラスですが、このクラスは単独で利用される事を前提に設計されています。
ですので、複数宣言し利用した場合の動作は不定となります(恐らくは環境設定や既読履歴、グローバル変数が破壊されるでしょう!)
よって、複数宣言し利用したい場合はINovelEngineクラスから継承し実装し直す必要があります。まあ、アドベンチャーゲームパートを並列動作させたいなんて人は居ないでしょうけれど………。

 

以上でチュートリアルは終了です、継承する際の注意点などは実際のソースコード(AbyssLibやScriptPlayerなど)やリファレンスを参照 してください。