0_0_65/room 新規作成と views 設定

 obake   specification   version   room   views 

0_0_65 へマイナーバージョンアップ。

作業の方向性は決まり、ゲーム仕様なども具体的に少しずつ決まってきた。コードの変更はあまり多くないが 0_0_65 へマイナーバージョンアップしておく。

追加された変数

ev. に変数追加。

CMB_ParamLength  = 250;                                 // test value
CMB_TimeLimits   = (room_speed << 1);                   // default value for "TryCombTimer".
CMB_LengthRatio  = (CMB_ParamLength / CMB_TimeLimits ); // Graph Length Ratio

コンボ用の時間制限に関する変数。ユーザーインターフェースで利用される。

コンボ用ユーザーインタフェース

追加された関数処理は無いが、既存の関数処理 DR_ComboCT(); に追加処理として

var z;
z = ev.TryCombTimer;

    if (z > 0)
    {
        a  = c_red;
        c += 50.0;     // test
        e  = (b + (ev.CMB_LengthRatio * z));
        f  = c + 20.0; // width test
        //draw_line_width_colour(b,c, e,c, f, a, a );
        draw_roundrect_colour(b,c, e,f, a,a, false);
    };

上記が追加された。

グラフィックスはキャラクタの数や絵の枚数など、ある程度実現可能なスケールまでアイディアをまとめた。

作業量を考えるとまだ甘く見積もっている感じだが、一応頑張ればできるかなってレベル。

グラフィックス・リソースの追加

テスト(サイズでかすぎ)

トラジション用に試作

テクスチャサイズは 1024*1024 に収まってまだ余裕あるが、基本サイズがでかすぎた。もっと小さくて良い。50%程度縮小可能?テクスチャサイズは 1024 * 1024 のまま、もっと色々詰め込める可能性。

テスト2、テクスチャを 512 pixelへ収まるように作り直した。

アニメーションを GM:S で試してみたが Attachment の扱いが安定せずバグだらけだったので Attachment は使わない方向性で。最新バージョンへアップすればある程度直ってるかもしれないが( バグトラッカーで報告を見た気がする ) 、それでも今は使わない方向で実装を考える。

トラジション用に試作1

トラジション用に試作2

トラジション用に試作3

カウント1へ近づく程、大きな動きをするように作ってある。カウント3では小さく動き、カウント1ではより大きな範囲を使ってアニメーションする。

Attachment を動的に切り換えると Spine 上では問題ないが GM:S へエクスポートすると表示にバグがあったため、メリットが一つ失われることになるが、テクスチャを3つに分けて各アニメーション毎に動作を定義する。そして3つのスプライトとしてリソースツリーへ登録、Attachment を利用せずにスプライトを動的に切り替えて一つのオブジェクトで利用する。

この方法で解決。実際作業すると、アニメーション作成の工程を除けば GM:S 側での実装が簡単なので案外使い勝手は良かった。

ルームの新規作成と Views の設定

バグフィックス。HTML5 で動作時、views 設定が間違っていた影響で表示サイズがおかしくなっていた。PC 版では不具合がなかったため気が付くのが遅れた。

スクリプトからルームを作成する際に、ROOM Views の設定もしたのだが

var a,b,c,d;
a = room_width;
b = room_height;
c = view_wview[0];
d = view_hview[0];
room_set_view(0, 0, true, 0, 0, a, b, 0, 0, c, d, 0, 0, 0, 0, -1);

こんな感じで最初は room_width などを代入。これが間違い。現在のルームサイズを取得するのではなく、view_hview の値などを代入する。

room_width の値は可変なのでこの値を使って views の設定をするのは間違い。現在の views 設定を新規作成した ROOMS でも引き継ぐ場合、view_hview の値を取得してそれを利用するのが正しい。

間違っていても Windows PC では正常に描画されていたが、HTML5 では上記設定では正常に描画範囲指定がされていなかった。

故に正しくは

///CR_RooMINtrO();
var a,b,c,d;
a = room_add();
b = view_current;
c = view_wview[b];
d = view_hview[b];
room_set_persistent(a, false);
room_set_background_colour(a, c_purple, true);
room_set_view_enabled(a, true);
room_set_view(a, 0, true, 0, 0, c, d, 0, 0, c, d, 0, 0, 0, 0, -1);
room_instance_add(a, 0, 0, trn_intro);

global.ROOM_INTRO = a;
room_goto(a);

このようにすれば Windows PC でも HTML5 ( ブラウザ動作 ) でも描画処理を正常に共通化できる。

メモ about Spine

Spine は全く同じ画像をプロジェクトに複数含まれている時、それをエクスポート際、同じ画像データは重複した別画像としてはパックされない。つまり同じ画像を複数含んでいる場合、パックするときには一つにまとめられるためデータ量は節約される。

[A][A][A][B][B][B][c][c]

例えばこのような形でプロジェクトに重複したデータが入っている場合、エクスポートの際に重複が検出され最適化されるので、

[A][B][c]

パックされると上記のようになって出てくる。テクスチャサイズを節約する機能。




次へ

前へ