技発動中のキャラの動きについて

アバター
山崎
記事: 2
登録日時: 15年前
住所: 北関東

技発動中のキャラの動きについて

投稿記事 by 山崎 » 14年前

 現在、2Dのアクションゲームを制作中だ。アクションと格闘ゲームを合わせたような感じのもので、ネット対戦を主な遊び方にしようと考えている。

 しばらく前までも同じようなゲームを作っていたのだが、就職活動の本格化や研究活動が忙しくなってきたことによって手がつけられないでいた。最近ようやく一段落してきたので、またあのゲームを作り始めたのである。

 さてどこから再開しようかと昔の自分のコードを見ていたが、どうもデータ構造が気に入らない。当たり判定だの何だので1フレームの間に何度もアクセスが行われるであろうオブジェクトのリストが、STLのlistで実装されている。データ構造がスッキリして扱いやすいのだが、やはり自分で作った連結リストの方が早くアクセスできる。他にも気に入らない点があり、0から作り直すことにした。

 現在、キャラクターが繰り出す技に関する部分を制作している。ここで今悩んでいるのが、技を出している最中のキャラクターの動きである。

 格闘ゲームでは、技のコマンドが成功すると、技を出し終わるまでキャラクターを自由に動かすことができない。加えて、ジャンプやダッシュなど、技の発動にキャラクターの移動が伴うものもある。言うまでも無いと思うが、昇竜拳や竜巻旋風脚などのような感じである(漢字が合ってるかどうかは不明。ストリートファイターはやったことが無い)。
 技の発動中のキャラの硬直や移動などを、どうやって制御するかというのに今非常に悩んでいる。
 技の発動中に相手の攻撃を受けた場合など、硬直や移動が解除されることも考慮しなければいけない。

 こういった問題を考えるとき、いつも「プロの現場ではどうしているのだろう。」と思う。将棋や麻雀のように、「こういうときはこうする」という定石が、きっとプロの世界でもあることだと思う。もちろん「そこは担当したプログラマ次第で、定石は特に無い」という問題も多々あることだろうが、やはり自分なりに組むと「常識外れのことをしていないだろうか」と少し心配になることもある。

*「山崎のC++日記:アロケータ練習」の続きはまた気が向いたら書くことに。

アバター
Dixq (管理人)
管理人
記事: 1662
登録日時: 15年前

Re: 技発動中のキャラの動きについて

投稿記事 by Dixq (管理人) » 14年前

弾幕のような膨大な数のリスト要素が連結されているものでなければ処理速度よりスマートな設計になる方を重要視した方が良いのでは?

STL関連を自前で用意し始めるとコードが多くなって面倒ですよね;
STLのListの処理時間に問題があるのなら、Boostのpoolでメモリをある程度確保しておいて、割り当てると良いかもしれません。

>いつも「プロの現場ではどうしているのだろう。」と思う。

それはありますよね~。
しかし企業のコードは公開されてないし、書籍で学ぶ位しか手段がなさそうですよね;
プロが趣味で作ってるゲームのオープンソースとかがあれば参考になるかもしれませんね。

アバター
山崎
記事: 2
登録日時: 15年前
住所: 北関東

Re: 技発動中のキャラの動きについて

投稿記事 by 山崎 » 14年前

管理人さん、コメントありがとうございます!

うーん、私も「自前よりSTLを利用したほうがいいだろうか」と最後まで悩んだのですが、結局自前で作ることにしました。というのも、自前の連結リストとSTLのlistを用意し、同じ数の要素を挿入し、10万回くらい先頭から末尾までアクセスしたときのクロック数を計測したら、結構な差が出ましてね(具体的な数値は失念しましたが)。それが決定打になって、自前で用意することにしまして。

Boostは興味はあるものの、調べてみる勇気が出ません^^; ああ、いつか向き合いませんと~。

「定石」はやはり簡単には手に入らないみたいですね。経験をつんで、自分で考えていこうと思います~。