投稿
けい kei0baisoku
格ゲーのコマンド判定プログラムを作りました(^O^) 【KE8Q43P】 (他の人へのコメントで作ったものです) リングバッファという仕組みを利用しています。 下→右下→右→Aで波○拳が、右→下→右下→Aで昇○拳が出ます。(しゃべるだけですが) ゲームではありませんが、参考になりそうでしたらどうぞ(^O^)
19そうだね
プレイ済み
返信[1]
親投稿
せいら sutenukoice
格ゲーはやったことないけど、中身作るの楽しそう!
0そうだね
プレイ済み
返信[2]
親投稿
********* 1105HAYA
ストリー●ファイターですね!?w
0そうだね
プレイ済み
返信[3]
親投稿
けい kei0baisoku
>せいらさん きっと楽しいですよー(´∀`) ……って、遊んだことないんかい!(°Д°)/ ストリー●ファイター? はて、「は○けん」なんて無かった気が(´з`)♪
0そうだね
プレイ済み
返信[4]
親投稿
きのっこ citronsoda
さすが仕事がはやいです! は○けん 世界ふしぎは○けんですよねw
1そうだね
プレイ済み
返信[5]
親投稿
りょうま R-S1437
これは凄いですね、僕はこれを活用するほどの腕はありませんが(笑)。このプログラムに「ハマるけん」的な感じの発音ですね。
0そうだね
プレイ済み
返信[6]
親投稿
たつひこ TATUHIKO73
ストリート●ファイターだw
1そうだね
プレイ済み
返信[7]
親投稿
スー thanks_0u0
気付いてしまいました。プログラム内ではひらがなでしたけれど、コメントを見たらちゃんと漢字で書いてありますね!( `・ω・´ ) これを元に類推すると…波乱拳と昇降拳?波形拳と昇天拳?波間拳と昇段拳? それはさておき、自分で作ってみたコマンド入力は妙に判定がシビアだったりして、本当はどうやるのか気になっていたのでお勉強になります。ありがとうございます(*´∨`*)ノ
0そうだね
プレイ済み
返信[8]
親投稿
けい kei0baisoku
ふしぎは○けんw >tathuhikoさん ちょっと!伏せ字伏せ字! 隠れてないですよ!(^O^;) >スーさん 参考になりましたら幸いです(´∀`) ネタばらししますと「波○拳」とは、たくさんの「グー」が円形の陣形を組んでサインカーブを描きながら進んでいく技で、「昇○拳」とはそれの動きが上に昇る版の技です。 技名が伏せ字だとは一言もいってません(`・ω・´) ………というところまで実装してからアップしようかとも思ったのですが、大幅に睡眠時間削ってまでやるほどのことではないと、すんでの所で気付いてやめました(`・ω・´)
0そうだね
プレイ済み
返信[9]
親投稿
スー thanks_0u0
まさかのそのままのパターン!そしてすごくよけにくそう∑(゚Д゚) 睡眠大事です。無理はなさいませんよう( ´ ▽ ` )ノ
2そうだね
プレイ済み
返信[10]
親投稿
たつひこ TATUHIKO73
けいs»失礼致しました!w
1そうだね
プレイ済み
返信[11]
親投稿
せいら sutenukoice
これってゼルダのアクションでも同じですか?(あいにくDLできてないのですが) B連打してると三回目で攻撃変わるじゃないですか。格ゲーとアクションゲーはまた違うのかな?
0そうだね
プレイ済み
返信[12]
親投稿
せいら sutenukoice
ところで、波動拳って現実にある技ではないのですか?
0そうだね
プレイ済み
返信[13]
親投稿
けい kei0baisoku
>せいらさん 頑張れば出せる。 そう思っていた時期が私にもありました………(´ω`) ゼルダのアクションは全く別だと思います。 その仕様なら、リンクが今何の動きの途中かと言う変数があるはずですので、一撃目の終わりの期間に押したら二撃目、二撃目の終わりの期間に押したら三撃目、という感じの作り方が素直だと思います。
0そうだね
プレイ済み
返信[14]
親投稿
せいら sutenukoice
普通のパンチ攻撃ではないのですか? 素直な攻撃(´ω`) アクションによってもプログラムの組み方が違うのですね。
0そうだね
プレイ済み
返信[15]
親投稿
けい kei0baisoku
いつ押しても必ず同じ攻撃が出るなら普通のパンチですが、連続だと変わる~みたいな仕様があると、連続か否かを判定する処理が必要になります。 遊ぶ方から見てほとんど同じでも、ちょっと仕様が違うだけで大きく工夫する必要があることも多いのです(´ω`)
1そうだね
プレイ済み
返信[16]
親投稿
901 901kyuumaruiti
ローリングイヅナドロップ決めたい。 せいらさんが言ってるのをスト2で言うとフェイロンの烈火拳だと思う。
0そうだね
プレイ済み
返信[17]
親投稿
けい kei0baisoku
やばい、両方分からない…… 私の知らないスト2だ………(`・ω・´;)
1そうだね
プレイ済み
返信[18]
親投稿
せいら sutenukoice
格ゲーはよくわからんとです…
0そうだね
プレイ済み
返信[19]
親投稿
格ゲーだけじゃなく裏技的なコマンド入力にも使えそうですよね EX●ELのイースターエッグみたいにツールに仕込むとかも 見つけた人がニヤリとしていいかもしれませんね
0そうだね
プレイ済み
返信[20]
親投稿
けい kei0baisoku
格ゲー、なんとなぁくは分かるのですが……(・ω・) >りゅうまごさん ツールの裏技………!? それは考えてませんでしたが、プチコンなら少々フリーダムにやっても許されますね!(^O^) 夢が膨らみます!そういう遊び要素大好きです(´∀`)
0そうだね
プレイ済み
返信[21]
親投稿
けい kei0baisoku
ほかの方から質問がありまして、写真の「BUFの中身を取る関数」の説明をします。
0そうだね
プレイ済み
返信[22]
親投稿
けい kei0baisoku
GETBUF(OFST) の関数です。 まず前提として、このプログラムはキー入力を、サイズ16の配列 BUF[16] に保存して覚えています。 ただし16回入力されたら終わりでなく、17回目は配列の先頭を上書きして使います。で、また順番に右へ進み、たくさん入力があっても永久にぐるぐる回して保存し続けます(これがリングバッファです) 今BUFのどの位置に保存しているかを、POSという変数で覚えています。 このGETBUFは、今の位置から数えて左に一つや、左に4つ戻った位置の配列の値を楽に取得するための関数です。
0そうだね
プレイ済み
返信[23]
親投稿
けい kei0baisoku
64~66行目のWHILE文で、下準備として引数のOFSTがもし負だったら、配列サイズの16(=BSIZ)の倍数を足して、OFSTを0以上の値にしてます。 67行目でPOSに足してます。 しかし、単に足しただけでは配列のサイズである16を越える可能性があります。もし16以上だったら16を引いて0~15の範囲にしたいのですが、これをやっているのが MOD BSIZ(=16)です。
0そうだね
プレイ済み
返信[24]
親投稿
けい kei0baisoku
MODは、割った余りを求める演算子です。 まとめますと、具体的にはこうなります。 (例)POS=4 の状態で、2つ左のBUFの値を知りたい場合 ・引数はOFST==-2 ・16を足してOFST==14 ・POSの4と足すと18 ・18を16で割った余りは2 ・知りたいBUFの値は、BUF[2] (例2)POS==1の状態で3つ左の値を知りたいとき ・-3 → 13 →1+13は14 →14 MOD 16 は14 ・知りたいBUFの値は、BUF[14]
0そうだね
プレイ済み
返信[25]
親投稿
けい kei0baisoku
以上、MODを使うと楽になる例でした。 あと、このプログラムで多用してますがビット演算も慣れるととても便利です。
0そうだね
プレイ済み
返信[26]
親投稿
むゆー muyu-pon
おお、とても分かりやすい! 一旦すこし自分でプログラムを作って見たいと思います。 (ちなみにフェイロンの烈火拳を三回連続で出せるようになるまで一週間かかりました^^;)
1そうだね
プレイ済み
返信[27]
親投稿
むゆー muyu-pon
何度も質問すいません、 今のけいさんのプログラムでは同じボタンを連続で押した時(AA,→→等)に対応していませんよね。どこをどうすれば対応させる事ができるのでしょうか?
0そうだね
プレイ済み
返信[28]
親投稿
けい kei0baisoku
>むゆーさん 私も作りながら気付いて考えてました。 対応してない理由は、今の仕様が「何かボタンを押していて、最後のボタンの状態から変わった時だけ保存する」だからです。 では、どうしたら「→→」を判定できるでしょうか? 途中でボタンを離すことが想定されてないなら、それも保存するようにすれば良さそうです。 (ボタンを何か押していたら、の条件を外す) とまあ、ゲームを作るときはこんな感じで、作りたいものの完成形をイメージして、どうやったらそれを実現出来るか試行錯誤します。 正解はありません。全く同じものは誰も作ったことがないことも多いです。 ちなみに↑も、試してませんがうまくいく確率は80%くらいだと思います。 ダメだったらそのダメな原因をよく見て、さらに対策を練ります。 有名な言葉で「トライ アンド エラー」と言います。 頑張ってみてください(´ω`)/
0そうだね
プレイ済み
返信[29]
親投稿
むゆー muyu-pon
おーできました! プログラムを読み解いて自分の思い通りの動きになった時は感動ものですね。ありがとうございました。
1そうだね
プレイ済み
返信[30]
親投稿
Lejenne roberingue2012
リングバッファと聞くと、BGMで使用するバッファってイメージがありました。ww
0そうだね
プレイ済み
返信[31]
親投稿
けい kei0baisoku
あれ?BGMもなんかバッファ関係あるんでしたっけ?(´Д`) ストリーミングのバッファかな?
0そうだね
プレイ済み
返信[32]
親投稿
Lejenne roberingue2012
すみません。さすがに別メーカーのゲーム機の仕様をココに書くのはまずいので削除します。m(_ _)m
0そうだね
プレイ済み
返信[33]
親投稿
Lejenne roberingue2012
誤解を招くと、あれなんで、昔とある人からとある書籍を見せていただきました。なのでワタシはゲームプログラマ未経験です。ww プチコンで頑張るぞっと。ww
1そうだね
プレイ済み
返信[34]
親投稿
901 901kyuumaruiti
ローリングイズナドロップはバルログのスーパーコンボ。コマンドは左下タメ 右下 左下 右上でジャンプしたあと壁キックしてから相手を掴むというロマンたっぷりの技。 MODとかダルいから%復活して欲しい。
1そうだね
プレイ済み
返信[35]
親投稿
けい kei0baisoku
おお!ローリングイズナドロップかっこいい!(°Д°) ニホンゴマザテルケドキニシナイ! ちなみに今回私が作ったのだと溜めは完全に未対応なので、根本的に仕組みを考える必要がありますねー。 あっ、ボタンキープの時間も一緒に保存したらいけそう……… %復活同意。 復活と言っても私前作は知らないですけども(´ω`)
1そうだね
プレイ済み
返信[36]
親投稿
901 901kyuumaruiti
スペイン忍術だから日本語まざっても仕方ない。ちなみに百裂張り手とかのボタン連打技は五回目で発動だから弱4回強1回押せば強を連打しなくてもいい。 %ならスペース要らないから楽。
0そうだね
プレイ済み
返信[37]
親投稿
けい kei0baisoku
なるほど、細かい仕様を知るとアルゴリズムが推測できますね。
0そうだね
プレイ済み
返信[38]
親投稿
901 901kyuumaruiti
おしらせの調子悪い。 そういえばザンギエフのスクリューパイルドライバーはレバー1回転で有名だけど、実は半回転と真上だったりする。
0そうだね
プレイ済み
返信[39]
親投稿
けい kei0baisoku
>901さん そうなんですか!? リアルタイムでスト2やってた頃は270度回転だと認識して出してました。 厳密に一回転だと厳しすぎたから工夫したのかな?とか想像できますね。
0そうだね
プレイ済み
返信[40]
親投稿
901 901kyuumaruiti
ガチで1回転だとジャンプしちゃうし。
1そうだね
プレイ済み
返信[41]
親投稿
せいら sutenukoice
けいさんけいさん大変です! DLしたのはいいですけど、遊び方がわかりません。
0そうだね
プレイ済み
返信[42]
親投稿
けい kei0baisoku
仕方ないなぁ、せい太くんは(´з`) いいかい?一回しか言わないからよく聞くんだよ? これはね、 「遊びじゃねぇんだ(´°Д°`)」 平たく言うと、ゲームじゃなくてサンプルプログラムだね。 ストリー○ファイターの波○拳か昇○拳のコマンドを入れるとボイスが出るよ! 格ゲーコマンド的なプログラムを作りたい人は参考にしてみてね!(´з`)
1そうだね
プレイ済み
返信[43]
親投稿
せいら sutenukoice
(´;ω;`)
0そうだね
プレイ済み
返信[44]
親投稿
けい kei0baisoku
やーい、泣かしたー 泣かしたー(°з°) ……すいませんしたm(__)m
0そうだね
プレイ済み
返信[45]
親投稿
きのっこ citronsoda
はいっ!ゲラゲライヤホン~
0そうだね
プレイ済み
返信[46]
親投稿
むゆー muyu-pon
ここにはもうコメントしないつもりでいましたが…一つ教えて頂きたいです。 思っていた通りボタン長押しのところで詰まりました^^^^;;;; 是非どうすれば長押しに対応できるのか、アイデアをくれませんか?
0そうだね
プレイ済み
返信[47]
親投稿
けい kei0baisoku
>きのっこさん どうもですー(´з`)/ >むゆーさん らじゃーです。 ちょっとややこしいかもしれませんが取りあえず文章で。 今は「どのボタンを押したか」だけをリングバッファに保存しています。全く同じ大きさのリングバッファをもう一つ用意して、そちらに「そのボタン状態を何フレームキープしたか?」を毎フレームカウントすることで数えるようにします。 これで、ボタンの状態とキープした時間の情報があるので、順に辿ることで理論上溜めも判定できるはずです(自信70%くらい) 上だけ押しっぱなしと斜め上は別物として判定されますので、そこは溜め判定の際に工夫が必要かもしれません。 これが難しかった場合、後は「溜め専用のバッファを作る」でもできそうです。専用を作る方がたぶん簡単で、代わりに管理するものが二種類になるので少し大変(バグとか出やすい)になると思われます。
0そうだね
プレイ済み
返信[48]
親投稿
けい kei0baisoku
溜め専用バッファは、毎フレームキーの四方向を押しているか否かチェックして、押してたら+1、押してなかったらゼロにします。 これでいつでも、キーのそれぞれを何フレーム押しっぱなしにしているかを調べられます。 (例)左下方向に1秒以上溜めたか判定 →左のカウントと下のカウントが、両方60以上ならOK
0そうだね
プレイ済み
返信[49]
親投稿
むゆー muyu-pon
なるほど……やってみます。
1そうだね
プレイ済み
返信[50]
親投稿
むゆー muyu-pon
なんとかできそうです!(問題点はありますが) ありがとうございました!
1そうだね
プレイ済み