3Dアクションゲームの設計
■ このスレッドは過去ログ倉庫に格納されています
00011
04/08/19 06:47ID:/FRosK6Wゲーム制作経験もまだ浅く、3Dのゲーム制作が始めての為なかなか良い設計が思い浮かびません。
そこで皆さんのお知恵を借りつつ、
これから3Dアクションゲームをつくる人の参考になったらな〜、なんて考えてます。
皆さんよろしくお願いします。
■使用言語
C++
■プラットフォーム
DirectX9.0
Microsoft Visual Studio.NET
00021
04/08/19 07:01ID:/FRosK6W前に一度2Dのアクションゲームをつくった時は
移動→攻撃
などの状態の切り替えを関数ポインタを使い切り替えていたのですが、
ソースが膨大になり最終的にかなり見づらいソースになってしまいました。
その為今回はstateパターンを適用しようと考えています。
皆さんはどのような設計にしているのでしょうか?
00031
04/08/19 07:04ID:/FRosK6W----------------------------------------
clsss キャラクター
メソッド:
void 初期化( ゲームクラス );
void 実行();
void 攻撃( キャラクター ); // 当たり判定を行った後、攻撃が成功した場合は相手のOnAttackメソッドを呼び出します。
void 描画();
----------------------------------------
00041
04/08/19 08:10ID:/FRosK6Wこのスレはきっかけは俺の質問だけど設計について話し合うスレです。
なんで自由に討論しちゃってかまいません。
他にも設計スレはあったけどRPGとかが中心になってるんで立てますた。
0005名前は開発中のものです。
04/08/19 08:31ID:HDSOVUnnvoid 終了();
0006名前は開発中のものです。
04/08/19 11:27ID:DiZ9VDt0そんな瑣末なことはどうでもいい。
俺の為に3Dゲーム用のスクリプト言語の仕様を策定してにょ。
俺スクリプトなんて触ったことないんでどういう風にしていいかわかんねのよね。
0007名前は開発中のものです。
04/08/20 00:04ID:IIpb1eyWこれまであんまり間合いを考慮したプログラムはなかった。
技が決まる時の距離を計算して それをダメージに繁栄させれば
いいと思う。
俺もそういうプログラムを組もうとしているところ。
アクション系RPGだけど 君がやったほうが面白いことになると思う。
0008名前は開発中のものです。
04/08/20 00:12ID:IIpb1eyWその基準値を元にゲームに反映していくとより
よりリアルなゲームになっていくと思う。
力もいつも同じではなくて スタミナ値により
減少が早い人 遅い人を決めていくと面白くなるはず。
どうもこれまでのプログラマーは
そういう格闘技には興味がないのと3D化に忙しかったと言う側面があったので
傍目から見るとそれはないだろうというプログラムを
組んでいたように思える。
00091
04/08/21 14:58ID:tEHqIcjJ俺もスクリプトやった事ね orz
>>7
間合いって言うのは俺も考えてる、リアル思考でもないんではちょっと切り口が違うけど
『蝶のように舞い、蜂の様に挿す』スタイルがゲームで出来たら面白そうだとか思った。
0010名前は開発中のものです。
04/08/22 08:31ID:34iArWBvでもかなり初期の部分かな?
ところでCG部分やCGの動き(アニメ)部分はどうしているの?
Xファイルを自分で作ったりしているの?
また人に頼むとかしているの?
自分でも一応作れるけど しょぼい3Dしか作れないのが悩み。
またそれにあまり時間をかけたくはないしね。
00111
04/08/23 03:57ID:mdjmxZ9J3Dの方はXファイルを使わずXSIフォーマットっていう
頭悪いフォーマットを解析して表示してるよ。
0012名前は開発中のものです。
04/08/25 10:01ID:ZkR0yCXI0013名前は開発中のものです。
04/08/25 21:40ID:zbS3DhhP俺はこれを使うことにするぜ!!
まあ2年後ぐらいに・・
0014名前は開発中のものです。
04/08/25 23:20ID:aEHR2nps実際に必要なのはイベントエディタやマップエディタなどのツールなどであって、
ツールが優秀であれば別にスクリプトという形は必要ない。
スクリプトだけあっても大して効率化は計れない。
0015名前は開発中のものです。
04/08/26 00:53ID:ulmMUTP0こっちの方は未だに2Dの絵にこだわる人が多くて嫌になる。
俺としては使いまわしでいいから見るのに耐える3Dを探しているところ。
それを少し変形させて使うつもり。
問題は動きの部分?
ビデオのモーションキャプチャーと連携させて動くのが
無料であればいいんだけど。
やはりそういうのも自分で開発すべきなのかな?
それとも こつこつ3次元の中でモーション部分を組み立てるべきなのか?
0016名前は開発中のものです。
04/08/26 01:07ID:ulmMUTP0走ったり 飛んだり パンチを出したり キックをしたりなどの
サンプルアニメを1000動作くらい入れているとこっちもあまり動かずに
済んだのにと思う。しかもあの3dはどう見てもあまりカッコよくないから
使う気にはあまりなれない。
基本形を作ってくれれば こっちも数値を入れ替えて
いろいろアニメを変化させることできるのにと思う。
0017名前は開発中のものです。
04/08/26 02:07ID:MK54UGgWそもそも、移動→攻撃で、なんで関数ポインタがでてくるんだ?
3Dアクションって、キャラがポリゴンになって、
それに伴って、当たり判定も3D化しなきゃならないってだけでほ。
2Dの場合、表示するCGを切り替えるだけで、移動→攻撃になるけど、
ポリゴンの場合、キャラクタを構成してるポリゴンオブジェクトの、
最終的な、3DMATRIX(回転角度だけ)を、パターンごとに定義しておいて、
ある動作から、別の動作に移るときは、
3DMATRIX(回転角度だけ)を、増減するだけでいいんじゃないの?
0018名前は開発中のものです。
04/08/26 02:26ID:V/ySXPA+0019名前は開発中のものです。
04/08/26 03:03ID:MK54UGgW1に付き合って言ったことぐらいも分からないの?
0020名前は開発中のものです。
04/08/26 03:19ID:ZddnH+Miスキニング等のアニメーションを勉強した方が良いよ。
スゲー頭悪い発言。
0021名前は開発中のものです。
04/08/26 03:51ID:/Vew0L+C0022名前は開発中のものです。
04/08/26 05:54ID:o+aMKbJnうpロダorftp鯖は準備する必要があるけど
人体モデルの基本ボーン構造を決めて、それを使ってモーションを作ってもらう
で、その基本ボーンを元にスキンを作ってもらう
みたいな感じで
使用ソフトもしくはファイル形式を決めないといけないね
あとスキン&モーション着せ替えビューアみたいのも必要かな
分業化できるような体制を作って頼めば一人がたくさん作る必要もないから受けくれやすいかな
0023名前は開発中のものです。
04/08/26 05:58ID:o+aMKbJnうーんなんともいえないな
C++使うんだから継承とコンポジションをうまく使っていくのがいいんだが
例えば表示と操作に焦点を当ててみると
----------------------------------------------
class Character //表示関係の機能を持つクラス
clas CharacterControl //動作を取得するクラス
class InputControl : CharacterControl //入力操作クラス
class AutoControl : CharacterControl //自動操作クラス
class PlayerCharacter : Character// 自分で操作するキャラクタのクラス
{CharacterControl mControl}
class EnemyCharactor : Character//敵キャラクタのクラス
{AutoControl mControl}
----------------------------------------------
CharacterControlは抽象クラスでもいいと思う
CharacterControlで定義された関数を呼ぶようにしておいて
InputControl AutoControl でオーバーライドするなり仮想関数の実体をもたせればいいとか
さらにEnemyCharactorを継承させて色々なタイプの敵キャラクタを作るみたいな
0024名前は開発中のものです。
04/08/26 06:47ID:MK54UGgW単に、状況ごとにオブジェクト化するだけじゃねーか。
わざわざ名前つけるほどのものでもない。
そんで、関数ポインタを用いるっていってた意味が分かった。
状況ごとの処理を、関数ごとにわけてあるから、
その分岐で、関数ポインタを使って、処理速度を上げるなり、
管理を楽にするという意味ね。
それは3Dにする上での課題ではないな。
0025名前は開発中のものです。
04/08/26 07:13ID:MK54UGgWたとえば、普通に立っている状態から、パンチをする場合、
ポリゴンキャラの動きは、17の方法で行なうとして、
そこで、stateパターンを使う必要性が見つからない。
パンチのモーションに入って、しばらくして、キャラの拳に、当たり判定を設定する方法をとると、
当たり判定が生じる直前までのポーズにしてから、
その後に、当たり判定が生じているパンチの最後のポーズにもってく形をとる。
パンチボタンを押したら、現在の状態→パンチポーズ1→パンチポーズ2 という流れ。
この、パンチポーズ1からパンチポーズ2の間の動きで、拳に当たり判定がある。
全てのポーズをクラス化して、そのサブクラスに、当たり判定クラスを作る形になる。
当たり判定は球で行なうとして、ポーズごとに、当たり判定用の球の数は異なる。
一番問題なのは、トランスフォーム済みのこの球のワールド座標を算出することだと思うが。
MatrixMultiplyを繰り返して算出すると、処理に負担がかかる
0026名前は開発中のものです。
04/08/26 07:29ID:GWEpquVX>3Dの方はXファイルを使わずXSIフォーマットっていう
XSIもってんのか。金持ちだな。
0027名前は開発中のものです。
04/08/26 08:44ID:6stnwMIuそれは違うと思うな。
ゲームを作るのには、まず何は無くともスクリプトが必要!
しかし実際にスクリプト言語を使えとか組み込めと言ってる訳じゃない、
ゲームエンジンを設計をする上で、スクリプト言語の使用を想定すると
それが設計の指標になり有用だからだ。UnrealScriptなどとても参考になる。
■ このスレッドは過去ログ倉庫に格納されています