ゲームのアルゴリズムを教えて管sai (199レス)
ゲームのアルゴリズムを教えて管sai http://mevius.5ch.net/test/read.cgi/gamedev/1053853069/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
53: あぼーん [あぼーん] あぼーん http://mevius.5ch.net/test/read.cgi/gamedev/1053853069/53
54: 名前は開発中のものです。 [] 03/06/13 21:22 ID:NCwo/Gzi みてね〜♪ http://www1.free-city.net/home/s-rf9/page003.html http://mevius.5ch.net/test/read.cgi/gamedev/1053853069/54
55: 山崎 渉 [(^^)] 03/08/15 08:34 ID:KFL+te0G (⌒V⌒) │ ^ ^ │<これからも僕を応援して下さいね(^^)。 ⊂| |つ (_)(_) 山崎パン http://mevius.5ch.net/test/read.cgi/gamedev/1053853069/55
56: 名前は開発中のものです。 [] 04/07/03 19:23 ID:E3a3uuaW 漏れら極悪非道のage武田騎馬ブラザーズ! ネタもないのにageてやるからな!  ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ∧_ヘ ∧_ヘ / \〇ノゝ / \〇ノゝ age /三/´∀`)∩ ∩/´∀`) age (つ 丿 ( ⊂) age ( ヽノ ヽ/ ) age し(_) (_)J http://mevius.5ch.net/test/read.cgi/gamedev/1053853069/56
57: 名前は開発中のものです。 [sage] 2005/05/11(水) 09:55:39 ID:QbGDxSga こんなスレッドまで来て、ゲームアルゴリズムを真剣に 学びたい人はいないとは、思うけど、 単純な2Dシューティング(インベーダー程度)なら 配列、探索アルゴリズム、リスト、構造体 テーブル化、ソートアルゴリズム、フラグ、画像転送、 矩形の当たり判定 アドベンチャーゲームなら 自作スクリプトの字句解析、構文解析(lac,lex) 簡単な暗号化、圧縮アルゴリズム、バイナリファイル操作 画像エフェクト系(拡大縮小回転、ワイプ、ラスタースクロール、 α値操作、他いろいろ) が分かれば作れると思います。 たぶん。 http://mevius.5ch.net/test/read.cgi/gamedev/1053853069/57
58: 名前は開発中のものです。 [] 2005/05/23(月) 00:26:42 ID:MvQZceoD http://mevius.5ch.net/test/read.cgi/gamedev/1053853069/58
59: 名前は開発中のものです。 [] 2005/06/14(火) 17:02:51 ID:9FWtswMc だれか、2Dアクションゲームの、スクロールとキャラクタ・当たり判定の 管理について教えてくださいな。 http://mevius.5ch.net/test/read.cgi/gamedev/1053853069/59
60: 名前は開発中のものです。 [sage] 2005/06/15(水) 15:58:31 ID:J79aeXl5 >>59 昔のゲームを逆アセンブルで解析してみて参考にするのは、どうだろう… 私は、解析したことがないので、どうなっているのか分かりませんが、 少し昔の2Dアクションゲーム(ロックマン、マリオ、魔界村、ソニック、スペランカー、etc) のマップは、おそらく32×32ドット(24×24ドット)程度の大きさで区切られたマスの組み合わせで 表現されていると思われます。 それを、2次元配列でint Map[300][300]={ {0,0,0,1,0,1,…のように表して 0を当たり判定なし、0以外の値(1など)を当たり判定ありとすれば、マップデータは完成。 ●そのマップデータを画面に表現するには、 sx,syをx,y方向別のスクロール管理変数 画面の解像度を320×240とすると void DrawMap() { int stx=sx/32;int edx=sx+320/32; int sty=sy/32;int edy=sy+240/32; for(int i=stx;i<edx;i++) { for(int j=sty;i<edy;j++) { DrawMapChip(map[i][j],i*32-sx,j*32-sy) } } } http://mevius.5ch.net/test/read.cgi/gamedev/1053853069/60
61: 名前は開発中のものです。 [sage] 2005/06/15(水) 16:02:04 ID:J79aeXl5 ●スクロールは、常にメインキャラクターを画面の中心に置いておきたい訳だから void CalcScroll(int *sx,int *sy) { *sx=mx-320/2; *sy=my-240/2; if (sx<0) sx=0; if (sy<0) sy=0; if (sx>32*200) sx=32*200; if (sy>32*200) sy=32*200; } だったかな… ちなみにmx,myはメインキャラクターのx,y座標 http://mevius.5ch.net/test/read.cgi/gamedev/1053853069/61
62: 名前は開発中のものです。 [sage] 2005/06/15(水) 16:54:50 ID:J79aeXl5 当たり判定は、いろいろな方法(ベクトル、三平方、色判定など)があるけども、 メインキャラクターが発射した弾と敵キャラとの当たり判定なら、単純に矩形(くけい)の 当たり判定で済みます。 ●弾の座標を(ax,ay)、敵の座標を(bx,by)とした場合、 if(ax<bx2 && ax2>bx && ay<by2 && ay2>by) { } で当たっているか、否かが分かります。 http://mevius.5ch.net/test/read.cgi/gamedev/1053853069/62
63: 名前は開発中のものです。 [sage] 2005/06/15(水) 16:55:21 ID:J79aeXl5 ●メインキャラクターとマップとの当たり判定は、 □x座標の移動処理の直後に //左上と左下 if(Map[x/32][y/32]!=0 || Map[x/32,(y+height)/32]!=0) { x=(x/32+1)*32; } //右上と右下 if(Map[(x+width)/32,y/32]!=0 || Map[(x+width)/32,(y+height)/32]!=0) { x=(x/32)*32; } で □y座標の移動処理の直後に //左上と右上 If(Map[x/32,y/32]!=0 || Map[(x+31)/32,y/32]!=0) { y=(y/32+1)*32; } //左下と右下 If(Map[x/32,(y+31)/32]!=0 || Map[(x+31)/32,(y+31)/32)!=0 { y=(y/32)*32; } とやればできます。どうしてそうなるのかは、 計算式を参考に図を書いてみれば分かると思います。 http://mevius.5ch.net/test/read.cgi/gamedev/1053853069/63
64: 名前は開発中のものです。 [sage] 2005/06/16(木) 05:05:48 ID:3Ela4Sa6 俺も昔Javascriptで同じようなの作ったことあります。 肝心のゲームは流行らなかったけど。IE対応型RPGゲームね。 閑話休題、質問です。 SLGの六角型HEX画面ってどうやってるの? テーブルで組んでいくと非効率的だし、実際のアルゴリズムも かなり無駄な処理が入ってるのでしょうか? http://mevius.5ch.net/test/read.cgi/gamedev/1053853069/64
65: 名前は開発中のものです。 [sage] 2005/06/16(木) 11:32:14 ID:jcj8vG3U >>64 リストで組んでみては? http://mevius.5ch.net/test/read.cgi/gamedev/1053853069/65
66: 名前は開発中のものです。 [sage] 2005/06/17(金) 22:36:37 ID:L6bXNRcs >>64 普通の2次元配列を用意すると、任意の要素の周辺には8個の要素があるが、 そのうち2個削れば6個になる。 横並びのHEXの場合、削り方には ・右上と右下 ・左上と左下 の2通りあるが、行の隅・奇で決めればよい。 但し、このアドレス計算のオーバーヘッドが無視できない場合、 >>65の言うようにリスト構造か、[6方位][各セル]分の配列を あらかじめ作ってしまう方法も検討するとよい。 http://mevius.5ch.net/test/read.cgi/gamedev/1053853069/66
67: 名前は開発中のものです。 [sage] 2005/06/18(土) 22:38:32 ID:FcEi37Wc >65-66 ? 話が前後するけど移動に関しては↓の「2.マップ移動システム」みたいな 話もある。構造が明快ではなくなるけどXY式より処理は少なくなる。 ttp://members.jcom.home.ne.jp/masimaro/cgi/index.html 横軸分引けば下移動、足せば上移動だから、アクションでも使えるん じゃないかな? http://mevius.5ch.net/test/read.cgi/gamedev/1053853069/67
68: 名前は開発中のものです。 [] 2005/12/22(木) 22:39:36 ID:W7fzD8KK >>60-63が参考になった。 http://mevius.5ch.net/test/read.cgi/gamedev/1053853069/68
69: 名前は開発中のものです。 [] 2005/12/24(土) 08:14:37 ID:mHMu6n/Z 斜めになっている地面、斜めになっている天井とプレイヤーとの当り判定ってどーゆーふうにしたらいいんですかね? 地面は何とかなりそうなんですが天井の方がよくわかりません。 http://mevius.5ch.net/test/read.cgi/gamedev/1053853069/69
70: 名前は開発中のものです。 [sage] 2007/01/27(土) 00:39:30 ID:MBdcNsZ6 ほ http://mevius.5ch.net/test/read.cgi/gamedev/1053853069/70
71: 名前は開発中のものです。 [age] 2007/02/16(金) 14:29:39 ID:SVucWmYy age http://mevius.5ch.net/test/read.cgi/gamedev/1053853069/71
72: 名前は開発中のものです。 [] 2007/02/18(日) 16:29:45 ID:Y8Ki4rPj 某板よりコピペ 多数のオブジェクトの衝突判定を並列化する方法 移動後の座標をボクセルに振り分ける。 1つのボクセル内に存在するキャラを総当たりで衝突判定。 処理の順序としては、移動、振り分け、衝突判定、衝突処理。 これで処理を並列化できる。 もう少し詳しく言えば、衝突判定をしやすくするために、 ボクセルに振り分ける時点で座標値などをボクセルごとの一時バッファに複製しておく。 これにより巨大なバッファをLSにロードする必要がなくなる。 衝突の連鎖については次フレームに回す。それで結果的には再帰処理になる。 普通は移動後に振り分けるというより ボクセル内のオブジェクトを管理するバッファを常設しておいて 移動でボクセル外に出たときだけバッファの更新をするでしょ。 http://mevius.5ch.net/test/read.cgi/gamedev/1053853069/72
73: 名前は開発中のものです。 [sage] 2007/02/24(土) 16:15:49 ID:LTRE8EdM >>69 ・坂を方程式で表す方法 例えば天井がy=-0.1*x+64の直線と考えれば、 atamay<=-0.1*atamax+64なら当たり。 地面をy=-0.1*x+480の直線と考えれば、 asiy>=-0.1*asix+480なら当たり。 atamax,atamayはキャラの頭の座標。asix,asiyはキャラの足の座標。 画面は640*480を想定。 ・小さい矩形に分ける方法 天井も地面も小さい矩形がたくさん集まったものだと考え、それぞれの矩形と の当たり判定を行う。壁(当たり判定がある地形)があるシューティングとかは これでやってるはず。 これなら坂はまっすぐでなくてもかまわない。 ・色で判定する方法 たとえば壁(当たり判定がある地形)は黄色で描くものと決める。atamax,atamay の座標の色を読み黄色なら当たり。RGBのRが128以上なら壁とかでもいい (言語による)。描画処理と当たり判定の順序に気をつける必要がある。地形 を描いて、キャラを描く前に当たり判定を行う。あるいは地形だけ仮想画面に 描くか。 ・矩形との当たり判定 天井をたとえば10度傾いた矩形と考える。この矩形をAとする。Aの中心点 を中心として−10度回転させた矩形をBとする。同じように点(atamax,atamay) を回転させた架空の点の座標を(kakuux,kakuuy)とする。 あとは普通に傾いてない矩形の当たり判定(Bと(kakuux,kakuuy)の当たり判定) を行うだけ。足と地面も同様。サイン、コサイン、アークタンジェントが分かれば できる。 http://mevius.5ch.net/test/read.cgi/gamedev/1053853069/73
74: 名前は開発中のものです。 [] 2007/04/05(木) 02:54:03 ID:UIV+9920 AGE http://mevius.5ch.net/test/read.cgi/gamedev/1053853069/74
75: 名前は開発中のものです。 [sage] 2007/04/05(木) 03:08:36 ID:tWT0PUr7 ビリヤードの玉のように、円形のオブジェクトが 同じ円形のオブジェクトに当たって弾き飛ばすような 移動の仕方って、どうすればいいんでしょうか? http://mevius.5ch.net/test/read.cgi/gamedev/1053853069/75
76: 名前は開発中のものです。 [] 2007/08/27(月) 20:25:07 ID:bCl/miWp http://www.nicovideo.jp/watch/sm429172 http://mevius.5ch.net/test/read.cgi/gamedev/1053853069/76
77: 名前は開発中のものです。 [sage] 2007/08/28(火) 00:03:05 ID:8moxEFVA >>75 衝突距離が出しやすいから矩形よりも簡単だったりする。 接線での水平成分、垂直成分それぞれの速度の変換を行う。高校数学(三角関数)と物理なんだが。 食い込んだ分の補正をするとなお良し。 http://mevius.5ch.net/test/read.cgi/gamedev/1053853069/77
78: 名前は開発中のものです。 [sage] 2007/08/28(火) 01:13:44 ID:oeJOJ4t+ 死後4ヶ月以上経過した75の白骨死体を発見 http://mevius.5ch.net/test/read.cgi/gamedev/1053853069/78
79: 名前は開発中のものです。 [] 2007/09/07(金) 13:37:40 ID:5sK/fkD5 角度を付けた移動ってどうやるんですか?45度だったら x=x+45 y=y+45 でいいんですか? http://mevius.5ch.net/test/read.cgi/gamedev/1053853069/79
80: 名前は開発中のものです。 [] 2007/09/07(金) 13:39:49 ID:H8DGQcSX >>79 なんじゃいそりゃ http://mevius.5ch.net/test/read.cgi/gamedev/1053853069/80
81: 名前は開発中のものです。 [sage] 2007/09/07(金) 14:08:12 ID:ODKwq4Ib 高校の(今は中学か?)教科書嫁 というのはなんなのでヒントだけ x = x + v * cos(angle) y = y + v * sin(angle) http://mevius.5ch.net/test/read.cgi/gamedev/1053853069/81
82: 名前は開発中のものです。 [] 2007/09/07(金) 14:22:42 ID:puv664XK >>79 これは酷いww ワラタ 釣りだろ http://mevius.5ch.net/test/read.cgi/gamedev/1053853069/82
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 117 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.021s