2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

3Dアクションゲームの設計

1 :1:04/08/19 06:47 ID:/FRosK6W
当方は3Dアクションゲームを作っていますが、
ゲーム制作経験もまだ浅く、3Dのゲーム制作が始めての為なかなか良い設計が思い浮かびません。
そこで皆さんのお知恵を借りつつ、
これから3Dアクションゲームをつくる人の参考になったらな〜、なんて考えてます。
皆さんよろしくお願いします。

■使用言語
C++

■プラットフォーム
DirectX9.0
Microsoft Visual Studio.NET

2 :1:04/08/19 07:01 ID:/FRosK6W
まず一番最初に困ったのがキャラクターです。
前に一度2Dのアクションゲームをつくった時は
移動→攻撃
などの状態の切り替えを関数ポインタを使い切り替えていたのですが、
ソースが膨大になり最終的にかなり見づらいソースになってしまいました。

その為今回はstateパターンを適用しようと考えています。
皆さんはどのような設計にしているのでしょうか?


3 :1:04/08/19 07:04 ID:/FRosK6W
参考までにキャラクターのインターフェイスです。

----------------------------------------
clsss キャラクター

メソッド:
void 初期化( ゲームクラス );
void 実行();
void 攻撃( キャラクター ); // 当たり判定を行った後、攻撃が成功した場合は相手のOnAttackメソッドを呼び出します。
void 描画();

----------------------------------------


4 :1:04/08/19 08:10 ID:/FRosK6W
■補足
このスレはきっかけは俺の質問だけど設計について話し合うスレです。
なんで自由に討論しちゃってかまいません。

他にも設計スレはあったけどRPGとかが中心になってるんで立てますた。

5 :名前は開発中のものです。:04/08/19 08:31 ID:HDSOVUnn
void ゲームオーバ();
void 終了();

6 :名前は開発中のものです。:04/08/19 11:27 ID:DiZ9VDt0
クラスがどーだ、関数ポインタがどーだとか
そんな瑣末なことはどうでもいい。
俺の為に3Dゲーム用のスクリプト言語の仕様を策定してにょ。
俺スクリプトなんて触ったことないんでどういう風にしていいかわかんねのよね。


7 :名前は開発中のものです。:04/08/20 00:04 ID:IIpb1eyW
間合いを考慮してプログラムを組むといいと思うよ。
これまであんまり間合いを考慮したプログラムはなかった。
技が決まる時の距離を計算して それをダメージに繁栄させれば
いいと思う。
俺もそういうプログラムを組もうとしているところ。
アクション系RPGだけど 君がやったほうが面白いことになると思う。



8 :名前は開発中のものです。:04/08/20 00:12 ID:IIpb1eyW
普通 技が決まるときにベストの距離というのがある。
その基準値を元にゲームに反映していくとより
よりリアルなゲームになっていくと思う。
力もいつも同じではなくて スタミナ値により
減少が早い人 遅い人を決めていくと面白くなるはず。
どうもこれまでのプログラマーは
そういう格闘技には興味がないのと3D化に忙しかったと言う側面があったので
傍目から見るとそれはないだろうというプログラムを
組んでいたように思える。
 





9 :1:04/08/21 14:58 ID:tEHqIcjJ
>>6
俺もスクリプトやった事ね orz

>>7
間合いって言うのは俺も考えてる、リアル思考でもないんではちょっと切り口が違うけど
『蝶のように舞い、蜂の様に挿す』スタイルがゲームで出来たら面白そうだとか思った。

10 :名前は開発中のものです。:04/08/22 08:31 ID:34iArWBv
一応 こっちもリアルタイムのアクションRPGでプログラム組んでいるところ。
でもかなり初期の部分かな?
ところでCG部分やCGの動き(アニメ)部分はどうしているの?
Xファイルを自分で作ったりしているの?
また人に頼むとかしているの?
自分でも一応作れるけど しょぼい3Dしか作れないのが悩み。
またそれにあまり時間をかけたくはないしね。



11 :1:04/08/23 03:57 ID:mdjmxZ9J
絵とか3Dはほとんど一緒に組んでるグラフィッカーさんに任せちゃってるかな。
3Dの方はXファイルを使わずXSIフォーマットっていう
頭悪いフォーマットを解析して表示してるよ。

12 :名前は開発中のものです。:04/08/25 10:01 ID:ZkR0yCXI
スクリプトって何?

13 :名前は開発中のものです。:04/08/25 21:40 ID:zbS3DhhP
ム板で、組み込みJavaScriptインタプリタの存在を教えてもらったので
俺はこれを使うことにするぜ!!






まあ2年後ぐらいに・・

14 :名前は開発中のものです。:04/08/25 23:20 ID:aEHR2nps
ゲームを作るのにまずスクリプトを挙げる人間が多いが、
実際に必要なのはイベントエディタやマップエディタなどのツールなどであって、
ツールが優秀であれば別にスクリプトという形は必要ない。
スクリプトだけあっても大して効率化は計れない。

15 :名前は開発中のものです。:04/08/26 00:53 ID:ulmMUTP0
いいよね、周りに理解者がいて。
こっちの方は未だに2Dの絵にこだわる人が多くて嫌になる。
俺としては使いまわしでいいから見るのに耐える3Dを探しているところ。
それを少し変形させて使うつもり。
問題は動きの部分?
ビデオのモーションキャプチャーと連携させて動くのが
無料であればいいんだけど。
やはりそういうのも自分で開発すべきなのかな?
それとも こつこつ3次元の中でモーション部分を組み立てるべきなのか?


16 :名前は開発中のものです。:04/08/26 01:07 ID:ulmMUTP0
マイクロソフトもtinyだけのサンプルではなくて
走ったり 飛んだり パンチを出したり キックをしたりなどの
サンプルアニメを1000動作くらい入れているとこっちもあまり動かずに
済んだのにと思う。しかもあの3dはどう見てもあまりカッコよくないから
使う気にはあまりなれない。
基本形を作ってくれれば こっちも数値を入れ替えて
いろいろアニメを変化させることできるのにと思う。




17 :名前は開発中のものです。:04/08/26 02:07 ID:MK54UGgW
stateパターンってなんだ?
そもそも、移動→攻撃で、なんで関数ポインタがでてくるんだ?
3Dアクションって、キャラがポリゴンになって、
それに伴って、当たり判定も3D化しなきゃならないってだけでほ。
2Dの場合、表示するCGを切り替えるだけで、移動→攻撃になるけど、
ポリゴンの場合、キャラクタを構成してるポリゴンオブジェクトの、
最終的な、3DMATRIX(回転角度だけ)を、パターンごとに定義しておいて、
ある動作から、別の動作に移るときは、
3DMATRIX(回転角度だけ)を、増減するだけでいいんじゃないの?

18 :名前は開発中のものです。:04/08/26 02:26 ID:V/ySXPA+
ならそう組めば?

19 :名前は開発中のものです。:04/08/26 03:03 ID:MK54UGgW
>18
1に付き合って言ったことぐらいも分からないの?

20 :名前は開発中のものです。:04/08/26 03:19 ID:ZddnH+Mi
>>16
スキニング等のアニメーションを勉強した方が良いよ。
スゲー頭悪い発言。

21 :名前は開発中のものです。:04/08/26 03:51 ID:/Vew0L+C
stateパターン知らんってアンタ頭大丈夫?

22 :名前は開発中のものです。:04/08/26 05:54 ID:o+aMKbJn
CG板の人間に3Dモデル&モーションを依頼してみるとどうだろ?
うpロダorftp鯖は準備する必要があるけど

人体モデルの基本ボーン構造を決めて、それを使ってモーションを作ってもらう
で、その基本ボーンを元にスキンを作ってもらう
みたいな感じで

使用ソフトもしくはファイル形式を決めないといけないね
あとスキン&モーション着せ替えビューアみたいのも必要かな

分業化できるような体制を作って頼めば一人がたくさん作る必要もないから受けくれやすいかな


23 :名前は開発中のものです。:04/08/26 05:58 ID:o+aMKbJn
>3
うーんなんともいえないな
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を継承させて色々なタイプの敵キャラクタを作るみたいな

24 :名前は開発中のものです。:04/08/26 06:47 ID:MK54UGgW
stateパターンって、
単に、状況ごとにオブジェクト化するだけじゃねーか。
わざわざ名前つけるほどのものでもない。
そんで、関数ポインタを用いるっていってた意味が分かった。
状況ごとの処理を、関数ごとにわけてあるから、
その分岐で、関数ポインタを使って、処理速度を上げるなり、
管理を楽にするという意味ね。
それは3Dにする上での課題ではないな。

25 :名前は開発中のものです。:04/08/26 07:13 ID:MK54UGgW
そんで、1の言うアクションゲームって、バーチャファイターみたいなのだと思ってるが、
たとえば、普通に立っている状態から、パンチをする場合、
ポリゴンキャラの動きは、17の方法で行なうとして、
そこで、stateパターンを使う必要性が見つからない。

パンチのモーションに入って、しばらくして、キャラの拳に、当たり判定を設定する方法をとると、
当たり判定が生じる直前までのポーズにしてから、
その後に、当たり判定が生じているパンチの最後のポーズにもってく形をとる。
パンチボタンを押したら、現在の状態→パンチポーズ1→パンチポーズ2 という流れ。
この、パンチポーズ1からパンチポーズ2の間の動きで、拳に当たり判定がある。
全てのポーズをクラス化して、そのサブクラスに、当たり判定クラスを作る形になる。
当たり判定は球で行なうとして、ポーズごとに、当たり判定用の球の数は異なる。
一番問題なのは、トランスフォーム済みのこの球のワールド座標を算出することだと思うが。
MatrixMultiplyを繰り返して算出すると、処理に負担がかかる

26 :名前は開発中のものです。:04/08/26 07:29 ID:GWEpquVX
>絵とか3Dはほとんど一緒に組んでるグラフィッカーさんに任せちゃってるかな。
>3Dの方はXファイルを使わずXSIフォーマットっていう

XSIもってんのか。金持ちだな。

27 :名前は開発中のものです。:04/08/26 08:44 ID:6stnwMIu
>>14
それは違うと思うな。
ゲームを作るのには、まず何は無くともスクリプトが必要!
しかし実際にスクリプト言語を使えとか組み込めと言ってる訳じゃない、
ゲームエンジンを設計をする上で、スクリプト言語の使用を想定すると
それが設計の指標になり有用だからだ。UnrealScriptなどとても参考になる。

28 :名前は開発中のものです。:04/08/26 08:47 ID:dDIA6lWM
>>24
>stateパターンって、
>単に、状況ごとにオブジェクト化するだけじゃねーか。
>わざわざ名前つけるほどのものでもない。

デザパタは設計の仕方に名前を付けることに最大の価値がある。
アルゴリズムには大抵名前が付いている。
「ここはデータを分割してそれぞれをソーティングし、最後に1つにあわせるソート方法でここは並び替える」
と言うより、ただ単に「ここはクイックソートする」と言った方がいいだろう。
名前を持つ事で、概念を簡単に相手に伝えられ、共有できる。

>>25
Stateパターンは、例えばよくある組方だと
switch(state_){
case NORMAL: ... break;
case ATTACKED: ... break;
...
}
とこんな感じのswitch文をあちこちに置くことになり、
状態が増えると、switch文の保守が困難になる。
Stateパターンを用いるとそれが改善される。

29 :名前は開発中のものです。:04/08/26 09:24 ID:nsm3nwx9
>>27
>ゲームを作るのには、まず何は無くともスクリプトが必要!
スクリプトなどなくてもゲームは作れる。
こういう勘違いがいるから、突然何の脈略もなく、
初っぱなにスクリプトと叫ぶ馬鹿が発生する。

30 :名前は開発中のものです。:04/08/26 10:07 ID:6stnwMIu
>>29
それを言ったら、文字セットだけでもゲームは作れるぞ。
それに必ずスクリプトを使えとは言っていないだろ、
他に良い言葉がなかったから、そう言っているだけで
あえて言うならスクリプト指向というのかな、
エンジンを設計するのに、過去のゲームのスクリプトを参考にしたり
スクリプトの仕様から考えていく方が有効だと言っている。
あくまでスクリプトといっても、HSPとか簡単ゲーム作成環境のことではなくて
例えば ttp://www.kjps.net/user/nis/articles/agopl.pdf のようなもの。

31 :名前は開発中のものです。:04/08/26 10:17 ID:J4YfLQe6
>20
>>16
>スキニング等のアニメーションを勉強した方が良いよ。
>スゲー頭悪い発言。

何を持って頭が悪いと言っているわけ?
最近の3Dツールだと簡単にアニメが作成できるとでも言いたいわけ?



32 :名前は開発中のものです。:04/08/26 10:38 ID:dk39ZaB1
>>16
20とは別人だが、tinyさんのXファイルを実際に開いたことあるかね?
ジャンプから何から全部入ってるぞ。
パターン替えの改造なら、あの内容(SkinnedMeshサンプルな)を理解すれば、
10分コースだが?

33 :名前は開発中のものです。:04/08/26 11:03 ID:J4YfLQe6
>32
サンクス。俺 よく見ていなかった。

34 :名前は開発中のものです。:04/08/26 11:07 ID:CmtrqTYy
ある程度まともに作るのであれば、
高くてもモデリングツールには金をかけた方がいい。

35 :名前は開発中のものです。:04/08/26 20:19 ID:MK54UGgW
>デザパタは設計の仕方に名前を付けることに最大の価値がある。
用語など作らなくてもゲームは作れる。
こういう勘違いがいるから、突然何の脈略もなく、
初っぱなに用語を叫ぶ馬鹿が発生する。


36 :名前は開発中のものです。:04/08/26 20:24 ID:Ke4QUxk9
>>35
後で設計を見直すときのことも考えるのがちゃんとした設計だよ

37 :名前は開発中のものです。:04/08/26 20:28 ID:pXh3kcNA
>>35
じゃあお前はどんな用語も使わず、毎回回りくどく説明しとけやボケが

38 :名前は開発中のものです。:04/08/27 01:39 ID:A0/gmcko
>34
確かに CGである程度見せなければ 商品としては著しく価値が落ちるかもね。

39 :名前は開発中のものです。:04/08/27 19:00 ID:hk+hK4H+
>1のいうアクションゲームってどんなの?
ジャンプなんかのアクションを駆使してステージクリアしていくタイプなのかな?
それとも格ゲーなのかな?

40 :1:04/08/27 20:18 ID:zYWXjtsz
ちょっと見ない間にいつのまにかレスが一杯ついててビックリ。

何回か質問のあったゲームのタイプは3Dマリオだったりゼルダだったりの
飛んだり跳ねたりするアクションゲームです。

>>23 ああ、それカッコイイ。参考にさせてもらいますw
>>27 某オタゲー専に通ってて、学校の備品がXSIだったですよ。
解析くそめんどかった(;´ё`)

3Dゲーム当たり判定とかの計算がクソ大変そうね。
数学ヘタレな俺

41 :1:04/08/27 20:19 ID:zYWXjtsz
>>40 続き
数学ヘタレな俺は超苦労しそうだ。

途中で書き込みしちった。

42 :名前は開発中のものです。:04/08/28 03:44 ID:FytZcdAa
当たり判定ははじめは適当でいいのでは?
そして少しづつ高度なものにしていけばいいと思う。
今は3Dのモデル集めに時間をかけている所。
>32
そんなにアニメ入っている?
4つのアニメが入っているやつしか見つからなかった。



43 :名前は開発中のものです。:04/08/28 03:50 ID:FytZcdAa
ゲーム作りも大変だね。
プログラムはもちろんのこと 3D集め キャラ作り モーション
ムービー作り 音楽集め 効果音 音声入力 ストーリー作り。
時間かかるね。できればプログラムとストーリー以外はやりたくはないね。
 

44 :名前は開発中のものです。:04/08/28 04:04 ID:FytZcdAa
数学は衝突による凹みなどを描くときなどに利用されると思う。
有限要素法とかを使って 計算するやつ。
簡単な放射物の落下などはあんまり頭を使う必要はないはずだし
適当な式いれても 見た目に違和感はないよ。


45 :名前は開発中のものです。:04/08/30 14:17 ID:QJEE0Jh8
>>35
君、プログラマ向きじゃないね。
少なくとも、チーム作業は無理。

>>40
取り敢えずは、AI、アクション管理、コリジョン管理の設計と、
クラス構築の方針(1キャラ1クラスにするか?とか)
を決めるのがいいかと。
個人的には、それそれにオーサリングツールを用意するのがいいかと。
で、おそらく、AI、アクション(ステートね)、コリジョンには、
因果関係が生まれると思う。
なので、アクションに命名規則を付けたりすればいいかも。
AIスクリプトツール、アクション定義、コリジョン編集で、同じ名前(例えばRLpunch002等)を使う。と。
RLpunch002時のAI、RLpunch002のアクション定義、RLpunch002時のコリジョン状態、みたいな。

46 :名前は開発中のものです。:04/08/31 17:04 ID:xieCU++w
ここは珍しく真面目なスレですぬ

47 :名前は開発中のものです。:04/09/03 23:03 ID:s4Q0DRcf
>>38
モデラーは開発に手をだすプログラマーさんが多いから価格は暴落してる。
金はモーション編集ソフトに注ぎ込んで、国産のモデラーを使えば良いかも。

48 :名前は開発中のものです。:05/02/09 22:24:39 ID:kgj02UQ/
>>44
有限要素法とかって、最高に計算量が多いのが何とも。
重…

18 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)