かげさんの111から始まるHistory » 初音ミク冒険記 » イベント連鎖時のタイマー制御

« DNSサーバもエイプリルフール仕様? | トップページ | 歌うキーボード ポケット・ミクを使ってみた »

イベント連鎖時のタイマー制御

プロローグや第1章で登場するザコ敵
グリーンワームとブルーワーム。

こいつらは、自分の当たり判定である顔の中心付近から
半径260ドット以内にミクがいる、かつ、
前回の弾を発射してから3秒以上経過していると
次の弾を打ち出す動きをする。

ミクが初めて「魔法のネギ」をゲットするイベントを見ていくと
従来の初音ミク冒険記では、こんな動作をする。

「魔法のネギ」をゲット!
Screenshot0122

「魔法のネギ」をゲットしてから3秒以上待ってからメッセージ送りボタンを押すと
ブルーワームは、前述の条件を満たしているので、弾を発射している
Screenshot0123

順々にメッセージ送りしていって
攻撃スキル「ネギショット」を習得後、
今度はスキルメニューの説明に入るタイミングで
再び条件を満たし、ブルーワームは弾を発射しているので
ブルーワームの顔付近に弾が2つ表示されている
Screenshot0124

一通り操作説明が入った後、
三たび条件を満たし、ブルーワームは弾を発射しているので
ブルーワームの向いている方に弾が3つ発射されている
Screenshot0125

実は、アイテムゲット→ルカとの会話→操作説明の
「→」の段階で一時的に操作禁止状態が解除されている。

といっても、1フレームだけなんだけどね。
それでも、1フレーム挟まることで、画面が1度再描画されるため
いろいろと処理が実行されてしまうわけだ。

なんで1フレーム挟まるかというと
これは「描画順序」に関係がある。

初音ミク冒険記では、ゲーム本編で画面を表示するために
30以上の描画処理が行われる。

アイテムゲット→イベント開始の時には
アイテムゲットのメッセージを消去しないと
イベントのメッセージが表示できないため
もう一度描画処理を最初からやり直す必要がある。

このため、どうしても1フレーム挟まないとダメなのだ。

こういった事情から1フレーム挟まるんだが
前述のスクリーンショットの状況を改めて考えてみると、
ミクが弾を喰らう位置にいないから影響は無いんだけど
逆にミクが弾を喰らう位置にいた場合、
敵の弾を喰らったら、ミクの位置やマップ構成にもよるが
連続で被弾することになる。

実はこの問題、かなり前から確認されていたんだけど、ずぅっと放置されていました。

2012/02/12の記事
「初音ミク冒険記」、タイマー処理について考えてみる
に、こんなことがかいてあります。

イベントの開始/終了は数が多いし 2章を作るときにも イベント関連の見直しをしないといけないと思うので その時に対応しようと思う。

いやぁ、2年も先送りとか、かなり「やりすぎ」な感があるよね。coldsweats01

この問題、結構、処理順序が関係あって
これまでリファクタリングして処理の見通しは良くなった分
関数の呼び出し構造が複雑になってしまい
頻繁に使う「操作禁止フラグ」の設定箇所を処理の流れで追うのが難しくなっていた。
(該当するソース箇所は、Grepすれば一発なんだが)

実は、このところ、デバッグ機能を強化していたのは
この辺りの流れや、フラグの設定状況、
敵の持つタイマー情報を表示するために作っていたのだ。

デバッグ機能の強化に時間をかけたのは
今後も必要になってくる重要な機能と思ったので。

タイマー関連のバグは、PSP版の頃から結構あって、
現在、tracで管理している作業チケットにも解決済みを含め
6つのチケットが登録されている。

一応、この記事を書いている時点で
6つのチケット中4つまでの対応が終わっている。

今週末に残り2つも解決して
次に公開するバージョンで、気づいている限りのものは直し切りたい。

面白かったら押すべし。→ へぇ~
ランキング [] [] [] [] [] [↑50] [かげさんの111から始まるHistory内]

|

このエントリーへのリンク

このエントリーのリンクを入れるHTML:

トラックバァ~ック!


★アディダスやニューバランス関連のトラックバックスパムが多すぎて★
★超迷惑なので、トラックバックは承認制としました。★
★このため、トラックバックが記事に表示されるまで
★時間がかかることがあります★

この記事にトラバ~る為のURL:

この記事へのトラックバックの一覧です: イベント連鎖時のタイマー制御:

コメント

このブログの新着コメントをRSSリーダに登録する為のxml




←名前とメールアドレスは必須です。URLも記入すれば、URLのみが公開されます。メールアドレスのみですと、メールアドレスが公開されてしまいますので、御注意ください。

メールアドレスは書きたくないって人は、掲示板に書き込むって方法もあります。掲示板はメールアドレスなしでもOKです!

↓コメント本文では、「a href」「b」「i」「br/」「p」「strong」「em」「ul」「ol」「li」「blockquote」「pre」のタグが使えます。絵文字をクリックすると、本文にタグを挿入できます。


絵文字を挿入