ゲームのアルゴリズムを教えて管sai (199レス)
上下前次1-新
115(1): 2008/06/12(木)13:22 ID:trmQ6Ydr(1) AAS
 誰かクイックソートが挿入法よりなぜ早いのか教えてくれ 
  
 クイックソートのほうがめんどくさそうなのに最速とか理解できん・・・ 
116: 2008/06/12(木)15:21 ID:gQmHVY6Z(1) AAS
 >>113 
 そのswfをローカルに落として実行してみたら 
  
 Odds calculator failed to get data from server. 
  
 ってエラーメッセージが出たから、 
 確立計算専用の外部プログラムを呼び出してるっぽい。 
117: 2008/06/12(木)15:58 ID:gZtmjAve(1) AAS
 >>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 
  
 こんなんでどうだろうか。というか、この証明あってるんだろうか。 
118: 2008/06/12(木)16:38 ID:VjP0i/a5(1) AAS
 データ数によるんだよね。 少ないデータならどれでも変わらん 
119(3): 2008/06/15(日)19:58 ID:f+c3BIE0(1/2) AAS
 シューティングゲーム作っているのですが、 
 私の数学力のなさか、敵の動きが、直線と円を描くものしか作れません 
  
 どうやったら、アーケードにあるような あたかも敵が思考を持っているような動きが 
 実現できるのでしょうか? 
120(1): 2008/06/15(日)21:16 ID:n3ZqdSRd(1) AAS
 >>119 
 敵の動きのカタログ的なものが欲しいなら……。 
  
 シューティングゲーム プログラミング ¥ 2,940 (税込) 
 松浦 健一郎 (著), 司 ゆき (著)  
 外部リンク:www.amazon.co.jp 
121: 119 2008/06/15(日)23:38 ID:f+c3BIE0(2/2) AAS
 そうではなく、どのようにして さまざまな動きを実現しているのか? その方法を知りたいわけです。 
  
 私の敵を動かす情報は 初速度、速度、角度、時間、加速度で管理しているので、直線と円のみになってしまうのです。 
  
 そこで、微妙に、プレイヤーのいる方向に向かってきたりする方法は、どのような情報で管理しているのかを 
 知りたいのです。 
  
 私の方法でも角度を細かく設定すれば、ある程度 色々な動きは実現できるのですが、 
 もっとスマートな方法はないかと思い質問したまでです。 
122: 2008/06/15(日)23:40 ID:re3KC7mv(1) AAS
 二つの点座標が解れば、角度が求まるのでは? 
123: 2008/06/15(日)23:46 ID:L9WqTsHd(1/2) AAS
 アークタンジェントを理解すればいいとおもうよ 
124: 2008/06/15(日)23:47 ID:L9WqTsHd(2/2) AAS
 外部リンク[htm]:www.tkb-soft.hmcbest.com 
 具体的にはこのへんで。 
125(2): 119 2008/06/16(月)00:19 ID:VJeuSd2d(1/2) AAS
 う〜ん、ちょっと違って 
 人工知能で解決できるのではないかと思うのですが、 
 人工知能に関する知識がないので、作れないのですが、 
 オススメの入門書などないでしょうか? 
126: 2008/06/16(月)00:31 ID:4SfMqdzY(1) AAS
 >>125 
 現在位置ベクトル 
 現在速度ベクトル 
 目標位置ベクトル 
 目標位置での速度ベクトル 
 この条件を満たす加速度ベクトルの時系列を求めればいいんだよね。 
 でもゲームだから時系列を事前に求める必要はなくて 
 毎フレームごとに計算するから状態マシンでいけるよ。 
 2Dシューティングなら普通そうだと思う。 
  
 本格的にやるなら確率過程勉強するとおもしろいよ。 
 実際の迎撃ミサイルがどのように制御されてるか理解できる。 
127: 2008/06/16(月)00:51 ID:Mj4LPxSD(1) AAS
 敵の動きが実際にはどういうふうに実装されてるのかを知りたいなら、 
 >>120みたいな作り方の本が一番実践的だと思うけどなぁ。敵の動きのサンプルもあるだろうし。 
 STGは本格的に作ったことはないが、普通敵の動きに人工知能なんて使わないんじゃない? 
 俺だったら毎フレーム状態遷移を計算して、行動を決定するような実装にすると思う。 
  
 リアル迎撃ミサイルの精度で敵が弾を撃ってくるSTGとか、やってみたいがストレスがたまりそうだなw 
128: 2008/06/16(月)01:04 ID:VJeuSd2d(2/2) AAS
 Cマガが廃刊になって以来、こういった系統の本で当たりだった試しがない 
 浅く、レベルも低く、よくこんな本だせたな という本だらけ 
 立ち読みできないから なおさらタチが悪い 
  
 まぁ、状態遷移図で検討します 
129: 2008/06/16(月)01:41 ID:BvIxc5ty(1) AAS
 >>125 
 この手のアルゴリズムは、たぶん正解みたいなものはなくて、 
 プログラマーのセンスによるんだと思う。 
 ゲームプログラマーが技術力だけじゃなく、センスを活かせる局面なので、 
 いろいろ試して自分なりのノウハウを蓄積するのがいいと思う。 
  
 ちなみに、この手の処理は、パラメータによる差別化だけじゃなくて、 
 ちゃんとそれぞれの動きに対して別のコードを書いたほうがいいよ。 
130(2): 2008/06/23(月)18:42 ID:gkCzmYeJ(1/2) AAS
 シューティングゲームを作っています。 
 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です。お願いします。 
131: 130 2008/06/23(月)19:48 ID:gkCzmYeJ(2/2) AAS
 0が無しで、0より上が敵在りで、敵の番号です 
 の間違いでした。 
132: 2008/06/23(月)20:25 ID:leAIdu27(1) AAS
 テキトーに推測しながら…… 
  
 時間経過をターンとする、 
 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);} 
 } 
 } 
133(1): 2008/06/23(月)20:30 ID:cIfICiuE(1/3) AA×
>>130

134: 2008/06/23(月)20:34 ID:cIfICiuE(2/3) AAS
 >>133に 
  
     case 0: { break; /* 敵は登場しない */ } 
  
 を追加(汗)
135: 2008/06/23(月)21:56 ID:SqRC+pBQ(1) AAS
 そのデータ構造の欠点は 
   ・敵がいてもいなくても同じだけの容量が必要 
   ・同じ時間に敵は1機しか出現できない 
  
 あ、ひょっとして勘違いでこの25っていうのは画面の幅のことなのか!? 
 25x300のマップを表現してるとか 
136: 2008/06/23(月)23:17 ID:cIfICiuE(3/3) AAS
 25って画面の幅だと信じてました。 
137: 2008/06/24(火)03:55 ID:KKsizlIf(1) AAS
 敵が画面横や画面中央から出現するような処理はできないな。 
138: 2008/06/24(火)09:03 ID:dfjKfTQO(1) AAS
 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 ); 
       } 
     } 
 } 
 でいいんでないの? 
139(1): 2008/06/24(火)09:57 ID:r5s8lMOb(1) AAS
 俺だったらテキストデータで 
 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に敵出現 
 ゼビウスみたいに背景と連動するにはまた違ったやり方がいいだろうけど 
140: 2008/06/25(水)01:36 ID:kmQquf20(1) AAS
 俺も絶対的な配置より、>>139みたいな相対的な配置のほうが好きだな。 
 後々編隊の出現時刻を変えるときとか、相対時間を調整するだけですむ。 
 enemy命令、wait命令とか。 
 作り方はシューティングゲームプログラミングって本に載ってる。 
 あまりきれいなコードじゃないから余裕があるなら自分で組みなおした方がいいと思うが。
141(3): 2008/07/06(日)07:44 ID:wmyMOr1K(1) AAS
 外部リンク[html]:www.borndigital.co.jp 
  
 GPGを購入しようと思ってるのですが 1〜5まであって 
 最新の5を購入しようと思っています 無理して1〜4まで全部買う必要はありませんか? 
142: sai 2008/11/02(日)12:31 ID:nTsQz3KG(1) AAS
 Xi[sai]DXの自動解答ツールでも作ってくれ。 
 総当り的に解答できるものなのか・・・ 
143: 2008/11/02(日)18:03 ID:4nEQs4Qs(1) AAS
 >>141 
 バカカシネヨってぐらい高いよなこのシリーズ 
144: 2008/11/03(月)01:37 ID:NKIveKH+(1) AAS
 >>141 
 GPGは最新刊から買う物だよ。 
上下前次1-新書関写板覧索設栞歴
あと 55 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.038s