HTML5/CSS3/jQueryによる個人開発スレッドです。
※長くなりすぎるとスクロールの邪魔なので20レス程度で区切っていきます
【変更点】
・電話ボックスとゴミ箱の破壊演出実装(進捗50%)
・アイテム出現および取得処理の実装
・対象ゲージ表示処理の実装
幾多の大きな壁に当たりつつ、苦しみながらも何とかここまで漕ぎ着けました。
あまりにも難しいジャンプ系処理や敵キャラのことはあまり考えたくない感じ。
というか、この先はほとんど何やっても超難しいと思われ心折れがち。
アイテム類はとりあえず全種類から完全ランダムで出してます。なんとなく楽しい&嬉しい。
画面左に消えそうな設置物を壊した時、画面内に向かって出てくるやつとか錬金とかはまだです。
ジャンプについてはジャンプ攻撃が絡むと連続技が複雑化するので妥協が要るかも知れません
例えば一度の連続技でファーストアタック且つジャンプ攻撃の最初の一発だけが連続技としてカウントされること
これにより、コーディーの場合はジャンプ攻撃を当てると直後の連続技がジャブ一発からボディになりますが、ニーパット→キックと2ヒットさせた場合でも同じくジャブ一発からボディのままです
また連続技の途中でジャンプ攻撃を当てた場合は、ファーストアタックでないためカウントされません(例:ボディの後ジャンプキックorニーパット→ジャンプキックを当てても着地でアッパーか投げが出る)
ちなみに掴み膝も一発ごとに内部で連続技が進みますが、こちらはファーストアタック扱いにはならないようです
>KENさん
変更点を知らずにプレイしてみたら、障害物壊していきなりアイテムが出てきたのでびっくりしましたw
敵キャラのアルゴリズムは...、恐らく一番大変ですね。FFアーケードの牛丼50杯エピソードの要因も、ほとんどは敵のアルゴリズムの実装ではないかと思ってますので(汗)。
なので、もしプレイヤーのダメージを減らす要素を作るなら、決まった場所でドラム缶が転がってきたり、炎が設置されてる位で良いと思います。ていうか、それだけでも本当に凄いのですが。
>とおりすがりさん
ジャンプ攻撃絡みの連続技仕様についての情報ありがとうございます。
文章にすると一見複雑そうですが、おそらく
・ジャンプ攻撃が連続技カウントに影響するのは0→1のタイミングのみ
・それ以外のタイミングでも連続技タイマー(継続時間切れ)のリセットは行う
の2つの条件を設定すればシンプルにいけそうですね。
とはいっても、本当に難しいのは実はジャンプ動作そのものだったりします。空中での移動操作無効化、攻撃処理をジャンプ時専用のものに切替、Z軸(高度)の設計、フレームごとの上昇下降値設定、アニメーションパターン切替、着地時の動作リセット処理、イレギュラー時の処理(設置物の上に乗ったり落下したり、空中で撃ち落とされたり、何かの押し当たり判定にぶつかった時)など…考慮すべき項目が山積み状態で後回しになってます。
掴み膝といえば「3発目にダメージが高く敵を吹っ飛ばすものが出る」という認識だったのですが、仕様的にはそうではなく敵側から見て3発目の食らいモーションになるとそのような処理が入り強制的に仕切り直すだけで、膝自体はまったく同じものが出続けているだけのようですね。TASの2Pタイムアタック動画で掴みロックを外し、膝を延々叩き込むバグを見て気が付きました。
>eewanoさん
ファイナルファイトの敵キャラはランダム性も強くかなり予測不能な動きをするので、どのようなアルゴリズムで動いてるのかは本当にブラックボックスですね。どうやってできてるのか本当に謎。愚直にプレイヤーに近づいて一定範囲内に入ったら攻撃してくる、みたいなゾンビ的AIから始めていくしかなさそう(それでも辛そう)。それに比べると転がってくるタイヤは攻撃判定を持っている相手の取っ掛かりとしてはちょうど良さそうですね。あと関係ないですが、最近牛丼とかすた丼よく食べてますw
【変更点】
・スコア加算システムおよびスコア/ハイスコア表示UIを実装
・内部処理を少し最適化(不要なタイマーを止める等)
やっぱり点数が増えると嬉しいしゲームっぽい気分が出ますね。ランダムドロップから「例のガム」を引ければ点数が跳ね上がります。
実装的にはスコアのデータ型を数値から文字列に変換しつつ任意の桁数を取り出して画像座標に置換したり、桁頭の無駄な0を消しつつ右詰めにする処理など地味に苦戦してました。普通にPCのデバイスフォントで表示するぶんには苦労しないのに。
>連続技タイマー
掴み膝で進んだ分は時間でリセットされないっぽいです。ジャンプ攻撃かハガーの投げ技の巻き込みヒットでしか継続しないので影響は小さいですが…
>3発目の食らいモーションになるとそのような処理が入り強制的に仕切り直す
主人公側に強制ダウンがあるのは知ってましたが、敵側にもあったんですね。しかし掴み技にだけ適用とは、ハメのために敢えてパンチには適用しなかったんでしょうか。10ヒットあたりで強制ダウンでも良かったような(後の天地2は極端でしたが)
しかしジャンプそのものが最難関だったとは、全く奥が深い…
>2つの条件を設定すればシンプルにいけそうですね
恐れ入りました!!
>KENさん
牛丼とかすた丼を食べてるんですねw
FFアーケード関連の開発に携わると、誰もが牛丼を食べ始める症状が現れるのでしょうか?(゚д゚)
となると、3人プレイを実現した「Final Fight 30th Anniversary Edition」を開発した海外メンバーも、恐らく牛丼すた丼を50杯は食べているのかもしれません(適当)。
>とおりすがりさん
敵側からの攻撃の蓄積で強制ダウンするのは「非ダウン攻撃を延々喰らい続けて何も出来ずにやられてしまう」というようなメガクラを出せない初心者に仕切り直しの機会を与える配慮のような気がします。一方、自分が攻撃したときに不意のダウン効果が付くとテンポが乱れてしまいますから、これがないのもユーザーフレンドリーな設計思想でしょうね。
>eewanoさん
ゲーム作りにはやたらと時間がかかるので、少しでも作業時間を捻出するために電車待ちなどの隙間時間を利用して手早く牛丼を食べる、というのは理にかなった開発食だと実感していますw
例の海外有志は牛丼というよりか、巨大なハンバーガーとか大袋のポテチをバケツサイズのコーラで流し込みながら作ったんじゃないでしょうかね?(熱い偏見)
【変更点】
・「GO」表示処理の実装
【気づき】
ファイナルファイトはスクロールストップする地点がかなり少ない。これはガンガンに突き進むアーケードライクな楽しさを演出しつつも、勢いよく進むことで敵が画面上に多く出現し、結果としてプレイ時間を短縮するというインカムにも貢献する良調整になっている。
ちょwこれすげえ(笑)
オリジナルにどんどん近づいていってるw
歩く速度もパンチのスピードもオリジナルのそれやないですか!
そして最後の光るゴミ箱(笑)
完成したらツイートしたいw
【変更点】
・タイム減少処理を実装
時間経過で残りタイムがちゃんと減るようにしました。ただしミス処理がないのでタイムオーバーはありません。当初単なるハリボテだったUI類もほとんど機能するようになってきましたね。今回の実装に当たっての調査でファイナルファイトのタイムは1カウント8秒(480フレーム)ということもわかりました。あと、いわゆるゼロパディング(1ではなく01とか、フォーマット通りの桁数になるようゼロで埋めるプログラム手法)の仕方も分かって勉強になったり。今日はまだ時間があるのでもうちょっと何かできそうかな。
>無敵さん
こだわってひとつひとつ再現していってるので、最終的にはガチのマニアでもそうそう簡単に見分けがつかないレベルになるんじゃないかと思ってますが…今後どういう取り扱いにするかちょっと悩みどころではありますね。前回のダライアスみたいにお遊び実験っぽかったり、全然似てなかったらシャレになってるんですけど。どこまで行ったら完成ということにするのかも分からなくなってきました。まあ当面はこのまま突き進みますか。
黄金のゴミ箱(デバッグ用)は破壊不能なので、せっかくだからビジュアルで自己主張させてみましたw
【変更点】
・垂直ジャンプを実装
・アイテム拾い範囲を手前方向に拡大
・設置物の奥側に立っている状態から破壊できたのを修正
・画面スケール設定を最大5倍まで可能にした
ついにジャンプ系の実装に着手してみました。まだ垂直のみで技も出ないものの、見た目は完璧に跳べるようになりました。案の定、設置物との前後関係で盛大にバグが出ましたが奮闘の末に何とかなった模様、嬉しさひとしお。これでさらに先に進めます。
【変更点】
・ジャンプのアニメパターン管理と高度管理を別イベントに分離
・前方ジャンプと後方ジャンプを実装
・垂直ジャンプキック、前方ジャンプキック、ニードロップを実装
・一度のジャンプでジャンプキックとニードロップを両方出せる仕様を実装
わりと大きなアップデート。
最初のものが肝要かつ最難関だったポイントで、これによってジャンプ中に別のアクション(攻撃)を起こしても進行中の上昇/下降に影響を及ぼしません。つまり普通のジャンプ攻撃の実装や、空中で撃ち落とされたり飛び降りたときの着地処理なども可能になります。
ジャンプ攻撃2回出しのやつは一見簡単そうで、地味にそれ専用の例外処理をかませる必要がありましたが、マニア的に真っ先に気になるところではありますからね。
これで基本動作はほとんどできるようになった感じ。メガクラは同時押しを取得する方法を研究中、設置物の上に乗る処理はかなり高度なため直近では未実装です。
おお、ジャンプ技のコンボカウント要素やジャンプボタン→方向キーで屈みポーズが短縮される小技もぬかりなく再現されているようですね。ちょっと重くなりましたが判りますよ。
貴兄のような御仁がメガCD版の移植スタッフにいたらと…
【変更点】
・メガクラッシュを実装
・ライフ増加・減少処理を実装
・食べ物を取るとライフが回復するようにした
・ライフ満タンの時だけ食べ物の得点が入るようにした
・ジャンプの最高点が6ドットほど低かったのを修正
(1F目の上昇値が反映されていなかったバグ)
・画面フィルタの初期値をOFFに変更
ようやくベルトアクションの華、メガクラッシュを実装できました。当たったらちゃんとライフも減るので、セットで食べ物の回復効果も実装。あとメガクラッシュだけ設置物の上下8ドットから破壊できる処理も入ってます。これでつかみ系以外の技はすべて実装できました。あと画面フィルタ(リッチ)はやっぱかなり重いんでいったんOFF状態をデフォにしときます。
>とおりすがりさん
どうもありがとうございます、ジャンプ周りの仕様に関してはヒントをいただいて深く理解できたので、ロジックを考えるうえで大きな助けになりました。しかし作れば作るほど、メガドラ版はどうしてあんな感じになったのか気になりますね。見た目にこだわりすぎて辛くなったにしろ、最低限連キャンだけは付けないと話にならないのに。
メガスマ…メガクラーッシュ!
押しながら入力や、ジャブが完全に引っ込まないと同時押ししてもメガクラが出ない(連打キャンセルの影響でジャブが優先される?)ところもオリジナル通りですね。
しかしメガクラヒット直後にジャブが一発減るようになってるのかは、相手がゴミ箱だと出掛かりが当たってしまって連続技の時間切れになってしまい確かめられず
MD版はスクロールの停止ポイントが増えてるのも残念でした。結局タイムアタックばかりやっていた記憶があります。ハガーじゃないと一周できなかった
>押しながら入力や、ジャブが完全に引っ込まないと同時押ししてもメガクラが出ない(連打キャンセルの影響でジャブが優先される?)ところもオリジナル通りですね。
これ、特に意識して再現しようとしたわけではないのですが、作ったら自然とそうなってました。今まで作ってきた内部的な動作ロジックがかなり近いものになってたんでしょうね。理屈的には「連キャンがかかる行動は連続技のパーツだけ」で、メガクラはそれに含まれないため、連キャン受付時にアタック+ジャンプを入力しても絶対に出ず連続技が続くわけですね。作りながら原作への理解も深まりました。
>メガクラヒット直後にジャブが一発減る
これはなってなかったので修正しておきました。ジャンプ攻撃と同じですね。
>MD版はスクロールの停止ポイントが増えてるのも残念
ここらへんはハードスペックと直結する部分なので致し方ないところですが、プレイのテンポが変わっちゃうのはあまりいただけないですね。見た目がなまじ似てるから余計気になる。
【変更点】
・Cキーをメガクラッシュ用ボタンとして追加
もちろん普通に同時押しでも出せます。動作的にはアタック+ジャンプのキーバインドを送っているのではなく、SFCのEXTRA JOYと同じく(出せる状況下では)直接メガクラッシュを発動するシンプルな実装です。ちなみにテスト中に条件設定漏れで空中メガクラッシュが出せたのですが、格ゲーライクでやたらカッコよかったです。
先程、久々にまた遊んでみました。
KENさん、あなた凄いよ...(驚愕)
ゲーム作りは低い山から高い山まで超えても超えても続いていくので、順を追って攻略することで、闘いの中で成長できるのがいいところですね。とはいっても、あとは相当高い山しか残ってないんで結構厳しくなってきましたが。ゲームの移植はある意味、ゲームプレイ以上に深くゲームを楽しめる贅沢な遊びだと感じます。