ゲームのアルゴリズムを教えて管sai (199レス)
上下前次1-新
1: 03/05/25 17:57 ID:UyCopla6(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
現在位置ベクトル
現在速度ベクトル
目標位置ベクトル
目標位置での速度ベクトル
この条件を満たす加速度ベクトルの時系列を求めればいいんだよね。
でもゲームだから時系列を事前に求める必要はなくて
省4
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,・・・
省4
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 し、
{
省8
133(1): 2008/06/23(月)20:30 ID:cIfICiuE(1/3) AAS
AA省
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)
{
省5
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
省2
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は最新刊から買う物だよ。
145: 2008/11/17(月)23:19 ID:e6FlExMV(1) AAS
>>141
1,2以外はmmo用だよ
146: 2008/11/21(金)02:41 ID:EpPTVUTk(1) AAS
初期のGPGのほうがおもしろかったよな
147(1): 2009/02/13(金)16:28 ID:4Bf2H9la(1) AAS
まんまスペースハリアーみたいな疑似3Dシューティングゲームを作ってみようと思うのですが
あの手のゲームは絵や映像の技法で言うところの「一点透視法」な画面だと思うのですが
その考えで行くと自キャラが撃つ弾は全て画面中央の一点に向かってしまう事になってしまいます(リアルに考えるとそれで正しい)
スペハリや亜流はその辺をどうやってそれっぽくフェイクしているのでしょうか?
148: 2009/02/13(金)20:36 ID:sIJuqaxe(1) AAS
やっぱそんなもんか、俺もGEM2までしかもっていない
149: 2009/02/14(土)13:48 ID:YNh7Hq3A(1) AAS
よくわからないけど、画面表示の向きと、画面上の自機の向きをバラバラに考えて、上下左右移動時は時機の向きがそれぞれの方向に慣性付きで移動するようにして、その方向に弾がでるようにすればいいんじゃない?
150: 2009/02/17(火)17:38 ID:R5C7BuD2(1) AAS
>>147
まず、一点に集中しちゃうのは平行線だけだぜ
よしんば自機の弾が平行にしか撃てないとしても、集中するのは無限遠点だ
ゲーム時間中に到達するのかい
151: 2009/02/17(火)23:44 ID:DsZEWqSe(1) AAS
ゲーム画面中の10km先と無限の先は何ドットずれるんだい?
152: 2009/02/21(土)00:00 ID:T1jozkkK(1/2) AAS
crysisの四脚の敵とか
モンハンのシェンガオレンみたいのってどうやって作るんでしょう?
アニメーションさせれば平の地面を歩く程度はできると思うんですが
凹凸の地面を歩かせたりするにはプログラムからボーンを調整したりするんでしょうか?
153: 2009/02/21(土)00:33 ID:HdiuLFdj(1) AAS
モンハンってそもそも平面だけじゃね?
154: 2009/02/21(土)10:29 ID:ps9IGcWP(1) AAS
IK
155: 2009/02/21(土)17:45 ID:T1jozkkK(2/2) AAS
いや、モンハンは分かりやすいかな?程度で出しただけなんで。
IKでやるのは理解してるんですが、
ボーンと地面の判定→先端ボーンの位置を指定→IKで根元までって感じなのでしょうか?
・・・今思うとDirectXの話な気がしなくもない。
156: 2009/02/21(土)18:03 ID:o5qjQnQj(1) AAS
自分が理解できない事は全てDirectXが解決してくれる病ですね
157: 2009/02/22(日)05:51 ID:FuoG8Da9(1) AAS
知らないのが幸せって事ですね、わかります。
158: 2009/02/22(日)12:50 ID:OjD42APz(1) AAS
モンハン並みのものを作れないおまえら雑魚すぎるwww
159: 2009/02/26(木)02:31 ID:aQvkhPES(1) AAS
地面の高さに、モデル空間の座標を合わせるだけだと思うが
それとも、実行時にモデルアニメの計算をするのか
そんな事しないだろう
160(4): 2010/03/22(月)01:51 ID:6l2lJBs0(1/2) AAS
広大なマップを動き回るシミュレーションみたいなのを考えてて
とりあえずA*というアルゴリズムで2048x2048のマップで
1ドット単位で移動可能としてやってみたら遅くてとても実用的じゃないと判明した
もっと早い方法はあのかな?
マップを小さくしろってのは無しでお願いしますよ
考えてるゲームがマップの広さを利用したものなんで
161: 2010/03/22(月)12:37 ID:G/I6jmFX(1) AAS
なんで教えてもらうのに上から目線なんだ
162: 2010/03/22(月)18:41 ID:BThWkd2X(1) AAS
GameProgrammingGemsあたりにあったような気もする。
俺は買ってないけど。高くて。
163: 160 2010/03/22(月)21:39 ID:6l2lJBs0(2/2) AAS
調べてたらいろいろやり方はあるみたいだ
ちょっといいアイデアを思いついたんで今実験中
164: 160 2010/03/26(金)06:17 ID:+4Bq9SSB(1) AAS
あれからいろいろ実験して完全オリジナルのアルゴリズムを考えてやってみた
2048x2048の1ドット単位移動マップで端から端あたりまでの検索の1秒も掛からなくなった
A*を継承してるんで検索漏れはないはず
なにげにすごい発明をしたのかも
165(1): 2010/04/01(木)13:36 ID:WfqKvexS(1/2) AAS
>>160
オライリーのAIの本のページにサンプルコードがあったはず、探してみな
166: 165 2010/04/01(木)13:38 ID:WfqKvexS(2/2) AAS
>>160
みつけてきたぞ
O'Reilly Japan - 実例で学ぶゲームAIプログラミング
外部リンク:www.oreilly.co.jp
これの関連ファイルにソースコードとサンプルの実行ファイル入ってる
167: 2011/01/26(水)00:07 ID:+BkN1N82(1) AAS
ドカポンなどの双六式のゲームで、「おまかせ」というモードがありますよね?
でた目の数で丁度いけるマスを自動検索してくれるというものなんですが、
あれのアルゴリズム分かる方いますか?言語はなんでもかまいませんので
教えていただけないでしょうか。
168(1): 2011/01/26(水)10:00 ID:xvFFQPkH(1) AAS
マップが分岐なし一方通行なら一次元配列で出目を足せばいい。
分岐がたくさんあるなら、マップを二次元配列にするとして、
「ゲーム シミュレーション 移動範囲」を検索し応用。
169: 2011/02/01(火)23:17 ID:lxouVGdC(1) AAS
>>168
SRPGの移動範囲みたいなのはわかるんですが、双六だと途中の経路にループがあったり、
飛ばせるマスがあったりしてそこを含めて出目に丁度合うように移動可能か判定するには
どうすればいいか、そこが今ひとつわからないんです。
170: 2011/02/03(木)11:10 ID:fi6n2hpv(1) AAS
それは簡単。印をつけてループしなくさせればいい
たしか移動歩数的なものを記録すればよかったんじゃない
171: 2011/02/03(木)12:33 ID:B9uesdLi(1) AAS
いや、ループはさせないとダメでしょ。
桃太郎電鉄でもリニアカードや新幹線カードを使うとサイコロをたくさん振れて
ループも含めて目的の駅に入りやすくなる。
単純に隣接マスを走査していけばいいと思う。
再帰でやれば楽だろう。
172: 2011/02/08(火)21:49 ID:cbwItMD0(1) AAS
とりあえずマップを二次元スクエアとして、シティブロック距離を測定、移動可能距離が足りなかった場合はそこで打切り、
これを基本にして虱潰しにやるというのが一番いいですかね?
あとは直前のマスには戻れない、飛ばせるマスや通過点は移動距離に足して計測、とか細かい点が多いものの
当時のスーファミでも出来るくらいだからどのみち計算量は大したことないんですが
173: 2011/02/14(月)00:38 ID:uC7Rwf/v(1) AAS
リブルラブルやギャルパニ3みたいに「プレイヤーが引いて囲んだ線の内側」って
どうやって判定すればいいんでそ?
174: 2011/02/20(日)00:02 ID:+32StJ0O(1) AAS
「線のどちらが内側か」という問題なら符号付き面積を求める方法があります。
もしくは、「確実に外側である適当な点から最初に線を横切った先は内側」
という判定方法もあります。
175: 2011/03/15(火)13:41 ID:tsoNTB10(1) AAS
2Dアクションゲーム何ですけども、
キャラに引っ張られる様にスクロールさせるにはどうすれば良いでしょう。
常にキャラが中央に来るのではなく、中央から一定距離離れた所からキャラを追う といった感じです。
176(1): 2011/03/16(水)20:23 ID:BD5bmsrl(1) AAS
スクロール境界線を越えた分だけスクロールさせればよいでしょう。
177: 2011/04/24(日)21:44 ID:hq7omF31(1) AAS
>>176
有難うございます。正にその通りでした。
178: 2011/06/19(日)15:45 ID:bk5db9DH(1) AAS
スーパーマリオブラザーズの様なゲームの場合、
ブロック等を全てスプライトで処理するのは やはり無理がありますよね
179(1): 2011/06/20(月)00:09 ID:c6jbBPQT(1) AAS
あまり今のPCのマシンパワーを舐めないほうがいい
表示範囲外のところは勝手に無視してくれたりするんで
最適化とか効率はモノが動いてからでも十分間に合う
まずは思いついた方法、いちばん簡単にコーディングできそうな方法でやってみるが吉
180: 2011/06/30(木)18:39 ID:1i7cT9Ap(1) AAS
>>179
有難うございます。
とりあえず組んでみる事にしました。
181: 2011/07/13(水)21:44 ID:71MLorzn(1) AAS
スクロールゲームでの、オフセット方式で座標を更新するとして、
画面のオフセット位置の更新ってどのタイミングでやるべきなのでしょう。
位置はプレイヤーに追従させるとして、プレイヤーの処理後だと プレイヤーの処理中にオフセット位置を用いる処理があればズレてしまうし、
結局どのタイミングでも、完全な同期は無理なのでしょうか。
182: 2013/01/02(水)23:39 ID:2Lu9emtw(1) AAS
NHK教育を見て40886倍賢くマターリ
2chスレ:liveetv
183: 2013/12/28(土)23:29 ID:7VQI5SoT(1) AAS
グーグルの検索エンジンのアルゴリズム
外部リンク[html]:webblogsakusei.main.jp
184(1): 2015/03/12(木)17:13 ID:6Gcknge4(1) AAS
2Dの無限マップってどうやってデータ保存しとけばいいんだろう
2次元リストだとプラス方向にしか伸ばせないし
185: 2017/02/03(金)02:21 ID:lSw/ej4u(1) AAS
age
186: 2017/12/31(日)22:24 ID:/rN76OKL(1) AAS
簡単にお金が稼げる方法興味ある人だけ見てください。
グーグル検索⇒『来島のモノノリウエ』
FNI7DS9IDU
187: 2018/06/04(月)19:43 ID:VMODjZSK(1) AAS
>>184
基本的には動的に生成(プロシージャル)
乱数はパーリンノイズ
変化があったとこだけ差分を記録
見てないところでマジレスする快感
なお正しい方法かは知らん(俺だったらそうするってだけ)
188: 2018/07/13(金)20:31 ID:qlBuPuiL(1) AAS
せっかくなので補足。
パーリンノイズは、「改良パーリンノイズ」のほう。
改良は、各頂点座標をシードにしたハッシュ値を乱数替わりにするので、
時間的にもメモリ的にもほぼノーコストで、各頂点のベクトルを再現できる。
(各頂点のベクトルを、メモリ等に保存しておく必要がない)
なので、無限マップの任意の座標の地形を、いつでも同じ形に再現できる。
189(2): 2018/07/26(木)22:53 ID:DlWlB+js(1) AAS
昔のドラクエなどにあるメッセージ表示ってどうやるのでしょうか?
一文字づつ文字が表示されるみたいな。
190: 2018/07/27(金)00:41 ID:PByOa6sW(1) AAS
>>189
一文字ずつ表示すればいいんじゃね?
191: 2018/07/27(金)09:58 ID:iH71ilKM(1) AAS
バカレス乙
192: 2018/07/29(日)10:20 ID:9PwGUzLA(1) AAS
>>189
文字を一個づつ表示する
193: 2021/04/12(月)19:31 ID:M9M+4c7u(1) AAS
2Dシューティングのホーミング弾が作れません
外積計算して正負で軸があってるか判断、
それを弾の個数分やるって事であってるんでしょうか
194: 2021/06/17(木)16:49 ID:Yiidicu+(1) AAS
もう見てないだろうが、
ホーミング弾の進行方向から見て、目標物が右側にあるのか左側にあるのか調べる。
(弾の移動ベクトルのatan2と、弾から物への方向ベクトルのatan2との比較)
右側にあるなら、ホーミング弾の移動ベクトルを右回転、左なら左回転。
ただし、回転角度には上限を設けないと、カクッと動くことになるw
最近のコンピュータって速いから、こんなもんで十分じゃないかな。。。と妄想w
195: 2021/06/17(木)20:18 ID:PcUJNFVD(1) AAS
みてます!ありがとうございます
今はホーミング弾の目標が軸の左にあるか右にあるかを外積の正負で判断し、
弾一つ一つをループさせてみています
衝突判定に使う4分木の様な、効率的なアルゴリズムがあったりするのでしょうか
196: 2021/06/18(金)17:26 ID:yzvTwA4D(1) AAS
見られてたw
ホーミング弾って、距離離れてても追尾するイメージあるから、
四分木みたいな領域分轄はできないんじゃないかなぁ
処理速度の最適化は、一番重い処理を見極めて、
そこを高速化するのが効果的と思うけど、
ホーミング弾って、回転行列を使うから、
ホーミング角度θに応じたsinθとcosθを、あらかじめ計算しておくって手はあるかも。
省1
197: 2021/08/19(木)22:31 ID:YTJh6kAo(1) AAS
わざと0.5秒とか一定間隔をあけてホーミングしたほうが
動きがカクカクしないしゲーム難易度的にもいいと思うぞ
(右回転なら右回転を0.5秒続ける)
198: 2023/08/04(金)15:32 ID:wTfx4Kk+(1) AAS
問題がありません
199: 2023/09/25(月)01:59 ID:Itcq5bDg(1) AAS
public int Sayu(Pos arg)
{
var buf = arg.posF - posF;
return Lib.GetSeiFu((vecF.X * buf.Y) - (vecF.Y * buf.X));
}
これを貼れと言われた気が。
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.636s*