進捗 「新」メッセージシステム編 #02

 obake   message system   progress   python 

キャラクタ表示機能の実装を一部完了

メッセージシステムも大まかにだが完成が見えてきた。必要機能は追加が容易な設計になっているので暫時追加できる。

内部バージョンを 0075 から 0076 へアップ。0075 で未実装だった部分の実装を急ぐ。

サウンド再生とアニメーションの変更命令

先にアニメーション変更命令の実装から手掛ける。難しい部分は無いが GMS 上で Spine を扱う場合に機能的な制限・仕様もあるので注意点はいくつかある。

  • マルチイメージには非対応

  • Spine Animation は image_speed では停止できない

  • Spine Animation 用 Animation End イベントの活用

マルチイメージはソース画像を規定サイズで分割出力して扱う Spine のエクスポート機能。

例えば Pow2 を意識して 1024 × 1024 サイズをテクスチャの上限と定めた場合、エクスポートでソース画像がこのサイズ一枚に収まらなかった場合、自動的に二枚目のテクスチャを作成して二枚のテクスチャにソース画像を格納してくれる。

便利な機能なのだけど GMS1.4 側がサポートしてないので使えない。エラーログに未対応ですと出てインポートエラーとなる。

image_speed については Spine 用ではないから使えない。例えば image_speed = 0; とやっても無効。

最後に Animation End イベントだが、GMS の object はイベントの実行タイミングを非常に細かく分割しそれを検出できるようにもなっている。Animation End は実質的に Spine アニメーション用のイベントで 「Spine Animation の終了」を検出してくれる。

Spine Animation は基本が無限ループなので一度動き出したアニメーションは別アニメーションパターンに切り替えない限り延々と再生されてる。

停止用のアニメパターンを Spine 側で作っておけばいいのだけど、問題はアニメーション終了を検出する標準関数が GMS1.4 に用意されてない。しかしイベントから終了を検出できるのでそのタイミングで実行されるアクションを作れば、アニメーションを一回再生したら次アニメーションに切り替えるとかはできる。

現状だと GMS1.4 上で動く Spine Animation は関数などを使って任意のタイミングで一時停止はできないってこと。

こういった仕様とかを考慮した上で機能実装をしなければならない。

0075 のデバッグとか

0075 は動作も安定的。IDE からテスト実行するとまれに Surface が消えたまま戻らない場合があって、この不具合も EXE にビルドした場合には発生が確認できなかった。

メッセージシステム機能自体はやはり前回よりも手応えある。前回は付け足し付け足しで機能追加していった結果ひどく読み取り辛いソースになったが、新設計になってこれらは改善された。後からでも機能に手を入れやすい。

Depth の指定

メッセージ用スクリプトでタグ内のアトリビュートをこれ以上数増やすと書くのが面倒くさい、だから Depth の指定は別命令として作ることになった。

Depth は MSG_Depth という定数を基準にしてそこからの値増減でオブジェクト同士の重なりをコントロールする。キャラクタもメッセージボックスも同じ定数を基準に Depth で重なりをコントロールしてる。

メッセージシステム経由で作成されたキャラクタやメッセージボックスなどオブジェクトは一つ作成される毎にカウントされ、作成されたオブジェクトの総数が常に把握できるようになっている。この数字を Depth に当てはめている。

一番最後に作ったオブジェクトが自動的に一番前へ来るシステムだが、ごくまれに Depth をコントロールしたい場合などがある。そのような時には Message.Depth あるいは Character.Depth など、各オブジェクト用の専用命令を駆使して Depth を個別に変更する。

実際どのように Depth を指定するかについては現在仕様を策定中。ver.0076 では実装されないかも。

Depth の指定方法は考えるとちょい厄介で、数値で指定すると実装が楽だけど動作確認及びデバッグが面倒になる。デバッグが容易なのは ID を指定してその前後に配置する方法だが、メッセージシステム上から作成された全オブジェクトを対象にループで検索するのもちょっと効率悪い気がする。かといってデータ構造使って管理するのも大げさだし。

メッセージシステムの動作テスト

現時点でのメッセージシステムを活用してキャラクタも配置して動作テストを行っている。

メッセージシステムの動作テスト

ちょっとしたストーリーならすでに表現できる。スプライトフォントの利用文字を厳密に管理できるようになったので、キャラクタ毎にフォントを切り替えて使うことなども可能。

グラフィックスの追加と更新

タイトル画面を色合わせ試作。ロゴのカラフルな印象を活かし、全体が明るく軽い色で統一してみることになった。プラスチック製のオモチャみたいなイメージを想定している。

タイトル

オバケの画像も心機一転。キャラクター原案はそのままだが、ゲーム用のユーザインターフェス向けあるいはパズルのパネル用アイコンは更新することになった。以下は現時点でのモックだが、明るくちょっと透明感のある質感を目指して作ってある。

試作中は七体同時に描くことに慣れてもらうしか無い。ちょっとしんどいようだが、イメージが確立されるまで何度も描いてもらうことになる。

ストーリー用のキャラクタの原案はあくまでも参考にする程度で、ゲーム画面用のオバケはデフォルメに向かないパーツを積極的に省いて表現をシンプルにまとめて欲しい。

新オバケ・デフォルメ

とりあえず出てきたモックだが、方向性は良い。




次へ

前へ