ゲームのアルゴリズムを教えて管sai (199レス)
ゲームのアルゴリズムを教えて管sai http://mevius.5ch.net/test/read.cgi/gamedev/1053853069/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
114: 名前は開発中のものです。 [] 2008/06/10(火) 21:32:41 ID:8sGd3hVL 単純に全探索じゃなくて、なんか省略する方法があるんだろうが http://mevius.5ch.net/test/read.cgi/gamedev/1053853069/114
115: 名前は開発中のものです。 [] 2008/06/12(木) 13:22:11 ID:trmQ6Ydr 誰かクイックソートが挿入法よりなぜ早いのか教えてくれ クイックソートのほうがめんどくさそうなのに最速とか理解できん・・・ http://mevius.5ch.net/test/read.cgi/gamedev/1053853069/115
116: 名前は開発中のものです。 [sage] 2008/06/12(木) 15:21:52 ID:gQmHVY6Z >>113 そのswfをローカルに落として実行してみたら Odds calculator failed to get data from server. ってエラーメッセージが出たから、 確立計算専用の外部プログラムを呼び出してるっぽい。 http://mevius.5ch.net/test/read.cgi/gamedev/1053853069/116
117: 名前は開発中のものです。 [sage] 2008/06/12(木) 15:58:03 ID:gZtmjAve >>115 全部のソートにN*Nの時間がかかるとする。 これを、半分に分けてソートして、足し合わせるとすれば、かかる時間は (N/2)*(N/2) + (N/2)*(N/2) = N*N/4 + N*N/4 = N*N/2 N*N > N*N/2 ・・・とおもったらクイックソートって2分割って訳じゃないのね?て事で、 分割を、(1/x),(1/y)とする。ただし(1/x)+(1/y) = 1 1 = 1*1 = (x+y)/xy = (xx + 2xy + yy)/xxyy 分割したものをソートして、足し合わせる時間は (N/x)*(N/x) + (N/y)(N/y) = N*N/x*x + N*N/y*y
= (yyNN + xxNN) / xxyy = NN(xx + yy)/xxyy (xx + yy)/xxyy = (xx + 2xy +yy)/xxyy - 2xy/xxyy = 1 - 2xy/xxyy ゆえに、NN > NN(xx + yy)/xxyy こんなんでどうだろうか。というか、この証明あってるんだろうか。 http://mevius.5ch.net/test/read.cgi/gamedev/1053853069/117
118: 名前は開発中のものです。 [sage] 2008/06/12(木) 16:38:08 ID:VjP0i/a5 データ数によるんだよね。 少ないデータならどれでも変わらん http://mevius.5ch.net/test/read.cgi/gamedev/1053853069/118
119: 名前は開発中のものです。 [] 2008/06/15(日) 19:58:45 ID:f+c3BIE0 シューティングゲーム作っているのですが、 私の数学力のなさか、敵の動きが、直線と円を描くものしか作れません どうやったら、アーケードにあるような あたかも敵が思考を持っているような動きが 実現できるのでしょうか? http://mevius.5ch.net/test/read.cgi/gamedev/1053853069/119
120: 名前は開発中のものです。 [sage] 2008/06/15(日) 21:16:54 ID:n3ZqdSRd >>119 敵の動きのカタログ的なものが欲しいなら……。 シューティングゲーム プログラミング ¥ 2,940 (税込) 松浦 健一郎 (著), 司 ゆき (著) http://www.amazon.co.jp/dp/4797337214 http://mevius.5ch.net/test/read.cgi/gamedev/1053853069/120
121: 119 [sage] 2008/06/15(日) 23:38:35 ID:f+c3BIE0 そうではなく、どのようにして さまざまな動きを実現しているのか? その方法を知りたいわけです。 私の敵を動かす情報は 初速度、速度、角度、時間、加速度で管理しているので、直線と円のみになってしまうのです。 そこで、微妙に、プレイヤーのいる方向に向かってきたりする方法は、どのような情報で管理しているのかを 知りたいのです。 私の方法でも角度を細かく設定すれば、ある程度 色々な動きは実現できるのですが、 もっとスマートな方法はないかと思い質問し
たまでです。 http://mevius.5ch.net/test/read.cgi/gamedev/1053853069/121
122: 名前は開発中のものです。 [sage] 2008/06/15(日) 23:40:21 ID:re3KC7mv 二つの点座標が解れば、角度が求まるのでは? http://mevius.5ch.net/test/read.cgi/gamedev/1053853069/122
123: 名前は開発中のものです。 [sage] 2008/06/15(日) 23:46:14 ID:L9WqTsHd アークタンジェントを理解すればいいとおもうよ http://mevius.5ch.net/test/read.cgi/gamedev/1053853069/123
124: 名前は開発中のものです。 [sage] 2008/06/15(日) 23:47:36 ID:L9WqTsHd http://www.tkb-soft.hmcbest.com/program/directx/game/game_11.htm 具体的にはこのへんで。 http://mevius.5ch.net/test/read.cgi/gamedev/1053853069/124
125: 119 [sage] 2008/06/16(月) 00:19:31 ID:VJeuSd2d う〜ん、ちょっと違って 人工知能で解決できるのではないかと思うのですが、 人工知能に関する知識がないので、作れないのですが、 オススメの入門書などないでしょうか? http://mevius.5ch.net/test/read.cgi/gamedev/1053853069/125
126: 名前は開発中のものです。 [sage] 2008/06/16(月) 00:31:02 ID:4SfMqdzY >>125 現在位置ベクトル 現在速度ベクトル 目標位置ベクトル 目標位置での速度ベクトル この条件を満たす加速度ベクトルの時系列を求めればいいんだよね。 でもゲームだから時系列を事前に求める必要はなくて 毎フレームごとに計算するから状態マシンでいけるよ。 2Dシューティングなら普通そうだと思う。 本格的にやるなら確率過程勉強するとおもしろいよ。 実際の迎撃ミサイルがどのように制御されてるか理解できる。 http://mevius.5ch.net/test/read.cgi/game
dev/1053853069/126
127: 名前は開発中のものです。 [sage] 2008/06/16(月) 00:51:35 ID:Mj4LPxSD 敵の動きが実際にはどういうふうに実装されてるのかを知りたいなら、 >>120みたいな作り方の本が一番実践的だと思うけどなぁ。敵の動きのサンプルもあるだろうし。 STGは本格的に作ったことはないが、普通敵の動きに人工知能なんて使わないんじゃない? 俺だったら毎フレーム状態遷移を計算して、行動を決定するような実装にすると思う。 リアル迎撃ミサイルの精度で敵が弾を撃ってくるSTGとか、やってみたいがストレスがたまりそうだなw http://mevius.5ch.net/
test/read.cgi/gamedev/1053853069/127
128: 名前は開発中のものです。 [sage] 2008/06/16(月) 01:04:13 ID:VJeuSd2d Cマガが廃刊になって以来、こういった系統の本で当たりだった試しがない 浅く、レベルも低く、よくこんな本だせたな という本だらけ 立ち読みできないから なおさらタチが悪い まぁ、状態遷移図で検討します http://mevius.5ch.net/test/read.cgi/gamedev/1053853069/128
129: 名前は開発中のものです。 [sage] 2008/06/16(月) 01:41:50 ID:BvIxc5ty >>125 この手のアルゴリズムは、たぶん正解みたいなものはなくて、 プログラマーのセンスによるんだと思う。 ゲームプログラマーが技術力だけじゃなく、センスを活かせる局面なので、 いろいろ試して自分なりのノウハウを蓄積するのがいいと思う。 ちなみに、この手の処理は、パラメータによる差別化だけじゃなくて、 ちゃんとそれぞれの動きに対して別のコードを書いたほうがいいよ。 http://mevius.5ch.net/test/read.cgi/gamedev/1053853069/129
130: 名前は開発中のものです。 [sage] 2008/06/23(月) 18:42:29 ID:gkCzmYeJ シューティングゲームを作っています。 2次元配列に初期化された敵のデータがあります。 int EnemyMap[25][300]= { {0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0}, {0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0}, {0,0,0,0,0, 0,1,0,1,0, 0,0,0,・・・ }} 0が無しで、0以上が敵在りで、敵の番号です。 このような場合の敵の出現方法を教えて下さい。 ちなみに縦スクロールSTGです。お願いします。 http://mevius.5ch.net/test/read.cgi/gamedev
/1053853069/130
131: 130 [sage] 2008/06/23(月) 19:48:54 ID:gkCzmYeJ 0が無しで、0より上が敵在りで、敵の番号です の間違いでした。 http://mevius.5ch.net/test/read.cgi/gamedev/1053853069/131
132: 名前は開発中のものです。 [sage] 2008/06/23(月) 20:25:54 ID:leAIdu27 テキトーに推測しながら…… 時間経過をターンとする、 25マス(?)のデータが300ターンぶんあるのを表すのなら int EnemyMap[300][25] ではないか gameturn を例えば10フレームごとに +1 し、 { int i; for(i=0;i<25;i++) { int enemyidx; enemyidx = EnemyMap[gameturn][i]; if(enemyidx != 0) {addenemy(enemyidx, i);} } } http://mevius.5ch.net/test/read.cgi/gamedev/1053853069/132
133: 名前は開発中のものです。 [sage] 2008/06/23(月) 20:30:20 ID:cIfICiuE >>130 int COLUMN = 25; int ROW = 300; int EnemyMap[COLUMN][ROW] = { {0,0,..... int rowNOW = 0; while(1) { /* 画面描画とか、敵機、自機の移動とか*/ //ここから敵の配置 for ( int x = 0; x < COLUMN; x++ ) { 敵を出現させる関数( EnemyMap[x][rowNow], x, 0 ); } rowNOW++; } void 敵を出現させる関数( int enemyType, int x, int y ) { switch ( enemyType ) { case 1: { 敵1登場(x,y); break; }
case 2: { 敵2登場(x,y); break; } case 3: { 敵3登場(x,y); break; } case 4: { 敵4登場(x,y); break; } case 5: { 敵5登場(x,y); break; } ... } } うーん、我ながらほれぼれするなあ。 http://mevius.5ch.net/test/read.cgi/gamedev/1053853069/133
134: 名前は開発中のものです。 [sage] 2008/06/23(月) 20:34:44 ID:cIfICiuE >>133に case 0: { break; /* 敵は登場しない */ } を追加(汗) http://mevius.5ch.net/test/read.cgi/gamedev/1053853069/134
135: 名前は開発中のものです。 [sage] 2008/06/23(月) 21:56:44 ID:SqRC+pBQ そのデータ構造の欠点は ・敵がいてもいなくても同じだけの容量が必要 ・同じ時間に敵は1機しか出現できない あ、ひょっとして勘違いでこの25っていうのは画面の幅のことなのか!? 25x300のマップを表現してるとか http://mevius.5ch.net/test/read.cgi/gamedev/1053853069/135
136: 名前は開発中のものです。 [sage] 2008/06/23(月) 23:17:25 ID:cIfICiuE 25って画面の幅だと信じてました。 http://mevius.5ch.net/test/read.cgi/gamedev/1053853069/136
137: 名前は開発中のものです。 [sage] 2008/06/24(火) 03:55:28 ID:KKsizlIf 敵が画面横や画面中央から出現するような処理はできないな。 http://mevius.5ch.net/test/read.cgi/gamedev/1053853069/137
138: 名前は開発中のものです。 [sage] 2008/06/24(火) 09:03:16 ID:dfjKfTQO for(i=0;i<25;i++) { if( ScrollY == (ScrollY / 32) * 32 ) { Enemy_temp = StageMap2[i + ( ScrollY / 32 ) * 25 ]; if( Enemy_temp > 0) { ShowEnemy( i * 32 , -32 , Enemy_temp , 3 ); } &
nbsp; } } でいいんでないの? http://mevius.5ch.net/test/read.cgi/gamedev/1053853069/138
139: 名前は開発中のものです。 [sage] 2008/06/24(火) 09:57:42 ID:r5s8lMOb 俺だったらテキストデータで E:idx:xpos:ypos:flag みたいなのを一行づつ読むのを作る、というか実際そうした。 E:1:32:-16 E:1:32:-24 W:30 E:2:64:-16 だったら種類1の敵をx=32 y = -16 と y = -24 に出現さして、30フレーム待って、x=64に敵出現 ゼビウスみたいに背景と連動するにはまた違ったやり方がいいだろうけど http://mevius.5ch.net/test/read.cgi/gamedev/1053853069/139
140: 名前は開発中のものです。 [sage] 2008/06/25(水) 01:36:50 ID:kmQquf20 俺も絶対的な配置より、>>139みたいな相対的な配置のほうが好きだな。 後々編隊の出現時刻を変えるときとか、相対時間を調整するだけですむ。 enemy命令、wait命令とか。 作り方はシューティングゲームプログラミングって本に載ってる。 あまりきれいなコードじゃないから余裕があるなら自分で組みなおした方がいいと思うが。 http://mevius.5ch.net/test/read.cgi/gamedev/1053853069/140
141: 名前は開発中のものです。 [sage] 2008/07/06(日) 07:44:15 ID:wmyMOr1K ttp://www.borndigital.co.jp/book/program/4-86246-015-1/index.html GPGを購入しようと思ってるのですが 1〜5まであって 最新の5を購入しようと思っています 無理して1〜4まで全部買う必要はありませんか? http://mevius.5ch.net/test/read.cgi/gamedev/1053853069/141
142: sai [] 2008/11/02(日) 12:31:11 ID:nTsQz3KG Xi[sai]DXの自動解答ツールでも作ってくれ。 総当り的に解答できるものなのか・・・ http://mevius.5ch.net/test/read.cgi/gamedev/1053853069/142
143: 名前は開発中のものです。 [] 2008/11/02(日) 18:03:02 ID:4nEQs4Qs >>141 バカカシネヨってぐらい高いよなこのシリーズ http://mevius.5ch.net/test/read.cgi/gamedev/1053853069/143
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 56 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.014s