ゲームのアルゴリズムを教えて管sai

03/05/25 17:57ID:UyCopla6
よろしく
NGNG
あぼーん
NGNG
あぼーん
9名前は開発中のものです。
垢版 |
03/05/26 17:42ID:ICDDOsje
http://www.kenmon.net/

これってアリ?

NGNG
あぼーん
11bloom
垢版 |
03/05/26 19:12ID:z/dia9ET
http://homepage.mac.com/ayaya16/
NGNG
あぼーん
NGNG
あぼーん
14名前は開発中のものです。
垢版 |
03/05/27 18:07ID:9QqJMB3/
しょうがないなぁ、アルゴリズムを解説してやろう。何が聞きたい?
15名前は開発中のものです。
垢版 |
03/05/27 18:10ID:C0Att5Eq
>>14
動的なネットワークを使ったニューラルネットについて教えて菅sai
16名前は開発中のものです。
垢版 |
03/05/27 18:18ID:mP5Y0m2o
--------●○●別れさせ屋●復讐代行業務●○●----------

●騙された・裏切られた・弄ばれた・逃げられた・捨てられた・
相手に誠意が無い・異性問題・家庭内暴力・不倫疑惑解明・人間関係・金銭トラブル★
●  http://www.blacklist.jp/i 【ファイルにコピーして開いて下さい】
別離工作・情報収集・トラブル対策・ボディガ―ド・等々!
●真剣にお悩みの方、安心してご相談下さい。解決へ導きます★
□■各種データ・電話番号調査・住民票・戸籍謄本など調査■□
ジャンプしない場合にはファイルにURLをコピーして開いて下さい★☆★
●  http://www.blacklist.jp/i  ●別れさせ屋・特殊工作・調査全般
●  http://www.blacklist.jp/   ●復讐代行・人生相談・駆け込み寺
--------------------------
リンク⇒ http://okudaira.co.jp 殺人事件簿!!!●●●
●リンク広告主大募集・詳しくは復讐屋まで!!!
17名前は開発中のものです。
垢版 |
03/05/27 18:19ID:mP5Y0m2o
--------●○●別れさせ屋●復讐代行業務●○●----------

●騙された・裏切られた・弄ばれた・逃げられた・捨てられた・
相手に誠意が無い・異性問題・家庭内暴力・不倫疑惑解明・人間関係・金銭トラブル★
●  http://www.blacklist.jp/i 【ファイルにコピーして開いて下さい】
別離工作・情報収集・トラブル対策・ボディガ―ド・等々!
●真剣にお悩みの方、安心してご相談下さい。解決へ導きます★
□■各種データ・電話番号調査・住民票・戸籍謄本など調査■□
ジャンプしない場合にはファイルにURLをコピーして開いて下さい★☆★
●  http://www.blacklist.jp/i  ●別れさせ屋・特殊工作・調査全般
●  http://www.blacklist.jp/   ●復讐代行・人生相談・駆け込み寺
--------------------------k
リンク⇒ http://okudaira.co.jp 殺人事件簿!!!●●●
●リンク広告主大募集・詳しくは復讐屋まで!!!
NGNG
あぼーん
NGNG
あぼーん
NGNG
あぼーん
21bloom
垢版 |
03/05/28 23:11ID:0DkdaWUV
http://homepage.mac.com/ayaya16/
NGNG
あぼーん
NGNG
あぼーん
NGNG
あぼーん
NGNG
あぼーん
26動画直リン
垢版 |
03/05/30 17:12ID:7vJSTHsa
http://homepage.mac.com/hitomi18/
NGNG
あぼーん
NGNG
あぼーん
NGNG
あぼーん
NGNG
あぼーん
NGNG
あぼーん
NGNG
あぼーん
33直リン
垢版 |
03/06/01 19:11ID:HxFG+SP/
http://homepage.mac.com/yuuka20/
34名前は開発中のものです。
垢版 |
03/06/01 20:12ID:iOOUHdXU
★オ○ンコは地球を救う★
http://yahooo.s2.x-beat.com/linkvp/linkvp.html
NGNG
あぼーん
NGNG
あぼーん
37YahooBB219001164144.bbtec.net
垢版 |
03/06/02 15:45ID:+FileYkg
これは? http://.jp/staff/in.cgi?id=10528
NGNG
あぼーん
39名前は開発中のものです。
垢版 |
03/06/03 08:17ID:4op8mUZv
http://homepage3.nifty.com/coco-nut/
キタ━━━━(゚∀゚)━━━━!!
http://www.k-514.com/
NGNG
あぼーん
NGNG
あぼーん
NGNG
あぼーん
NGNG
あぼーん
NGNG
あぼーん
NGNG
あぼーん
NGNG
あぼーん
03/06/06 12:30ID:PTApivoG
現在、荒らしによってこの板の利用が困難になっているため、避難所を作成しています。
出来ればこちらに移動するのをお勧めします。

ゲ製作技術板(避難所)
http://bbs.gamdev.org/gamedev/

-------------専用ブラウザ(OpenJane)への登録方法-------------
板一覧ウィンドウのカテゴリのフォルダを右クリック→ここに板を追加
NGNG
あぼーん
NGNG
あぼーん
NGNG
あぼーん
NGNG
あぼーん
NGNG
あぼーん
NGNG
あぼーん
54名前は開発中のものです。
垢版 |
03/06/13 21:22ID:NCwo/Gzi
みてね〜♪
http://www1.free-city.net/home/s-rf9/page003.html
55山崎 渉
垢版 |
03/08/15 08:34ID:KFL+te0G
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン
56名前は開発中のものです。
垢版 |
04/07/03 19:23ID:E3a3uuaW
漏れら極悪非道のage武田騎馬ブラザーズ!
ネタもないのにageてやるからな!
 ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ∧_ヘ      ∧_ヘ
  / \〇ノゝ    / \〇ノゝ age 
 /三/´∀`)∩ ∩/´∀`)  age
 (つ  丿    (   ⊂) age
  ( ヽノ      ヽ/  )   age
  し(_)      (_)J
2005/05/11(水) 09:55:39ID:QbGDxSga
こんなスレッドまで来て、ゲームアルゴリズムを真剣に
学びたい人はいないとは、思うけど、

単純な2Dシューティング(インベーダー程度)なら
配列、探索アルゴリズム、リスト、構造体
テーブル化、ソートアルゴリズム、フラグ、画像転送、
矩形の当たり判定

アドベンチャーゲームなら
自作スクリプトの字句解析、構文解析(lac,lex)
簡単な暗号化、圧縮アルゴリズム、バイナリファイル操作
画像エフェクト系(拡大縮小回転、ワイプ、ラスタースクロール、
α値操作、他いろいろ)
が分かれば作れると思います。

たぶん。
58名前は開発中のものです。
垢版 |
2005/05/23(月) 00:26:42ID:MvQZceoD
59名前は開発中のものです。
垢版 |
2005/06/14(火) 17:02:51ID:9FWtswMc
だれか、2Dアクションゲームの、スクロールとキャラクタ・当たり判定の
管理について教えてくださいな。
2005/06/15(水) 15:58:31ID: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)
   }
  }
}
2005/06/15(水) 16:02:04ID: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座標
2005/06/15(水) 16:54:50ID:J79aeXl5
当たり判定は、いろいろな方法(ベクトル、三平方、色判定など)があるけども、
メインキャラクターが発射した弾と敵キャラとの当たり判定なら、単純に矩形(くけい)の
当たり判定で済みます。
●弾の座標を(ax,ay)、敵の座標を(bx,by)とした場合、
if(ax<bx2 && ax2>bx && ay<by2 && ay2>by)
{
  
}
で当たっているか、否かが分かります。
2005/06/15(水) 16:55:21ID: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;
  }

とやればできます。どうしてそうなるのかは、
計算式を参考に図を書いてみれば分かると思います。
2005/06/16(木) 05:05:48ID:3Ela4Sa6
俺も昔Javascriptで同じようなの作ったことあります。
肝心のゲームは流行らなかったけど。IE対応型RPGゲームね。

閑話休題、質問です。
SLGの六角型HEX画面ってどうやってるの?
テーブルで組んでいくと非効率的だし、実際のアルゴリズムも
かなり無駄な処理が入ってるのでしょうか?
2005/06/16(木) 11:32:14ID:jcj8vG3U
>>64 リストで組んでみては?
2005/06/17(金) 22:36:37ID:L6bXNRcs
>>64
普通の2次元配列を用意すると、任意の要素の周辺には8個の要素があるが、
そのうち2個削れば6個になる。
横並びのHEXの場合、削り方には
・右上と右下
・左上と左下
の2通りあるが、行の隅・奇で決めればよい。

但し、このアドレス計算のオーバーヘッドが無視できない場合、
>>65の言うようにリスト構造か、[6方位][各セル]分の配列を
あらかじめ作ってしまう方法も検討するとよい。
2005/06/18(土) 22:38:32ID:FcEi37Wc
>65-66
d

話が前後するけど移動に関しては↓の「2.マップ移動システム」みたいな
話もある。構造が明快ではなくなるけどXY式より処理は少なくなる。
ttp://members.jcom.home.ne.jp/masimaro/cgi/index.html

横軸分引けば下移動、足せば上移動だから、アクションでも使えるん
じゃないかな?
68名前は開発中のものです。
垢版 |
2005/12/22(木) 22:39:36ID:W7fzD8KK
>>60-63が参考になった。
69名前は開発中のものです。
垢版 |
2005/12/24(土) 08:14:37ID:mHMu6n/Z
斜めになっている地面、斜めになっている天井とプレイヤーとの当り判定ってどーゆーふうにしたらいいんですかね?
地面は何とかなりそうなんですが天井の方がよくわかりません。
2007/01/27(土) 00:39:30ID:MBdcNsZ6
2007/02/16(金) 14:29:39ID:SVucWmYy
age
72名前は開発中のものです。
垢版 |
2007/02/18(日) 16:29:45ID:Y8Ki4rPj
某板よりコピペ
多数のオブジェクトの衝突判定を並列化する方法


移動後の座標をボクセルに振り分ける。
1つのボクセル内に存在するキャラを総当たりで衝突判定。

処理の順序としては、移動、振り分け、衝突判定、衝突処理。
これで処理を並列化できる。

もう少し詳しく言えば、衝突判定をしやすくするために、
ボクセルに振り分ける時点で座標値などをボクセルごとの一時バッファに複製しておく。
これにより巨大なバッファをLSにロードする必要がなくなる。

衝突の連鎖については次フレームに回す。それで結果的には再帰処理になる。

普通は移動後に振り分けるというより
ボクセル内のオブジェクトを管理するバッファを常設しておいて
移動でボクセル外に出たときだけバッファの更新をするでしょ。
2007/02/24(土) 16:15:49ID: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)の当たり判定)
 を行うだけ。足と地面も同様。サイン、コサイン、アークタンジェントが分かれば
 できる。
74名前は開発中のものです。
垢版 |
2007/04/05(木) 02:54:03ID:UIV+9920
AGE
2007/04/05(木) 03:08:36ID:tWT0PUr7
ビリヤードの玉のように、円形のオブジェクトが
同じ円形のオブジェクトに当たって弾き飛ばすような
移動の仕方って、どうすればいいんでしょうか?
76名前は開発中のものです。
垢版 |
2007/08/27(月) 20:25:07ID:bCl/miWp
http://www.nicovideo.jp/watch/sm429172
2007/08/28(火) 00:03:05ID:8moxEFVA
>>75
衝突距離が出しやすいから矩形よりも簡単だったりする。
接線での水平成分、垂直成分それぞれの速度の変換を行う。高校数学(三角関数)と物理なんだが。
食い込んだ分の補正をするとなお良し。
2007/08/28(火) 01:13:44ID:oeJOJ4t+
死後4ヶ月以上経過した75の白骨死体を発見
79名前は開発中のものです。
垢版 |
2007/09/07(金) 13:37:40ID:5sK/fkD5
角度を付けた移動ってどうやるんですか?45度だったら
x=x+45
y=y+45
でいいんですか?
80名前は開発中のものです。
垢版 |
2007/09/07(金) 13:39:49ID:H8DGQcSX
>>79
なんじゃいそりゃ
2007/09/07(金) 14:08:12ID:ODKwq4Ib
高校の(今は中学か?)教科書嫁

というのはなんなのでヒントだけ

x = x + v * cos(angle)
y = y + v * sin(angle)
82名前は開発中のものです。
垢版 |
2007/09/07(金) 14:22:42ID:puv664XK
>>79

これは酷いww
ワラタ

釣りだろ
83名前は開発中のものです。
垢版 |
2007/09/07(金) 23:45:15ID:ZuhXBmED
せめて足すんぢゃなくてXょうゃ…
75は角度なんでそのまま使ったらヤバいょうな気がする;
角度たら360°ダロ?
75÷360ぽくね!?
少数点だし…ナンカ上手く曲がりソウぢゃん!?

こんな感じでゲームを創ってたアノ頃………
(涙)
2007/09/08(土) 13:11:56ID:ZvPWIcCC
まぁいろいろトライするのが思い出になるんだよな。
2007/09/08(土) 13:34:41ID:x0k7gG8Z
Deg と Rad を知らなかったあの頃
2007/09/12(水) 20:10:03ID:u002ijju
>>79
#define RAD 3.14159/180
って定義しておいて、

x+=cos(45*RAD)*speed;
y-=sin(45*RAD)*speed;

でいけると思うよ。
87名前は開発中のものです。
垢版 |
2007/11/18(日) 11:26:33ID:kpbdlgGK
質問させて下さい。
ユーザーに手書きで図形を書かせ、
それが丸なのか四角形なのか三角形なのかを判別したいのですが
どのようなアルゴリズムが考えられますでしょうか?
2007/11/18(日) 11:37:26ID:RmDGoqPy
ふたつかんがえた。もちろん使ったことはない。
・描画速度の変化をみる
(角を描くときに速度が落ちるので、2回落ち込むと三角形とか)
・描かれた線の接線のむきの分布みる
(三方向にピークが出ると三角形、とか)
2007/11/18(日) 21:55:34ID:VoyUbEfi
・グリッドを作って通過するポイントで判定(文字認識?)
・マウスの移動方向をxyの変化量で8つに分ける(マウスジェスチャ?)
俺も作ろっと
2007/11/25(日) 15:24:43ID:DZ368X4a
NN
2008/02/11(月) 21:08:51ID:3BJFJrZO
縦スクロールシューティングゲームを作ってるんですが、
敵の出現のやり方がいまいち分かりません。
今までは、マップを描画したときに、
敵の情報があったら、同時に表示して、その敵の情報を削除
してました。
何か、いいアルゴリズムがありましたら、教えてください。
2008/02/12(火) 07:56:35ID:qFBBafcB
#define MAX_X 20
typedef struct _Map{
  int ShowX;
  int ShowY;
  int Type;
  int Hp;
  int X;
  int Y;
}_Map;
_Map Map[MAX_X][500];
void ShowEnemy(int ScY,MapChip Map)
{
  for(i=0;i<MAX_X;i++)
  {
    if(ScrollY==Map[i][ScrollY/16].ShowY)
    {
      switch(Map[i][Scroll/16].EnemyNuber)
      {
        case 1:
          CreateEnemy(i*16-ScrollX,0,1,3);
          break;
        case 2:
          CreateEnemy(i*16-ScrollX,0,2,5);
          break;
        …
        default:
          break;
      }
    }
  }
}
2008/02/12(火) 08:03:29ID:qFBBafcB
ちなみに、CreateEnemyの引数は、X座標、Y座標、敵番号、耐久力だ。
94名前は開発中のものです。
垢版 |
2008/02/12(火) 11:55:40ID:5WyTfMV5
 
2008/02/18(月) 23:07:10ID:YtDwWNhg
>91
発生する時刻と座標のテーブル持ってればいいんじゃないの?
2008/03/12(水) 21:02:38ID:K0/YrLVn
今、C言語でシューティングゲーム作ってるんですが、
連続した弾の出し方が分かりません。教えてください。
専門学校の先生には、配列を使えと言われたのですが、
よく分かりません。

今、作成している途中のソースコードを書きます。

void Shot(void)
{
  for(i=0;i<100;i++)
  {
    if(Bullet[i].flag == 0 && Bullet[i].type == 0)
    {
      Bullet[i].flag = 1 ;
      Bullet[i].x = (Jiki.x+Jiki.x+Jiki.width) / 2 ;
      Bullet[i].y = Jiki.y ;
    }
  }
}

void KeyCheck(void)
{
  if(GetAsyncKeyState(VK_SPACE)<0){ Shot(); }
}
2008/03/13(木) 08:25:57ID:3HHTp0zC
それだと一回ボタン押したら毎回100発の弾が重なって発射されるけど、それでいいの?
どうしたいの?
9896
垢版 |
2008/03/13(木) 16:41:36ID:xt6KljbL
>>97 さん
ある程度、間隔を置いて、発射させたいんですぅ。
毎回、100発の弾が重なるのは、耐え難い事実なんです。
2008/03/13(木) 22:54:45ID:Bu/r75Um
大金を払い専門的な職業訓練を受けているはずの学生がこんなことすら自力で出来ない
「耐え難い事実」というならむしろこれw
2008/03/13(木) 23:13:35ID:3HHTp0zC
>>98
60フレーム/秒でKeyCheckは毎フレーム呼ばれるの?
101名前は開発中のものです。
垢版 |
2008/03/14(金) 17:31:51ID:46wpxx7U
>>96
if文の中の最後にbreak;入れると幸せになれるぞ
102名前は開発中のものです。
垢版 |
2008/03/19(水) 01:43:05ID:bv/3obIk
適切なスレが見つからないのでここで質問させてください。
携帯電話アプリのシューティングを作っているのですが、
2D描画の処理を軽くする方法がわかりません。
個々のgifファイルを軽量化してみたりもしましたが、効果があるのかどうか分からないくらいです。
クリッピング領域を指定する方法もあるようですが、いまいちよく分かりません。
他に効果的な方法は無いものでしょうか。
2008/03/19(水) 09:04:08ID:a6WC8gIo
>>102
画像の数を減らして、同じ画像を使いまわすとか、
1秒間あたりの描画回数(FPS)を減らすとか。
あとは、一画面に同時に出現するオブジェクトの数を減らすとか、
背景のスクロールをあきらめるとか、

あと、ベンチマークツールがあればそれを使って、
ボトルネックとなっている処理(メソッド/関数)を分析してみるとか。
2008/03/19(水) 11:15:27ID:MFS90Jv9
>>102
プログラム実行中は結局ビットマップでメモリに保持させてるから効果がないと思うんだが…
予め画像のパレットを全て一緒の256色にしといてパレットを読み込ませないと。
105102
垢版 |
2008/03/19(水) 14:33:54ID:bv/3obIk
>>103
ありがとうございます。
>同じ画像を使いまわす
試してみようと思います。
これは一箇所に画像を読み込んでおいて、
その画像を使うオブジェクトが描画のたびにそこを参照するようにする、
ということで良いんでしょうか?
他のは、ゲームのバランス調整と平行して考えてみます。

>>102
すいません。そういうことに理解が無いもので・・・。
>予め画像のパレットを全て一緒の256色にしといてパレットを読み込ませないと。
これは良く使われる手法なのでしょうか?
それともgifファイルの軽量化に意味を持たせるための方法なのでしょうか?
どういう風に実装すれば良いのかさっぱり分からないので、後者なら諦めます・・・。
ありがとうございました。
106名前は開発中のものです。
垢版 |
2008/05/16(金) 17:34:25ID:ciTJLGhI
大きな矩形の布地から、サイズの違う小さな矩形の布地を切り取る時、
余りの布面積が一番少なくなるよう、切り取る(小さな矩形を並べる)
アルゴリズムについて書かれた書籍、HP等をご存知でしたら、
教えて下さい。

よろしくお願いします。
107106
垢版 |
2008/05/19(月) 13:08:26ID:rhmqn4vd
↑この質問取り下げます。失礼しました。
レスを投稿する

5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況