Beta.05A 更新履歴|仕様変更など 1


暫時追加:作者用メモ

About Beta.05A

  • 仕様変更

Condition >> Regex Search Partial | Exact >> Negate Condition を使えないように仕様を変更。Beta.04 では互換性のため残してあったが、Beta.05A で完全に利用不可とした。

  • 追加機能

Condition >> HWND >> Detect Clipboard Change >> クリップボードの変更を検出(Active 型検知)
自作アプリ向け、クリップボードのシーケンス番号を取得 >> クリップボード内データ形式がテキストの場合にそれを検出 >> シーケンス番号が更新された場合、かつデータ形式がテキストの場合、Condition は True を返す >> Polling Rate は Game FPS に依存する、現在は FPS の 10 分の 1 が指定されている >> FPS 60 の場合、一秒間に 6 回クリップボードにシーケンス番号を取得しにいく >> 実行中アプリの動作 FPS が変更された場合、Polling Rate は追従する.

動画 GIF、コピペで解説

Action >> MISC. >> Align Left(左揃え :: Last Created Instance X|Y)

フレームエディタ上で一番最後に作成されたオブジェクトインスタンスの位置を参照し、それを基準とした左揃えでオブジェクトを整列 >> 値はマージンを指定するだけで XY 位置は指定不要

  • 特記事項
  • 整列はスプライト(Active)が対象、自動で割り振られた連番を元に強制的アニメーションフレーム変更とアニメーション停止処理をエクステ内部で指定。整列時にアニメーションフレームの各イメージ幅を検出し、フレーム毎にイメージ幅が異なる場合でも各画像が重ならないよう配置する。

    配置開始位置指定が少しトリッキーだが慣れれば便利に使える。配置の開始位置をパラメータの入力無しで動的変更可能になる。

Action >> MISC. >> LINE >> OAH_Line_CB2P_3DIV_LR
開発中、2点間を結ぶ直線上にオブジェクトを整列配置する。まだ仕様がしっかり決まらない。矢印を作りたい。<--------------------->
矢印自体はアニメーションピクチャにパターンを割り当てれば可能だが、二点間距離にオブジェクトを配置する方式をどうするか悩み中。面倒な数値入力をなるべく省略したい。

Action >> MISC. >> Objects Align >> Horizontal >> Align Right + Counter
Animation Frame の Picture width を利用した右揃え整列。異なるピクチャサイズでもきれいに整列できる。マージン指定可能。
当初 Align Left 同等機能として設計されたが、アニメーションフレームにカウンター表示用画像を用意して数値を渡せば「カウンターオブジェクト」を作れる。公式機能として提供されている「カウンター」よりも描画コストは大きくなるが、公式には無い機能を簡単に実装できるようになる可能性があったので評価用に作ってみた。

実際に作った感想として、公式とは違う使い方ができるので機能的には差別化できる。「カウンター」をグラフィックス的にもっとリッチな設計にカスタムしたい、桁を指定して指定した桁の数値だけを増減したいなど。


イベント編集画面、面倒な計算は全部エクステに一任する。基本的に 1 Action で完了する。

以下動画 GIF。

くるくる回るカウンターのベータ版

スロットマシン風カウンター動作のサンプル

クリック毎に表示される桁が増えるカウンター

REGEX ECMA 動作コントローラ関連

Action >> MISC. >> Objects Control >> 項目を追加
Objects Align と Objects Control でメニューを分類。

メニュー上の分類

コントロール・基本操作用の Action として Stop・Reject・Delete を実装完了。この 3 つの基本操作は事前にオブジェクトを REGEX ECMA の動作コントローラに登録してある前提で利用する。呼び出しや管理にはオブジェクト名を利用する仕組み。

  • Stop は名前を指定した全オブジェクトの動作を全て一時停止。動作再開したい場合は Toggle を利用する。
  • Reject は名前を指定した全オブジェクトを REGEX ECMA の動作コントローラから削除する。結果としてオブジェクトは動作停止する。
  • Delete は名前を指定したオブジェクトを REGEX ECMA の動作コントローラから削除し、かつオブジェクトを破棄する。

「整列」はオブジェクトのポジションを変更するときに毎回オブジェクト・コントロールを登録して、位置変更が終了したら登録を解除している。継続的にオブジェクトを管理しないのでプログラム的な意味では作るのが楽でパターンも増やしやすい。好き。

「コントロール」は操作するオブジェクトをリストに登録して、エクステンションでオブジェクトの動作を継続的に管理している。CF25 のフレームエディタに登録されたオブジェクトは全て固有の識別子、「名前」を持っている。この名前を利用してオブジェクトをコントロールのリストから削除したり、特定オブジェクトを停止したりできる基本機能が必要になるため「整列」よりもプログラム的な手間がかかる。

Beta.05A では「コントロール」の基本設計部分だけを作って登録し、実際の動作は Beta.05B 以降に実装されテストを行う予定。とりあえず基本的な動作で動かしているのが以下動画 GIF で確認できる。

動作コントロールのテスト

Action >> MISC. >> Get ALL Objects Name
Frame Editor 上に配置された全オブジェクトの名前とインスタンス数などを取得 >> テキストデータとしてエクステに渡す >> Get TEXT から取得できる >> 何の役に立つ? >> オブジェクトをコントロールする上で必要なデータにアクセスする手順を試行できる >> 開発用

Action >> MISC. >> Objects Control >> Menu >> Circle Rotation
昔作った Quad FreeCell 700 のゲームタイトルメニューをエクステンションで再現したい。
MMF2 のソースコードはもう読む気しないのだが当時は XLua とかも使っているので読んでもたぶん本人理解不能。完全なロストテクノロジーだが今ならエクステで再現できる。

Beta.05A rev3 以降
コントロール・基本操作用に Toggle を追加。Beta.05A rev2 以前は Stop が Toggle を兼ねる動作になっていたが、動作コントローラへオブジェクトの登録は By Name を利用して一括登録する以外にも手段があり、個別登録することもできる仕様となっている。このため Stop と Toggle は別機能として分類することになった。

  • Toggle は名前を指定した全オブジェクトを対象に動作中のオブジェクトを動作停止する、停止中のオブジェクトは動作再開する。停止・再開を切り替える。

Beta.05A rev6 以降
REGEX ECMA の開発(Beta.4)までは C++ で Class を使わなくても済んでいたのだが、Beta.05A 以降はコードの量が増えてしまい Class を使わないと開発が難しくなってきた。仕方がないのでまず Object Control Class を作り、次に Object Align Class を作る予定。Beta.05A rev3 〜 5 まではクラス導入前提の準備をしてるソースコード、rev6 以降はクラスを実際に利用している。こんな量のコード書くとは当初考えてなかったのでここにきてクラス導入も想定外。

Regex ECMA との連携については不明だったので MISC. の機能は当初別エクステンションとして分離独立させる予定だったが、一ヶ月ほど開発を進めながら徐々に構想が固まってきた結果、Regex ECMA と同居したまま連携を模索することに決定。

エクステンションの正式公開は来年に延期

今手がけている Object Control Class はオブジェクトの名前を利用してエクステンションからアクティブオブジェクトを操作する拡張機能だ。

名前とはつまり「文字列」なので正規表現で検索もできる。そして文字列を書き換えることもできるので、最初に登録した名前をゲーム動作中に別の名前へ変更すれば Active Object A と Active Object B を合体させた 「Acitve Object AB」 という存在しないオブジェクトグループを登録することができるようになる。動作中のグループを名前でスワップもできる。当初考えていたよりもいろいろ出来そうなので文字列編集機能を持った REGEX ECMA との連携は切らないほうが良いと判断した。

Beta.05A rev6 以降は動作サンプルも REGEX ECMA と Object Control 系で二つに分けて提供する。REGEX ECMA は機能的にはほぼ完成しているためサンプルの追加も無さそう。一方 Align と Control は新機能が追加更新される。

Beta.05A rev6 公開

公開を完了

Beta.05B へ続く。


Leave a comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

One thought on “Beta.05A 更新履歴|仕様変更など