おかみさん初稿
4人目、おかみさんのドット絵を作成してみました。
ちょっと顔が若すぎかな・・・?
« 2005年12月 | メイン | 2006年02月 »
4人目、おかみさんのドット絵を作成してみました。
ちょっと顔が若すぎかな・・・?
辻、先生が立て続けに退場するなんて、どう考えても最終回が近いとしか思えないんですが。
いったい何が起こってるんでしょうか・・・。
これが最終回の前兆ではないというのであれば、すごくいい話だったと素直に楽しめるんですが、全然そんな気になれません。
仮に漫画の連載が終了したとしても、ゲーム制作は続行する予定ですけどね・・・。
最近は政治や外交関係のニュースが面白くてしょうがないです。
といっても、テレビや新聞なんかの既存マスコミは偏向報道しかしないんであんまり見てません。もっぱらネット上で見られるニュースがメインです。
中でも一番面白いのはやっぱり特定のアジア諸国に関するニュースですねえ。
で、こういうニュースとかを読み漁っていると、いかに既存マスコミが役に立たないかとか、売国議員がはびこっているなとか、今まで知らなかったことがたくさんわかってきて、ものすごく知識欲を刺激してくれます。
まだ不勉強なので具体的な意見とか問題指摘とかが出来るレベルじゃないんですが、ひとつだけ。
ライブドアなんかよりもっと重大な報道すべきニュースがあるだろ!何やってるんだ、マスコミは。
コマンド解析の件が解決したので前後ステップを実装しました。
絵が無いのでジャンプの絵を使いまわししてる状態ですけど、しばらく新バージョンを公開する予定も無いので問題ないですね。
で、めぐみの串投げも絵が無くても実装できることに気づきました。
というわけでさっさと本来予定していた性能に近づけていこうと思ってます。
今はボタンによってヒット数が変わるという結構反則気味な性能になってますが、この仕様はなくなります。超必殺技も変わります。
スーパージャンプの性能は変更しない予定ですが、コマンドは下、下、ボタンに変えるかも?
新生めぐをお披露目できるのはもっと先になると思いますが、期待していただけるとうれしいです。
話は変わりますが、同人ゲームも海外から注目されてるんですね。何ヶ所かで取り上げられていて驚きました。
日本語が読めない人のことなんて全然考慮してないから、今のサイトデザインではダウンロードすらままならないと思うんですが・・・大丈夫なんでしょうか?
勘九郎ステージが完成に近づいてきました。
キューを使わずに格闘ゲームのコマンド入力を解析する方法について。
その1はこちら
すごいテクニックを思いついた!というわけではないんですが、普通に探してもみつからないんで簡単に解説してみることにします。
用意するものは、ひとつのコマンドに対して存在する条件の数と同じ数の、boolean変数とタイマー変数です。
構造体を作っておくといいですね。
typedef struct {
bool enable;
unsigned long count;
} STCMD;
コマンドが成立するには複数の条件を順番に満たしていく必要があります。
波動拳(下・前下・前・ボタン)を例にしてみましょう。
1.下が押されている
2.下が離されてた
3.下が離されてから nフレーム以内に前下が押された
4.前下が押されてから nフレーム以内に前が押された
5.前が押されてから nフレーム以内にボタンが押された
こんな感じになります。「押された・離された」が混在しているのは間違いではありません。こうしないとしゃがみ状態からコマンドを入力したときに困るので。
そして、これらの条件のそれぞれにさっき用意した構造体変数を割り当てます。
ロジックの肝は「一つ前の条件が満たされているなら、現在の条件の判定を行う」ということです。二つ前の条件は満たされていなくてもいいのです。
具体的にどう判定していくかを書いていきます。
1 前に条件が無いので、下が押されていたら無条件で STCMD[0].enable = true にします。
2 STCMD[0].enable == true かつ STCMD[1].enable == false の時だけ、下方向が入力されているかチェックします。
入力が無かったら STCMD[1].enable = true とします。
3 STCMD[1].enable == true かつ STCMD[2].enable == false の時だけ、前下方向が入力されているかチェック。
入力があったら STCMD[2].enable = true とします。
制限時間(nフレーム)を過ぎていたら STCMD[1].enable = false とします。
4 以降、ボタン入力の判定まで同様の操作を行います。
5 入力が成立したら boolean変数を全て false にします。
入力制限時間が過ぎたら boolean 変数を寝かせてあげないと、フラグが立ったままになってしまい「歩き千烈脚」なんていうバグが生まれるので注意です。
こんな説明でわかってもらえたでしょうか?
具体的なソースコードを下に付記しておくので、そちらも参考にしてみてください。
typedef struct { bool enable; unsigned count; } STCMD;STCMD cmd[4];
bool Cmd236(KEYINP stick, KEYINP trigger, unsigned long now) {
if (stick == STICK_2) {
cmd[0].enable = true;
}
if (cmd[0].enable && ! cmd[1].enable && stick != STICK_2) {
cmd[0].enable = false;
cmd[1].enable = true;
cmd[1].count = now;
}
if (cmd[1].enable && ! cmd[2].enable) {
if (stick == STICK_3) {
cmd[1].enable = false;
cmd[2].enable = true;
cmd[2].count = now;
} else if (now - cmd[1].count > 12) {
cmd[1].enable = false;
}
}
if (cmd[2].enable && ! cmd[3].enable) {
if (stick == STICK_6) {
cmd[2].enable = false;
cmd[3].enable = true;
cmd[3].count = now;
} else if (now - cmd[2].count > 12) {
cmd[2].enable = false;
}
}
if (cmd[3].enable && ! cmd[4].enable) {
if (trigger == TRIGGER_A) {
return true;
} else if (now - cmd[3].count > 12) {
cmd[3].enable = false;
}
}
return false;
}
無敵格闘娘では必殺技コマンドの解析ロジックに、SFXVIでも使われていた伝統のキュー方式を使っています。
これは、キー入力をバッファ(キュー)に溜めて、フレーム毎にそのバッファを遡って必要な入力が存在するかどうかをチェックする方法です。
例えば波動拳コマンド(下、前下、前、ボタン)であれば、次のようになります。
1.ボタンが押されている?
2.過去12フレーム以内に前が押されている?
3.前が押された時点から過去12フレーム以内に前下が押されている?
4.前下が押された時点から過去12フレーム以内に下が押されている?
5.コマンド成立
利点としては、実装がとても平易であることが挙げられます。
が、キューに取り込んでいない情報は使えないという欠点があります。
例えば、「コマンド入力開始時に画面端にいること」が条件のコマンドがあったとすると、キャラの位置もキューに保存していなければいけません。「立ち途中に前+ボタン」のような鉄拳風のコマンドだったら立ち途中かどうか?という情報も保存しないといけません。
つまり条件が増えるたびに保存しなきゃいけない情報も増えるので最終的にキューのサイズがとんでもないことになる可能性があります。
現実問題としては、そんな悲観するような事態は起こらないでしょう。キー入力だけで事足りる場合が殆どですし。実際、今までずっとそれでやってきました。
が、前後ステップを実装しようと思うだけで、キュー方式では破綻の恐れが出てくるのです。
前ステップのコマンドを前・前とすると、前・前・前と入力したとき、タイミング次第では前ステップ2回と解釈されるのです。
どうってこと無さそうに感じるかもしれませんが、実際に動かしてみるとこれはかなりストレスがたまります。
もちろん回避方法はありますが、例外処理的なものになってしまいます。
破綻しそうな部分にいちいち例外処理を入れていくのは対症療法的です。
キューを使わない方法で実装すべきだと、常々思っていました。
いいアルゴリズムはないかと色々考えて調べてみたりしたんですがさっぱりわかりません。ググるとオートマトンにぶちあたるんですが、これをどう使えばいいのか・・・?
でも、ふとしたことから実装方法が思いつきました。
実装してテストしているところですが、なんか上手く動いているっぽい?
長くなってきたので、次のエントリでアルゴリズムについて簡単に触れてみたいと思います。
FF11ネタが使われていたのは4~5カットくらいですかね。
まあ、それはそれとして。
私には全然合わない作品だということはよくわかりました。
実は単行本も1、2巻は買って読んだんですが面白いとは思えず。
やっぱり私のストライクゾーンはかなり狭い方なんだなぁ。
あとアニメのほうで少し気になった点が。
何故劇中劇という形式にしたのか、意図がさっぱりわかりません。
もうひとつ。モブキャラが全員同じ顔、同じ動きで怖い。何なの、あれは。
そんなわけで Ver0.06a を公開中です。
細かいバグを色々潰しました。
これで全員に通常投げがついたので、空ジャンプから着地グラップとか、スト3さながらの対戦模様が繰り広げられるはず・・・です。
ちなみに勘九郎はゴボウ抜きコマンドでもグラップ可能になってます。
今後の展開は、勘九郎ステージを作ってから、おかみさんか太田の制作に着手って感じですね。
おかみさんは作るのに苦労しそうだな・・・。
久しぶりに、美輝とめぐの追加セルを描きました。
勘九郎より中間色が少ないんでちょっと苦労しましたけど。
とりあえずこんな感じで。
なんか、手のひらからビームでも出そうな感じですけど、一応めぐみも普通の人間なのでビームは出ません。
素材は揃ったのであとは組み込んでテストをするだけです。
明日にはアップできるかな・・・?
FF11では正月になると、その年の干支にちなんだ動物がお年玉を配って歩くのが恒例となっています。
今年は戌年ですが、FF11に犬型モンスターはゾンビ犬しかいません。まさか正月早々ゾンビ犬が徘徊することになるのか・・・?と思っていたら。
召喚獣フェンリルでした!
フェンリルといえばふぇんりる狼狼なわけで、狼なのに犬扱いとくれば・・・
赤ずきんチャチャのリーヤしかいないでしょう。
チャチャって、何年前の作品だったっけ?
無茶苦茶懐かしいですね・・・。
最近、2chの格ゲー板内でチェックしてるスレでも紹介してみます。
ギルティとストⅢってどっちが奥が深い?
タイトルだけで危険な香りが漂ってますが、中身もやっぱりそうでした。
でも、それぞれのゲームの特徴や魅力についても色々語られているので面白いです。
特に私はギルティは全然ワカランのでとても参考になります。
ストIII 3rdってどうしたらバランスよくなる?3
極まったプレイヤーによる熱い討論が繰り広げられていて、無茶苦茶参考になります。この技はどこが強いのか?とか、このキャラはなぜ弱いのかとか、とにかく考察が深いです。
そして、7年経ってもまだ遊ばれている、3rdの奥深さが感じられます。
北斗とジョジョをキャラゲーという観点で比較する 2
ジョジョの出来はもはや語るまでも無いので、北斗をキャラゲーの観点で語る流れになってます。
ホント、もっとどうにかできなかったんでしょうかね・・・。
ということで、そろそろ制作を再開しようと思ってます。
大工町研究所さんが、ものすごい勢いでやりこまれてるみたいで(しかもバグまで見つけてもらったり)、その研究熱心さには本当に頭が下がります。
#勘九郎が無視されてるみたいなのがちょっと気になりますが・・・。
で、バグはもうあらかた潰しました。あとは美輝の投げですね。
今のバージョンでは、追い討ちを含めたダメージがとんでもないことになっていて焦ってます。
通常投げから追い討ちが入るというのは、私の本意ではないです。絵を用意してる時間が無かったとか色々な理由で、今のような形になってますが・・・。
なので投げからの追い討ちは練習しないでくださいっ。
この辺の修正に加えて、めぐみにも投げを追加したバージョンをなるべく早いうちに公開したいと思います。
出来れば次の連休明けくらいに・・・。