================================================================================ AIMS Ver 1.00 2008/09/27 D.N.A. Softwares ================================================================================ ■ はじめに このプログラムは、「D.N.A. Softwares」で使用しているゲームエンジンです。 特徴として ・DirectX描画ライブラリ「Luna」を独自改造した高速な描画 ・スクリプトエンジン「Lua」を利用した汎用的な開発 が可能となっています。 営利非営利問わず無償でご利用いただけます。 販売・配布の際には一報いただけると幸いです。 動作環境 OS : Windows 2000/XP/XP64/Vista/Vista64 CPU : Pentium 4以降 MEMORY : 2000/XP 256MB以上・Vista 512MB以上 HDD : 100MB以上 VIDEO : DirectX 9に対応したグラフィックボード これはAIMSが起動する最低動作環境です。 スクリプトの記述内容や使用するリソース、PC環境などの要因により変動します。 ■ フォルダの内容 bin\ AIMSのバイナリ。AIMSd.exeがデバッグ、AIMS.exeがリリース。 docs\ AIMSの簡易マニュアルなど packer\ 配布時にリソース proto\ 開発用プログラム readme.txt このファイル ■ ゲーム配布時の注意事項 このエンジンでは以下のプログラム/ライブラリを利用しています。 ・DirectX9.0c用ライブラリ"Luna" ・Ogg Vorbis ・Mersenne Twister ・Lua 配布の際には各ライブラリのライセンステキストを同梱してください。 (docs\license.txtを再利用してもかまいません) ■ インストール・アンインストール 解凍し、適当なフォルダにコピーしてください。 アンインストールする際はフォルダを削除してください。 AIMSはレジストリを使用していません。 ■ 起動オプション AIMS.exeには、以下のオプションを渡すことができます。 --vsync, -v VSYNCのみで描画を行います。 --double, -d 表示解像度を2倍にします。 --width, -w 指定した数値の高さで起動します。 --height, -h 指定した数値の幅で起動します。 --fullscreen 強制的にフルスクリーンで起動します。 --windowed 強制的にウィンドウモードで起動します。 --nostop 非アクティブ時に停止しません。 --console デバッグコンソールを表示します。 --log, -l 指定した文字列のデバッグHTMLを表示します。 --nolog ログ出力を行いません。 --frameskip 処理落ちする際にフレームスキップを行います。 ■ エンジンの構成について AIMSは以下の手順で起動します。 1.設定ファイル読み込み 「実行ファイル名.lua」という設定ファイルを読み込みます。 実行ファイル名を変更した場合は、この設定ファイルの名前も変更してください。 (AIMSd.exeを利用する場合などに気をつけてください) 2.boot.lua ゲーム本体の初期化や、スクリプトファイルのrequireはここで行います。 3.common.lua 各種共通関数が記載されています。 boot.lua内の最初に読み込む(prequire)してください。 ■ 簡易リファレンス AIMSにはLuaスクリプトエンジンを採用しているため、 Luaで定義されている関数郡は全て利用可能です。 1.シーンという概念 AIMSは「ベースシーン」「追加シーン」という2つのシーン概念があります。 ベースシーンはゲームの基本となるシーンです。 追加シーンは、ベースシーンの上もしくは下に作成されるシーンです。 動作シーンには「Scene_OnStart()」「Scene_OnStep()」「Scene_OnClose()」という 3つの関数が最低でも必要となります。 また、呼び出しの際には「_On〜」より手前の英字を指定します。 呼び出された直後に「OnStart」が実行されます。 次のフレームからは、内外から終了されるまで「OnStep」がループ実行されます。 内外から終了指示を受けた場合「OnClose」が実行されメモリから解放されます。 各シーンには12枚のレイヤーが用意されてます。 レイヤーごとにオブジェクトの描画が行われます。 シーンの動作を変更する関数は以下のとおりです。 ・changeScene( SceneTag ); 自分自身の動作シーンをSceneTagに切り替えます。 実行すると、SceneTag_OnStartが実行されます。 ・SceneID = addScene( SceneTag[, Index] ); SceneTagという新しい動作シーンを作成します。 実行すると、SceneTag_OnStartが実行されます。 SceneIDは作成した動作シーンの値が格納されます。 Indexは1または2を指定します。 0をベースシーンとし、数字が大きいほど上に表示されます。 ・closeScene( [SceneID] ); SceneIDに指定された追加シーンを終了します。 指定が無い場合は自分自身のシーンを終了します。 実行すると、SceneTag_OnCloseが実行されます。 基本的には 「ゲームの中心的な内容をベースシーンで実行」 「PRGのメニューやSTGのスコア表示を追加シーンで実行」 という使い方が主だった使い方になりますが、 管理が煩雑になりやすいため慣れるまではベースシーンのみで実行するのが 望ましいと思います。 2.アクター AIMSでは「画面上に表示されるオブジェクト」のことをアクターと呼びます。 各アクターには以下の関数が用意されています。 ・hActor = createActor( hGraphic, x, y[, angle, speed], layer[, func]); 画面上で描画されるアクターを作成します。 angleとspeedが定義された場合、作成された次のフレームから 指定された値で動作を開始します。 layerには0〜11までの値を入力します。 funcが指定された場合「func_OnStart()」が実行されます。 次のフレームから、フレームごとに「func_OnStep()」が実行されます。 アクターの破棄が行われると「func_OnClose()」が実行されます。 ・addMover( hActor, wait, loop, MOVER_TAG, TAG_A, TAG_B); hActorに外部から処理を行います。 アクターが自分自身を参照する場合はiSelf()を指定します。 (iSelf()は自分自身のアクターハンドルを返す関数です) MOVER_TAGにはさまざまな命令が定義されています。 命令によってTAG_A、TAG_Bの指定内容が変化します。 代表的な命令は以下のとおりです。 MOVER_SETPOSITION, X, Y アクターを指定した座標に移動します。 MOVER_SETANGLE, ANGLE アクターの移動角度を設定します。 画面上での表示もこのANGLEに依存します。 MOVER_SETSPEED, SPEED アクターを指定したSPEEDで移動させます。 移動方向はアクターが保持しているANGLEに依存します。 MOVER_SETALPHA, ALPHA アクターの透明度を設定します。 0で表示なし、255で100%となります。 MOVER_ADDALPHA, ADDALPHA アクターの透明度を段階的に変更します。 loopで指定されたフレーム数分、透明度を増減します。 MOVER_SETVANISH アクターを消滅させます。 3.Music いわゆるBackGroundMusic。 ・playMusic(intro_filename[, loop_filename]); ・playMusicLoop(intro_filename[, loop_filename]); 指定されたoggファイルを再生する。 再生順は「intro_filename -> loop_filename」となり、 playMusicLoopの場合loop_filenameを無限ループ再生する。 (loop_filenameが定義されていない場合はintro_filenameをループする) 4.Sound いわゆるSoundEffect。 ・hSound = loadSound( filename ); 指定されたファイルをロードしハンドルを取得する ・playSound( hSound ); 指定されたハンドルのSEを再生する。 5.各種入力 DirectInputを利用して入力を取得することができます。 以下の定数が利用可能です。 BUTTON_UP BUTTON_DOWN BUTTON_LEFT BUTTON_RIGHT BUTTON_TRIG1 BUTTON_TRIG2 BUTTON_TRIG3 ・bool result = isJoyPressed([UserID, ]trigger_id); trigger_idに対応したキーが押されているか取得する。 UserIDが指定されていない場合は自動的に0が定義される。 ・int count = getJoyPressCount([UserID, ]trigger_id); trigger_idに対応したキーが押されているフレーム数を取得する。 押された直後のみ反応したい場合などに使用する。 6.その他 ゲーム制御や開発時に必要となる関数群 ・debugOut( string[, view] ); ウィンドウタイトルとログにstringの内容を出力する。 viewにfalseが定義されている場合はログ出力は行わない。 変数の内容を表示したい場合、tostring(string)とすることで booleanやnilも表示される。 ・quit(); エンジンを終了する。 ・str = serialize( table ); 配列をテキスト化する。 ・table = deserialize( string ); テキストを配列に組み上げなおす。 ・saveFile(filename, string); stringの内容を指定されたfilenameに保存する。 ・string = loadFile(filename); stringに指定されたfilenameの内容を代入する。 ■ 最後に バグを発見した場合はご報告ください。