ゲームのアルゴリズムを教えて管sai (199レス)
上下前次1-新
103(1): 2008/03/19(水)09:04 ID:a6WC8gIo(1) AAS
 >>102 
 画像の数を減らして、同じ画像を使いまわすとか、 
 1秒間あたりの描画回数(FPS)を減らすとか。 
 あとは、一画面に同時に出現するオブジェクトの数を減らすとか、 
 背景のスクロールをあきらめるとか、 
  
 あと、ベンチマークツールがあればそれを使って、 
 ボトルネックとなっている処理(メソッド/関数)を分析してみるとか。
104: 2008/03/19(水)11:15 ID:MFS90Jv9(1) AAS
 >>102 
 プログラム実行中は結局ビットマップでメモリに保持させてるから効果がないと思うんだが… 
 予め画像のパレットを全て一緒の256色にしといてパレットを読み込ませないと。 
105: 102 2008/03/19(水)14:33 ID:bv/3obIk(2/2) AAS
 >>103 
 ありがとうございます。 
 >同じ画像を使いまわす 
 試してみようと思います。 
 これは一箇所に画像を読み込んでおいて、 
 その画像を使うオブジェクトが描画のたびにそこを参照するようにする、 
 ということで良いんでしょうか? 
 他のは、ゲームのバランス調整と平行して考えてみます。 
  
 >>102 
 すいません。そういうことに理解が無いもので・・・。 
 >予め画像のパレットを全て一緒の256色にしといてパレットを読み込ませないと。 
 これは良く使われる手法なのでしょうか? 
 それともgifファイルの軽量化に意味を持たせるための方法なのでしょうか? 
 どういう風に実装すれば良いのかさっぱり分からないので、後者なら諦めます・・・。 
 ありがとうございました。 
106: 2008/05/16(金)17:34 ID:ciTJLGhI(1) AAS
 大きな矩形の布地から、サイズの違う小さな矩形の布地を切り取る時、 
 余りの布面積が一番少なくなるよう、切り取る(小さな矩形を並べる) 
 アルゴリズムについて書かれた書籍、HP等をご存知でしたら、 
 教えて下さい。 
  
 よろしくお願いします。
107(1): 106 2008/05/19(月)13:08 ID:rhmqn4vd(1) AAS
 ↑この質問取り下げます。失礼しました。
108: 2008/05/19(月)14:26 ID:jyR28ttC(1) AAS
 >>107 
 移動するなら移動先を書いてくれ。 
  
 実は調べたり考えたりしてたんだが最小公倍数の矩形で 
 バックトラックするという馬鹿な方法しか思いつかなかったんだ。 
109: 2008/05/30(金)14:21 ID:Vu7kcDak(1/3) AAS
 >>96 
 100個程度ならいいですけど配列でもいいかもしれないけど 
 双方向リストとかを使うようにしたほうがいいかも。c言語だし。 
 まあこの辺は後ほど。 
 でも配列を使えとかいう講師に双方向リストを実装して提出したら 
 うらまれそうw 
  
 unsigned int KeyShotFrmCnt = 0;  //ショットキーのウェイト用カウンター 
 ↑これはソースの頭のほうに書いてね。 
  
 void KeyCheck(void) 
 { 
 ??if (KeyShotFrmCnt == 0) 
 ??{ 
 ???if(GetAsyncKeyState(VK_SPACE)<0) 
 ???{ 
 ????Shot(); 
 ????(KeyShotFrmCnt = 10; 
 ???} 
 ??} else { 
 ???--KeyShotFrmCnt;  
 ??} 
 } 
110: 2008/05/30(金)14:23 ID:Vu7kcDak(2/3) AAS
 うは、コピーしたらなんか辺になったorz 
 void KeyCheck(void) 
 { 
    if (KeyShotFrmCnt == 0) 
    { 
       if(GetAsyncKeyState(VK_SPACE)<0) 
       { 
          Shot(); 
          KeyShotFrmCnt = 10; 
       } 
    } else { 
       --KeyShotFrmCnt; 
    } 
 } 
111: 2008/05/30(金)14:28 ID:Vu7kcDak(3/3) AAS
 2chってスペース空けるの面倒だなw 
  
 AAエディタとかで整形してるのか? 
112: 2008/05/30(金)14:48 ID:tqfQ+S3S(1) AAS
 つーか3月の質問にいまさら・・・
113(1): 2008/06/10(火)21:19 ID:8sGd3hVL(1/2) AAS
 ↓ポーカーで、誰が有利かを調べるプログラム作りたいんたけど 
 外部リンク[swf]:www.pokernews.com 
  
 いったいこれ、なにをどうやってこんなに高速に確率計算できるのか、まったくわからない 
 このプログラムは、近似値じゃなくて↓みたいなドローイングデッドもきっちり表示するし 
 画像リンク
 
 
  
 あらかじめ計算した結果をデータベースにでも叩き込んだのかと思ってるんだけど 
 それにしたって膨大すぎる 
114: 2008/06/10(火)21:32 ID:8sGd3hVL(2/2) AAS
 単純に全探索じゃなくて、なんか省略する方法があるんだろうが 
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);} 
 } 
 } 
上下前次1-新書関写板覧索設栞歴
あと 67 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.018s