AIMSのバージョン1.20を公開します。上のメニューバーのダウンロードページへどうぞ。
現在開発中の”群弾”で使用しているバージョンです。先のエントリーにあったMOVER_MOVETO_L以降のMOVER定義が使用できるようになっています。MOVERの拡張以外にも色々機能が増えているのですが、追々エントリーとして説明していきます。
AIMSのバージョン1.20を公開します。上のメニューバーのダウンロードページへどうぞ。
現在開発中の”群弾”で使用しているバージョンです。先のエントリーにあったMOVER_MOVETO_L以降のMOVER定義が使用できるようになっています。MOVERの拡張以外にも色々機能が増えているのですが、追々エントリーとして説明していきます。
アクターの当たり判定を行う場合、前準備として当たり判定を画像に設定する必要があります。
この関数で、グラフィックの特定位置に当たり判定に使用する矩形を追加します。当たり判定矩形は最大16個まで設定できます。
当たり判定は「矩形同士が重なっているか?」で判定しています。
重なっているかどうかを取得するには以下の関数を使用します。
isHitActorは指定されたアクター同士が重なっているかどうかをboolean値として返します。
getHitLayerは指定されたアクターに対して「指定レイヤー上で重なっているアクターのハンドル」をLuaのテーブルとして取得します。
複数のアクターを相手に判定を取る場合、isHitActorで1対1の判定を複数取るよりは、getHitLayerでまとめて判定を取った方が高速になります。レイヤーを使ってアクターをうまく分けておくのがコツです。(STGなら自機と敵の弾は別のレイヤーに置くとか)
AIMSの動作の基本となる関数です。[]内の引数は省略できます。
「createActor関数でアクターを作る」→「作ったアクターにaddMover関数で動きを与える」がAIMSにおけるキャラクタ制御の基本です。
addMoverで動作を操作するためには、createActorを実行したときに返ってくるアクターハンドル(number)を保存しておく必要があります。
開始時刻はその動作を開始する時刻(単位フレーム)です。この命令を呼んた直後を0として、指定したフレーム数だけ経過したら動作が始まります。継続時間は動作を続ける時間となります。
addMoverで指定できる動作命令は「MOVER定義一覧」のページを参考にしてください。
(現在公開されている1.01ではMOVER_MOVETO_L以降の定義は実装されていません)
clearMover関数は登録されている動作命令(待機中のもの含む)を全て消去します。ただし、既に変更されてしまった値(速度・角度・透明度・カラーなど)は元に戻りません。
AIMSではキーの入力に以下の関数を使用します。[]内の引数は省略できます。
キーIDはそれぞれ以下のようなものが定義されています。
getJoyPressCountはそのボタンが押されている時間(フレーム数)を、isJoyPressedは押されているかどうかのboolean値(trueかfalse)を、それぞれ返します。あるボタンが1秒間(60フレーム)押しっぱなしになっていたらgetJoyPressCountは60を返すという仕組みです。
サンプルの中で表示位置を移動するのに使っているaddMover関数は別のページで説明します。
AIMSでは画像の表示には2段階の手続きが必要です。手続きとは
これらの関数を用いて画像を読み込み、表示させます。
また、表示している画像は明示的に開放を行う必要があります。
開放しない場合VGAのメモリに残り続けるため、メモリ不足になる可能性があります。
AIMSでは表示させた画像ひとつひとつを「アクター」と呼びます。
正確には「画像を表示している」のではなく「アクターが画像を表示している」と言うのが正しい表現になります。
AIMSのパッケージをダウンロードして解凍すると、protoというフォルダがあります。この中身が最低限のパッケージファイルです。
AIMSは起動するとまずboot.luaをオープンします。
そしてLuaの流儀に従い、functionの外で宣言された変数をグローバル変数として組み込みます。
サンプルでははじめに”prequire(“common.lua”);”と記述されていますが、これでcommon.luaの中に記述された関数などが組み込まれます。
次に素材の各種リソースハンドルを保存するための「G」「S」「A」というテーブルをグローバル変数として宣言しています。
※別にリソースハンドルはどんな名前の変数に保存してもいいんですが、テーブルの中に入れておくと解放が楽だったり、他の変数との衝突が避けられるという理由から、D.N.A. Softwaresとしては上記のテーブルの中に保持することを推奨しています。
それらの動作が終了したら、まず「OnLoad」という関数を実行します。
この「OnLoad」という関数を実行するとbootシーンという最初のシーンを起動します。
(※シーンに付いては後述)
スクリプト内部で「quit」という終了関数が呼ばれるか、Windowsの閉じるボタンが押されると現在実行中のすべてのシーンを強制終了し「OnVanish」という関数を実行しプログラムを終了します。
AIMSのバージョン1.01を公開します。上のメニューバーからダウンロードページへどうぞ。
リリースビルドで不正終了する不具合が見つかりましたので、その点を修正しています。
スクリプト部分についてですが、互換性に関わる仕様変更はありません。1.00で動いていたコードはすべて修正なく動くと思います。
また、一部デバッグ関連のコマンドラインオプションを変更しています。debugOut関数のタイトルバーへの出力がデフォルトでオフになりました。詳細はreadmeをご覧ください。
AIMSのリファレンスを取り急ぎ作成しました。
「まわるめいどさんをねみぎ」時代に作ったマニュアルを現在の仕様にあわせたもので、AIMSのコアとなる機能については網羅しています。
AIMS のドキュメントページからごらんいただけます。
また、SVNの方にも追加しております。docs/の下に追加されますので、SVNを見ておられる方はご利用ください。
東方Projectでおなじみ「幽々子様」がくるくるまわって動くだけのサンプルです。
AIMSサンプル「幽々子様」
このサンプルは
について簡単な説明を入れてあります。
起動の際には「proto\AIMS.exe」「proto\AIMS.lua」「proto\common.lua」を解凍した先にコピーしてください。
SVN中では「sample1 Graphic」に同様のファイルがあります。