ゲームのアルゴリズムを教えて管sai (199レス)
1-

100: 2008/03/13(木)23:13 ID:3HHTp0zC(2/2) AAS
>>98
60フレーム/秒でKeyCheckは毎フレーム呼ばれるの?
101: 2008/03/14(金)17:31 ID:46wpxx7U(1) AAS
>>96
if文の中の最後にbreak;入れると幸せになれるぞ
102
(3): 2008/03/19(水)01:43 ID:bv/3obIk(1/2) AAS
適切なスレが見つからないのでここで質問させてください。
携帯電話アプリのシューティングを作っているのですが、
2D描画の処理を軽くする方法がわかりません。
個々のgifファイルを軽量化してみたりもしましたが、効果があるのかどうか分からないくらいです。
クリッピング領域を指定する方法もあるようですが、いまいちよく分かりません。
他に効果的な方法は無いものでしょうか。
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
この手のアルゴリズムは、たぶん正解みたいなものはなくて、
プログラマーのセンスによるんだと思う。
ゲームプログラマーが技術力だけじゃなく、センスを活かせる局面なので、
いろいろ試して自分なりのノウハウを蓄積するのがいいと思う。

ちなみに、この手の処理は、パラメータによる差別化だけじゃなくて、
ちゃんとそれぞれの動きに対して別のコードを書いたほうがいいよ。
1-
あと 70 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.014s