AIRやFLASHなどを表示するのに不便なので、ブログから自作サイトに移転します。

N2-Works移転先

今後はこちらで更新を行っていきます。


エラーダイアログを作成しようとした時に大ハマリしたのでメモしておきます。


しばらく調査してみたのですが、モーダルダイアログを簡単に作成するようなAPIは、用意されていないようです。


ならNativeWindowでダイアログを作成してしまうことにしたのですが、そこで変な挙動を確認しのです。


私はmxmlを使用せず、全てActionScriptで記述しているのですが、エントリポイントになるクラスから初期ウインドウにアタッチする方法は皆様はご存知でしょうか?


以下のようなコードです。

package  
{	
    // SYSTEM PACKAGE
    import flash.display.*;

    // エントリポイントHogeクラス
    public class Hoge extends Sprite
    {
        // コンストラクタ
        public function Hoge() 
       {
            /**
             * 初期ウインドウへのアタッチ例
              */
            // ウインドウ幅の取得
              trace(this.stage.nativeWindow.width);
            // ウインドウ高さの取得
              trace(this.stage.nativeWindow.height);
        }
    }
}


例としてwidthとheightの取得を挙げましたが、エントリポイントのクラスが保持しているStage.nativeWindowのメソッドやプロパティから色々と操作できます。


話が逸れましたが、エラーダイアログ作成時に何が起きたかというと、新たに作成したnativeWindowに配置したSpriteが意図した大きさにならなかったのです。


それどころか、そのSpriteに配置したTextFieldも設定した値とかけ離れた大きさになってしまいました。


これは何が原因かというと、nativeWindowは新規に作成した場合、Stage.scaleModeとStage.alignが正しく設定されていないからです。


ただしここでいう正しい設定というのは、左上隅が(0, 0)になりwidthやheightの単位がpixel単位で表示されるということです。AIRの仕様書にはこれがデフォルトであると載っています。


// 新規作成するウインドウのオプションを設定
var option:nativeWindowInitOptions = new NativeWindowInitOptions();
option.systemChrome = "standard";

// ウインドウを新規作成
var window:nativeWindow = new NativeWindow(option);

// scaleModeとalignを正しく設定
window.scaleMode = StageScaleMode.NO_SCALE;    // 拡大縮小なし
window.align = "TL";                           // 左上隅に座標(0,0)を設定


この設定を行わないと、こちらの意図した座標系とはなりませんので注意が必要です。


しかしHowTo本には何も設定していないウインドウの作成までしか載っていないので解決が

大変でした。もう少し突っ込んだ内容の本は売ってないもんですかね(笑)



AIRやFLASHなどを表示するのに不便なので、ブログから自作サイトに移転します。

N2-Works移転先

今後はこちらで更新を行っていきます。


Flash/AIRなどの技術情報に一元アクセス、アドビが新ツール 』by @IT

という記事が見まして、早速インストールしてみました、『Adobe Developer Box


AIR/FLASH開発者向けの情報集約アプリケーションということですので、このアプリを介せばAIR関連の情報を検索する労力が少なくなりそうです。


ただこのアプリ自体がAIRアプリなので、リファレンスなども内包しているのかと思いましたが、すでにWEBに存在するリファレンスへのリンクがあるだけだったのでがっかりしました。


WEB上のリファレンスはどうも動作が遅いので使いにくいですよね。

全ページをローカルにDLできればいいのですが、ページが非常に多くてやってられませんよね。サイトを丸ごとDLできるようなソフトがあれば便利なのですが(笑)


『MSDN』みたいにインストールできる形にして欲しいですね。


AIRやFLASHなどを表示するのに不便なので、ブログから自作サイトに移転します。

N2-Works移転先

今後はこちらで更新を行っていきます。


表題の通り、AIRでのノベルゲームエンジン制作のお話を始めます。


今回はFLVPlayerの時とは異なり、開発が全て終わったわけではありませんが、

どこかで区切りを付けないと終わりませんので、基本的なコマンドが実装された今制作コラムを始めようと思います。


では始めましょうか。


『ノベルゲームエンジン』と言っても実装した全ての機能がノベルゲームに限定されたものではありません。


基本的にゲームというのはユーザ入力に対してのアクションを、画面描画、サウンドの演奏、データの入出力という形で反映するに過ぎないからです。


ただ、ノベルゲームというのは『静』の部分が大きいので制御が楽という面があります。


RPGなんかはノベルゲームエンジンから移行しやすいのはお分かりでしょう。ノベルゲーム+αの機能を実装すれば良いからですね。


戦闘スクリプト、キャラデータ、敵データなど追加すれば出来そのものは別にして一般的なRPGの要件を満たしていますよね。


さて、話が少しずれてしまいましたのでノベルゲームエンジンの話に戻しましょう。


今回作成するノベルゲームエンジンの設計仕様について書きましょうか。


小規模なノベルゲームを制作するのであれば、全てをソースコード上で完結してしまうのも有りなのかもしれません。


ただある規模以上の物を制作しようとすると、ソースコード上のみで完結するのは非常に大変な作業と化します。何故ならその度にソースコードをコンパイルする必要があるからです。


そこで、外部に命令を別に記載したファイルを作成し、読み込ませて実行すれば読み込ませる側のプログラムを再度コンパイルすることなく、更新した処理を実行させることができます。


つまりDVDプレーヤーなどにおける、DVDプレーヤー本体とDVDディスクの関係のようなものです。


これを踏まえた上で以下のようなアプリケーションを制作することにしました。

[ノベルゲームプレイヤー]
ノベルゲームエンジンの本体。外部コマンドファイルとリソースファイルを読み込み、コマンドを順に実行する。

[スクリプトコンバーター]
外部コマンドファイルをスクリプトソースファイルから作成する。

[イメージコンバーター]
イメージリソースを1つのファイルに連結する。

[サウンドコンバーター]
サウンドリソースを1つのファイルに連結する。


スクリプトソースファイルというのは、人が認識しやすい形でコマンドを記述するファイルです。

このファイルをスクリプトコンバーターに入力すると、ノベルゲームプレイヤーで認識できるファイルへと

変換を行います。


スクリプトソースファイルをそのまま読み込むようにしてもいいのですが、上記の通り、人が認識しやすい形で

記載されているため、ゲームの中身が簡単に見破られてしまいます。それを防ぐ意味もあるのですが、バイナリ

の形でプレーヤーに入力した方が処理的にも軽くなるので便利です。


当然、フォーマットは自分で自由に決めることが出来ますし、コマンドはいくらでも納得がいくまで

増やすことができます。だからきりがないとも言えるのですが(笑)


イメージコンバーターとサウンドコンバーターもリソースファイルを1つにまとめるという

目的以外に、上記のようにビューワーやメディアプレーヤーなどで再生できない形に変換するという

目的もあります。


まあ実際にソースコードを見てみないと何をしようとしているのか、いまいち実感がわかないとですよね。


次回はスクリプトコンバーターの一部を解説しようと思います。