[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 2chのread.cgiへ]
Update time : 05/09 09:02 / Filesize : 199 KB / Number-of Response : 762
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

シューティングゲーム製作技術総合 15機目



1 名前:名前は開発中のものです。 [2008/02/18(月) 12:02:20 ID:JNgyhRqZ]
ゲームプログラマなら誰もが通る、もしくは、通った道。青春の香り?
それは「シューティングゲーム製作」・・・。

このスレでは、そんなシューティングゲームの製作技術や技術の検証、成功談
失敗談笑い話、難易度の設定方法論、多弾の是非などについて語り合いましょう。
もちろんBulletMLなどで弾幕を作成してみたり、自分の作ったシューティングを
晒してみたり、プロジェクトをはじめてみるなどもOK!

ただし、シューティングの未来とか既存のゲームの話題などは、関連する他の
スレでやってくれ。

過去スレ,関連スレは >>2-3で。

28 名前:名前は開発中のものです。 mailto:sage [2008/03/01(土) 21:30:47 ID:MvitneFw]
ライブラリのIrrlichtかLuna使ってる人いる?
これからC++と合わせて作っていこうと思うんだけど
気をつけたほうがいいことってある?

29 名前:名前は開発中のものです。 mailto:sage [2008/03/04(火) 22:27:16 ID:8F9iAQrc]
どっちもイイものだから是非使うといい。俺はDXライブラリ派だけどなw
イアリヒトは3Dゲーには素晴らしいが簡易な2DSTGにはややオーバーキルな
気がしないでもないかもだが。まぁ一度要領覚えちゃえば関係ねーだろ頑張れ

30 名前:名前は開発中のものです。 mailto:sage [2008/03/05(水) 03:08:07 ID:83HLj8hd]
>>29
まとめ見たらなんか良さげなんだけどチュートリアルがさっぱり分からん
DXライブラリは3D対応になったみたいだね

31 名前:名前は開発中のものです。 [2008/03/07(金) 09:37:47 ID:0A/QoggI]
どっちでもいいといえば どっちでもいいのですが、
現在ゲームを作ってまして、敵の動きを実装するのですが、
C言語で関数のポインタを保持し、タイミングが来たら 保持していた関数を呼び出すのと
C++で、基本のクラスを用意し、それから派生してポリモーフィズムで呼び出すのと どちらが良いでしょうか

開発規模は個人なのでそれほど多くならないです、ですがまだ、仕様が決まってないのでなんともいえないのです。

なにが不満かというと
Cだと 関数だらけになってしまう
C++だと 開発に時間がかかったら保守が大変そうなことです

32 名前:名前は開発中のものです。 mailto:sage [2008/03/07(金) 11:17:43 ID:Z9EEIYSH]
498デフォルトの名無しさん2008/03/07(金) 08:49:37

どっちでもいいといえば どっちでもいいのですが、
現在ゲームを作ってまして、敵の動きを実装するのですが、
C言語で関数のポインタを保持し、タイミングが来たら 保持していた関数を呼び出すのと
C++で、基本のクラスを用意し、それから派生してポリモーフィズムで呼び出すのと どちらが良いでしょうか

開発規模は個人なのでそれほど多くならないです、ですがまだ、仕様が決まってないのでなんともいえないのです。

なにが不満かというと
Cだと 関数だらけになってしまう
C++だと 開発に時間がかかったら保守が大変そうなことです

33 名前:名前は開発中のものです。 mailto:sage [2008/03/07(金) 11:30:59 ID:YTaoJ1tk]
どっちでもいいといえば どっちでもいいのですが、
現在ゲームを作ってまして、敵の動きを実装するのですが、
C言語で関数のポインタを保持し、タイミングが来たら 保持していた関数を呼び出すのと
C++で、基本のクラスを用意し、それから派生してポリモーフィズムで呼び出すのと どちらが良いでしょうか

開発規模は個人なのでそれほど多くならないです、ですがまだ、仕様が決まってないのでなんともいえないのです。

なにが不満かというと
Cだと 関数だらけになってしまう
C++だと 開発に時間がかかったら保守が大変そうなことです


34 名前:名前は開発中のものです。 mailto:sage [2008/03/07(金) 11:47:43 ID:aLFEaNMu]
どっちでもいいといえば どっちでもいいのですが、
現在ゲームを作ってまして、敵の動きを実装するのですが、
C言語で関数のポインタを保持し、タイミングが来たら 保持していた関数を呼び出すのと
C++で、基本のクラスを用意し、それから派生してポリモーフィズムで呼び出すのと どちらが良いでしょうか

開発規模は個人なのでそれほど多くならないです、ですがまだ、仕様が決まってないのでなんともいえないのです。

なにが不満かというと
Cだと 関数だらけになってしまう
C++だと 開発に時間がかかったら保守が大変そうなことです

35 名前:名前は開発中のものです。 mailto:sage [2008/03/07(金) 12:50:59 ID:0A/QoggI]
そんなに暇ならこれでも見ていやがれ
www.nicovideo.jp/watch/sm2258805

36 名前:名前は開発中のものです。 [2008/03/07(金) 15:17:26 ID:0A/QoggI]
IDがogg
歌っちゃおうかな〜
UGA
UGAUGAUGA
カラオケ
UGA



37 名前:名前は開発中のものです。 mailto:sage [2008/03/07(金) 20:57:12 ID:0A/QoggI]
けっ素人童貞の群れか ここは

38 名前:名前は開発中のものです。 mailto:sage [2008/03/07(金) 21:10:50 ID:wFu1vrhW]
誰か相手してやれよ

39 名前:名前は開発中のものです。 mailto:sage [2008/03/07(金) 21:43:35 ID:0A/QoggI]
つかえねぇゴミ蟲

40 名前:名前は開発中のものです。 mailto:sage [2008/03/07(金) 21:53:33 ID:ONCQtaX8]
そう言うな・・・・・。
個人製作なんしょ
自分で管理しやすいほうにすればいいんだよ
ゲーム作ってくうちにそういう局面はいくつもある
何通りも何十通りものやり方から一々2chでレスきいてたんじゃ全然進まないぜ
まぁ最近このスレは過疎っているから変なの沸いてるのは許して欲しい

41 名前:名前は開発中のものです。 mailto:sage [2008/03/07(金) 22:14:44 ID:2OqKUBaL]
どっちでもいいんだったら
好きなようにしろとしか言えんしなぁ

42 名前:名前は開発中のものです。 mailto:sage [2008/03/08(土) 00:45:37 ID:LX7lEYpp]
>>37
悪口って、
自分が言われて痛いことをつい言っちゃうんだってさ

43 名前:名前は開発中のものです。 mailto:sage [2008/03/08(土) 01:11:59 ID:YtYPc4bI]
このイケメンどもめ・・・っ!!

44 名前:名前は開発中のものです。 mailto:sage [2008/03/08(土) 03:16:49 ID:l4R4lp4I]
みんなに言われる

45 名前:名前は開発中のものです。 mailto:sage [2008/03/08(土) 10:41:45 ID:N6wkyruI]
弾が消失したときの処理ってどうしてます?
Class Ammo{   //弾のクラス
〜〜        //弾のデータ
static int Num //弾の数
}Ammo[N]

として、弾Ammo[i]について判定して、敵にあたるなどして消失したとき、
Ammo[Ammo::Num]をAmmo[i]に代入し、Ammo::Num--する
で、もう一度(代入後の)Ammo[i]について判定する
としているんですが、リストとか使った方がきれいでしょうか?

46 名前:名前は開発中のものです。 mailto:sage [2008/03/08(土) 12:35:05 ID:KCgRA2Oh]
弾に限らず敵でもなんでも当てはまるな
俺ならリスト使うけど

それよりもAmmoクラスに弾の数を入れるのはちょっとおかしくないか
Ammoを委譲するクラスを作って、その中で弾数を管理した方が・・・

class AmmoContainer {
 std::vector<Ammo*> ammos;
public:
 int get_ammo_num() { return ammos.size(); } // 弾の数を返す
};
とかさ



47 名前:名前は開発中のものです。 mailto:sage [2008/03/08(土) 15:03:14 ID:N6wkyruI]
なるほど、確かにその方が綺麗ですね
自機の弾と敵機の弾でクラスを分けていたのですが、弾のクラスをひとつにして、
MyAmmoContainerとEnemyAmmoContainerのメンバクラスにすることで、区別してみようと思います

ただ、自機や敵機との衝突判定があるので、
>std::vector<Ammo*> ammos;
はprivateじゃなくpublicの方がいいように思うのですが
(privateだと自機クラス、敵機クラスから見えませんよね)

48 名前:名前は開発中のものです。 mailto:sage [2008/03/08(土) 17:05:42 ID:KCgRA2Oh]
わざと見えないようにしてるんだ
提案のための単純な例として書いたから端折ったけど
publicなメソッドとしてアクセサなどを用意するのさ
そこは俺の趣味なので、自分の思うように作るのがいいと思うよ

49 名前:名前は開発中のものです。 mailto:sage [2008/03/08(土) 17:15:28 ID:N6wkyruI]
>>48なるほど
極力メンバ外からメンバ内部を直接参照しない方が、
オブジェクト指向っぽいですし、管理もしやすそうですね
その方向で作り変えてみたいと思います

BASIC人なんで、現状staticな変数使いまくり、
構造体もクラスも最小限なアレなプログラム組んでるもので


50 名前:名前は開発中のものです。 mailto:sage [2008/03/08(土) 23:08:03 ID:KVGlCgOg]
そしてゲッターセッターだらけのウンコクラスを作って
ゲロ吐いて人間は成長する

51 名前:名前は開発中のものです。 mailto:sage [2008/03/09(日) 00:55:27 ID:mx6cSeWU]
友達が作ったクラスにゲットセットが12個以上あって見る気失せた事があるな

52 名前:名前は開発中のものです。 mailto:sage [2008/03/09(日) 01:30:17 ID:jBNp8q5y]
クラスに含むものは最小限にして、
単なる変数の分類代わりにしているのは俺だけか

53 名前:名前は開発中のものです。 mailto:sage [2008/03/09(日) 01:45:53 ID:o3a80veI]
俺なんてC++をBASICみたいな使い方しかしてないぜ。
クラス? なにそれ?

54 名前:名前は開発中のものです。 mailto:sage [2008/03/09(日) 01:51:21 ID:ieFCERy3]
まぁstructでもメンバ関数作れるしな

55 名前:名前は開発中のものです。 mailto:sage [2008/03/09(日) 02:09:14 ID:OuSoXFED]
クラスの中でクラスをインスタンス化できるから、下記のような構造に

ゲーム世界クラス
 ├プレイヤー陣営クラス
 │ ├プレイヤーキャラクラス
 │ └プレイヤーの弾クラス(弾クラスを継承)
 ├敵陣営クラス
 │ ├敵キャラクラス
 │ └敵の弾クラス(弾クラスを継承)
 └当たり判定クラス(staticな関数のみ)
※キャラと弾は全て基本オブジェクトクラスを継承

作りすぎかも。陣営クラスはいらないかなぁ

56 名前:名前は開発中のものです。 mailto:sage [2008/03/09(日) 02:12:36 ID:OuSoXFED]
なお、ふたつの陣営クラスは
弾クラスと弾処理メソッドをメンバに持つ陣営クラスを継承している

可読性が酷いな



57 名前:名前は開発中のものです。 mailto:sage [2008/03/09(日) 22:38:54 ID:ftNyIWMi]
is-aとhas-aは区別したほうがいいって
Rubyのお兄ちゃんも言ってたよ

58 名前:名前は開発中のものです。 mailto:sage [2008/03/09(日) 23:36:37 ID:Uu2b4Hsz]
An apple is a fruit.
→appleはfruitの性質と独自の性質を持つ
→appleクラスはfruitクラスを継承する

A car has an engine.
→carはengineを持つ
→carクラスはメンバengineを持つ

って感じか

59 名前:名前は開発中のものです。 mailto:sage [2008/03/10(月) 17:56:28 ID:/cPILZp3]
>>55
ウチはこうかな

シューティング管理クラス

├Unitリストのリスト
│ ├0リスト (プレイヤーリスト)
│ ├1リスト (自機弾リスト)
│ ├2リスト (エネミーリスト)
│ ├3リスト (敵弾リスト)
│ ├4リスト (エフェクトリスト)
│ ├5リスト (ボム効果リスト)
│ └7リスト (その他特殊用リスト)
└敵出現データ管理クラス

Unitは基本クラスのことね。
プレイヤー陣営とか敵陣営どころかプレイヤークラスや敵クラスの雛形が無い。
弾のクラスはあるけど、シューティング管理クラスから見た場合はUnitを継承していればいいので関係ない。
後々Unitリストの種類を増やすことを想定して、Unitリストをリストで実装してる。



60 名前:名前は開発中のものです。 mailto:sage [2008/03/10(月) 21:45:22 ID:cJuRtDMu]
ホーミング弾ってどうやって作ってる?

プレイヤーオブジェクトからホーミング弾発射
→弾に目標のエネミーオブジェクトのポインタを渡す
→エネミーオブジェクトの座標めがけて飛ぶ
こんな感じかな?

でもこの場合、プレイヤーオブジェクトは
エネミーオブジェクトのリスト(のポインタ)を持っている必要があるな
なんかもう全部オブジェクト外(STG管理クラス)で処理するのが楽に思えてきた

61 名前:名前は開発中のものです。 mailto:sage [2008/03/11(火) 00:45:00 ID:xY1/GxLx]
STG管理クラスをシングルトンにして直接参照する
オブジェクト指向っぽくないけど、一番楽な方法じゃないかな

62 名前:名前は開発中のものです。 mailto:sage [2008/03/11(火) 01:14:13 ID:bHXyTii9]
弾つながりでちょっと質問です

アルゴリズムマニアクスパラ見したんだけど
反射レーザーの反射部分グラフィックってどう処理してるの?

 \/  ‥レーザー
━━━━‥壁
  ↑
  ココ

本だと\の先端と/の後端を壁にめり込ませている
でもそれだとめり込んだ分、全体の長さが縮むと思うんだ

考えたけどわからない・・
反射部分だけ別グラフィック?

63 名前:59です mailto:sage [2008/03/11(火) 01:23:43 ID:bfRz6y+k]
>>60
STG管理クラスのインスタンスと、Unitを継承したインスタンスを相互参照になるように作る。
STG管理クラスに指定したUnitリストを取得できるようにしておく。
(自分の座標と、指定したいUnitリストのindexを引数にし、最も近いUnitを戻り値に返すメンバ関数でも可。
というか使う機会も多いので推奨。)


自弾→敵機の場合、管理クラスのメンバ関数に敵のUnitリストを指定して、最も近いUnitを返してもらえばいいし、
敵弾→自機の場合、同様にして自機のインスタンスを返してもらえばいいよ。

こうすれば目標の座標は取得できるから、後は適当に誘導するような処理を記述すればおk。






64 名前:名前は開発中のものです。 mailto:sage [2008/03/11(火) 14:55:11 ID:tPQccVPP]
>>59=63
そういうクラス構造してると、
たとえばエネミーはメンバ変数HPを要るけど、エフェクトや弾は要らないから、
UnitクラスにHPがあると、エフェクトや弾に無駄なメンバ変数が生産されない?


65 名前:名前は開発中のものです。 mailto:sage [2008/03/11(火) 15:15:48 ID:5rHfGsEC]
エフェクトたんやバレットたんだって命ある生き物です><
 

66 名前:名前は開発中のものです。 mailto:sage [2008/03/11(火) 18:01:29 ID:pc0n0f/t]
正確なレーザーを表示したくてグラディウス外伝が作れるか



67 名前:名前は開発中のものです。 mailto:sage [2008/03/11(火) 18:08:48 ID:RgITvACC]
??

68 名前:名前は開発中のものです。 mailto:sage [2008/03/11(火) 20:18:19 ID:bfRz6y+k]
>>64
ウチの場合Unitは完全な抽象クラス。実装が一つも無い。つまり抽象メンバ関数しかないのさ。
で、メンバはこんな感じ。・・・と思ったが、こっちはC#だからint配列とか戻り値に指定するのは直感的だけど、
C++だとちょっとめんどいな。やり方わからんから適当に察してくれ。


Stg管理クラス GetOwner()
float GetAttackPower()
int GetBelongKind()
VECTOR3 Get/SetPosition()
int[] GetTargetKinds()     // C++の場合はどうすりゃいいんだっけ?覚えてないや。
VECTOR2 GetTouchRange()

void Act()
bool CanExist()
void Fire()
bool CanStand(Unit toucher)
void Indicate()
この5つは上から順番に、
動作管理、
デストラクタ対象判定、
動作管理で射撃判定boolを作っておいてそれを利用した処理を、
描画処理

69 名前:名前は開発中のものです。 mailto:sage [2008/03/11(火) 21:09:11 ID:bfRz6y+k]
4つ目の補足書きわすれたww
CanStand は当たり判定をStg管理クラスのインスタンスが行い、あたった時Stg管理が呼ぶ関数。
たたった相手のインスタンスを引数として渡してくる。

70 名前:名前は開発中のものです。 mailto:sage [2008/03/12(水) 00:33:20 ID:v0/NzbC7]
座標とかの管理はどこで?

71 名前:名前は開発中のものです。 mailto:sage [2008/03/12(水) 05:56:34 ID:/xH4cY3u]
>>70
Stg管理クラスがRectangle(x、y、width、heightで矩形を表す構造体)を何種類か保持してる。
そして各UnitオブジェクトのPositionが、CanExistで矩形の中にいるかを判定してるだけ。

72 名前:名前は開発中のものです。 mailto:sage [2008/03/14(金) 01:20:40 ID:Qya/6v1U]
弾同士の相殺判定つけたら処理落ちしてワロス
いい加減当たり判定の方法を最適化して、
オブジェクトの配列をvectorからlistに変えるべきだな

73 名前:名前は開発中のものです。 mailto:sage [2008/03/14(金) 02:07:01 ID:eNzI/Vyy]
総当りでやってるから重たいってだけの話でねの?
コンテナがvectorだろうがlistだろうが総当りは回避できるべ

と寝る前にエスパーレス

74 名前:名前は開発中のものです。 mailto:sage [2008/03/14(金) 03:36:05 ID:8tJfVTvY]
>>73
とりあえず次のことを行ってないかチェックすべし。
Vector変数 − Vector変数 などの構造体同士の直接演算。ちゃんとメンバをそれぞれ計算するべし。
int4つ分相当超過の構造体/クラスの値返し/値コピー等。 参照渡しのほうが高速。




75 名前:名前は開発中のものです。 mailto:sage [2008/03/14(金) 03:38:41 ID:8tJfVTvY]
レスミス。>>73じゃなくて>>72

76 名前:名前は開発中のものです。 mailto:sage [2008/03/14(金) 09:42:10 ID:wQ66BM6P]
exceptionが弾(破片)同士の衝突判定やってたな
あれは単純なマス目状の空間分割とマルチスレッド化で高速化してるぽい



77 名前:名前は開発中のものです。 mailto:sage [2008/03/14(金) 10:45:56 ID:Qya/6v1U]
しょうもない愚痴にレスくれてdクス

>>73
一応、自機、敵機、自分の弾、敵の弾、アイテム(、エフェクト)で配列を分けてる
>>76のいうように、空間分割した方がいいかもしんない

>>74
大丈夫なはず

78 名前:名前は開発中のものです。 mailto:sage [2008/03/15(土) 00:13:20 ID:FwUg+nN/]
空間分割はともかくマルチスレッドはどうなんだろうか・・・
クアッドコアなら効果ありそうだけど。

79 名前:名前は開発中のものです。 mailto:sage [2008/03/15(土) 01:22:59 ID:lDsY0+o2]
ウチの環境だと、CoreSoloってこともあってかほとんどマルチスレッドは効果が出なかったな。
処理内容によって早かったり、かえって遅くなったりまちまち。
CoreDuoとかだと普通に恩恵が得られそうだけど、そんなPCならGPUもよさそうだしなぁ

80 名前:名前は開発中のものです。 mailto:sage [2008/03/15(土) 02:34:54 ID:Lrw9CI3F]
マルチスレッド興味あるんだが、マルチスレッドを前提にした設計の仕方が思いつかん。
ゲームオブジェクトを非同期に更新する上手い方法なんかないかな。

81 名前:名前は開発中のものです。 mailto:sage [2008/03/15(土) 10:26:44 ID:Q/W+AhbK]
FPSとかは知らないけど、2DSTGでマルチスレッドが有効利用できる
場面って少なく無いか?
総当り系の判定をスレッドに割り振るのも大変そうだし。

ローディング画面でディスクアクセスしながらアニメーション流す位しか
思いつかないんだが、他になんかある?

82 名前:名前は開発中のものです。 mailto:sage [2008/03/15(土) 14:21:34 ID:Lrw9CI3F]
ジオメトリウォーズのエフェクトや背景はマルチスレッドで処理してるとどっかに書いてあったような。

エフェクト類は他のオブジェクトに干渉しないのも多いから、
そういうのはまとめておいて別スレッドで処理すればいいかもしれん。

83 名前:名前は開発中のものです。 mailto:sage [2008/03/17(月) 17:45:56 ID:PCJP7SA4]
>>80
DDR2メモリ4GBが数千円で買える今なら大声で言える

ゲームオブジェクト全てをダブルバッファリングだな
フレーム(t)バッファはリードオンリー
フレーム(t+冲)バッファはライトオンリー
オラ(t+冲) = オラ(t) + (世界(t)がオラに元気を分けた。差分)(冲) + (オラのパワー。差分)(冲)
差分スキームは好きなの使え。ここでは単に一次オイラー

同一フレーム内オブジェクト同士の相互参照は一切ないから
更新順序も排他アクセスも一切不要
メモリが2倍要るという欠点は先述のPC環境なら無視でいいだろ

動作環境
 メインメモリ1GBで動かない時は2GB積んでみてください
 メインメモリ2GBで動かない時は4GB積んでみてください
 …etc…

84 名前:名前は開発中のものです。 mailto:sage [2008/03/17(月) 19:25:31 ID:+53rIC4V]
あなた起動時に全ての画像読み込んでそうですね
俺はちまちまやってます

85 名前:名前は開発中のものです。 mailto:sage [2008/03/17(月) 23:57:27 ID:PCJP7SA4]
富豪厨の俺でも流石にそれはないが
ステージ単位でドカっと読み込んでる
boost::progress_displayのゲージがジリジリと動く様を
ティーカップ片手に優雅に待てば良いのだ

それすら我慢できない低属性プレイヤーはrejectだ

86 名前:名前は開発中のものです。 mailto:sage [2008/03/17(月) 23:58:50 ID:zSjwTnFq]
はいはい、boostスレに帰ろうなw



87 名前:名前は開発中のものです。 mailto:sage [2008/03/18(火) 13:52:14 ID:zi8sXJbl]
敵弾をCPUごとに振り分ければよくね。どんな鬼畜弾幕になるのか知らんが。

88 名前:名前は開発中のものです。 mailto:sage [2008/03/18(火) 14:26:14 ID:kWeEHiH7]
弾同士が干渉しないならそれが良さそうだが、
2DSTGで複数コア使う必要があるような処理って弾同士の干渉くらいな気がする。
>>83は汎用性あって良いかもしれん。

89 名前:名前は開発中のものです。 mailto:sage [2008/03/18(火) 14:34:56 ID:h/08ARO0]
>敵弾をCPUごとに振り分ければよくね

よく分からんが
2DSTGでゲームオブジェクトを並列化しようって話をしてるなら
エフェクトや弾が真っ先に候補に上がるのはごく自然なことだよ
エフェクトや弾同士は相互作用が基本的に無いから実装も単純

90 名前:名前は開発中のものです。 mailto:sae [2008/03/18(火) 14:35:40 ID:h/08ARO0]
レスがかぶっちった

91 名前:名前は開発中のものです。 mailto:sage [2008/03/18(火) 18:20:56 ID:PQFbQVbE]
2Dシューティングを作りたいなと思ってここにたどり着いたのですが、
フリーソフトで何を使えば一番簡単に始められますか?

92 名前:名前は開発中のものです。 mailto:sage [2008/03/18(火) 18:25:47 ID:+UFwrO/v]
HSP

93 名前:名前は開発中のものです。 mailto:sage [2008/03/18(火) 18:31:16 ID:kJphN6cj]
STGビルダー

94 名前:名前は開発中のものです。 mailto:sage [2008/03/18(火) 19:18:33 ID:UdPg6oix]
両方捨てがたいな

95 名前:名前は開発中のものです。 mailto:sage [2008/03/18(火) 20:05:42 ID:PQFbQVbE]
>>92-94
ありがとうございます。
両方調べて出直してきます。

96 名前:名前は開発中のものです。 mailto:sage [2008/03/20(木) 18:13:51 ID:zMjnThxP]
ゲーム中のオブジェクトの基本となるクラスがあるとして、
そのクラスの配列を作り、メンバ変数でオブジェクトの種類を区別するか、
そのクラスへのポインタの配列をつくり、放り込む派生クラスの種類で区別するか
どっちのやりかたで作ってる?

前者の方が複雑なポインタを考えない分、簡単かもしれないけど、
後者の方がオブジェクト指向的に綺麗かなぁ



97 名前:名前は開発中のものです。 mailto:sage [2008/03/21(金) 00:45:59 ID:Y2tGkS1P]
判定アリ背景(接触しても死なない)の処理がとてもめんどうなんですが
こういった処理をしている方、どんな風にやってますか?

98 名前:名前は開発中のものです。 mailto:sage [2008/03/21(金) 07:09:36 ID:zfnOUqWA]
どういう処理にしたいのかもうちょっと詳しく

99 名前:名前は開発中のものです。 mailto:sage [2008/03/21(金) 11:47:21 ID:Hgv+vM2A]
すみません
・接触しても死なない/めり込まない
・縦の壁に対して斜め入力をし続けると、空いてる方向に移動する
・スクロール等で壁が移動する場合、キャラは押される
・画面端に挟まれると死ぬ
こんな感じです
2番目3番目がさっぱりです

100 名前:名前は開発中のものです。 mailto:sage [2008/03/21(金) 13:08:41 ID:kWp5gXWi]
2は横移動先が壁にめり込んでたらめり込んだ分横に押し戻し
3はスクロールしてめり込んだらめり込んだ分スクロール方向に押し戻し
とか

101 名前:名前は開発中のものです。 mailto:sage [2008/03/21(金) 13:44:46 ID:XmgrQpyE]
2は普通に作ればたいてい空いてる方向に移動すると思うぞ
要するに、キー入力方向に壁があったら、その方向の移動量をゼロにする
あと、地形を重視するなら大きなマップの中で視点がスクロールすると考えるといい
一度アクションゲームを作ってみるといいよ
4点とも簡単に解決できる


102 名前:名前は開発中のものです。 mailto:sage [2008/03/21(金) 23:10:22 ID:Y2tGkS1P]
ありあとうございます。

>>100
今やっているのだとそんな感じなのですが、斜めの壁のとき
おかしくなる気がします。X方向とY方向を別々に判定してるんで
順番によっても変になってる気がします。

>>101
その場合先に壁と隣接しているかどうか判定するのでしょうか
今考えてるやり方だとめり込んでから戻すって感じなのですが。

103 名前:名前は開発中のものです。 mailto:sage [2008/03/22(土) 00:30:26 ID:YjjlX8do]
>>102
縦壁だけじゃなく斜め壁もあるのか
そしたら斜めの当たり判定のとり方から説明が必要?

それとも壁の角に斜めにぶつかった場合ってことだろうか
>>100はx方向を先に判定すれば壁の角から横に進むしy方向なら縦だし
どっちにも進みたくないなら別の処理が必要だし

どっちにしてもどういう挙動がおかしい挙動なのか仕様がわからいとなぁ


104 名前:名前は開発中のものです。 mailto:sage [2008/03/22(土) 00:43:49 ID:8Y+Va9zt]
めり込んだら押し戻すで全部解決するはずだがなあ・・・
接触判定がおかしいんじゃないのか?

105 名前:名前は開発中のものです。 mailto:sage [2008/03/22(土) 05:42:47 ID:44zgMaPM]
>>102
「壁ずり」で検索

106 名前:名前は開発中のものです。 mailto:sage [2008/03/23(日) 13:04:48 ID:VlbCWj/H]
当たり判定ってどんな形にしてる?
円形または矩形で統一するのが楽だけど、
円形だと細長い弾やレーザーが、矩形だと斜めの弾の表現が難しい
複数の矩形とか?



107 名前:名前は開発中のものです。 mailto:sage [2008/03/23(日) 13:25:23 ID:d2zOUJKL]
俺は基本的には矩形以外使わないな
ところで斜めの弾ってなんだ?

108 名前:名前は開発中のものです。 mailto:sage [2008/03/23(日) 13:40:58 ID:XpxtelVy]
俺は楕円にしてる

109 名前:名前は開発中のものです。 mailto:sage [2008/03/23(日) 13:43:51 ID:9Ostvv4d]
矩形だけだな
斜めは回転で対応

110 名前:名前は開発中のものです。 mailto:sage [2008/03/23(日) 13:46:52 ID:VlbCWj/H]
斜めの弾=斜め方向に飛ぶ弾、斜め方向に長い弾
矩形だと見た目とずれるし、矩形を回転させるのは手間。楕円も同じ
円形だと、斜め向きでも縦向きでも
尖がった部分に当たり判定が無いのは共通だからまあマシかな、と



111 名前:名前は開発中のものです。 mailto:sage [2008/03/23(日) 14:02:08 ID:DkU5E/rv]
円形で細い弾は作らない。

112 名前:名前は開発中のものです。 mailto:sage [2008/03/23(日) 14:14:31 ID:d2zOUJKL]
>>110
針弾のこと?
矩形回転くらいやんなさいよw
それが面倒なら針弾なんか使わなければいい。
丸い弾だけなら正方形判定だけで出来る。

113 名前:名前は開発中のものです。 mailto:sage [2008/03/23(日) 15:33:05 ID:SMEFBCL/]
俺は斜めだろうと楕円だろうと何だろうと正方形で済ませてるど素人です。
自分でプレイしてて全然気にならないんですが、
やっぱ弾幕シューとかだと重要なんでしょうかね。

自分は緻密な弾避け行為にこだわってないから解んないけど
そういうのが好きな人は違うのだろうか。

114 名前:名前は開発中のものです。 mailto:sage [2008/03/23(日) 15:40:46 ID:ZbRSLUlC]
まぁ、好きな人はそういう仕様まで利用していくから良いと思うよw

115 名前:名前は開発中のものです。 mailto:sage [2008/03/23(日) 15:58:42 ID:4ckcNna2]
弾幕目の敵にしすぎワロタ
弾幕ゲーじゃなくても、見た目と違うあたり判定はどうも嫌いだな
某同人弾幕ゲーは見た目と当たり判定の乖離がひどいが

俺は矩形の当たり判定を複数持たせて近似している
地面とかは円形だとうまく表現できないし
本当はビットマップを走査して判定したいけど、さすがに重過ぎる

116 名前:名前は開発中のものです。 mailto:sage [2008/03/23(日) 16:14:15 ID:XpxtelVy]
線分交差判定か何かでいいんじゃないか



117 名前:名前は開発中のものです。 mailto:sage [2008/03/23(日) 18:40:14 ID:d2zOUJKL]
見た目と違うというが、昔からゲームやってる人間なら
むしろ見た目どおりの判定のほうがおかしく感じるハズだw

118 名前:名前は開発中のものです。 mailto:sage [2008/03/23(日) 20:14:18 ID:2cPCy0BJ]
何回もやってりゃなれるしな

119 名前:名前は開発中のものです。 mailto:sage [2008/03/23(日) 21:27:48 ID:cK7bOzt5]
自機の当たり判定が点なのに
弾の判定が見た目と違うと文句をつけるのもおかしな話だ

120 名前:名前は開発中のものです。 mailto:sage [2008/03/23(日) 22:14:24 ID:/kBQhQQw]
んだな

針弾の当たり判定オブジェクトが矩形(正方形のAABBの数珠繋ぎ)でも
判定が甘め(針弾イメージからAABBが飛び出ない)なら俺は気にならん

だが矩形回転(OBB)が面倒とかいうのも
ちと情けないというか。高校レベルの算数だろ

121 名前:名前は開発中のものです。 mailto:sage [2008/03/23(日) 22:17:16 ID:/kBQhQQw]
あと針弾をAABB数珠繋ぎでやるくらいなら
円の数珠繋ぎのほうがマシな気がしないでもない

122 名前:名前は開発中のものです。 mailto:sage [2008/03/24(月) 00:08:41 ID:+0T08afk]
>>120
×算数 ○数学

回転矩形同士の当たり判定は結構面倒だと思うが
難しいんじゃなくて面倒

123 名前:名前は開発中のものです。 mailto:sage [2008/03/24(月) 00:29:47 ID:Yr94LLRU]
STGスレだから
OBB vs 点 の判定という前提で
簡単と書いたったのゆーしてくらはい

124 名前:名前は開発中のものです。 mailto:sage [2008/03/24(月) 10:01:29 ID:IupNpfeC]
俺は先端に矩形を一個だけww
手抜きサーセンwwwww

125 名前:名前は開発中のものです。 mailto:sage [2008/03/24(月) 11:24:17 ID:mEuEcy6w]
それで良いんじゃね

126 名前:名前は開発中のものです。 mailto:sage [2008/03/24(月) 12:08:38 ID:fwLvQ6Ft]
難しいとか面倒とかでもあるけど
比較的どうでもいい事に処理を食わせたくないという旧い人間な俺。



127 名前:名前は開発中のものです。 mailto:sage [2008/03/24(月) 12:35:06 ID:mEuEcy6w]
たとえば中型のプロペラ機の機体後部とか尾翼とかに判定なんか要らんのですよ
主翼部分だけで良いんです

128 名前:名前は開発中のものです。 mailto:sage [2008/03/24(月) 13:17:05 ID:sI3+U67E]
>>115
どうでもいいけど、確かひとつのオブジェクトに複数の当たり判定を持たせる、
という方法はセガが特許をとっていたはず







[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<199KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef