おしながき

このブログは主にエロアクションゲームの製作日誌ですので
18歳未満の方、エロに興味の無い方は閲覧をご遠慮ください。

日本語だけ japanese version only
18禁です adults only

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

同じオブジェクトは同じもの

すっかり春に近づいて暖かくなってきた今日この頃。
できれば暑くなる前に目処をつけたいななどと思いつつその前の体験版を最終調整中なわけですが
相変わらず細かなバグがぽこぽこ露見します

その中でも初期の頃からあるけどたまにしか遭遇しないのですっかり後回しにしていた
敵が死なずにこちらからはなにもできなくなる俺的通称ゴースト化
mmf2ss89
これ同じ敵キャラを同時に殺したときに起きます。
たぶん同じ原因でエフェクトがでなかったりなんとか魂がでなかったりするので
そろそろ根本治療するかということで原因究明に着手。

同じ敵というMMF2的にはコピーした同じオブジェクトに起因したバグなので以前から遭遇している
同じフレーム内では同じオブジェクトへの操作がうまくいかない仕様絡みかなと思ったのですが微妙に違う感じ。
元々攻撃の当り判定にその辺の対処もしていたので同じフレーム内で敵が死ぬことはないはずなんですよね。
てなわけで例によって変数やらフラグを見ながらチェックしてみて判明したのが

『イベント連続時にアクションを1回のみ実行』がらみでした。

これどうもコピーしたオブジェクトだと同じものとして判定しているようで
コピーしたオブジェクトを連続で同じアクションをさせようとした場合イベント連続とみなされて
最初のオブジェクトしか実行されてない様子。

今回はHPが0以下になって破壊する前に一度別のアニメーションに移行させていたため
連続で同じオブジェクトの敵のHPが0になると最初のオブジェクトしかアニメーションの移行ができずに
他の条件を満たさない上にHPも0なので元の状態に戻らないゴーストと化していた。というのが真相でした。

なので移行していたアニメを消えるアニメに統合してHPが0になったら破壊する。という単純な方法で解決。
最初から単純にそう組めばよかったんですがもうこの辺組んだのって数年前なので
もはやなにを考えてこの仕様にしたのかさっぱり思い出せません

どうにもやらなくて良い余計なことをしてあとあと問題になることが多いなぁ…
次からはまずシンプルに作る。を徹底したいところですな
スポンサーサイト

MMF2覚え書き、グローバルオブジェクトとサブアプリケーション

久しぶりのMMF2覚書
キーコンフィグの処理をメイン部分に組み込んだときのサブアプリ絡みで少し苦労したお話。

冗長なので閉じ

ゲームパッドか…うっ頭が…

ACTゲームである以上避けて通れないのがゲームパッド
自分はXZRやゼリアードやらの頃からPCゲームはキーボードでしかやってない旧世代人なので
パッドのことはまるで頭になかったわけですがそろそろα版でも公開しようかいう段階で
さすがにパッドで最低限の操作もできないのはまずかろうと思い至った次第

といってもMMF2で普通に作ってればジョイスティックでも動くと思うんだけどナーと甘い考えで
手持ちの安物ゲームパッドをさしてみたところ…動きません
はて…他の市販のゲームは動いてたので認識はしているはずなんだけどとPCの方の設定を見てみると
なんかジョイスティック2個認識してる…左手デバイスのG13でした。そういやレバーついてるなこれ
そこでプレイヤー1の「入力デバイスの設定」とやらをを2にしてみたところ無事ゲームパッドが反応しました。
一応、1から4のボタンも認識してるから最低限の操作はできてます。
しかし属性変換できない…って当たり前ですそこはキーボード判定しかしてません
割り当てようにもMMF2のデフォルトだとパッドのボタンとして認識できるのは4つまでっぽいので
このままだと併用操作が必要に…

そしてパッドでやってみるとキーボードとの操作性の違いが顕著
方向キーとボタンの操作する手が逆になるので当たり前ですが…
ショットは無制限に使えるわけでもないので暴発を防ぐ意味も含めて上+攻撃にしてたけど
パッド操作も考えると一応ボタンにも割り当てたほうがいいかなとか、
ボタン並びの関係で2+3同時押しはやりづらいとか、やっぱり使ってみないと判らないものですね。
最終的にはキーコンフィグはいれないと駄目ですな

とまぁそんな経緯でMMF2のデフォルトのままでは限界もあるなというわけで
ここでまた定番っぽいエクステンションのJoystick 2 object[wiki]に頼ることにしました。
複数の入力デバイスの管理や5個以上のボタンをパッドで操作するなら使ったほうがよさそうですね。

とりあえずエクステンションの使い方を覚えるために色々試したサンプルを張ろうとしたら
Swfの書き出しには対応してませんでした。まぁお茶濁し程度の内容なのでいっか…
mmf2newss61>動きませんヨ

ウインドウサイズのこととか

また後日といいつつそのまま忘れてしまうのがいつものパターンなので今回は忘れないうちに書き残し。

今回の作品ではドット感を重視するという大義名分を掲げて1ドットを倍にした大きさをデフォルトにしていますが
MMF2はウインドウコントロールオブジェクトでその辺簡単に操作できるようになってるので
ウインドウモードのときはワンボタンでx1、x2、x3とウインドウの大きさを変えれるようにしています。

擬似フルスクリーンは出来るようになっていますがそのまま引き伸ばされるだけなので
スクエアサイズのモニターだとたぶん縦長になります
って書いてて気がついたけど自分の開発環境が1920x1200だからフルだと比率おかしいんだ…
なんか微妙にドットの大きさ違うから変だと思ってたんだーって今更過ぎるけど支障はないです。はい

今のところ解像度を変更するフルスクリーンを使えるようにするかは未定です。
フルスクリーンの操作をコントロールできるエクステンションもあるようなので余裕があればって感じです。
解像度の変わるフルスクリーンは良い感じにレトロにぼやけるのでできれば導入したいところではあります。

さて前置きが長くなりましたが
ポーズ中に元のゲーム画面を見せたいなーと欲を出したせいで発生した問題がこちら
mmf2ss60
これはポーズメニューを出しているときに前述のウインドウサイズを変更する操作をすると
ゲーム側のサブアプリは一時停止状態なのでそっちのサイズ変更がされないという状態だったりします。

これを回避するためにポーズメニュー中は変更できないようにするのが一番楽なのですがなんかそれもなー
というわけで、サイズ変更のときに一瞬ゲーム側のサブアプリの一時停止を解除するという方法で解決を試みました。
一応直った…が一瞬とはいえ動くわけでサイズ変更を連打すると画面が1フレームずつ動いてたりします
イベントのときの処理で止めてもいいのですが今度はイベント中にポーズメニューを出すと…
例によって芋づる式に不具合でますね!ってことでゲーム進行には支障もないし一旦これで様子見!

メニュー周りの処理とサブアプリケーション

ここにきてメニュー周りに関連してMMF2のサブアプリケーションでちょっと苦戦。

ゲーム中にメニュー画面に移行する場合ゲーム全体を一時停止する必要があるわけですが
MMF2の一時停止はそのまま使うとCPUの使用率が上昇していくという仕様?があるようで
Multimedia Fusion 2 Wiki:アプリケーションの一時停止(ポーズ)について
この仕様を回避するためにサブアプリケーションを使って操作する方法が一般的と勝手に判断して
最終的にそれを意識してフレームを構築してあったのですね。
しかし長いことステージ単体で組んできていざサブアプリケーションに組み込んでみると
やっぱりいろいろ不具合がでてくるわけです

まずサブアプリ(メニュー)とサブアプリ(ゲーム部分)を交互に一時停止を切り替えるわけですが
ポーズと解除を連打すると両方止まるタイミングがある…
まぁこれはイベントの順番を考慮することで修正できました。

あとは
サブアプリケーション内でフレームレートを変えると固まる。
ウインドウのサイズを変えたいときはメインとサブの全部合わせて変えないとみっともないことになる。

どれも良く考えれば当たり前な気がするけどサブアプリケーションを使わないとあまり気にする必要のない部分
なのでちょっと注意が必要かもしれません。

メニューはこんな感じで表示していますがポーズ中も元のゲーム画面を見せたいなーと欲を出したせいで
これに付随した問題も発生してたり…その辺はまた後日にでも
mmf2ss59
NEXT≫
プロフィール

もさぼる

Author:もさぼる
16bit級おっさん
mosaboxex☆gmail.com [☆>@]

最新記事
最新コメント
カテゴリ
月別アーカイブ
最新トラックバック
検索フォーム
amazon
リンク
バナー
RSSリンクの表示
QRコード
QR
ブロとも申請フォーム
Powered By FC2ブログ

今すぐブログを作ろう!

Powered By FC2ブログ

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。