↑この質問取り下げます。失礼しました。
ゲームのアルゴリズムを教えて管sai
107106
2008/05/19(月) 13:08:26ID:rhmqn4vd108名前は開発中のものです。
2008/05/19(月) 14:26:06ID:jyR28ttC109名前は開発中のものです。
2008/05/30(金) 14:21:38ID:Vu7kcDak >>96
100個程度ならいいですけど配列でもいいかもしれないけど
双方向リストとかを使うようにしたほうがいいかも。c言語だし。
まあこの辺は後ほど。
でも配列を使えとかいう講師に双方向リストを実装して提出したら
うらまれそうw
unsigned int KeyShotFrmCnt = 0; //ショットキーのウェイト用カウンター
↑これはソースの頭のほうに書いてね。
void KeyCheck(void)
{
??if (KeyShotFrmCnt == 0)
??{
???if(GetAsyncKeyState(VK_SPACE)<0)
???{
????Shot();
????(KeyShotFrmCnt = 10;
???}
??} else {
???--KeyShotFrmCnt;
??}
}
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:33ID:Vu7kcDak うは、コピーしたらなんか辺になったorz
void KeyCheck(void)
{
if (KeyShotFrmCnt == 0)
{
if(GetAsyncKeyState(VK_SPACE)<0)
{
Shot();
KeyShotFrmCnt = 10;
}
} else {
--KeyShotFrmCnt;
}
}
void KeyCheck(void)
{
if (KeyShotFrmCnt == 0)
{
if(GetAsyncKeyState(VK_SPACE)<0)
{
Shot();
KeyShotFrmCnt = 10;
}
} else {
--KeyShotFrmCnt;
}
}
111名前は開発中のものです。
2008/05/30(金) 14:28:56ID:Vu7kcDak 2chってスペース空けるの面倒だなw
AAエディタとかで整形してるのか?
AAエディタとかで整形してるのか?
112名前は開発中のものです。
2008/05/30(金) 14:48:17ID:tqfQ+S3S つーか3月の質問にいまさら・・・
113名前は開発中のものです。
2008/06/10(火) 21:19:46ID:8sGd3hVL ↓ポーカーで、誰が有利かを調べるプログラム作りたいんたけど
http://www.pokernews.com/swf/odd_calc_full-v1.1.3.swf
いったいこれ、なにをどうやってこんなに高速に確率計算できるのか、まったくわからない
このプログラムは、近似値じゃなくて↓みたいなドローイングデッドもきっちり表示するし
http://shanbara.jp/gamble/data/zero.png
あらかじめ計算した結果をデータベースにでも叩き込んだのかと思ってるんだけど
それにしたって膨大すぎる
http://www.pokernews.com/swf/odd_calc_full-v1.1.3.swf
いったいこれ、なにをどうやってこんなに高速に確率計算できるのか、まったくわからない
このプログラムは、近似値じゃなくて↓みたいなドローイングデッドもきっちり表示するし
http://shanbara.jp/gamble/data/zero.png
あらかじめ計算した結果をデータベースにでも叩き込んだのかと思ってるんだけど
それにしたって膨大すぎる
114名前は開発中のものです。
2008/06/10(火) 21:32:41ID:8sGd3hVL 単純に全探索じゃなくて、なんか省略する方法があるんだろうが
115名前は開発中のものです。
2008/06/12(木) 13:22:11ID:trmQ6Ydr 誰かクイックソートが挿入法よりなぜ早いのか教えてくれ
クイックソートのほうがめんどくさそうなのに最速とか理解できん・・・
クイックソートのほうがめんどくさそうなのに最速とか理解できん・・・
116名前は開発中のものです。
2008/06/12(木) 15:21:52ID:gQmHVY6Z >>113
そのswfをローカルに落として実行してみたら
Odds calculator failed to get data from server.
ってエラーメッセージが出たから、
確立計算専用の外部プログラムを呼び出してるっぽい。
そのswfをローカルに落として実行してみたら
Odds calculator failed to get data from server.
ってエラーメッセージが出たから、
確立計算専用の外部プログラムを呼び出してるっぽい。
117名前は開発中のものです。
2008/06/12(木) 15:58:03ID: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
こんなんでどうだろうか。というか、この証明あってるんだろうか。
全部のソートに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:08ID:VjP0i/a5 データ数によるんだよね。 少ないデータならどれでも変わらん
119名前は開発中のものです。
2008/06/15(日) 19:58:45ID:f+c3BIE0 シューティングゲーム作っているのですが、
私の数学力のなさか、敵の動きが、直線と円を描くものしか作れません
どうやったら、アーケードにあるような あたかも敵が思考を持っているような動きが
実現できるのでしょうか?
私の数学力のなさか、敵の動きが、直線と円を描くものしか作れません
どうやったら、アーケードにあるような あたかも敵が思考を持っているような動きが
実現できるのでしょうか?
120名前は開発中のものです。
2008/06/15(日) 21:16:54ID:n3ZqdSRd >>119
敵の動きのカタログ的なものが欲しいなら……。
シューティングゲーム プログラミング ¥ 2,940 (税込)
松浦 健一郎 (著), 司 ゆき (著)
http://www.amazon.co.jp/dp/4797337214
敵の動きのカタログ的なものが欲しいなら……。
シューティングゲーム プログラミング ¥ 2,940 (税込)
松浦 健一郎 (著), 司 ゆき (著)
http://www.amazon.co.jp/dp/4797337214
121119
2008/06/15(日) 23:38:35ID:f+c3BIE0 そうではなく、どのようにして さまざまな動きを実現しているのか? その方法を知りたいわけです。
私の敵を動かす情報は 初速度、速度、角度、時間、加速度で管理しているので、直線と円のみになってしまうのです。
そこで、微妙に、プレイヤーのいる方向に向かってきたりする方法は、どのような情報で管理しているのかを
知りたいのです。
私の方法でも角度を細かく設定すれば、ある程度 色々な動きは実現できるのですが、
もっとスマートな方法はないかと思い質問したまでです。
私の敵を動かす情報は 初速度、速度、角度、時間、加速度で管理しているので、直線と円のみになってしまうのです。
そこで、微妙に、プレイヤーのいる方向に向かってきたりする方法は、どのような情報で管理しているのかを
知りたいのです。
私の方法でも角度を細かく設定すれば、ある程度 色々な動きは実現できるのですが、
もっとスマートな方法はないかと思い質問したまでです。
122名前は開発中のものです。
2008/06/15(日) 23:40:21ID:re3KC7mv 二つの点座標が解れば、角度が求まるのでは?
123名前は開発中のものです。
2008/06/15(日) 23:46:14ID:L9WqTsHd アークタンジェントを理解すればいいとおもうよ
124名前は開発中のものです。
2008/06/15(日) 23:47:36ID:L9WqTsHd125119
2008/06/16(月) 00:19:31ID:VJeuSd2d う〜ん、ちょっと違って
人工知能で解決できるのではないかと思うのですが、
人工知能に関する知識がないので、作れないのですが、
オススメの入門書などないでしょうか?
人工知能で解決できるのではないかと思うのですが、
人工知能に関する知識がないので、作れないのですが、
オススメの入門書などないでしょうか?
126名前は開発中のものです。
2008/06/16(月) 00:31:02ID:4SfMqdzY >>125
現在位置ベクトル
現在速度ベクトル
目標位置ベクトル
目標位置での速度ベクトル
この条件を満たす加速度ベクトルの時系列を求めればいいんだよね。
でもゲームだから時系列を事前に求める必要はなくて
毎フレームごとに計算するから状態マシンでいけるよ。
2Dシューティングなら普通そうだと思う。
本格的にやるなら確率過程勉強するとおもしろいよ。
実際の迎撃ミサイルがどのように制御されてるか理解できる。
現在位置ベクトル
現在速度ベクトル
目標位置ベクトル
目標位置での速度ベクトル
この条件を満たす加速度ベクトルの時系列を求めればいいんだよね。
でもゲームだから時系列を事前に求める必要はなくて
毎フレームごとに計算するから状態マシンでいけるよ。
2Dシューティングなら普通そうだと思う。
本格的にやるなら確率過程勉強するとおもしろいよ。
実際の迎撃ミサイルがどのように制御されてるか理解できる。
127名前は開発中のものです。
2008/06/16(月) 00:51:35ID:Mj4LPxSD 敵の動きが実際にはどういうふうに実装されてるのかを知りたいなら、
>>120みたいな作り方の本が一番実践的だと思うけどなぁ。敵の動きのサンプルもあるだろうし。
STGは本格的に作ったことはないが、普通敵の動きに人工知能なんて使わないんじゃない?
俺だったら毎フレーム状態遷移を計算して、行動を決定するような実装にすると思う。
リアル迎撃ミサイルの精度で敵が弾を撃ってくるSTGとか、やってみたいがストレスがたまりそうだなw
>>120みたいな作り方の本が一番実践的だと思うけどなぁ。敵の動きのサンプルもあるだろうし。
STGは本格的に作ったことはないが、普通敵の動きに人工知能なんて使わないんじゃない?
俺だったら毎フレーム状態遷移を計算して、行動を決定するような実装にすると思う。
リアル迎撃ミサイルの精度で敵が弾を撃ってくるSTGとか、やってみたいがストレスがたまりそうだなw
128名前は開発中のものです。
2008/06/16(月) 01:04:13ID:VJeuSd2d Cマガが廃刊になって以来、こういった系統の本で当たりだった試しがない
浅く、レベルも低く、よくこんな本だせたな という本だらけ
立ち読みできないから なおさらタチが悪い
まぁ、状態遷移図で検討します
浅く、レベルも低く、よくこんな本だせたな という本だらけ
立ち読みできないから なおさらタチが悪い
まぁ、状態遷移図で検討します
129名前は開発中のものです。
2008/06/16(月) 01:41:50ID:BvIxc5ty >>125
この手のアルゴリズムは、たぶん正解みたいなものはなくて、
プログラマーのセンスによるんだと思う。
ゲームプログラマーが技術力だけじゃなく、センスを活かせる局面なので、
いろいろ試して自分なりのノウハウを蓄積するのがいいと思う。
ちなみに、この手の処理は、パラメータによる差別化だけじゃなくて、
ちゃんとそれぞれの動きに対して別のコードを書いたほうがいいよ。
この手のアルゴリズムは、たぶん正解みたいなものはなくて、
プログラマーのセンスによるんだと思う。
ゲームプログラマーが技術力だけじゃなく、センスを活かせる局面なので、
いろいろ試して自分なりのノウハウを蓄積するのがいいと思う。
ちなみに、この手の処理は、パラメータによる差別化だけじゃなくて、
ちゃんとそれぞれの動きに対して別のコードを書いたほうがいいよ。
130名前は開発中のものです。
2008/06/23(月) 18:42:29ID: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です。お願いします。
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です。お願いします。
131130
2008/06/23(月) 19:48:54ID:gkCzmYeJ 0が無しで、0より上が敵在りで、敵の番号です
の間違いでした。
の間違いでした。
132名前は開発中のものです。
2008/06/23(月) 20:25:54ID: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);}
}
}
時間経過をターンとする、
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名前は開発中のものです。
2008/06/23(月) 20:30:20ID: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; }
...
}
}
うーん、我ながらほれぼれするなあ。
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; }
...
}
}
うーん、我ながらほれぼれするなあ。
134名前は開発中のものです。
2008/06/23(月) 20:34:44ID:cIfICiuE >>133に
case 0: { break; /* 敵は登場しない */ }
を追加(汗)
case 0: { break; /* 敵は登場しない */ }
を追加(汗)
135名前は開発中のものです。
2008/06/23(月) 21:56:44ID:SqRC+pBQ そのデータ構造の欠点は
・敵がいてもいなくても同じだけの容量が必要
・同じ時間に敵は1機しか出現できない
あ、ひょっとして勘違いでこの25っていうのは画面の幅のことなのか!?
25x300のマップを表現してるとか
・敵がいてもいなくても同じだけの容量が必要
・同じ時間に敵は1機しか出現できない
あ、ひょっとして勘違いでこの25っていうのは画面の幅のことなのか!?
25x300のマップを表現してるとか
136名前は開発中のものです。
2008/06/23(月) 23:17:25ID:cIfICiuE 25って画面の幅だと信じてました。
137名前は開発中のものです。
2008/06/24(火) 03:55:28ID:KKsizlIf 敵が画面横や画面中央から出現するような処理はできないな。
138名前は開発中のものです。
2008/06/24(火) 09:03:16ID: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 );
}
}
}
でいいんでないの?
{
if( ScrollY == (ScrollY / 32) * 32 )
{
Enemy_temp = StageMap2[i + ( ScrollY / 32 ) * 25 ];
if( Enemy_temp > 0)
{
ShowEnemy( i * 32 , -32 , Enemy_temp , 3 );
}
}
}
でいいんでないの?
139名前は開発中のものです。
2008/06/24(火) 09:57:42ID: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に敵出現
ゼビウスみたいに背景と連動するにはまた違ったやり方がいいだろうけど
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:50ID:kmQquf20 俺も絶対的な配置より、>>139みたいな相対的な配置のほうが好きだな。
後々編隊の出現時刻を変えるときとか、相対時間を調整するだけですむ。
enemy命令、wait命令とか。
作り方はシューティングゲームプログラミングって本に載ってる。
あまりきれいなコードじゃないから余裕があるなら自分で組みなおした方がいいと思うが。
後々編隊の出現時刻を変えるときとか、相対時間を調整するだけですむ。
enemy命令、wait命令とか。
作り方はシューティングゲームプログラミングって本に載ってる。
あまりきれいなコードじゃないから余裕があるなら自分で組みなおした方がいいと思うが。
141名前は開発中のものです。
2008/07/06(日) 07:44:15ID:wmyMOr1K ttp://www.borndigital.co.jp/book/program/4-86246-015-1/index.html
GPGを購入しようと思ってるのですが 1〜5まであって
最新の5を購入しようと思っています 無理して1〜4まで全部買う必要はありませんか?
GPGを購入しようと思ってるのですが 1〜5まであって
最新の5を購入しようと思っています 無理して1〜4まで全部買う必要はありませんか?
142sai
2008/11/02(日) 12:31:11ID:nTsQz3KG Xi[sai]DXの自動解答ツールでも作ってくれ。
総当り的に解答できるものなのか・・・
総当り的に解答できるものなのか・・・
143名前は開発中のものです。
2008/11/02(日) 18:03:02ID:4nEQs4Qs >>141
バカカシネヨってぐらい高いよなこのシリーズ
バカカシネヨってぐらい高いよなこのシリーズ
144名前は開発中のものです。
2008/11/03(月) 01:37:29ID:NKIveKH+ >>141
GPGは最新刊から買う物だよ。
GPGは最新刊から買う物だよ。
145名前は開発中のものです。
2008/11/17(月) 23:19:42ID:e6FlExMV >>141
1,2以外はmmo用だよ
1,2以外はmmo用だよ
146名前は開発中のものです。
2008/11/21(金) 02:41:33ID:EpPTVUTk 初期のGPGのほうがおもしろかったよな
147名前は開発中のものです。
2009/02/13(金) 16:28:05ID:4Bf2H9la まんまスペースハリアーみたいな疑似3Dシューティングゲームを作ってみようと思うのですが
あの手のゲームは絵や映像の技法で言うところの「一点透視法」な画面だと思うのですが
その考えで行くと自キャラが撃つ弾は全て画面中央の一点に向かってしまう事になってしまいます(リアルに考えるとそれで正しい)
スペハリや亜流はその辺をどうやってそれっぽくフェイクしているのでしょうか?
あの手のゲームは絵や映像の技法で言うところの「一点透視法」な画面だと思うのですが
その考えで行くと自キャラが撃つ弾は全て画面中央の一点に向かってしまう事になってしまいます(リアルに考えるとそれで正しい)
スペハリや亜流はその辺をどうやってそれっぽくフェイクしているのでしょうか?
148名前は開発中のものです。
2009/02/13(金) 20:36:46ID:sIJuqaxe やっぱそんなもんか、俺もGEM2までしかもっていない
149名前は開発中のものです。
2009/02/14(土) 13:48:41ID:YNh7Hq3A よくわからないけど、画面表示の向きと、画面上の自機の向きをバラバラに考えて、上下左右移動時は時機の向きがそれぞれの方向に慣性付きで移動するようにして、その方向に弾がでるようにすればいいんじゃない?
150名前は開発中のものです。
2009/02/17(火) 17:38:25ID:R5C7BuD2151名前は開発中のものです。
2009/02/17(火) 23:44:47ID:DsZEWqSe ゲーム画面中の10km先と無限の先は何ドットずれるんだい?
152名前は開発中のものです。
2009/02/21(土) 00:00:04ID:T1jozkkK crysisの四脚の敵とか
モンハンのシェンガオレンみたいのってどうやって作るんでしょう?
アニメーションさせれば平の地面を歩く程度はできると思うんですが
凹凸の地面を歩かせたりするにはプログラムからボーンを調整したりするんでしょうか?
モンハンのシェンガオレンみたいのってどうやって作るんでしょう?
アニメーションさせれば平の地面を歩く程度はできると思うんですが
凹凸の地面を歩かせたりするにはプログラムからボーンを調整したりするんでしょうか?
153名前は開発中のものです。
2009/02/21(土) 00:33:55ID:HdiuLFdj モンハンってそもそも平面だけじゃね?
154名前は開発中のものです。
2009/02/21(土) 10:29:20ID:ps9IGcWP IK
155名前は開発中のものです。
2009/02/21(土) 17:45:04ID:T1jozkkK いや、モンハンは分かりやすいかな?程度で出しただけなんで。
IKでやるのは理解してるんですが、
ボーンと地面の判定→先端ボーンの位置を指定→IKで根元までって感じなのでしょうか?
・・・今思うとDirectXの話な気がしなくもない。
IKでやるのは理解してるんですが、
ボーンと地面の判定→先端ボーンの位置を指定→IKで根元までって感じなのでしょうか?
・・・今思うとDirectXの話な気がしなくもない。
156名前は開発中のものです。
2009/02/21(土) 18:03:55ID:o5qjQnQj 自分が理解できない事は全てDirectXが解決してくれる病ですね
157名前は開発中のものです。
2009/02/22(日) 05:51:07ID:FuoG8Da9 知らないのが幸せって事ですね、わかります。
158名前は開発中のものです。
2009/02/22(日) 12:50:23ID:OjD42APz モンハン並みのものを作れないおまえら雑魚すぎるwww
159名前は開発中のものです。
2009/02/26(木) 02:31:56ID:aQvkhPES 地面の高さに、モデル空間の座標を合わせるだけだと思うが
それとも、実行時にモデルアニメの計算をするのか
そんな事しないだろう
それとも、実行時にモデルアニメの計算をするのか
そんな事しないだろう
160名前は開発中のものです。
2010/03/22(月) 01:51:39ID:6l2lJBs0 広大なマップを動き回るシミュレーションみたいなのを考えてて
とりあえずA*というアルゴリズムで2048x2048のマップで
1ドット単位で移動可能としてやってみたら遅くてとても実用的じゃないと判明した
もっと早い方法はあのかな?
マップを小さくしろってのは無しでお願いしますよ
考えてるゲームがマップの広さを利用したものなんで
とりあえずA*というアルゴリズムで2048x2048のマップで
1ドット単位で移動可能としてやってみたら遅くてとても実用的じゃないと判明した
もっと早い方法はあのかな?
マップを小さくしろってのは無しでお願いしますよ
考えてるゲームがマップの広さを利用したものなんで
161名前は開発中のものです。
2010/03/22(月) 12:37:52ID:G/I6jmFX なんで教えてもらうのに上から目線なんだ
162名前は開発中のものです。
2010/03/22(月) 18:41:43ID:BThWkd2X GameProgrammingGemsあたりにあったような気もする。
俺は買ってないけど。高くて。
俺は買ってないけど。高くて。
163160
2010/03/22(月) 21:39:10ID:6l2lJBs0 調べてたらいろいろやり方はあるみたいだ
ちょっといいアイデアを思いついたんで今実験中
ちょっといいアイデアを思いついたんで今実験中
164160
2010/03/26(金) 06:17:01ID:+4Bq9SSB あれからいろいろ実験して完全オリジナルのアルゴリズムを考えてやってみた
2048x2048の1ドット単位移動マップで端から端あたりまでの検索の1秒も掛からなくなった
A*を継承してるんで検索漏れはないはず
なにげにすごい発明をしたのかも
2048x2048の1ドット単位移動マップで端から端あたりまでの検索の1秒も掛からなくなった
A*を継承してるんで検索漏れはないはず
なにげにすごい発明をしたのかも
165名前は開発中のものです。
2010/04/01(木) 13:36:00ID:WfqKvexS >>160
オライリーのAIの本のページにサンプルコードがあったはず、探してみな
オライリーのAIの本のページにサンプルコードがあったはず、探してみな
166165
2010/04/01(木) 13:38:08ID:WfqKvexS >>160
みつけてきたぞ
O'Reilly Japan - 実例で学ぶゲームAIプログラミング
http://www.oreilly.co.jp/books/9784873113395/
これの関連ファイルにソースコードとサンプルの実行ファイル入ってる
みつけてきたぞ
O'Reilly Japan - 実例で学ぶゲームAIプログラミング
http://www.oreilly.co.jp/books/9784873113395/
これの関連ファイルにソースコードとサンプルの実行ファイル入ってる
167名前は開発中のものです。
2011/01/26(水) 00:07:21ID:+BkN1N82 ドカポンなどの双六式のゲームで、「おまかせ」というモードがありますよね?
でた目の数で丁度いけるマスを自動検索してくれるというものなんですが、
あれのアルゴリズム分かる方いますか?言語はなんでもかまいませんので
教えていただけないでしょうか。
でた目の数で丁度いけるマスを自動検索してくれるというものなんですが、
あれのアルゴリズム分かる方いますか?言語はなんでもかまいませんので
教えていただけないでしょうか。
168名前は開発中のものです。
2011/01/26(水) 10:00:10ID:xvFFQPkH マップが分岐なし一方通行なら一次元配列で出目を足せばいい。
分岐がたくさんあるなら、マップを二次元配列にするとして、
「ゲーム シミュレーション 移動範囲」を検索し応用。
分岐がたくさんあるなら、マップを二次元配列にするとして、
「ゲーム シミュレーション 移動範囲」を検索し応用。
169名前は開発中のものです。
2011/02/01(火) 23:17:29ID:lxouVGdC >>168
SRPGの移動範囲みたいなのはわかるんですが、双六だと途中の経路にループがあったり、
飛ばせるマスがあったりしてそこを含めて出目に丁度合うように移動可能か判定するには
どうすればいいか、そこが今ひとつわからないんです。
SRPGの移動範囲みたいなのはわかるんですが、双六だと途中の経路にループがあったり、
飛ばせるマスがあったりしてそこを含めて出目に丁度合うように移動可能か判定するには
どうすればいいか、そこが今ひとつわからないんです。
170名前は開発中のものです。
2011/02/03(木) 11:10:31ID:fi6n2hpv それは簡単。印をつけてループしなくさせればいい
たしか移動歩数的なものを記録すればよかったんじゃない
たしか移動歩数的なものを記録すればよかったんじゃない
171名前は開発中のものです。
2011/02/03(木) 12:33:35ID:B9uesdLi いや、ループはさせないとダメでしょ。
桃太郎電鉄でもリニアカードや新幹線カードを使うとサイコロをたくさん振れて
ループも含めて目的の駅に入りやすくなる。
単純に隣接マスを走査していけばいいと思う。
再帰でやれば楽だろう。
桃太郎電鉄でもリニアカードや新幹線カードを使うとサイコロをたくさん振れて
ループも含めて目的の駅に入りやすくなる。
単純に隣接マスを走査していけばいいと思う。
再帰でやれば楽だろう。
172名前は開発中のものです。
2011/02/08(火) 21:49:20ID:cbwItMD0 とりあえずマップを二次元スクエアとして、シティブロック距離を測定、移動可能距離が足りなかった場合はそこで打切り、
これを基本にして虱潰しにやるというのが一番いいですかね?
あとは直前のマスには戻れない、飛ばせるマスや通過点は移動距離に足して計測、とか細かい点が多いものの
当時のスーファミでも出来るくらいだからどのみち計算量は大したことないんですが
これを基本にして虱潰しにやるというのが一番いいですかね?
あとは直前のマスには戻れない、飛ばせるマスや通過点は移動距離に足して計測、とか細かい点が多いものの
当時のスーファミでも出来るくらいだからどのみち計算量は大したことないんですが
173名前は開発中のものです。
2011/02/14(月) 00:38:02ID:uC7Rwf/v リブルラブルやギャルパニ3みたいに「プレイヤーが引いて囲んだ線の内側」って
どうやって判定すればいいんでそ?
どうやって判定すればいいんでそ?
174名前は開発中のものです。
2011/02/20(日) 00:02:26.60ID:+32StJ0O 「線のどちらが内側か」という問題なら符号付き面積を求める方法があります。
もしくは、「確実に外側である適当な点から最初に線を横切った先は内側」
という判定方法もあります。
もしくは、「確実に外側である適当な点から最初に線を横切った先は内側」
という判定方法もあります。
175名前は開発中のものです。
2011/03/15(火) 13:41:09.98ID:tsoNTB10 2Dアクションゲーム何ですけども、
キャラに引っ張られる様にスクロールさせるにはどうすれば良いでしょう。
常にキャラが中央に来るのではなく、中央から一定距離離れた所からキャラを追う といった感じです。
キャラに引っ張られる様にスクロールさせるにはどうすれば良いでしょう。
常にキャラが中央に来るのではなく、中央から一定距離離れた所からキャラを追う といった感じです。
176名前は開発中のものです。
2011/03/16(水) 20:23:24.82ID:BD5bmsrl スクロール境界線を越えた分だけスクロールさせればよいでしょう。
177名前は開発中のものです。
2011/04/24(日) 21:44:08.42ID:hq7omF31 >>176
有難うございます。正にその通りでした。
有難うございます。正にその通りでした。
178名前は開発中のものです。
2011/06/19(日) 15:45:00.60ID:bk5db9DH スーパーマリオブラザーズの様なゲームの場合、
ブロック等を全てスプライトで処理するのは やはり無理がありますよね
ブロック等を全てスプライトで処理するのは やはり無理がありますよね
179名前は開発中のものです。
2011/06/20(月) 00:09:15.70ID:c6jbBPQT あまり今のPCのマシンパワーを舐めないほうがいい
表示範囲外のところは勝手に無視してくれたりするんで
最適化とか効率はモノが動いてからでも十分間に合う
まずは思いついた方法、いちばん簡単にコーディングできそうな方法でやってみるが吉
表示範囲外のところは勝手に無視してくれたりするんで
最適化とか効率はモノが動いてからでも十分間に合う
まずは思いついた方法、いちばん簡単にコーディングできそうな方法でやってみるが吉
180名前は開発中のものです。
2011/06/30(木) 18:39:23.75ID:1i7cT9Ap181名前は開発中のものです。
2011/07/13(水) 21:44:59.63ID:71MLorzn スクロールゲームでの、オフセット方式で座標を更新するとして、
画面のオフセット位置の更新ってどのタイミングでやるべきなのでしょう。
位置はプレイヤーに追従させるとして、プレイヤーの処理後だと プレイヤーの処理中にオフセット位置を用いる処理があればズレてしまうし、
結局どのタイミングでも、完全な同期は無理なのでしょうか。
画面のオフセット位置の更新ってどのタイミングでやるべきなのでしょう。
位置はプレイヤーに追従させるとして、プレイヤーの処理後だと プレイヤーの処理中にオフセット位置を用いる処理があればズレてしまうし、
結局どのタイミングでも、完全な同期は無理なのでしょうか。
182名前は開発中のものです。
2013/01/02(水) 23:39:58.04ID:2Lu9emtw NHK教育を見て40886倍賢くマターリ
http://hayabusa2.2ch.net/test/read.cgi/liveetv/1357124586/
http://hayabusa2.2ch.net/test/read.cgi/liveetv/1357124586/
183名前は開発中のものです。
2013/12/28(土) 23:29:15.34ID:7VQI5SoT グーグルの検索エンジンのアルゴリズム
http://webblogsakusei.main.jp/seo_taisaku_syukyaku.html
http://webblogsakusei.main.jp/seo_taisaku_syukyaku.html
184名前は開発中のものです。
2015/03/12(木) 17:13:40.27ID:6Gcknge4 2Dの無限マップってどうやってデータ保存しとけばいいんだろう
2次元リストだとプラス方向にしか伸ばせないし
2次元リストだとプラス方向にしか伸ばせないし
185名前は開発中のものです。
2017/02/03(金) 02:21:27.57ID:lSw/ej4u age
186名前は開発中のものです。
2017/12/31(日) 22:24:26.27ID:/rN76OKL 簡単にお金が稼げる方法興味ある人だけ見てください。
グーグル検索⇒『来島のモノノリウエ』
FNI7DS9IDU
グーグル検索⇒『来島のモノノリウエ』
FNI7DS9IDU
187名前は開発中のものです。
2018/06/04(月) 19:43:36.48ID:VMODjZSK188名前は開発中のものです。
2018/07/13(金) 20:31:25.63ID:qlBuPuiL せっかくなので補足。
パーリンノイズは、「改良パーリンノイズ」のほう。
改良は、各頂点座標をシードにしたハッシュ値を乱数替わりにするので、
時間的にもメモリ的にもほぼノーコストで、各頂点のベクトルを再現できる。
(各頂点のベクトルを、メモリ等に保存しておく必要がない)
なので、無限マップの任意の座標の地形を、いつでも同じ形に再現できる。
パーリンノイズは、「改良パーリンノイズ」のほう。
改良は、各頂点座標をシードにしたハッシュ値を乱数替わりにするので、
時間的にもメモリ的にもほぼノーコストで、各頂点のベクトルを再現できる。
(各頂点のベクトルを、メモリ等に保存しておく必要がない)
なので、無限マップの任意の座標の地形を、いつでも同じ形に再現できる。
189名前は開発中のものです。
2018/07/26(木) 22:53:35.87ID:DlWlB+js 昔のドラクエなどにあるメッセージ表示ってどうやるのでしょうか?
一文字づつ文字が表示されるみたいな。
一文字づつ文字が表示されるみたいな。
190名前は開発中のものです。
2018/07/27(金) 00:41:49.38ID:PByOa6sW >>189
一文字ずつ表示すればいいんじゃね?
一文字ずつ表示すればいいんじゃね?
191名前は開発中のものです。
2018/07/27(金) 09:58:54.71ID:iH71ilKM バカレス乙
192名前は開発中のものです。
2018/07/29(日) 10:20:50.75ID:9PwGUzLA >>189
文字を一個づつ表示する
文字を一個づつ表示する
193名前は開発中のものです。
2021/04/12(月) 19:31:38.14ID:M9M+4c7u 2Dシューティングのホーミング弾が作れません
外積計算して正負で軸があってるか判断、
それを弾の個数分やるって事であってるんでしょうか
外積計算して正負で軸があってるか判断、
それを弾の個数分やるって事であってるんでしょうか
194名前は開発中のものです。
2021/06/17(木) 16:49:26.83ID:Yiidicu+ もう見てないだろうが、
ホーミング弾の進行方向から見て、目標物が右側にあるのか左側にあるのか調べる。
(弾の移動ベクトルのatan2と、弾から物への方向ベクトルのatan2との比較)
右側にあるなら、ホーミング弾の移動ベクトルを右回転、左なら左回転。
ただし、回転角度には上限を設けないと、カクッと動くことになるw
最近のコンピュータって速いから、こんなもんで十分じゃないかな。。。と妄想w
ホーミング弾の進行方向から見て、目標物が右側にあるのか左側にあるのか調べる。
(弾の移動ベクトルのatan2と、弾から物への方向ベクトルのatan2との比較)
右側にあるなら、ホーミング弾の移動ベクトルを右回転、左なら左回転。
ただし、回転角度には上限を設けないと、カクッと動くことになるw
最近のコンピュータって速いから、こんなもんで十分じゃないかな。。。と妄想w
195名前は開発中のものです。
2021/06/17(木) 20:18:18.12ID:PcUJNFVD みてます!ありがとうございます
今はホーミング弾の目標が軸の左にあるか右にあるかを外積の正負で判断し、
弾一つ一つをループさせてみています
衝突判定に使う4分木の様な、効率的なアルゴリズムがあったりするのでしょうか
今はホーミング弾の目標が軸の左にあるか右にあるかを外積の正負で判断し、
弾一つ一つをループさせてみています
衝突判定に使う4分木の様な、効率的なアルゴリズムがあったりするのでしょうか
196名前は開発中のものです。
2021/06/18(金) 17:26:24.06ID:yzvTwA4D 見られてたw
ホーミング弾って、距離離れてても追尾するイメージあるから、
四分木みたいな領域分轄はできないんじゃないかなぁ
処理速度の最適化は、一番重い処理を見極めて、
そこを高速化するのが効果的と思うけど、
ホーミング弾って、回転行列を使うから、
ホーミング角度θに応じたsinθとcosθを、あらかじめ計算しておくって手はあるかも。
(ホーミング角度θは、固定値なはずなので)
ホーミング弾って、距離離れてても追尾するイメージあるから、
四分木みたいな領域分轄はできないんじゃないかなぁ
処理速度の最適化は、一番重い処理を見極めて、
そこを高速化するのが効果的と思うけど、
ホーミング弾って、回転行列を使うから、
ホーミング角度θに応じたsinθとcosθを、あらかじめ計算しておくって手はあるかも。
(ホーミング角度θは、固定値なはずなので)
197名前は開発中のものです。
2021/08/19(木) 22:31:46.49ID:YTJh6kAo わざと0.5秒とか一定間隔をあけてホーミングしたほうが
動きがカクカクしないしゲーム難易度的にもいいと思うぞ
(右回転なら右回転を0.5秒続ける)
動きがカクカクしないしゲーム難易度的にもいいと思うぞ
(右回転なら右回転を0.5秒続ける)
198名前は開発中のものです。
2023/08/04(金) 15:32:45.30ID:wTfx4Kk+ 問題がありません
199名前は開発中のものです。
2023/09/25(月) 01:59:21.44ID:Itcq5bDg public int Sayu(Pos arg)
{
var buf = arg.posF - posF;
return Lib.GetSeiFu((vecF.X * buf.Y) - (vecF.Y * buf.X));
}
これを貼れと言われた気が。
{
var buf = arg.posF - posF;
return Lib.GetSeiFu((vecF.X * buf.Y) - (vecF.Y * buf.X));
}
これを貼れと言われた気が。
レスを投稿する
