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

このエントリーをはてなブックマークに追加
1名前は開発中のものです。
ゲームプログラマなら誰もが通る、もしくは、通った道。青春の香り?
それは「シューティングゲーム製作」・・・。

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

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

過去スレ,関連スレは >>2-3で。
2名前は開発中のものです。:2008/02/18(月) 12:02:51 ID:JNgyhRqZ
3名前は開発中のものです。:2008/02/18(月) 12:03:26 ID:JNgyhRqZ
■関連スレ
シューティングツクールXPを待ち続けるスレ Part5
http://pc11.2ch.net/test/read.cgi/gamedev/1192682311/
PCで出来る2Dシューティング(STG)総合スレ46
http://game13.2ch.net/test/read.cgi/gamestg/1203080227/

■他
WIKI(シューティングゲーム製作技術総合)
http://gamdev.org/w/?%5B%5B%A5%B7%A5%E5%A1%BC%A5%C6%A5%A3%A5%F3%A5%B0%A5%B2%A1%BC%A5%E0%C0%BD%BA%EE%B5%BB%BD%D1%C1%ED%B9%E7%5D%5D
シューティングゲーム製作技術総合スレまとめページ
http://pcstg.s59.xrea.com/tech.html
ゲムデヴあぷろだ
http://gamdev.org/up/upload.php?page=1
4名前は開発中のものです。:2008/02/18(月) 23:16:44 ID:zWEXYg7q
OTU
5名前は開発中のものです。:2008/02/19(火) 20:36:58 ID:Ny9EkvWK
>>1
□■□ ...,,/
■□■ ̄",  こ、これは乙だからね!
□□□乙/
     /
6名前は開発中のものです。:2008/02/19(火) 21:49:21 ID:HRvwIV17
なにこれw
7名前は開発中のものです。:2008/02/20(水) 06:27:21 ID:MoMRMkKk
ボスBGMが同じSTGが多いのって何で?
8名前は開発中のものです。:2008/02/20(水) 11:59:28 ID:YGACkjxp
何でそんなバカなこと聞くの
9名前は開発中のものです。:2008/02/20(水) 19:07:17 ID:sOFi2y5g
作るのがめんどくさいからにきまってるだろ
10名前は開発中のものです。:2008/02/21(木) 00:41:44 ID:Kr7qaAeH
ボスBGMが無いSTGだってたくさんあるのに
そもそもボスがいないSTGもたくさんある
11名前は開発中のものです。:2008/02/21(木) 01:34:24 ID:+oFRGJcA
ステージは長い。つまりステージBGMは長く聞く。
ボス戦は比較的短い。つまりボスBGMを聞く時間は短い。

どっちを重視するか、の問題。


俺的参考例
ステージBGMが多く、ボスBGMがひとつのSTG……グラディウス
ステージBGMがひとつで、ボスBGMが多いSTG ……スペースハリアー
ステージBGMも、ボスBGMも多いSTG    ……ダライアス
12名前は開発中のものです。:2008/02/21(木) 17:37:52 ID:qRMbOmAJ
STGにしては最近で、ボスも演出こだわってそうなゲームも
ボスBGMが同じだったりするし
なんか心理学的な理由があるんじゃね?
13名前は開発中のものです。:2008/02/21(木) 23:31:35 ID:wKknMhB+
RPGの雑魚戦の曲とかね
違和感のある曲だと辛い辛いw
14名前は開発中のものです。:2008/02/23(土) 17:29:00 ID:xkbF394I
BGMは場面に関連付けるものだから
ボスとか道中とか関係ない
15名前は開発中のものです。:2008/02/23(土) 18:15:46 ID:gNTursnn
ボスの個体のテーマ曲があってもいいじゃないかと思ったこともある。
道中は面の曲でライバルならライバルの曲、再登場するたびにアレンジが変わったりさ。
16名前は開発中のものです。:2008/02/23(土) 18:43:21 ID:50ibBEMg
特攻空母ベルーガ
17名前は開発中のものです。:2008/02/23(土) 21:17:44 ID:50ibBEMg
18名前は開発中のものです。:2008/02/24(日) 00:02:57 ID:E3UBAVWs
>>14
日本語でおk
19名前は開発中のものです。:2008/02/24(日) 05:21:56 ID:cYgwQ17A
めんどうくさい。
20名前は開発中のものです。:2008/02/24(日) 16:35:26 ID:bNMmtgLE
>>18
BGMはどう使ってもいいのではないか
道中もボスも共通のBGMにしてしまうのもアリ
道中にもボスにもいくつものBGMを使うのもアリ
21名前は開発中のものです。:2008/02/24(日) 16:57:23 ID:WAJduLb6
>>20
そういう意味か 把握した
22名前は開発中のものです。:2008/02/24(日) 17:32:07 ID:1n7OxH2P
釣りじゃないなら言葉遣い自重
23名前は開発中のものです。:2008/02/25(月) 22:08:07 ID:muaGgCrL
>>22
日本語で(ry
24名前は開発中のものです。:2008/02/28(木) 08:07:55 ID:R9ZA919j
前スレ落ちてたのか…。
25名前は開発中のものです。:2008/02/29(金) 15:22:02 ID:G8Sp5cnc
好き嫌いによると思うけど・・・
ファミコンのギャラクシャンみたいなゲームを作るとしたら
オブジェクトは
自機。敵。自ショット。敵ショット。ってあるけど
classはどういう風に定義します?
今まで
自機クラス、敵クラス、自ショットクラス、敵ショットクラスってやってたけど流石に細かすぎかと思って
どうすれば、いいのかなと思って質問させていただきます
ていうか、ゲームの規模によっても分け方違ったりするんでしょうか
26名前は開発中のものです。:2008/02/29(金) 15:39:14 ID:3F0w0otU
普通に全部分けるだろう上皇
煩雑に見えるかもしれないけど、大規模になるにしたがって恩恵が出てくるよ。
27名前は開発中のものです。:2008/02/29(金) 15:54:30 ID:G8Sp5cnc
そうなんですか。。。。ありがとうございます。
聞かなかったらステージクラス作って全部突っ込んでたかもw
28名前は開発中のものです。:2008/03/01(土) 21:30:47 ID:MvitneFw
ライブラリのIrrlichtかLuna使ってる人いる?
これからC++と合わせて作っていこうと思うんだけど
気をつけたほうがいいことってある?
29名前は開発中のものです。:2008/03/04(火) 22:27:16 ID:8F9iAQrc
どっちもイイものだから是非使うといい。俺はDXライブラリ派だけどなw
イアリヒトは3Dゲーには素晴らしいが簡易な2DSTGにはややオーバーキルな
気がしないでもないかもだが。まぁ一度要領覚えちゃえば関係ねーだろ頑張れ
30名前は開発中のものです。: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名前は開発中のものです。:2008/03/07(金) 11:17:43 ID:Z9EEIYSH
498デフォルトの名無しさん2008/03/07(金) 08:49:37

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

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

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

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

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

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

なにが不満かというと
Cだと 関数だらけになってしまう
C++だと 開発に時間がかかったら保守が大変そうなことです
35名前は開発中のものです。:2008/03/07(金) 12:50:59 ID:0A/QoggI
そんなに暇ならこれでも見ていやがれ
http://www.nicovideo.jp/watch/sm2258805
36名前は開発中のものです。:2008/03/07(金) 15:17:26 ID:0A/QoggI
IDがogg
歌っちゃおうかな〜
UGA
UGAUGAUGA
カラオケ
UGA
37名前は開発中のものです。:2008/03/07(金) 20:57:12 ID:0A/QoggI
けっ素人童貞の群れか ここは
38名前は開発中のものです。:2008/03/07(金) 21:10:50 ID:wFu1vrhW
誰か相手してやれよ
39名前は開発中のものです。:2008/03/07(金) 21:43:35 ID:0A/QoggI
つかえねぇゴミ蟲
40名前は開発中のものです。:2008/03/07(金) 21:53:33 ID:ONCQtaX8
そう言うな・・・・・。
個人製作なんしょ
自分で管理しやすいほうにすればいいんだよ
ゲーム作ってくうちにそういう局面はいくつもある
何通りも何十通りものやり方から一々2chでレスきいてたんじゃ全然進まないぜ
まぁ最近このスレは過疎っているから変なの沸いてるのは許して欲しい
41名前は開発中のものです。:2008/03/07(金) 22:14:44 ID:2OqKUBaL
どっちでもいいんだったら
好きなようにしろとしか言えんしなぁ
42名前は開発中のものです。:2008/03/08(土) 00:45:37 ID:LX7lEYpp
>>37
悪口って、
自分が言われて痛いことをつい言っちゃうんだってさ
43名前は開発中のものです。:2008/03/08(土) 01:11:59 ID:YtYPc4bI
このイケメンどもめ・・・っ!!
44名前は開発中のものです。:2008/03/08(土) 03:16:49 ID:l4R4lp4I
みんなに言われる
45名前は開発中のものです。: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名前は開発中のものです。: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名前は開発中のものです。:2008/03/08(土) 15:03:14 ID:N6wkyruI
なるほど、確かにその方が綺麗ですね
自機の弾と敵機の弾でクラスを分けていたのですが、弾のクラスをひとつにして、
MyAmmoContainerとEnemyAmmoContainerのメンバクラスにすることで、区別してみようと思います

ただ、自機や敵機との衝突判定があるので、
>std::vector<Ammo*> ammos;
はprivateじゃなくpublicの方がいいように思うのですが
(privateだと自機クラス、敵機クラスから見えませんよね)
48名前は開発中のものです。:2008/03/08(土) 17:05:42 ID:KCgRA2Oh
わざと見えないようにしてるんだ
提案のための単純な例として書いたから端折ったけど
publicなメソッドとしてアクセサなどを用意するのさ
そこは俺の趣味なので、自分の思うように作るのがいいと思うよ
49名前は開発中のものです。:2008/03/08(土) 17:15:28 ID:N6wkyruI
>>48なるほど
極力メンバ外からメンバ内部を直接参照しない方が、
オブジェクト指向っぽいですし、管理もしやすそうですね
その方向で作り変えてみたいと思います

BASIC人なんで、現状staticな変数使いまくり、
構造体もクラスも最小限なアレなプログラム組んでるもので
50名前は開発中のものです。:2008/03/08(土) 23:08:03 ID:KVGlCgOg
そしてゲッターセッターだらけのウンコクラスを作って
ゲロ吐いて人間は成長する
51名前は開発中のものです。:2008/03/09(日) 00:55:27 ID:mx6cSeWU
友達が作ったクラスにゲットセットが12個以上あって見る気失せた事があるな
52名前は開発中のものです。:2008/03/09(日) 01:30:17 ID:jBNp8q5y
クラスに含むものは最小限にして、
単なる変数の分類代わりにしているのは俺だけか
53名前は開発中のものです。:2008/03/09(日) 01:45:53 ID:o3a80veI
俺なんてC++をBASICみたいな使い方しかしてないぜ。
クラス? なにそれ?
54名前は開発中のものです。:2008/03/09(日) 01:51:21 ID:ieFCERy3
まぁstructでもメンバ関数作れるしな
55名前は開発中のものです。:2008/03/09(日) 02:09:14 ID:OuSoXFED
クラスの中でクラスをインスタンス化できるから、下記のような構造に

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

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

可読性が酷いな
57名前は開発中のものです。:2008/03/09(日) 22:38:54 ID:ftNyIWMi
is-aとhas-aは区別したほうがいいって
Rubyのお兄ちゃんも言ってたよ
58名前は開発中のものです。: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名前は開発中のものです。:2008/03/10(月) 17:56:28 ID:/cPILZp3
>>55
ウチはこうかな

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

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

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

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

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

でもこの場合、プレイヤーオブジェクトは
エネミーオブジェクトのリスト(のポインタ)を持っている必要があるな
なんかもう全部オブジェクト外(STG管理クラス)で処理するのが楽に思えてきた
61名前は開発中のものです。:2008/03/11(火) 00:45:00 ID:xY1/GxLx
STG管理クラスをシングルトンにして直接参照する
オブジェクト指向っぽくないけど、一番楽な方法じゃないかな
62名前は開発中のものです。:2008/03/11(火) 01:14:13 ID:bHXyTii9
弾つながりでちょっと質問です

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

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

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

考えたけどわからない・・
反射部分だけ別グラフィック?
6359です:2008/03/11(火) 01:23:43 ID:bfRz6y+k
>>60
STG管理クラスのインスタンスと、Unitを継承したインスタンスを相互参照になるように作る。
STG管理クラスに指定したUnitリストを取得できるようにしておく。
(自分の座標と、指定したいUnitリストのindexを引数にし、最も近いUnitを戻り値に返すメンバ関数でも可。
というか使う機会も多いので推奨。)


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

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




64名前は開発中のものです。:2008/03/11(火) 14:55:11 ID:tPQccVPP
>>59=63
そういうクラス構造してると、
たとえばエネミーはメンバ変数HPを要るけど、エフェクトや弾は要らないから、
UnitクラスにHPがあると、エフェクトや弾に無駄なメンバ変数が生産されない?
65名前は開発中のものです。:2008/03/11(火) 15:15:48 ID:5rHfGsEC
エフェクトたんやバレットたんだって命ある生き物です><
 
66名前は開発中のものです。:2008/03/11(火) 18:01:29 ID:pc0n0f/t
正確なレーザーを表示したくてグラディウス外伝が作れるか
67名前は開発中のものです。:2008/03/11(火) 18:08:48 ID:RgITvACC
??
68名前は開発中のものです。: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名前は開発中のものです。:2008/03/11(火) 21:09:11 ID:bfRz6y+k
4つ目の補足書きわすれたww
CanStand は当たり判定をStg管理クラスのインスタンスが行い、あたった時Stg管理が呼ぶ関数。
たたった相手のインスタンスを引数として渡してくる。
70名前は開発中のものです。:2008/03/12(水) 00:33:20 ID:v0/NzbC7
座標とかの管理はどこで?
71名前は開発中のものです。:2008/03/12(水) 05:56:34 ID:/xH4cY3u
>>70
Stg管理クラスがRectangle(x、y、width、heightで矩形を表す構造体)を何種類か保持してる。
そして各UnitオブジェクトのPositionが、CanExistで矩形の中にいるかを判定してるだけ。
72名前は開発中のものです。:2008/03/14(金) 01:20:40 ID:Qya/6v1U
弾同士の相殺判定つけたら処理落ちしてワロス
いい加減当たり判定の方法を最適化して、
オブジェクトの配列をvectorからlistに変えるべきだな
73名前は開発中のものです。:2008/03/14(金) 02:07:01 ID:eNzI/Vyy
総当りでやってるから重たいってだけの話でねの?
コンテナがvectorだろうがlistだろうが総当りは回避できるべ

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


75名前は開発中のものです。:2008/03/14(金) 03:38:41 ID:8tJfVTvY
レスミス。>>73じゃなくて>>72
76名前は開発中のものです。:2008/03/14(金) 09:42:10 ID:wQ66BM6P
exceptionが弾(破片)同士の衝突判定やってたな
あれは単純なマス目状の空間分割とマルチスレッド化で高速化してるぽい
77名前は開発中のものです。:2008/03/14(金) 10:45:56 ID:Qya/6v1U
しょうもない愚痴にレスくれてdクス

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

>>74
大丈夫なはず
78名前は開発中のものです。:2008/03/15(土) 00:13:20 ID:FwUg+nN/
空間分割はともかくマルチスレッドはどうなんだろうか・・・
クアッドコアなら効果ありそうだけど。
79名前は開発中のものです。:2008/03/15(土) 01:22:59 ID:lDsY0+o2
ウチの環境だと、CoreSoloってこともあってかほとんどマルチスレッドは効果が出なかったな。
処理内容によって早かったり、かえって遅くなったりまちまち。
CoreDuoとかだと普通に恩恵が得られそうだけど、そんなPCならGPUもよさそうだしなぁ
80名前は開発中のものです。:2008/03/15(土) 02:34:54 ID:Lrw9CI3F
マルチスレッド興味あるんだが、マルチスレッドを前提にした設計の仕方が思いつかん。
ゲームオブジェクトを非同期に更新する上手い方法なんかないかな。
81名前は開発中のものです。:2008/03/15(土) 10:26:44 ID:Q/W+AhbK
FPSとかは知らないけど、2DSTGでマルチスレッドが有効利用できる
場面って少なく無いか?
総当り系の判定をスレッドに割り振るのも大変そうだし。

ローディング画面でディスクアクセスしながらアニメーション流す位しか
思いつかないんだが、他になんかある?
82名前は開発中のものです。:2008/03/15(土) 14:21:34 ID:Lrw9CI3F
ジオメトリウォーズのエフェクトや背景はマルチスレッドで処理してるとどっかに書いてあったような。

エフェクト類は他のオブジェクトに干渉しないのも多いから、
そういうのはまとめておいて別スレッドで処理すればいいかもしれん。
83名前は開発中のものです。:2008/03/17(月) 17:45:56 ID:PCJP7SA4
>>80
DDR2メモリ4GBが数千円で買える今なら大声で言える

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

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

動作環境
 メインメモリ1GBで動かない時は2GB積んでみてください
 メインメモリ2GBで動かない時は4GB積んでみてください
 …etc…
84名前は開発中のものです。:2008/03/17(月) 19:25:31 ID:+53rIC4V
あなた起動時に全ての画像読み込んでそうですね
俺はちまちまやってます
85名前は開発中のものです。:2008/03/17(月) 23:57:27 ID:PCJP7SA4
富豪厨の俺でも流石にそれはないが
ステージ単位でドカっと読み込んでる
boost::progress_displayのゲージがジリジリと動く様を
ティーカップ片手に優雅に待てば良いのだ

それすら我慢できない低属性プレイヤーはrejectだ
86名前は開発中のものです。:2008/03/17(月) 23:58:50 ID:zSjwTnFq
はいはい、boostスレに帰ろうなw
87名前は開発中のものです。:2008/03/18(火) 13:52:14 ID:zi8sXJbl
敵弾をCPUごとに振り分ければよくね。どんな鬼畜弾幕になるのか知らんが。
88名前は開発中のものです。:2008/03/18(火) 14:26:14 ID:kWeEHiH7
弾同士が干渉しないならそれが良さそうだが、
2DSTGで複数コア使う必要があるような処理って弾同士の干渉くらいな気がする。
>>83は汎用性あって良いかもしれん。
89名前は開発中のものです。:2008/03/18(火) 14:34:56 ID:h/08ARO0
>敵弾をCPUごとに振り分ければよくね

よく分からんが
2DSTGでゲームオブジェクトを並列化しようって話をしてるなら
エフェクトや弾が真っ先に候補に上がるのはごく自然なことだよ
エフェクトや弾同士は相互作用が基本的に無いから実装も単純
90名前は開発中のものです。:2008/03/18(火) 14:35:40 ID:h/08ARO0
レスがかぶっちった
91名前は開発中のものです。:2008/03/18(火) 18:20:56 ID:PQFbQVbE
2Dシューティングを作りたいなと思ってここにたどり着いたのですが、
フリーソフトで何を使えば一番簡単に始められますか?
92名前は開発中のものです。:2008/03/18(火) 18:25:47 ID:+UFwrO/v
HSP
93名前は開発中のものです。:2008/03/18(火) 18:31:16 ID:kJphN6cj
STGビルダー
94名前は開発中のものです。:2008/03/18(火) 19:18:33 ID:UdPg6oix
両方捨てがたいな
95名前は開発中のものです。:2008/03/18(火) 20:05:42 ID:PQFbQVbE
>>92-94
ありがとうございます。
両方調べて出直してきます。
96名前は開発中のものです。:2008/03/20(木) 18:13:51 ID:zMjnThxP
ゲーム中のオブジェクトの基本となるクラスがあるとして、
そのクラスの配列を作り、メンバ変数でオブジェクトの種類を区別するか、
そのクラスへのポインタの配列をつくり、放り込む派生クラスの種類で区別するか
どっちのやりかたで作ってる?

前者の方が複雑なポインタを考えない分、簡単かもしれないけど、
後者の方がオブジェクト指向的に綺麗かなぁ
97名前は開発中のものです。:2008/03/21(金) 00:45:59 ID:Y2tGkS1P
判定アリ背景(接触しても死なない)の処理がとてもめんどうなんですが
こういった処理をしている方、どんな風にやってますか?
98名前は開発中のものです。:2008/03/21(金) 07:09:36 ID:zfnOUqWA
どういう処理にしたいのかもうちょっと詳しく
99名前は開発中のものです。:2008/03/21(金) 11:47:21 ID:Hgv+vM2A
すみません
・接触しても死なない/めり込まない
・縦の壁に対して斜め入力をし続けると、空いてる方向に移動する
・スクロール等で壁が移動する場合、キャラは押される
・画面端に挟まれると死ぬ
こんな感じです
2番目3番目がさっぱりです
100名前は開発中のものです。:2008/03/21(金) 13:08:41 ID:kWp5gXWi
2は横移動先が壁にめり込んでたらめり込んだ分横に押し戻し
3はスクロールしてめり込んだらめり込んだ分スクロール方向に押し戻し
とか
101名前は開発中のものです。:2008/03/21(金) 13:44:46 ID:XmgrQpyE
2は普通に作ればたいてい空いてる方向に移動すると思うぞ
要するに、キー入力方向に壁があったら、その方向の移動量をゼロにする
あと、地形を重視するなら大きなマップの中で視点がスクロールすると考えるといい
一度アクションゲームを作ってみるといいよ
4点とも簡単に解決できる
102名前は開発中のものです。:2008/03/21(金) 23:10:22 ID:Y2tGkS1P
ありあとうございます。

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

>>101
その場合先に壁と隣接しているかどうか判定するのでしょうか
今考えてるやり方だとめり込んでから戻すって感じなのですが。
103名前は開発中のものです。:2008/03/22(土) 00:30:26 ID:YjjlX8do
>>102
縦壁だけじゃなく斜め壁もあるのか
そしたら斜めの当たり判定のとり方から説明が必要?

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

どっちにしてもどういう挙動がおかしい挙動なのか仕様がわからいとなぁ
104名前は開発中のものです。:2008/03/22(土) 00:43:49 ID:8Y+Va9zt
めり込んだら押し戻すで全部解決するはずだがなあ・・・
接触判定がおかしいんじゃないのか?
105名前は開発中のものです。:2008/03/22(土) 05:42:47 ID:44zgMaPM
>>102
「壁ずり」で検索
106名前は開発中のものです。:2008/03/23(日) 13:04:48 ID:VlbCWj/H
当たり判定ってどんな形にしてる?
円形または矩形で統一するのが楽だけど、
円形だと細長い弾やレーザーが、矩形だと斜めの弾の表現が難しい
複数の矩形とか?
107名前は開発中のものです。:2008/03/23(日) 13:25:23 ID:d2zOUJKL
俺は基本的には矩形以外使わないな
ところで斜めの弾ってなんだ?
108名前は開発中のものです。:2008/03/23(日) 13:40:58 ID:XpxtelVy
俺は楕円にしてる
109名前は開発中のものです。:2008/03/23(日) 13:43:51 ID:9Ostvv4d
矩形だけだな
斜めは回転で対応
110名前は開発中のものです。:2008/03/23(日) 13:46:52 ID:VlbCWj/H
斜めの弾=斜め方向に飛ぶ弾、斜め方向に長い弾
矩形だと見た目とずれるし、矩形を回転させるのは手間。楕円も同じ
円形だと、斜め向きでも縦向きでも
尖がった部分に当たり判定が無いのは共通だからまあマシかな、と

111名前は開発中のものです。:2008/03/23(日) 14:02:08 ID:DkU5E/rv
円形で細い弾は作らない。
112名前は開発中のものです。:2008/03/23(日) 14:14:31 ID:d2zOUJKL
>>110
針弾のこと?
矩形回転くらいやんなさいよw
それが面倒なら針弾なんか使わなければいい。
丸い弾だけなら正方形判定だけで出来る。
113名前は開発中のものです。:2008/03/23(日) 15:33:05 ID:SMEFBCL/
俺は斜めだろうと楕円だろうと何だろうと正方形で済ませてるど素人です。
自分でプレイしてて全然気にならないんですが、
やっぱ弾幕シューとかだと重要なんでしょうかね。

自分は緻密な弾避け行為にこだわってないから解んないけど
そういうのが好きな人は違うのだろうか。
114名前は開発中のものです。:2008/03/23(日) 15:40:46 ID:ZbRSLUlC
まぁ、好きな人はそういう仕様まで利用していくから良いと思うよw
115名前は開発中のものです。:2008/03/23(日) 15:58:42 ID:4ckcNna2
弾幕目の敵にしすぎワロタ
弾幕ゲーじゃなくても、見た目と違うあたり判定はどうも嫌いだな
某同人弾幕ゲーは見た目と当たり判定の乖離がひどいが

俺は矩形の当たり判定を複数持たせて近似している
地面とかは円形だとうまく表現できないし
本当はビットマップを走査して判定したいけど、さすがに重過ぎる
116名前は開発中のものです。:2008/03/23(日) 16:14:15 ID:XpxtelVy
線分交差判定か何かでいいんじゃないか
117名前は開発中のものです。:2008/03/23(日) 18:40:14 ID:d2zOUJKL
見た目と違うというが、昔からゲームやってる人間なら
むしろ見た目どおりの判定のほうがおかしく感じるハズだw
118名前は開発中のものです。:2008/03/23(日) 20:14:18 ID:2cPCy0BJ
何回もやってりゃなれるしな
119名前は開発中のものです。:2008/03/23(日) 21:27:48 ID:cK7bOzt5
自機の当たり判定が点なのに
弾の判定が見た目と違うと文句をつけるのもおかしな話だ
120名前は開発中のものです。:2008/03/23(日) 22:14:24 ID:/kBQhQQw
んだな

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

だが矩形回転(OBB)が面倒とかいうのも
ちと情けないというか。高校レベルの算数だろ
121名前は開発中のものです。:2008/03/23(日) 22:17:16 ID:/kBQhQQw
あと針弾をAABB数珠繋ぎでやるくらいなら
円の数珠繋ぎのほうがマシな気がしないでもない
122名前は開発中のものです。:2008/03/24(月) 00:08:41 ID:+0T08afk
>>120
×算数 ○数学

回転矩形同士の当たり判定は結構面倒だと思うが
難しいんじゃなくて面倒
123名前は開発中のものです。:2008/03/24(月) 00:29:47 ID:Yr94LLRU
STGスレだから
OBB vs 点 の判定という前提で
簡単と書いたったのゆーしてくらはい
124名前は開発中のものです。:2008/03/24(月) 10:01:29 ID:IupNpfeC
俺は先端に矩形を一個だけww
手抜きサーセンwwwww
125名前は開発中のものです。:2008/03/24(月) 11:24:17 ID:mEuEcy6w
それで良いんじゃね
126名前は開発中のものです。:2008/03/24(月) 12:08:38 ID:fwLvQ6Ft
難しいとか面倒とかでもあるけど
比較的どうでもいい事に処理を食わせたくないという旧い人間な俺。
127名前は開発中のものです。:2008/03/24(月) 12:35:06 ID:mEuEcy6w
たとえば中型のプロペラ機の機体後部とか尾翼とかに判定なんか要らんのですよ
主翼部分だけで良いんです
128名前は開発中のものです。:2008/03/24(月) 13:17:05 ID:sI3+U67E
>>115
どうでもいいけど、確かひとつのオブジェクトに複数の当たり判定を持たせる、
という方法はセガが特許をとっていたはず
129名前は開発中のものです。:2008/03/24(月) 13:27:41 ID:mEuEcy6w
知らんがなそんなもんw
130名前は開発中のものです。:2008/03/24(月) 14:00:30 ID:3DNtnzJR
>>128
3Dオブジェクトの周りに球形の当たり判定を複数つけるというのがセガの特許だから
2Dなら大丈夫なんじゃないか?
131名前は開発中のものです。:2008/03/24(月) 14:31:02 ID:fwLvQ6Ft
そんなんで特許取れるのか……。
132名前は開発中のものです。:2008/03/24(月) 14:34:58 ID:GL5PdgnZ
>特許3603898
>特開2003-299877
>交差判定方法及びこれを用いたゲーム装置

この辺かなぁ

これ普通に既知・公知の基本技術だよねぇ
趣味野郎にとっては完全無視しても事実上無問題の話だけど
ゲームで飯食ってるその手の業界の競合他社の法務部門は
こういうナメた特許を取られて異議申し立てもせずに
完全スルーしてて大丈夫なのか?タダ飯食って寝てるだけだろ
133名前は開発中のものです。:2008/03/24(月) 16:20:11 ID:mEuEcy6w
アメリカで「入力装置による操作で画面の絵が動く」とかいうサブマリン特許で
ゲームメーカー各社が訴訟起こされたりしたからな。そこら辺は防衛手段だと思われ。
134名前は開発中のものです。:2008/03/24(月) 20:09:54 ID:RTOqTDW3
もういっそ
「誰でも考え付くくだらない技術で特許を取る方法」という特許を取ればいいのに
135名前は開発中のものです。:2008/03/24(月) 22:03:31 ID:nPahSoi8
普通に矩形判定の回転とかやり方が思いつかない理系の俺はどうしたらいい?
136名前は開発中のものです。:2008/03/24(月) 22:22:10 ID:sI3+U67E
回転した矩形の衝突判定なら、多角形の衝突判定でいいと思う
137名前は開発中のものです。:2008/03/24(月) 22:23:12 ID:k9aWkyJr
>>135
中学生?
138名前は開発中のものです。:2008/03/24(月) 22:31:04 ID:YAOqhvfe
敵キャラの基本と思ってスライムを作った


あー、STGの空飛ぶ世界でスライムって使いどころが……
139名前は開発中のものです。:2008/03/24(月) 22:33:21 ID:V5wQxKJV
横シューでグラVのバスクリン見たいに落ちてくるとか
140名前は開発中のものです。:2008/03/24(月) 23:21:17 ID:nPahSoi8
>>137
えぇ。適当にベクトルの式の立てて解くっぽいことしか想像できないw
しかもやり方わからんし
数Cもっとまじめにやるんだったかな・・・ちょっくら高校の教科書とにらめっこしてくる。
141名前は開発中のものです。:2008/03/24(月) 23:44:00 ID:YAOqhvfe
一方がもう一方に入り込む可能性を無視するなら、各辺が交わっているか判定する
入り込む場合は、一方の頂点がもう一方の領域に入っていることを判定する

頂点が領域に入っている判定は、
矩形に限定するなら、座標変換した後、普通に矩形と頂点の判定をするとか
凸多角形なら、辺と頂点の位置関係(常に頂点が辺の左側にあるか)を判定すればOK

こんな感じ?

>>139
背景の当たり判定考えてないんだよねぇ
何か土台でも作ろうかな
142名前は開発中のものです。:2008/03/25(火) 00:22:40 ID:+WqpoOyM
ライフゲージをスライムの大きさで表示
そしてアイテムは全部スライム
143名前は開発中のものです。:2008/03/25(火) 00:32:40 ID:9+3bwAjS
普通に地上キャラでスライムだせばいいのでは・・・
144名前は開発中のものです。:2008/03/25(火) 00:39:21 ID:BjCc4re0
接触したら、コマンド入力方式戦闘シーンに突入すればいいのでは……。
145名前は開発中のものです。:2008/03/25(火) 01:38:38 ID:uFzRVnSV
ゲーム中の物体は全てオブジェクトで、
登場するたびにnewでメモリ確保してlistに突っ込んでるんだが、
newは自重したほうが速度的に有利なのかな
いまどきのPCなら問題ないよ・・・な?
146名前は開発中のものです。:2008/03/25(火) 11:55:46 ID:mSvRfoAk
そのぐらいの最適化、ちょっと手を加えれば済むんだからやっとけよ
プールして再利用、あとは事前にまとめて確保しておけ
14797=99:2008/03/25(火) 12:04:14 ID:pBCIUDY5
遅くなりましたがいろいろありがとうございました
今試行錯誤中です
148名前は開発中のものです。:2008/03/25(火) 19:28:38 ID:njfgxTgM
>>141
まさにその形で組んだ所だったよ。

内包する場合も141と同じ方式。
前にどこかで拾った式コピペしときま。外積使って頂点が左にあるか。を求めてるのかと。


828 2008/01/25(金) 18:20:24 ID:wCWKO3oH
名前は開発中のものです。(sage)

四角形ABCDと点Pの当たり判定
(Px-Ax)*(Py-By)-(Py-Ay)*(Px-Bx) > 0 and
(Px-Bx)*(Py-Cy)-(Py-By)*(Px-Cx) > 0 and
(Px-Cx)*(Py-Dy)-(Py-Cy)*(Px-Dx) > 0 and
(Px-Dx)*(Py-Ay)-(Py-Dy)*(Px-Ax) > 0
の時は当たり
149名前は開発中のものです。:2008/03/25(火) 20:47:36 ID:ZVswnUkG
>>146
ぶっちゃけSTGに可変長配列は要らないな
オブジェクトの配列を最初にまとめて確保して、存在フラグをメンバ変数に持たせる
派生クラスも作らないで、オブジェクトの種類はメンバ変数で管理

ぜんぜん美しくないけどな
150名前は開発中のものです。:2008/03/26(水) 17:47:55 ID:H5DuUJqf
オブジェクトのプールってどのように実装しているんでしょうか?

まとめて確保したオブジェクトのポインタをstackに積んでおいて
取り出したり使い終わったら戻したりみたいなやり方と
プールのlistと使用中のlistでやりとりするみたいなやり方
を思いついたんですけど・・・

もっとかっこいいやり方あるんでしょうか?
151名前は開発中のものです。:2008/03/26(水) 18:31:19 ID:kiBU8E/6
STLは使って無いんだけど、後者と同様の事をしてる。

任意サイズメモリを確保してそれをローカルヒープとして管理し、
そこからAlloc/Freeってのをやってたこともあったけど、可変サイズに対応可能だけど
メモリ管理ブロック分がもったいないとか、微々たるものだが処理コストが気になる、とか一長一短。
PCなら気にしなくてもいいかな?
152名前は開発中のものです。:2008/03/26(水) 19:28:28 ID:GuggIAK/
PCなら気にする必要は全く無しというのが俺の実験結果
ボス、弾、破片(パーティクル)に至るまで一個一個new(LocalAlloc)してdeleteして
24時間デモシーンをぶん回しても異常なしだったんだぜ
153名前は開発中のものです。:2008/03/26(水) 20:34:31 ID:59FgdjS6
物理演算とか相当煩雑な処理させない限り、
現在のPCの処理速度では最適化の意味がない、ってのは常々言われてるな
処理速度より、生産性とかソースの可読性とかを優先していいと思われ
154150:2008/03/26(水) 22:29:36 ID:BPyz/7I/
自分も今はそのままnewを使っているんですが
同じ動作をするなら少しでも軽いほうが精神衛生的に良いかなと。
処理もそんなに難しそうじゃないし。

まあ、一人でしこしこ作ってるので自分が納得できるようにやります。
155名前は開発中のものです。:2008/03/26(水) 23:10:59 ID:u3R/2Gep
それが一番だな。>自分が納得
156名前は開発中のものです。:2008/03/26(水) 23:18:09 ID:pNomGL32
俺は配列で確保してる
157名前は開発中のものです。:2008/03/26(水) 23:37:23 ID:59FgdjS6
クラスのサイズがバラバラだから、使いまわし出来ないなぁ
最大サイズで確保するのはなんか癪だ
158名前は開発中のものです。:2008/03/27(木) 00:08:07 ID:sUf83WPb
しかし最大サイズで確保するのが最も現実的な罠
断片化を抑えるために色々小細工してるから遅い、という原因には効く
159名前は開発中のものです。:2008/03/27(木) 01:08:19 ID:V2zSEp+V
>>157
>癪だ
富豪厨の俺に言わせれば
boost::simple_segregated_storageでガバッと確保して固定サイズでジャブジャブ融資
原資(メモリ)が足りない?そんなしみったれた貧弱PCユーザーは今すぐrejectだ!
160名前は開発中のものです。:2008/03/27(木) 01:33:36 ID:PgdiK5wh
アジャイル、UML,オブジェクト思考、階層化・・・
色々悩ませてくれたが・・・俺は最大の手段を使うことにした


そ れ は ・ ・ ・





goto文
161名前は開発中のものです。:2008/03/27(木) 05:29:56 ID:/WF5Ry8k
>>157
使いまわせるように作るんだよぅ
162名前は開発中のものです。:2008/03/27(木) 09:52:59 ID:4/N0HnfM
単純な直進弾や自機狙い弾と、
ホーミング弾や複雑なAIを持った敵機で、
必要なメンバ変数の数が違うんだよねぇ
163名前は開発中のものです。:2008/03/27(木) 13:42:30 ID:QODpit3Q
で?みたいな(笑)
164名前は開発中のものです。:2008/03/27(木) 16:42:19 ID:V2zSEp+V
>>162
3DSTGの敵機に編隊飛行、指令送受信、策敵、射撃、回避、離脱、体当たり
こんだけ積み込んでおおよそ64[Bytes/Instance]
ブースターだの脱出ポッドだのバリoートだのフライ○グアーマーだのといった
子インスタンスを加えても合計128[Bytes/Instance]を上回ることはなかった
誘導弾は64[Bytes/Instance]以下
直進弾は32[Bytes/Instance]以下

敵機200機の飽和攻撃により誘導弾800発と直進弾2000発
合計3000個のインスタンスが画面内を乱舞するとする

割り当て方法は全部同じプールでも別々のプールでも
インスタンス毎にnew(HeapAlloc)でも好きにしたまえだが
毎回HeapAllocだと管理領域分も考慮しなければいけないので
ここでは話を単純化するためプールとする
165続き:2008/03/27(木) 16:42:55 ID:V2zSEp+V
富豪厨は太っ腹なので全て128[Bytes/Instance]の固定サイズで
湯水のごとくアロケート

種類   サイズ(使用メモリ) 個数 サイズ合計 使用メモリ合計 無駄使い
----------------------------------------------------------
敵.       128(128)    200   25600 .  25600 .        0
誘導弾    64(128)    800   51200  102400 .    51200
直進弾    32(128).   2000   64000  256000    192000
----------------------------------------------------------
合計     224(384)   3000 . 140800  384000    243200

敵、誘導弾、直進弾、別々のプールから割り当てる場合と比較すると
3倍弱のメモリを使用して約243KBを無駄にすることが分かる
これを「に、243KBも!(#@Д@)」とするか
「たったの243KBで騒ぐ貧乏人はrejectだな」とするかは
各人のエンゲル係数や可処分所得に左右される大変デリケートな問題
ここではあえて言及しないことにする

以上
166名前は開発中のものです。:2008/03/27(木) 17:01:14 ID:V2zSEp+V
× 約243KBを無駄にする
○ 約237KBを無駄にする
167名前は開発中のものです。:2008/03/27(木) 20:03:42 ID:p+6nv0BF
>敵機200機の飽和攻撃により誘導弾800発と直進弾2000発
>合計3000個のインスタンスが画面内を乱舞

これは酷いな。生きのこれる気がしないぜ
168名前は開発中のものです。:2008/03/27(木) 20:38:33 ID:/7zHrXV5
一昨日PC2 6400 2GBx2を8000円で買ったんだが
243200バイトの損失なら
8000 * 243200 / (1024^3 * 4) = 4.53E-01
たった45銭3厘の損失かぁ



MSXの32KB拡張RAMカートリッジ、高かったなぁ(遠い目
169名前は開発中のものです。:2008/03/27(木) 21:35:50 ID:PgdiK5wh
もまいらいったいいくつから作ってるんだ?
170名前は開発中のものです。:2008/03/27(木) 21:58:45 ID:d3jrFqn7
パピコンでBASICゲーム作ってたのは中学んときだけど、
まがりなりにもシューティングらしきのを作ったのは高校ん時だったかなぁ。
やはりパピコンのBASICコンパイラ+表示部分だけマシン語(ハンドアセンブル)で。

あの頃からほとんど成長してないのは正直どうかと……w
171名前は開発中のものです。:2008/03/27(木) 22:04:51 ID:V2zSEp+V
>>169
もまいの故郷

goto文を恐れなく使う兵達のスレ
http://pc.2ch.net/tech/kako/1021/10213/1021364372.html
172名前は開発中のものです。:2008/03/27(木) 22:07:22 ID:DaOlp9/i
真の富豪厨は毎回new/deleteだろ。
173名前は開発中のものです。:2008/03/27(木) 22:11:27 ID:V2zSEp+V
やった(>>152=俺)が、余りにもアッサリとうまく動きやがったので
面白くないからrejectしてやった
174名前は開発中のものです。:2008/03/27(木) 22:58:05 ID:WDUR6Kc3
3Dで敵機64バイトって小さすぎない?
姿勢情報とかでどうしても容量デカくなりそうだけど
175名前は開発中のものです。:2008/03/27(木) 23:44:06 ID:XP2qgfZL
変位(座標)と回転の情報を4x4行列にぶち込んでればそりゃブクブク膨れ上がるだろうけど
回転にクォータニオンとか使ってれば2要素増えるだけだぜ?(圧縮すれば1要素増加で済む)
変位のほうは単純にz成分(1要素)が加わるだけ

結局、姿勢情報はfloat値6個(24バイト)もあれば十分表現できる
後は速度情報を加えて計48バイトとか

まぁ普通はそんな感じじゃね?
176174:2008/03/28(金) 00:28:27 ID:PZRPRNjR
>変位(座標)と回転の情報を4x4行列にぶち込んでればそりゃブクブク膨れ上がるだろうけど

うっ、それまさに自分だ。。。
クォータニオンか。。。D3DXで提供されてるから素直に使ってみるか

レスd
177名前は開発中のものです。:2008/03/28(金) 00:57:37 ID:p3ibL9sX
そうかなぁ
4x4行列をジャブジャブ使ったほうがある意味で爽快かもよ
178名前は開発中のものです。:2008/03/28(金) 01:12:03 ID:0fJyqmGF
>>172
なんという俺
179名前は開発中のものです。:2008/03/28(金) 01:12:06 ID:PZRPRNjR
そ、そういう発想の転換もアリだよね、ね
PCならこの程度何の実害ないし
クォータニオンはまたその内検討してみまつ。。。
180名前は開発中のものです。:2008/03/28(金) 01:13:36 ID:PZRPRNjR
すまんこアンカー忘れ。>>177だた
181名前は開発中のものです。:2008/03/28(金) 01:18:13 ID:Pgm9Hf0W
>>177
おまいもうboostスレに帰れよw
182名前は開発中のものです。:2008/03/28(金) 01:26:20 ID:p3ibL9sX
どうもお邪魔しました!

_______    boostスレの     STGスレの
|←boostスレ|        中の人      中の人
. ̄.|| ̄ ̄ ̄       ┗(^o^ )┳(^o^ )┳(^o^ )┛≡=-
  ||            ┏┗  ┗┗  ┏┗ ≡=-
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
183名前は開発中のものです。:2008/03/28(金) 02:01:16 ID:ZjS17OFO
絆スキップ
184名前は開発中のものです。:2008/03/28(金) 14:37:29 ID:SjpgUEnZ
>>175
>ブクブク膨れ上がる

常日頃からメタボメタボ言われまくってる俺の
センシティブなハートをお前は深く傷つけたよ
185名前は開発中のものです。:2008/03/28(金) 20:50:33 ID:qlc6IPHd
メタボ臭とかいう新ジャンルのSTGを開拓すればいんじゃね
186名前は開発中のものです。:2008/03/28(金) 21:15:38 ID:/8lohFxt
それ何てミクロの決死圏
血管の中で中性脂肪の弾幕でもかわすのか?すげぇ既視感あるネタだけど

泡状のとかブニョブニョしたものを描くの面倒臭そうだな
昔のメガデモでよくみかけたMETABALLみたいな手法を使えばいけそうだな


オヤジギャグじゃないからな
187名前は開発中のものです。:2008/03/28(金) 22:00:27 ID:wFA3mk0n
メガデモ(笑)
メタボール(笑)

オッサンばっか(笑)
188名前は開発中のものです。:2008/03/28(金) 23:11:26 ID:ikErMOXa
メガデモのメタボールの仕組みよく知らないんだが、あれって

 濃度を格納したボリュームデータを用意して
 ある濃度をしきい値にして面を張る

みたいな、ベタなやり方だったのかな
10年近く前にクラシックペンティアム積んだPCでぐりぐり動いてた
ような記憶があるんで、上記の手続きだと(特にボリュームデータの
更新、というかアニメーション?あたりが)かなり重たいものになりそうだし
やっぱ何らかのトリック(フェイク)が使われたのかな

あ、ソース公開されてる作品あるからそれ覗けばいいだろってのは分かってる
話題がないのでなんとなくネタ振りということで・・・

グニャグニャ(連続体?)オブジェクトが出現するSTGとか作ってみたいし
189名前は開発中のものです。:2008/03/29(土) 01:52:02 ID:oF0Q5YC2
ム板のメガデモスレ池
マジレス
190名前は開発中のものです。:2008/03/29(土) 02:49:58 ID:4C1bZfLa
>>188
ソフトレンダもので初代Pentiumでぐりぐり(60FPS以上で)動いてたなら
スクリーン解像度は400*300とか320*240程度だったはず
濃度値を収める三次元格子もかなり荒かったんじゃないかなぁ

濃度値の精度は8ビットで格子数は16*16*16=4096バイトとかで十分
この程度なら当時でも余裕で処理できたはず

つか、今時のビデオカードで2DSTGでメタボールっぽいキャラ出すなら
パーピクセルで描ける
法線マップとアルファ付きカラーマップにぼやけた円を重ね描きしていって
アルファテストで閾値設定して描けば立体感(光沢付き)ぷよぷよだよ!
DirectXのSDKにもそんな感じのサンプルが入ってたはず
191名前は開発中のものです。:2008/03/29(土) 10:50:00 ID:p4/t7kS/
背景が黒いなら加算合成で出来ちゃうんだけどな。
192名前は開発中のものです。:2008/03/29(土) 10:52:47 ID:PdR5kqA3
メタボはメタボールの略だったのか。
193名前は開発中のものです。:2008/04/01(火) 15:39:40 ID:3rITgYf3
メタルボーク発進
194名前は開発中のものです。:2008/04/04(金) 00:38:42 ID:JN0z56Et
質問
CGってグラフィックボードで描いてるんだよね?
ハード的な理由で描画はマルチスレッドみたいになるの?
てことは、処理落ちの原因はほとんど当たり判定とかのせいになるの?
ということは、当たり判定をマルチスレッド分担すればいろいろ完璧?
195名前は開発中のものです。:2008/04/04(金) 01:02:14 ID:1TsuscT3
今時、当たり判定程度で処理落ちするCPUはない
プログラムにむちゃくちゃ無駄が多かったりしない限り

3Dならポリゴン数が多いと、GPUの性能次第で処理落ちするし、
物理演算があるとCPU性能次第で処理落ちするかな
196名前は開発中のものです。:2008/04/04(金) 03:26:09 ID:kdoRe4RJ
>>194
「てことは」の前後の文脈がどういう理屈で繋がるのか知らんが、2DSTGの話をしてるなら
今時どんなヘボノートPC環境であろうとも「当たり判定」で処理落ちさせるなんて至難の業だな
5年近く前のモバノート(1GHz前後のペンM…当然シングルコア)でシングルスレッドの総当りで
敵50匹と弾1500発の処理やらせて普通に60fps出るんだから、この時点で既に「いろいろ完璧」
197名前は開発中のものです。:2008/04/04(金) 03:59:52 ID:VspohKvQ
そのスペックで1500の総当りってどう考えてもきつい気がするんだけども・・・
198名前は開発中のものです。:2008/04/04(金) 07:15:31 ID:69exqbeK
ウチのご隠居チンコパッドX31が初代セントリーノの1.2GHzで
だいたい同世代みたいだけど、1500個くらいならイケてる

ビデオチップがMobileRadeonとやや貧弱だから、計算よりも
描画周りに気を使う

使うっつってもテクスチャをケチりまくるとか
頂点バッファとDrawPrimitiveの使い方を適切に、とか
その程度の話だけどね
199名前は開発中のものです。:2008/04/04(金) 10:16:35 ID:AI/AEUDG
総当り以外の当たり判定処理ってのが思いつきません。

ずっと昔に仮想マップみたいなのを用意しておいて
そこにキャラや弾の情報を書き込み、判定の際に使うってのを
何かで見た記憶があるけど、こういうのの事でしょうか。
200名前は開発中のものです。:2008/04/04(金) 10:46:32 ID:hPpN0s4/
空間分割ってのがありまして。

完全2Dなら当たり判定のある空間を縦横20くらいに分割して、
それぞれの空間に属するもの同士で判定を取ることで、
当たる見込みの無いものとの判定を事前に回避する。
201名前は開発中のものです。:2008/04/04(金) 12:27:23 ID:euXxyvh6
>>199
http://pc11.2ch.net/test/read.cgi/gamedev/1199303757/762-765n
↑の質問したのお前?
仮に別人だとしてもこの過疎板でこのタイミングで同じ質問が二度出るのは変だな
どっかのゲー専の宿題か何かか?正直に吐いたら褒美をくれてやるぞw
202名前は開発中のものです。:2008/04/04(金) 13:27:02 ID:AI/AEUDG
違います。
ゲー専の宿題でもないです。

今、自分で2Dゲーム作ってて、
キャラと弾、全部あわせると最高1600強を動かしてて、総当りでやってて問題なく遊べてる。
(もちろんあくまで「最高1600」であって、常にそれだけ動いてるわけではない)
「自機と敵弾」だけの判定じゃなくて、「敵と敵弾」とかの判定もやってるのに
ちゃんと遊べるから、最近のPCの処理速度はすげーなーとか思いつつも
やっぱもっと効率のいい判定方法ないかな、と考えてただけです。
203名前は開発中のものです。:2008/04/04(金) 14:08:55 ID:98Hdy+Q5
1600*1600の総当りは3年位前のスペックだときつくないかな?
204名前は開発中のものです。:2008/04/04(金) 14:20:04 ID:kACwEiIs
三年前、2005年のスペックというと
athlon64が全盛でathlon64x2が登場、Core2Duoがまだ、という辺り

有り得ないくらい余裕だな
205名前は開発中のものです。:2008/04/04(金) 14:36:20 ID:8r+omDm7
1600*1600だと最新マシンでも空間分割しないときついんじゃないか。
>>196は弾*キャラなんじゃない?
206名前は開発中のものです。:2008/04/04(金) 16:24:58 ID:XVBdGsRf
典型的な2DSTGで1600のオブジェクトを表示するったって大半が弾なんだけど
1600*1600という数字(組み合わせ)に一体何の意味があるのか>>203は説明できないだろ
207名前は開発中のものです。:2008/04/04(金) 16:25:30 ID:KKsDXKAb
http://ja.pastebin.ca/970731
やっつけだがpen3 1GHzのマシンで平均32ミリ秒
30fpsで間に合わないってところか
208名前は開発中のものです。:2008/04/04(金) 17:04:15 ID:KKsDXKAb
http://ja.pastebin.ca/970760
今度は32*32の敵64体と16*16の弾1600発のテストで、弾はヒットしたら壊れるという想定
同マシンで2〜3ミリ秒
余裕すぎるな

ただのジコマンなのに連投してすまん
209名前は開発中のものです。:2008/04/04(金) 17:25:12 ID:0OItj9LK
総当りっていったら、普通は敵だの弾だの関係なく
{1600}C{2} = 1600*1599/2 の組み合わせになるんじゃないのか?
64*1600の組み合わせじゃあ桁が違う
210名前は開発中のものです。:2008/04/04(金) 17:32:55 ID:KKsDXKAb
>>209
それは>>207

>>208は単なるジコマンぽ
211名前は開発中のものです。:2008/04/04(金) 19:04:55 ID:g/x8ThIF
>>203
”総当りの意味をちゃんと使ってくれ”
と、暗に言ってるだけだと思うんだが
212名前は開発中のものです。:2008/04/04(金) 20:34:11 ID:GfOfbOVS
オブジェクトを敵機・弾など種類ごとにリストにしておき、
あるリストの要素と別のリストの要素の当たり判定を行うことで、
無駄な判定はなくせると思うが
213名前は開発中のものです。:2008/04/04(金) 20:42:54 ID:9+TzVPLQ
俺もそれだ。
214名前は開発中のものです。:2008/04/04(金) 21:04:37 ID:qbhzPNp0
>>212
例えば自機が画面の左下にあるのに
右上に固まってる敵弾と判定と判定を行うのは無駄な判定だとは思わないか?
215名前は開発中のものです。:2008/04/04(金) 21:06:02 ID:qbhzPNp0
なんか変な文章に・・・
216199=202:2008/04/04(金) 21:43:26 ID:WdCHFh7R
なんか俺の書いた事について色々あったみたいで、申し訳ないです。

俺が問題としてた話題はあくまで「総当り以外の判定方法」であって、
それ以外(俺がどんな事やってるか)は、この際関係ないから
>>201さんに納得してもらえる程度の情報出せばいいと思って
おおざっぱな説明しただけで、実際に1600*1600の判定やってるわけじゃないです。

常に全キャラ使ってるわけじゃないし、キャラ同士、弾同士の衝突判定は
ある場合より無い場合の方が多いし、そもそも味方同士の判定はやってないし、
というようにかなり減らしてはいます。

という事で>>201さんに納得していただいて、その褒美を貰おうと心待ちにしている次第です。
217名前は開発中のものです。:2008/04/04(金) 22:03:57 ID:GfOfbOVS
>>214
当たり判定範囲が矩形なら無駄な判定は生じない
むしろ、空間分割の方が無駄
5〜10個の矩形の複合体とか円形とか多角形なら、空間分割にも利があるけど、
矩形のバウンディングボックスで一度判定すれば十分だろ
218名前は開発中のものです。:2008/04/04(金) 23:32:07 ID:qbhzPNp0
俺の日本語がダメなばっかりに変な誤解をさせてしまってるかもしれない・・・
それとも俺が誤解してるのかも?

>>212の方法って敵弾が1000個あったとしたら
1000回自機と判定しなきゃならないってことだよね?

悪い例えだけど(実際はツリーだったり)
敵弾を分割した空間ごとにリストにしておき、
自機のある空間とその空間のリストの当たり判定を行うことで、
無駄な判定はなくせると思うが
219名前は開発中のものです。:2008/04/04(金) 23:32:34 ID:KKsDXKAb
組み合わせが多いときは、分割は有効だけどね
220名前は開発中のものです。:2008/04/04(金) 23:37:39 ID:KKsDXKAb
グリッドハッシュ
ttp://lucille.atso-net.jp/blog/?p=85

シューティングにここまで必要か?と問われたら
個人的には要らないと答えるが
知っておいて損は無いと思う
221名前は開発中のものです。:2008/04/04(金) 23:50:38 ID:98Hdy+Q5
昔は、IF文使うときに&&を使わず
入れ子にして速度を稼いだりしたなぁ
222名前は開発中のものです。:2008/04/04(金) 23:53:49 ID:qbhzPNp0
確かに1対多だったら労力のわりにたいした恩恵受けるもんでもないんだけども・・・
223名前は開発中のものです。:2008/04/05(土) 00:13:39 ID:ElJWYWg0
とりあえず、オマエラ「空間分割 衝突」で1回ググれば幸せになれるんじゃね?
224名前は開発中のものです。:2008/04/05(土) 00:23:10 ID:xg5znUOR
>>221
わざわざ入れ子にしなくても
if( A() && B() )
これA()がfalseならB()は実行されないから
左のほうをfalseになりやすいものにすればいいと思うんだけど
昔のコンパイラは違うのかね
225名前は開発中のものです。:2008/04/05(土) 00:27:12 ID:ndMxol9I
>>209
敵弾とか敵機はお互い衝突しない
つまり敵属性同士は衝突しない
自機と自弾についても同じこと

敵(Enemy)と自(プレイヤー、味方、Friendly)。たった「2種」の敵味方属性
そしてオブジェクトに割り当てられる敵味方属性情報は静的。定数。const
プリプロセッサ、コンパイラにかける前から明らか。火を見るより
ゲームデザインの時点で既に決まってること
それなのに、判定…意味も無く…1600*1600回…あり得ない…愚行…常軌を逸する…愚鈍
226名前は開発中のものです。:2008/04/05(土) 00:28:02 ID:ndMxol9I
BULLET enemybulletarray[1500];
ENEMY enemyarray[100];
PLAYER player;
for(int n0=0; n0<1500; n0++){
  for(int n1=0; n1<1500; n1++)
   CollisionDetection( enemybulletarray[n0] , enemybulletarray[n1] );
  for(int n1=0; n1<100; n1++)
   CollisionDetection( enemybulletarray[n0] , enemyarray[n1] );
}
for(int n0=0; n0<100; n0++){
  for(int n1=0; n1<1500; n1++)
   CollisionDetection( enemybulletarray[n0] , enemybulletarray[n1] );
  for(int n1=0; n1<100; n1++)
   CollisionDetection( enemybulletarray[n0] , enemyarray[n1] );
}
//↑ここまでで1600*1600回
227名前は開発中のものです。:2008/04/05(土) 00:38:24 ID:ndMxol9I
BULLET playerbullet[100];
//2DSTGで総当りで当たり判定するっつったら普通コレ
for( int n0=0; n0<1500; n0++)
  CollisionDetection(player , enemybulletarray[n0]);
for( int n0=0; n0<100; n0++)
  CollisionDetection(player , enemyarray[n0]);
for( int n0=0; n0<100; n0++)
  for(int n1=0; n1<100; n1++)
   CollisionDetection( enemyarray[n0], playerbullet[n1] );
228名前は開発中のものです。:2008/04/05(土) 00:43:36 ID:ndMxol9I
BULLET enemybulletarray[1500];
>>226訂正

ENEMY enemyarray[100];
PLAYER player;
for(int n0=0; n0<1500; n0++){
  for(int n1=0; n1<1500; n1++)
   CollisionDetection( enemybulletarray[n0] , enemybulletarray[n1] );
  for(int n1=0; n1<100; n1++)
   CollisionDetection( enemybulletarray[n0] , enemyarray[n1] );
}
for(int n0=0; n0<100; n0++){
  for(int n1=0; n1<1500; n1++)
   CollisionDetection( enemyarray[n0] , enemybulletarray[n1] );
  for(int n1=0; n1<100; n1++)
   CollisionDetection( enemyarray[n0] , enemyarray[n1] );
}
//↑ここまでで1600*1600回
229名前は開発中のものです。:2008/04/05(土) 00:47:03 ID:KzcCKEO1
>>225-228
言いたい事は概ね同意だが下手なカイジネタは寒いからヤメレ
230名前は開発中のものです。:2008/04/05(土) 00:51:05 ID:ouV9zovg
自機と敵弾・敵機と自弾以外に衝突判定する必要無いだろ
1600×1600になるのは自機1600機と敵弾1600個みたいな時
231名前は開発中のものです。:2008/04/05(土) 00:57:53 ID:fK+4rNgg
弾同士が打ち消しあうときもな
232名前は開発中のものです。:2008/04/05(土) 01:02:18 ID:xg5znUOR
弾同士の当たり判定が無いなんて勝手に決め付けるなよ。
そういうSTG作りたいと思ってる人がいるかもしれないじゃないか。
というより5年前に俺が作った。
ビリヤード風弾幕wwwとかいいながら。
ひどい処理落ちで泣いた。
233名前は開発中のものです。:2008/04/05(土) 01:03:00 ID:KzcCKEO1
計算機アルゴリズムで使われる「総当たり」とか「総当たり法」ってのは
理論的にありうるor考え得る全ての組み合わせ全てを○○する、ことであって
この理論的にありうる、考え得るってのがキモ

理論的にありえない、100%かんがえられない組み合わせを端から除外しても
やはり総当たりだ

敵同士、味方同士は「当たらない」というルールになってるなら端から除外しても
やはり総当たりだ

234名前は開発中のものです。:2008/04/05(土) 01:04:20 ID:ouV9zovg
弾同士が打ち消し合うときは(1599 + 1) / 2×1599じゃないか?
235名前は開発中のものです。:2008/04/05(土) 01:37:44 ID:ndMxol9I
>>229
ウッセー自分で書いて後で赤面してんだからそれ以上言うな
236名前は開発中のものです。:2008/04/05(土) 15:10:07 ID:yDdR+5eW
33MHzくらいのCPUでSTGを作ったときは空間分割にしないと重くて大変だった。
そういうプアなハードじゃないなら好きに作った方がいいかもね。
237名前は開発中のものです。:2008/04/05(土) 15:19:58 ID:q5ZpKtyT
自機の弾が1600発とか弾で画面が見えなくなりそうだなw
238名前は開発中のものです。:2008/04/05(土) 18:40:45 ID:9fddUrpP
>>224
私の記憶が確かならば、A()でとっとと打ち切られるのはCの仕様で保証されているはずだ。
239名前は開発中のものです。:2008/04/05(土) 19:27:04 ID:hxbbxTAw
O(n^2)の壁は厚すぎる
240名前は開発中のものです。:2008/04/06(日) 01:22:08 ID:+j0OgDSv
>>218
矩形同士の判定程度だと、
  ツリー管理コスト>>>衝突判定のコスト
だと思うのだが。これが3Dでコリジョンも複雑になってくると、
  衝突判定コスト>>>ツリー管理コスト
になるけど
241名前は開発中のものです。:2008/04/06(日) 01:42:33 ID:5ljxdwAA
>240 の頭の中にはどんな木が生えているのだろう?
木ってぐらいなんだから再帰なんだんろうけど、

それよりも、ずっと簡単なs個の空間分割でこんな感じだよ。

比較回数(衝突判定回数)は総当たりが一定でO(N^2)としたら、

s個の空間に分割した時は、
最小 O(N^2/s +N) 〜 最大 O(N^2 +N)
 +Nってあるのは、中心より上とか下とか、左右とか、分割条件との比較。

最大は、全ての判定対象が一つの空間に有るとき。
最小は、全ての判定対象が均一にそれぞれの空間に別れたとき。

最大なんて状態ばかりのゲームはそう滅多に作れない。
必要とあらば中心を移動する事もできちゃうしね。
242名前は開発中のものです。:2008/04/06(日) 02:25:27 ID:KzCv2Ahg
あれだ





弾幕ゲーが嫌いで、オブジェクト数がさほど多くない俺には不要>空間分割
243名前は開発中のものです。:2008/04/06(日) 08:33:57 ID:lZPN8UOZ
空間分割して、空間内にあるかどうかの判定って矩形判定みたいな
もんだよね。差し引きして恩恵あるのかね?あと、空間の境界にいる
場合は隣接した空間も含めなきゃいけないし、その判定のコストも
加わるから、あんまり恩恵がない気がするんだけど。
244名前は開発中のものです。:2008/04/06(日) 09:49:50 ID:LNMxVQdl
現空間x-1 <= 判定対象空間x && 判定対象空間x <= 現空間x+1
245名前は開発中のものです。:2008/04/06(日) 10:21:25 ID:UvIpq6SI
すみません。
空間分割による判定、のメリットというものがどうもイメージできないのですが、
例えば、縦シューで自機と敵弾(256発)の当たり判定で、

for(int i=0; i<256; i++){
if((自機Y座標-敵弾Y座標)の絶対値<当たりの深さ){
if((自機X座標-敵弾X座標)の絶対値<当たりの深さ){
(当たっている処理)
}
}
}
という単純な座標比較による総当たりを行っている場合、
空間分割にする場合どのように変更して、またそれによりどのくらいの恩恵が
得られるのでしょうか?
246名前は開発中のものです。:2008/04/06(日) 10:32:56 ID:wmWZV0ag
>>243
>空間分割して、空間内にあるかどうかの判定って矩形判定みたいなもんだよね。
それじゃ逆に判定回数増えるだろ。
例えば4分割だとしたらオブジェクトのポインタのリストを4つ準備して
オブジェクトを動かした後にでも空間別にリストに登録する。
判定したいオブジェクトの空間のリストのみ判定する。

空間の境界をまたぐ場合があるから実際はリストよりツリーを使うみたいだけど。
自機対敵弾みたいな1対多のような場合は>>240の可能性もあるが
しっかり最適化すれば恩恵はあると思う。
247名前は開発中のものです。:2008/04/06(日) 10:51:59 ID:ZtZMep9I
弾幕ゲーで弾同士の相殺でもない限り、
空間分割の恩恵は誤差範囲だと思うな
80-20の法則的にもっと別の部分の最適化に労力を使えばいい
248名前は開発中のものです。:2008/04/06(日) 11:12:26 ID:lDJhBuwb
空間分割なんて16ビット機でやってもいろんなオーバーヘッドで効果は微妙だった。
いくらか弾数が増えてるとはいえ、今のPCでみみっちいことしないでよろしい。富豪的に池
つーかまず衝突判定にそんなに時間かかってるのかプロファイリング取れ。
249名前は開発中のものです。:2008/04/06(日) 14:07:39 ID:IUsiyVu+
空間分割自体は当たり判定以外でも使える場合もあるかもしれないから
そういう方法があるとだけ覚えておけばいいんじゃない?
250名前は開発中のものです。:2008/04/06(日) 19:03:41 ID:lZPN8UOZ
>>246
難しくて分かりません。
他のレスを見て、合わせて、
必要ないということで納得しました。
251名前は開発中のものです。:2008/04/06(日) 19:14:32 ID:Cm7rU9iY
シューティングって、三角関数のテーブルは360度で足りる?
252名前は開発中のものです。:2008/04/06(日) 19:38:45 ID:ZtZMep9I
それくらい自分で判断しろ
253名前は開発中のものです。:2008/04/06(日) 20:07:47 ID:S2eA97Dz
どんなもん作りたいかによる
要するに自分で判断しろ
254名前は開発中のものです。:2008/04/06(日) 20:51:46 ID:HV30LXTn
普通に標準ライブラリ関数使いまくりでおk
255名前は開発中のものです。:2008/04/06(日) 21:21:13 ID:09KIF8si
むしろ度数法を久し振りに見た……。
256名前は開発中のものです。:2008/04/06(日) 22:24:48 ID:lDJhBuwb
だからテーブルとか考える前に普通に三角関数使ってみなよ。富豪的に。
たかがシューティングごときを作るのに、
あれこれレガシーな技をどこで覚えてくるんだいったいw

弾幕シューが技術的にすごかったのはX68000までよねーキャハハ
257名前は開発中のものです。:2008/04/06(日) 22:37:18 ID:+JZYHxk+
微妙に誉め言葉w
258名前は開発中のものです。:2008/04/06(日) 22:45:56 ID:mi699AnH
俺もそうだったが、
初心者ってどうでもいい部分の最適化にこだわるよなw
259名前は開発中のものです。:2008/04/06(日) 22:54:25 ID:wmWZV0ag
アセンブラ勉強し始めたりとかなw
260名前は開発中のものです。:2008/04/06(日) 22:55:52 ID:tOJ8RPAp
>>256
たぶん超連射のことを言いたいんだと思うがあれは弾幕シューじゃない。
そもそも68全盛期に弾幕シューなんてジャンルは存在しない。
知ったか乙。
261名前は開発中のものです。:2008/04/06(日) 23:00:07 ID:S2eA97Dz
マジレスとな
262名前は開発中のものです。:2008/04/06(日) 23:13:28 ID:3n+Chkyh
爆裂矩形弾が泣いてます
263名前は開発中のものです。:2008/04/06(日) 23:19:08 ID:S2eA97Dz
敵弾の多さならメルトダウンも負けない
テキストだけどw
264名前は開発中のものです。:2008/04/06(日) 23:29:06 ID:ZtZMep9I
265名前は開発中のものです。:2008/04/06(日) 23:33:09 ID:+JZYHxk+
爆裂矩形弾懐かしいw
あれで弾幕シューは俺には不向きだと悟ったなぁ。
266名前は開発中のものです。:2008/04/07(月) 00:09:38 ID:RkL7uReo
針弾弾幕は、その場で計算して回転で大丈夫?
267名前は開発中のものです。:2008/04/07(月) 00:29:10 ID:SYSPe7mm
大丈夫も何も、針弾は角度とか回転情報を持ってなくね
針弾=曳航弾。尾=残像=向きは速度(ベクトル)に平行
所有する変数は座標、速度、尾の長さ。せいぜいこんなもん
表示に際しても、太った線分=OBBを一個作るだけであり
角度とか回転計算が出る幕はない

268名前は開発中のものです。:2008/04/07(月) 00:40:04 ID:UhDksLO+
その場で回転を計算の意図が今ひとつ掴めないが
俺は弾の情報として角度は持たせてる
前の座標や速度からその都度計算してると完全に停止する場合に困るからね
あとは途中で方向が変化しない弾なら発射時に角度を計算して放り込んで弾が消えるまで使いまわし
変化する場合は毎回計算

まぁ好みでやればいいと思うよ
269名前は開発中のものです。:2008/04/07(月) 01:18:56 ID:SZ+jR7s6
融通が効くと思う方法にしとけ。
速度で困ることは無いと思うし。
270名前は開発中のものです。:2008/04/07(月) 06:57:49 ID:+8OjOCNS
前に、三角関数使いまくったら流石に重かったなあ。
271名前は開発中のものです。:2008/04/07(月) 07:39:55 ID:Rur2+VQh
改めて自分のソース見てみたら360度のテーブル使ってた。
不都合無いのでこのままいくがw
272名前は開発中のものです。:2008/04/07(月) 09:06:33 ID:+8OjOCNS
>271
俺も見てみたら、unsigned charのオリジナル角度表記を使ってた。
意味あんのかな、これw
273名前は開発中のものです。:2008/04/07(月) 18:27:25 ID:jWrDXnrl
自分は1周=256分割にしてますね。
360度だと、nWay弾とかの処理するとき、弾と弾の間の角度に端数がでませんか?

274名前は開発中のものです。:2008/04/07(月) 18:35:56 ID:Ln6527jm
2Dでもちょっとした誤差くらい気にならんよ
それに角度を度でやるなら360も約数多いから端数出にくいんじゃねえの
275名前は開発中のものです。:2008/04/07(月) 19:08:11 ID:jWrDXnrl
確かに誤差の範囲ですね。組み方次第でどうにでもなる問題かも。
自分の場合、多Way弾の弾と弾の幅を考えるときに、360度法でいうところの
90度からスタートして、半分、半分、半分、って幅を狭めていく考え方を
することが多かったから、1周が2のn乗のほうがやりやすかった、というだけの話。
276名前は開発中のものです。:2008/04/07(月) 19:20:21 ID:/whlgGmL
いまだに三角関数のテーブル使ってる人が俺以外にもいたなんて
俺は1024分割

当然座標も整数だよな
277名前は開発中のものです。:2008/04/07(月) 22:10:13 ID:nzfTFxMf
そうか! 座標を整数以外にするという手もあったのか!!
278名前は開発中のものです。:2008/04/08(火) 00:03:17 ID:UTGYbURq
整数つかうときって、何倍かして入れるんだろうけど
当たり判定とか表示のときは毎回戻すの?
279名前は開発中のものです。:2008/04/08(火) 00:54:41 ID:sOsom0Zc
何回ってどういう意味なんかよく判らんw
280名前は開発中のものです。:2008/04/08(火) 00:57:21 ID:NDn3kKP8
281名前は開発中のものです。:2008/04/08(火) 01:08:48 ID:RXIPGVdD
>>278
戻すって、整数部だけが欲しい場合か?
そんなん普通にビット演算子とかシフト演算使えば済むでしょ

おそらく初心者だと思うが、固定小数演算に興味示すのは結構だが
FPU内蔵&SIMD系の命令でもfloat値が使えて当たり前の今時のPCで
わざわざ固定小数を使うメリットはほぼ無しってことも合わせて理解しとけよ

それでも年寄りの悪趣味懐古趣味に付き合いたいなら別に止めはしない
282名前は開発中のものです。:2008/04/08(火) 13:13:10 ID:Wd7FQUJf
次に作るSTGにリプレイ機能を搭載しようと思っているのですが、
小数を使う場合、CPUによって小数点以下に誤差がある?という話を聞いたのですが、
例えば敵弾の座標に小数を使っていたら、リプレイを再生する環境によって
微妙に挙動がずれたりする可能性はないのでしょうか?
組み方次第で回避できるとは思うのですが。
283名前は開発中のものです。:2008/04/08(火) 18:46:46 ID:RXIPGVdD
>小数を使う場合、CPUによって小数点以下に誤差がある?という話を聞いたのですが

とりあえず
固定小数点数演算で生じる誤差の話なら、それは整数演算で生じるものと全く同じ
浮動小数点数演算で生じる誤差の話なら、それは「小数点以下」とか関係ないから

浮動小数点数演算の結果はCPUによって異なる、というのは事実だが
それは全く異なるアーキテクチャ上のFPU同士を比較した場合の話であって
x86系のPCに限定すれば_fpcontrol()等できちんとFPUの設定をすることで
インテルだろうがAMDだろうが加減乗除算平方根三角関数の結果は同じになる

FPUに不具合があって回収された10年以上前のペンティアムとかは例外
あとSSE関連はよく知らね
284名前は開発中のものです。:2008/04/08(火) 19:22:22 ID:RXIPGVdD
あと、数値計算法の基本をふまえて相応のコードを組んでいれば
異なるFPU間で生じる演算結果の極めて微少な差は問題にならないはず

FPUの演算結果にはたいてい不要な桁数の仮数が入ってるのだから
そういうゴミ情報入りの数値は適切なタイミングで有効桁に丸めること
不要な桁も何もかも後生大事に丸々保存して使いまわすのは
無意味な貧乏根性
285名前は開発中のものです。:2008/04/08(火) 21:05:39 ID:NDn3kKP8
D3DXが内部でSSEやら3DNow!を使ってそいつらで誤差が出ると2chで聞いたことがある。
試してないから知らんけど、リプレイで記録するデータはCPUで普通に計算すればOKじゃね。
286名前は開発中のものです。:2008/04/08(火) 21:14:53 ID:5+HU4lQf
>>285
http://www.01step.net/tobitsuki/bbs/test/read.php/tobi_bbs/1116256631/18
これだな。
一応対策はできるらしいが。
287名前は開発中のものです。:2008/04/08(火) 23:49:54 ID:uw9YU9FV
NyaRuRu氏は同人ゲームのプログラマもやっていたのか・・・。
288名前は開発中のものです。:2008/04/09(水) 03:34:01 ID:B1YmjfJu
何やってる人なんだろうと思っていたが
不思議キッチンの人だったのか
289名前は開発中のものです。:2008/04/12(土) 15:27:37 ID:usi/yLYp
似たようなオブジェクトを同じクラスにするかどうか迷うなぁ
違う見た目(=テクスチャの領域)で同じAI(=updateメソッド)とか
AIのうち一部分だけ違う場合はifで分岐させるか、別クラスにするか
290名前は開発中のものです。:2008/04/12(土) 16:01:22 ID:ywj6p1Ij
好きにすりゃいいんじゃねーの。
そんな細かいことに定石も流行りもないだろうし。
291名前は開発中のものです。:2008/04/12(土) 20:25:36 ID:KRx1/teW
AI部分にStrategyパターンを適用して
付け替えできるようにするのもありだ。
292名前は開発中のものです。:2008/04/12(土) 22:37:11 ID:ObDRadP0
残機制にしたいんだけど、キャラの都合上死んだあとにもう一機出てくるのはおかしい
メカシューだから魔法みたいに復活するのも変
どうしよう…なんかいい例ある?
293名前は開発中のものです。:2008/04/12(土) 22:51:37 ID:Efa9OHIu
ばらばらに飛び散った破片が元通りに戻ってみたりするとか?
294名前は開発中のものです。:2008/04/12(土) 22:56:53 ID:Yh3eYIme
ゲーム内の設定によるだろうけど、例えば
「瞬間的にバリア張って高速自己修復出来るけど、
めちゃくちゃエネルギー消費するから回数制限がある」みたいな感じとか。
295名前は開発中のものです。:2008/04/12(土) 22:58:31 ID:/z0agk9x
夢オチ。
296名前は開発中のものです。:2008/04/12(土) 23:00:31 ID:GyPJI/ms
クロノトリガー式に未来からやってきた仲間がダミーと差し替え
297名前は開発中のものです。:2008/04/12(土) 23:01:59 ID:Efa9OHIu
思ったんだが普通に被弾したら、例えば片羽が落ちるとか
パーツがこぼれていく描写入れて暫く無敵時間を入れて
残機減らしてもそれはそれで良いんじゃないかな
298名前は開発中のものです。:2008/04/12(土) 23:16:03 ID:ZyjFSU8/
ナイトストライカーのようにシールド張ってる設定にすれば
被弾エフェクトはシールドの色が変わるとかSEとかで知らせる
299名前は開発中のものです。:2008/04/12(土) 23:30:26 ID:Yh3eYIme
夢オチワロスw
300名前は開発中のものです。:2008/04/13(日) 00:07:42 ID:VNOh5k7z
>292
爆発したら首だけすっとんで、新しいからだが飛んできて合体する逆アンパンマン方式。
301名前は開発中のものです。:2008/04/13(日) 00:14:37 ID:gNZFNySx
博士が来て修理するファミコンのアトム方式とか
302名前は開発中のものです。:2008/04/13(日) 00:39:19 ID:Z1kaHYoi
ツインビーwww
303名前は開発中のものです。:2008/04/13(日) 01:39:10 ID:NkPkjT6X
バリア張ってる設定にしたら?
残機=バリアの残りエネルギー
被弾するためにバリアのエネルギーを消費する
304名前は開発中のものです。:2008/04/13(日) 01:40:02 ID:NkPkjT6X
×被弾するために
○被弾するたびに
305名前は開発中のものです。:2008/04/13(日) 01:57:39 ID:QE/zNyJp
「メカシュー」で「残機制」にしたいという前提を忘れたようなレスが多いですね。
306名前は開発中のものです。:2008/04/13(日) 02:07:08 ID:NkPkjT6X
どう考えても無理だから、別の解決策を練ってるんだろうが
307名前は開発中のものです。:2008/04/13(日) 02:07:37 ID:P+NpYnxy
復活時にボムが回復するようなSTGだったらどうしようもないだろうな
308名前は開発中のものです。:2008/04/13(日) 02:17:23 ID:P+NpYnxy
よく考えたらストーリーあっても別の位置から復活するSTGいっぱい
309名前は開発中のものです。:2008/04/13(日) 02:20:15 ID:/0ITSDkw
>292
キャラを搭乗者と読めば、
被弾時は脱出装置で後方に下がって、
後方で自動操縦で追尾している残機に乗り換える
とか、何とでも自分で想像出来ない?

>308
夢オチ
310名前は開発中のものです。:2008/04/13(日) 02:23:13 ID:QE/zNyJp
同じ残機制でも、その場で次が出てくるタイプか、
シーンを戻されてやりなおしのタイプか、でやりようが変ってくるねぇ。
311名前は開発中のものです。:2008/04/13(日) 03:41:09 ID:CwJ+OgoR
戻り復活ならそんなに違和感ないな
312名前は開発中のものです。:2008/04/13(日) 04:15:14 ID:SI+TAocC
そうね
無かった事になるんだと思えば
313名前は開発中のものです。:2008/04/13(日) 08:07:11 ID:eUm94UGP
そもそもプレイヤーは次の機体がどんな出方してこようがあまり気にしていないような。
「人類に残された最後の希望」とか言って設定上試作機1機しかないはずの自機が
バンバン復活して出てくるSTGも結構あるし
314名前は開発中のものです。:2008/04/13(日) 09:40:22 ID:FMZP86Ek
アレだな。
漫画でもゲームでも良くある「そこは突っ込むな」って奴で良いんじゃね?

ドラクエだってストーリー上死んだキャラにザオリク使ってあげないし。
オルテガも話してる間にベホマしてやれば助かったと思うぜ。
315名前は開発中のものです。:2008/04/13(日) 14:44:26 ID:qC4BAKNL
>>313みたいに固定搭乗者・固定機ありなら夢落ち戻り。
といいたいところだけど、夢落ちだとステージ最初まで戻さないと
パワーアップとかあったときにつじつまが合わなくなるからなぁ。
夢落ちでわざと死ぬ前の状態から再スタートってのもそれはそれで面白い試み
かもしれないけど。
以下みたいな感じならつじつま合わせも可能かな。
パワーアップ > 装備増加 > 被弾 > 装備減少 > パワーダウン > 装備0 > シボンヌ
> 夢落ち戻り > 死亡直前の装備なし状態で復活
つじつままで気にする奴は早々いないとは思うけどw


軍vs敵みたいな、固定搭乗者なしなら別機出動演出。
(カラーとかロゴとかでバリエーション持たせたりして同型別機演出とか)
昔ロスト時に空中母艦かなんかが出てきて、新たに別機が出てくる
演出をしていたゲームがあったと思うけど。


> オルテガも話してる間にベホマしてやれば助かったと思うぜ。
あれはオルテガの男を見て「男の戦いに手を出しちゃいけない」と壮大な勘違いということでw
316名前は開発中のものです。:2008/04/13(日) 14:49:45 ID:Z/LVsXuc
勇者たちがザオリクで生き返るのは、神の認めた勇者とその仲間たちだからだ!

とかそんなこじつけ。
317名前は開発中のものです。:2008/04/13(日) 15:03:23 ID:NkPkjT6X
ダイの大冒険的には、死にかけにホイミ系は無意味
ザオリクは知らね
318名前は開発中のものです。:2008/04/13(日) 15:27:05 ID:bXOpRP77
撃墜されたの戦闘機に乗っていたのは実は影武者だった!
319名前は開発中のものです。:2008/04/13(日) 15:27:47 ID:k4a7kuL/
と言うことは、一機も撃墜されなかった場合影武者が世界を救うわけだな
320名前は開発中のものです。:2008/04/13(日) 15:29:16 ID:bXOpRP77
いや、その場合はそいつが実は本物だったというわけで。
321名前は開発中のものです。:2008/04/13(日) 15:50:35 ID:hy1v+Ap0
というか機体が複数存在するんじゃないって時点で残機じゃないよな
バリアみたいなものが減っていく普通のライフ制にするしかないと思うんだが
322名前は開発中のものです。:2008/04/13(日) 17:10:08 ID:Z1kaHYoi
夢オチなら残機じゃなくて残夢だから
鼻ぶく提灯の顔マークを並べとけばいいな
323名前は開発中のものです。:2008/04/13(日) 17:49:58 ID:vlZyAbxe
どうでもいいじゃん・・・
324名前は開発中のものです。:2008/04/13(日) 22:42:35 ID:qFLKD2CL
シューティング作りたいなーとか思い始めたんだけど、
具体的にどう作ればいいんだろ?

C言語ポインタくらいしか学んでないんだができるかね
325名前は開発中のものです。:2008/04/13(日) 22:55:43 ID:NkPkjT6X
まず、画面に画像を出力する方法を覚えないといけない
Windowsで動かすならDirectXか、標準APIの扱い方を覚えないと
てか、まずC++を覚えた方がいいな
326名前は開発中のものです。:2008/04/13(日) 23:42:03 ID:Z1kaHYoi
HSPが軽視されてると聞いて飛んできました
327名前は開発中のものです。:2008/04/13(日) 23:47:33 ID:TnA5dMk3
帰れw
328名前は開発中のものです。:2008/04/13(日) 23:52:31 ID:E6Dzw5oc
ちゃんとしたものを作ろうとしたときやっぱりオブジェクト指向覚えた方がいいのかな?
329名前は開発中のものです。:2008/04/14(月) 00:01:38 ID:tqnrBejp
ポリモーフィズム(C++なら純粋仮想関数 + virtualメンバ関数くらい)を覚えておいて、
あとは、構造体とstatic関数で良いよw

構造体自体の種類を示すメンバとか作り始めたときに、
virtualを考えればいい。
330名前は開発中のものです。:2008/04/14(月) 00:18:20 ID:yMQIDqXj
>>325
なるほど〜
C++を覚える作業にもどるよ。
331名前は開発中のものです。:2008/04/14(月) 00:19:11 ID:xWdI6ksr
オブジェクト指向なんて全然必要ない

むしろ理解してない人が作りながら覚えようとすると
十中八九途中で投げ出すことになる
332名前は開発中のものです。:2008/04/14(月) 00:20:15 ID:Mgsx+yf7
まあ、そんなの無くても作れるもんな
333名前は開発中のものです。:2008/04/14(月) 00:30:41 ID:a9wj1kmQ
>>331-332
ありがとう。
講座サイト見てるとオブジェクト指向で書いてある所が多かったからてっきりそうとばかり思ってたよ。
334名前は開発中のものです。:2008/04/14(月) 18:03:16 ID:qbweF5RS
というか、オブジェクト指向でやってる人ってどれぐらい居るん?
335名前は開発中のものです。:2008/04/14(月) 20:46:07 ID:Pl9LhtfJ
8bit時代からあるゲームにC++やオブジェクト指向が必須かと言われればNOだ。
プログラムの勉強を兼ねるならやっておいた方がいいだろうね。
336名前は開発中のものです。:2008/04/14(月) 23:38:27 ID:tqnrBejp
オブジェクト指向を仰仰しく考えることないよ。
文字通り方向性みたいなもので、設計方針の1パターン。

構造化・オブジェクト指向・関数型・総称・イベント駆動型あたりを
広く浅く知っておけば良いんじゃないかな。
異なるパラダイムの異なる要素が結構似ていたりする。

http://ja.wikipedia.org/wiki/プログラミングパラダイム
337名前は開発中のものです。:2008/04/15(火) 10:27:10 ID:iHmKOkzF
オブジェクト指向が本当に必要なら作ってるうちに覚えるから
最初から覚える必要はない
ぐちゃぐちゃでいいからとりあえず動くものを作るとこまでが重要
338名前は開発中のものです。:2008/04/15(火) 13:02:14 ID:9d1UNIoN
シューティングを作るアルゴリズムというか、パターンというか・・・
そういうのがわからん・・・
339名前は開発中のものです。:2008/04/15(火) 13:11:07 ID:X896jXV9
1.プレイヤーの入力を受け取る
2.受け取った入力より自機の座標を動かす
3.その他(弾,敵等)の座標を動かす
4.各衝突判定をする
5.ぶつかってたら消すなり体力を減らすなり
6.消えてない物の絵を画面に表示する

1〜6を繰り返す

簡単に言うとこれ位があればシューティングっぽいものが出来るのでは?
340名前は開発中のものです。:2008/04/20(日) 04:12:04 ID:HlE9w/ua
ここで聞くのも間違いかも知れないが、今C++とSquirrelでSTGを作っているんだ。

Sqruirrelスクリプト側からC++の関数を呼ぶためには、
SQInteger func(HSQUIRRELVM v)
という形のグローバル関数でなくてはいけないんだけど、スクリプト側から特定のオブジェクトを操作したいんだ。
しかし、上の形だと動的メソッドでもないし、引数にオブジェクトへのポインタが含まれていないため、どうやって呼び出そうか困ってるんだ。
HSQUIRRELVMはスタックになっているので、スクリプト側に操作したいオブジェクトのポインタをあらかじめ渡しておいて
必要なときにスタックにぶち込んで引数として利用しようと考え、

/*Squirrelスクリプト*/
function ExeScript(p) /*引数はポインタ*/
{
  SetVelocity(p, 0, 5, 0); /*引数は操作するオブジェクトのポインタ、x方向の速度、y方向の速度、z方向の速度*/

  return 0;
}
/* HSQUIRRELVMのスタックには 1(top):roottable, 2:p, 3:0 4:5 5:0)となっているはず*/

というようなスクリプト側の関数を作り、ExeScriptをC++側から呼び出す時に
引数に呼び出し側のポインタをぶち込んであげようと思ったんだが上手くいかない。
ちなみにpはスクリプト側ではint型で扱っていて、ExeScriptが呼ばれたときにintにキャストし、
SetVelocityが呼び出されたときにポインタにキャストするようになっている。

何かいい方法はないだろうか…?
341名前は開発中のものです。:2008/04/20(日) 09:38:16 ID:onwyvG0N
>>340
作ろうとしているのがSTGってだけなので、
ム板の組み込み言語スレで聞くほうが良いと思うよ。
342名前は開発中のものです。:2008/04/20(日) 18:34:41 ID:M+BR0SuC
解った、行ってみる
ありがとう
343名前は開発中のものです。:2008/04/23(水) 00:26:04 ID:gg06xRT5
2Dの弾幕シューを製作してるんですが、画像表示の優先度(Zの値)はどうしたらいいでしょうか?

取り合えず
・スコア、ライフなどの表示系
・敵弾
・自機
・自機弾
・敵
・背景
大体こんな感じにしてみましたが、地上物の弾が空中の敵の上を通るとか不自然じゃありませんかね?
特に重なっている時に地上物が撃った場合上にいる敵から出てるように見えてしまって・・・。
爆風も同じで地上物の爆風が空中の敵にかぶるとか変ですよね?

皆さんはZ方向の値はどういう処理をしてますでしょうか?
344名前は開発中のものです。:2008/04/23(水) 00:48:49 ID:byKYi0oI
既存のゲームをもっとよく観察しようぜ
345名前は開発中のものです。:2008/04/23(水) 00:57:39 ID:T8mB/bRA
ちょwww Web上で動くってレベルじゃねー
しかも3D
http://58.13.216.134/humanbench/index.html

60フレ死守?

346名前は開発中のものです。:2008/04/23(水) 01:44:08 ID:xD2eXe6t
暇だから誰か制作中STGのスクショうp!
347名前は開発中のものです。:2008/04/23(水) 01:45:45 ID:aQST5hrX
言い出しっぺの法則。
348名前は開発中のものです。:2008/04/23(水) 01:46:06 ID:3S6lMLRf
言いだしっぺのh・・・ってもう言われてるしw
349名前は開発中のものです。:2008/04/23(水) 02:32:06 ID:EoY8EhMN
>>343
そんなんで2Dシュー作ってるのか・・・
350名前は開発中のものです。:2008/04/23(水) 02:37:44 ID:hQw6UUJp
>343
空中キャラのサイズが128*128程度なら気付かないんじゃないかな
違和感が出るのは大型の空中キャラがいるときだから
敵配置を工夫して誤魔化すのがいいかも
351名前は開発中のものです。:2008/04/23(水) 02:56:41 ID:BLt2L8mz
地上物からの弾だとしても、空中の敵で見えなくなったらそれだけでクソゲ扱いだなw
352名前は開発中のものです。:2008/04/23(水) 04:17:15 ID:gg06xRT5
やっぱり敵配置がポイントですか・・・。
一応他のゲーム(CAVE辺り)は動画でよく見てたんですがイマイチ分からなかったんで・・・すいません。
敵と敵の配置を研究してみます。
アドバイス助かりました。

さっきカスりを取り入れてみたんですが、ライフ回復のためにカスるという危険行為推奨になってしまいました。
やっぱカスりはスコアボーナスとかエネルギー(特殊技用)回復のモノにしたほうがいいですよね。
変に凝ってしまって全て見失うような気がして怖いです。
353名前は開発中のものです。:2008/04/23(水) 05:54:44 ID:mDm6BHht
>>345
いいねぇ!これ作ったの外人さんなのか?
そういやFlashもAction Script3が使えるようになった辺りから
描画速度がだいぶ改善されてるみたいね

一昔前のShockwave(+Lingo)並のことができるのは嬉しいな
あの頃はDirectorが高すぎて手が出せなかったよ
354名前は開発中のものです。:2008/04/23(水) 08:14:48 ID:sHRBpt6x
>>343
重なってるときに弾を撃たなければいいのでは
355名前は開発中のものです。:2008/04/23(水) 12:16:58 ID:NLa3WqAS
敵弾が低い位置にある場合は当たり判定も無いようにするとか……分かりづらいか。
356名前は開発中のものです。:2008/04/23(水) 13:39:11 ID:MMF0qG0v
>>352
深く考えないでカスリとか入れてるっぽいが、
ちゃんとゲームとして必要かどうか考えたほうが良いんでは?

まあ個人的にカスリが嫌いなだけだけどw
357名前は開発中のものです。:2008/04/23(水) 23:07:22 ID:lhBmTT+W
カスリとかゲーム的過ぎて嫌いだな
まぁSTGは全般的にゲーム的過ぎることが多いが
358名前は開発中のものです。:2008/04/24(木) 00:00:02 ID:lksTfSLx
ゲームなんだから良いじゃん
359名前は開発中のものです。:2008/04/24(木) 00:16:43 ID:kyvrq5VT
自分からわざわざギリギリで避けるなんて
両方滝沢キックを喰らってしまいそうだ。
360名前は開発中のものです。:2008/04/24(木) 00:38:13 ID:ARzrsuEN
ゲーム的だからってのはどうでもいいが俺もカスリは好かんな
361名前は開発中のものです。:2008/04/24(木) 00:43:02 ID:Nfyc4+1a
>>358
「ゲーム的」っていうのは、
ゲームとしては面白いが現実離れしている、みたいな意味だ
362名前は開発中のものです。:2008/04/24(木) 03:46:10 ID:ARzrsuEN
カスリなんかよりおかしいとこいくらでもあるだろw
363名前は開発中のものです。:2008/04/24(木) 20:31:58 ID:V07ASawT
俺たちが遊んでいるのはゲームだ。
面白いゲームならそれでいい。
364名前は開発中のものです。:2008/04/24(木) 20:57:32 ID:bgp800Ur
まあ、言いたいことは分かるけどな。
365名前は開発中のものです。:2008/04/24(木) 21:03:09 ID:FxJA2aMq
58.13.216.134
366名前は開発中のものです。:2008/04/24(木) 21:21:35 ID:aaSouiJW
>いいねぇ!これ作ったの外人さんなのか?
>そういやFlashもAction Script3が使えるようになった辺りから
>描画速度がだいぶ改善されてるみたいね

>一昔前のShockwave(+Lingo)並のことができるのは嬉しいな
>あの頃はDirectorが高すぎて手が出せなかったよ

HumanBench作ったのはアドビの中の人だよ
367名前は開発中のものです。:2008/04/24(木) 22:53:38 ID:xLIo9y/a
中の人は80年代のアーケードの疑似3Dゲーとかが好きに違いないな!
PC-9801時代のKUNI SOFTとかABAゲイの同人ゲーをふと思い出した
368名前は開発中のものです。:2008/04/25(金) 00:00:21 ID:8TKkCAiM
>>365
/yukissalbum2/jam.cgi
369名前は開発中のものです。:2008/04/25(金) 08:17:44 ID:lM3nYk6R
作成したシューティング
誰かにプレイさせてみたいのですが、プレイさせる相手が見つからない
こういう時って、どうしたら良いんでしょう?
370名前は開発中のものです。:2008/04/25(金) 11:57:54 ID:atI/FxXl
それ用のスレがどこかにあったと思う。
371名前は開発中のものです。:2008/04/25(金) 12:00:04 ID:K2ZrdRog
というか、完成してるのならフリーソフトとして公開すればいいだけでは?
372名前は開発中のものです。:2008/04/25(金) 13:40:11 ID:jIsqw0Mx
いえ、まだ体験版の段階なのですが
プレイできる段階にまでは仕上がったので、書かせてもらいました。

公開するにしても、みんなにやってもらうためにはどうしたらいいんでしょうか?
ただホムペを立てるだけでは人は来ませんし
公開スレ(適切なのが見つかりませんが)でうpが良いのでしょうか?
もしくはベクターに登録とか?
373名前は開発中のものです。:2008/04/25(金) 20:13:38 ID:YebkKA52
ここでうp!
374名前は開発中のものです。:2008/04/25(金) 20:28:38 ID:IiumCil8
375名前は開発中のものです。:2008/04/25(金) 20:48:37 ID:YebkKA52
ここでうpしたほうが意見もらえるんじゃないか?
テンプレにも晒しておkって書いてあるし
376名前は開発中のものです。:2008/04/26(土) 00:02:16 ID:2TZn1YBj
>HumanBench作ったのはアドビの中の人だよ
コリン・ムック氏は実はアドビ人ではないかと。
377名前は開発中のものです。:2008/04/26(土) 14:20:42 ID:8GFiI3TW
自作ゲーム評価スレは、STG以外のものも出ていることもありますし、
ひとまずは、こちらでうpさせてもらいます。

シューティングビルダーを用い製作したSTGで、SB本スレでも一度うpはしたものです。
4面まで作ったものの、ちゃんと出来ているか不安でたまりません。
どなたか意見いただけると超嬉しいです。

http://www.erc-j.com/sb/
の左上にあるSB-UPLから入れるアップローダーのsb0173.lzhにうpしました。
378名前は開発中のものです。:2008/04/26(土) 20:08:40 ID:k73vvmo8
>377
ちょっとやってみた
敵の種類とか攻撃パターンも結構豊富だしよくできてると思うよ
全体的にキャラが小さいのが個人的にはあまり好きじゃないけど、まあ好みの問題なので気にしないでくれ
あと単発弾はもうちょっと弾速早くてもいいんじゃないだろうか
379名前は開発中のものです。:2008/04/26(土) 21:31:57 ID:glwfkb3K
つまらなくはないがノーコンで頑張る気にはなれなかった
敵が体当たり狙ってくるのは嫌いだ
好みは別として、とりあえず硬めの敵の爆発は本体の二倍以上の大きさにすべき
380名前は開発中のものです。:2008/04/26(土) 21:39:32 ID:glwfkb3K
よく出来てるけど演出がもったいないな
381377:2008/04/26(土) 23:39:02 ID:8GFiI3TW
ヌクモリティに全俺が泣いた
感想ありがとうございます!

>>378
キャラが小さいのはドット絵が素材頼りなこともあって限界があったりします。
弾速に関しては、前半部分だけ少し早めにしてみます。
後半に進むたびに弾速が早くなる感じになっており、後半面では製作者がいっぱいいっぱいなのでw

>>379
体当たりに関しては弾幕部分を削減したかったこともあり導入したのですが、すみませんでした。
理不尽に感じた体当たりキャラを教えていただけるとありがたいです。
爆発に関しては改良させてもらいます!

>>380
演出がもったいないとは、全体的に演出が甘いということでしょうか?
それとも、あちゃーな演出があったということでしょうか?
382名前は開発中のものです。:2008/04/26(土) 23:57:19 ID:AX/nbobn
俺も3面途中までやってみたので、多少なりとも思った事を。

一面の序盤から、敵が殺る気まんまんで笑った。
当たったら死ぬボールみたいなの(機雷?)はしょっぱなから難しすぎじゃないかな。

ゲームバランス的にどうかは考えないで言うと、もう少しパワーアップをガンガンやりたかったかな。
たまーーーーにしかパワーアップアイテムが出ないので、存在を忘れてしまう。

演出も面白かったけど、それぞれが単発で「お?」と思う程度だったのがちょっと残念かな。
383名前は開発中のものです。:2008/04/27(日) 03:31:32 ID:QG+Suesf
個人的に前半部も弾の色を分けた方がいいと思った
敵もなんだかところどころ見づらい
384名前は開発中のものです。:2008/04/27(日) 05:01:50 ID:T1Qa567i
難易度タカスwww
1面の機雷分りにくい。アイテムだと思っちゃうよ。
あと、ウィンドウモードだとFPSが安定しないし、全画面よりもFPSが早くなった。
385名前は開発中のものです。:2008/04/27(日) 15:52:51 ID:zZ5MQxMP
>>377
d3dx9_30.dllが無いって言われる。
http://d.hatena.ne.jp/ginpei/20060805/1154783971
http://alwei.sakura.ne.jp/index.cgi?date=20070428

最新版とか入れるのはかまわないけど、
出来れば同梱とか依存性切るとかした方がいいかも。(一般ユーザーのために)
386377:2008/04/28(月) 01:02:21 ID:nDsvW52B
レス多くて本当に助かる、ありがとう!

>>382
パワーアップは一面に一つしか出さないようにしてるので、確かに存在を忘れがちかも。
しかしバランスのこともありますが、東方のように初めで攻撃力最強になってしまうのも防ぎたい私としては悩みどころです。
難易度に関しては、調整もう少しするかイージーモードを作ることにします。

>>383-384
弾の色を分けるというのは、どういうことでしょうか?
同系統の弾は変に色分けしない方が良いのでは?
敵が見づらいとか分かり辛いのは、ドット絵が素材頼りなので可能な変更に限界がありますが
とりあえず色などの変更は試してみます。
ウィンドウモードに関しては、少しビルダー製作者に聞いてみます。

>>385
d3dx9_30.dllの同梱って著作権的に問題があったはずなので、readmeにリンク貼ることにします。
387名前は開発中のものです。:2008/04/28(月) 13:02:47 ID:NAk73a6s
ヌルポ
388名前は開発中のものです。:2008/04/28(月) 13:46:49 ID:sRoeZ3fk
>387
……。(あえて何も言わない)
389名前は開発中のものです。:2008/04/29(火) 00:22:52 ID:sss69txd
390名前は開発中のものです。:2008/04/29(火) 06:29:07 ID:4C4kmVz/
デモプレイで、自機が死なずに居続ける位置取りを算出する特許

・・・普通は人間によるキー操作を事前記録して再生するだろうから関係ないな
391名前は開発中のものです。:2008/04/29(火) 06:32:51 ID:WC5+m6yA
さらっと内容に目を通してみたけど

ゲームの魅力を伝えるには、事前記録された物を再生して
決まったデモしか出てこないのは多様性が無く十分ではない

また、ランダムに動くようにしてもすぐ死ぬのでこれまた
魅力を伝えるのには十分な時間見せられない

という上でそんなことしてるみたいだけどな

意味があるのか無いのかは知らん
392名前は開発中のものです。:2008/04/29(火) 10:45:10 ID:Y2ssqC4h
これを発展させれば自動的にゲームをクリアすることも出来るだろうから、
技術としては面白そうだよな。
393名前は開発中のものです。:2008/04/29(火) 14:29:06 ID:NjIg+POR
格闘ゲームで実現してね?
394名前は開発中のものです。:2008/04/29(火) 15:37:03 ID:+xWM+Yeb
>>392
これが特許になってるってことは
発展させるにも許諾とか金払わなくちゃいけないんだよ
395名前は開発中のものです。:2008/04/29(火) 15:53:43 ID:WnahT3LQ
どの程度の完成度になったらこのスレにうpして意見貰えるかな?
と、まだ1面ボス作ってる段階の俺が言ってみる
396名前は開発中のものです。:2008/04/29(火) 16:22:28 ID:ZiVZNUAo
>>394
特許は結果じゃなくて方法に対して与えられるから、
別の理屈で位置から作ればいいじゃん
ぱっと見、あんまりたいしたこt(ry
397名前は開発中のものです。:2008/04/29(火) 16:52:05 ID:5UtdTdRR
>>395
プレイできる段階にまで仕上がっているなら、
たとえボスだけでも、道中だけでも俺は意見するよ。
398名前は開発中のものです。:2008/04/29(火) 18:02:25 ID:WnahT3LQ
>>397
まじか
じゃあ早いところBGMと効果音を搭載してどこかにうpできるように頑張ってみるよ
399名前は開発中のものです。:2008/04/29(火) 18:04:13 ID:wXou4Eov
期待してます。
でもそれで満足しちゃって開発飽きちゃわないでね。

経験ある、ってーか常にそうなんだけど、
ある程度形になって、他人にテストプレイしてもらったら
しばらく何もする気なくなったりするから。
400名前は開発中のものです。:2008/04/30(水) 02:50:42 ID:bBj/BlcG
スクリーンショットをうpしたらアドバイス貰えるかな?
完成まで程遠いんだけど、客観的な意見をもらって軌道修正したい気がするんだが
401名前は開発中のものです。:2008/04/30(水) 03:34:49 ID:lg9js0tm
>>400
動くものじゃないと軌道修正するほどの意見は難しいんじゃね
俺的には音もタイトル画面もどうでもいいからうp!
402名前は開発中のものです。:2008/04/30(水) 08:53:36 ID:bBj/BlcG
>>401
じゃあ俺はGW中に動くものをうpするよん
395と同じく1面ボスまで
今バグだらけでうpできる状況じゃないから何日か待ってね
403名前は開発中のものです。:2008/05/01(木) 19:05:26 ID:6Awdsy0R
敵、敵弾、自機弾をそのつどNewするのって良くないの?
404名前は開発中のものです。:2008/05/01(木) 19:42:37 ID:9iKbAacM
【キーワード抽出】
対象スレ: シューティングゲーム製作技術総合 15機目
キーワード: New
抽出レス数:6
405名前は開発中のものです。:2008/05/01(木) 22:23:57 ID:1m4VYE2q
富豪厨の出番と聞いて飛んできました
406名前は開発中のものです。:2008/05/02(金) 00:53:49 ID:l9K+obAj
(; ^o^)
407名前は開発中のものです。:2008/05/02(金) 01:24:42 ID:7/IjqgCE
富豪陣営に加勢するぜ。
408名前は開発中のものです。:2008/05/02(金) 01:38:52 ID:l9K+obAj

     「迷える子羊よ。真の富豪厨はHSPに帰依します。」

私はその言葉に心を強く打たれ、boost原理主義から足を洗いました。
今は玉葱狂信者です。
409名前は開発中のものです。:2008/05/02(金) 09:26:40 ID:Hviw5uVq
libneet使ってるのは俺だけのようだな
410名前は開発中のものです。:2008/05/04(日) 15:04:30 ID:v9QwRQKh
>>381
敵の動きとか拘ってるのは伝わってくるんだけど、
オブジェクトが小さいせいか安っぽさを感じる。もっと演出を派手にすべき

ttp://hp.vector.co.jp/authors/VA017297/
ここのRagud Mezegisを使って研究するといいよ
411名前は開発中のものです。:2008/05/04(日) 19:35:23 ID:AA2CfXS5
3D弾幕で画面を埋め尽くすHumanBench見てて思った。
フラッシュでも普通に2D弾幕シューが作れそうな予感。
IEで普通に遊べれば、2D弾幕の布教活動がしやすくなるのでは。
412名前は開発中のものです。:2008/05/05(月) 01:23:05 ID:1Z2xNdvS
HumanBenchやってみたが、3.xxxxHzあたりで重くなった。
グラボ無いとCPUだけあってもこんなもんか
413名前は開発中のものです。:2008/05/05(月) 01:51:57 ID:+bBWRhTo
Flashでも2D弾幕ゲームはすでにいくつかあるよ
414名前は開発中のものです。:2008/05/05(月) 15:45:46 ID:CU4E4nxb
パワーアップすると敵の固さも弾数も激しくなって難しくなるゲームで
難易度を上げないためにパワーアップしない、という遊び方が必須なほど
難易度の上昇が激しいのは、バランス的にやっぱりおかしいと思うんだが、どうだろうか?
415名前は開発中のものです。:2008/05/05(月) 16:08:28 ID:gwVylmnp
個人的にはおかしいと思う。
なぎ倒す為にパワーアップしたいのに、敵まで強くなったら意味ないじゃんと。
416名前は開発中のものです。:2008/05/05(月) 17:26:53 ID:A8W0VUZG
特定のアイテムを取ると、パワーアップする代わりに敵も少し強くなるというくらいならアリかなとは思うけど。
417名前は開発中のものです。:2008/05/05(月) 20:22:49 ID:6C83N/Fe
アイテムを取ると敵が強くなるから、アイテムを回避しまくる戦闘機
なんか変だよな、どう考えても
418名前は開発中のものです。:2008/05/05(月) 20:24:30 ID:yg2wVjr5
バッドエフェクトアイテムみたいにして
パワーアップとは別物として用意するとか
419名前は開発中のものです。:2008/05/05(月) 20:32:30 ID:gwVylmnp
パワーアップアイテムが出た時、それを敵がとったら敵がパワーアップするとか。
420名前は開発中のものです。:2008/05/05(月) 21:21:16 ID:+Os5WI2N
敵を撃破したときの点数(レート)が上昇するアイテムを取ると、
雑魚敵が増えるとかは面白いかも。
421名前は開発中のものです。:2008/05/05(月) 21:34:55 ID:QpmiyD87
高難易度と引き換えに高得点てのはバランス取りやすいね。
初心者は手を出さなければ低難易度で楽しむことができるし。
422名前は開発中のものです。:2008/05/05(月) 23:48:59 ID:unxMgLFR
「アイテムを避ける」という行為自体が生理的になんか嫌、
という人も少なくないと思うがどうだろう。
423名前は開発中のものです。:2008/05/05(月) 23:58:03 ID:jEGOiG/t
まあ場合によるとしか
結局は作者の好みだな
424名前は開発中のものです。:2008/05/06(火) 00:03:05 ID:31Sx/Nsf
考えてみた。
パワーアップ方式の問題点は
上手い人はパワーアップの効率が良いので、上手い人ほど楽になるという矛盾。
これを回避するために、パワーアップしたら敵も強くなるってのがあるんだよな。

回避パターンは
 パワーアップが継続しない。時間制。1面リセットなど。
 パワーアップしないと利益がある。しないと高得点。得点倍率アップなど。
 パワーアップすると不利益になる。攻撃力を上げすぎると制限時間やHPが減る。
 パワーアップしない。


いっそ難易度を危険度という名前で大っぴらに表示して
危険なほど高得点が稼げるようにしたほうがいいかもな。
凄く固いエマージェンシーキャラを倒すと一気に危険度が上がったりとか。
425名前は開発中のものです。:2008/05/06(火) 02:39:25 ID:SU0KsQ1H
過去のゲームのバリエーションでしか無い気が。

パワーアップについて考えるなら、そもそもパワーアップが必要かどうか
から考えてみては。
426名前は開発中のものです。:2008/05/06(火) 21:27:09 ID:M7YCryHv
パワーアップすると難しくなるから第二段階くらいでずっと進んだりね
フルパワーを誰も使わなくなってしまう
427名前は開発中のものです。:2008/05/06(火) 21:57:58 ID:r6ZSijaz
パワーアップは爽快感をパワーアップさせるもの
428名前は開発中のものです。:2008/05/10(土) 19:31:10 ID:yVArJY5T
動画サイトで弾幕シュー見て参考にしてたんですけど敵に当たってもアウトだったんですね。
スーパープレイっぽいのしか無くて今まで気が付かなかったです。

でも別に敵とは当たり判定無くてもいいような気がするんですがどうでしょう?
ちなみに縦弾幕シューです。
429名前は開発中のものです。:2008/05/10(土) 19:42:06 ID:8c4/vHrh
良いんじゃないかな
マニュアルに当たり判定ないって書いておけば
430名前は開発中のものです。:2008/05/11(日) 00:37:33 ID:uhzbnGk6
東方並みの弾幕シューには不要だと思うよ

非弾幕には必要だと思う
431名前は開発中のものです。:2008/05/11(日) 03:37:11 ID:p4xje47Y
敵に当たってミスにならないのは少数派ではある
432名前は開発中のものです。:2008/05/11(日) 05:14:16 ID:OpH8uKFH
「敵の突撃体当たり攻撃」パターンが減るけどいいのかな?
433名前は開発中のものです。:2008/05/11(日) 06:35:59 ID:e/9QHFjn
体当たりが必要になったら、弾を纏った敵を作ればいい。
434名前は開発中のものです。:2008/05/11(日) 07:35:53 ID:FOG8VURA
むしろ敵のような弾でいいんじゃね
435名前は開発中のものです。:2008/05/11(日) 10:20:39 ID:BF4VK2LY
>>433
今まで「敵は当たりませんよ」と思い込ませておいて
いきなり「当たりますよ」はずるいだろ、という意味で。
436名前は開発中のものです。:2008/05/11(日) 13:16:35 ID:IpYJTSVB
そもそも弾幕シューだと体当たりしてくる敵なんていない気がするが
437名前は開発中のものです。:2008/05/11(日) 13:41:29 ID:Q0Rcp3vN
え、敵に当たったらパワーダウンだろ?
438名前は開発中のものです。:2008/05/11(日) 14:41:22 ID:Y826splk
敵との当たり判定が必要か不要かではなく、ゲームに生かせるか
どうか考えればよくね?

例えば、判定の有無をプレイ中に切り替え可能にして、連続切り替えには制限を付ける。
で、当たり判定有りなら、神風アタックを使えて高得点を取得できるけど
普段の当たり判定が広く弾に当たりやすい。(プラスアルファ要素)
当たり判定無しなら、神風アタックはできないけど、普段の当たり判定が
小さいく弾に当たりにくい。(従来品)
とかやれば、いつ切り替えるかで戦略性が増すと思う。
(リアル性を一切無視しているが)
439名前は開発中のものです。:2008/05/11(日) 18:54:55 ID:NhQ5BwE+
次のうpマダー?
440名前は開発中のものです。:2008/05/11(日) 18:56:18 ID:aWcZpe7b
リアルから離れるとゲーム性が高まる
離れすぎるとルールの理解に苦しむ
441名前は開発中のものです。:2008/05/11(日) 19:12:20 ID:SxHjX14O
そうだな、そういう視覚的に一見分からないルールだと直感的なプレイからは遠くなる。
特別なルールを設けるんだったら、プレイヤーが「やらされてる感」を感じないように
うまくデザインする必要があるな。
442名前は開発中のものです。:2008/05/11(日) 19:22:24 ID:KxoJtL0t
敵にも当たり判定つけてザコラッシュやってみたんですが難易度かなり増しますね・・・。
寸前に警告だしてもいいんですが、戦艦みたいなデカブツを横切らせたりしたいんで当たり判定あると厳しいかなーと・・・。

ボムの代わりに時間を止める技があるゲームなので敵とか気にせず弾幕をすり抜けられた方が良さそうな気も。
443名前は開発中のものです。:2008/05/11(日) 21:16:46 ID:p4xje47Y
昔から体当たりで殺しに来るゲームはムカツク
444名前は開発中のものです。:2008/05/12(月) 00:55:00 ID:lxKREmgj
そう考えると>433は秀逸かもしれない
445名前は開発中のものです。:2008/05/12(月) 01:27:26 ID:lEc53eQo
>>442
奥行きはあるんだろ?戦艦なら胴体部分は奥にあるとか・・・
敵によって、重なってもダメージにならない状況があるのは全然変じゃないぞ
446名前は開発中のものです。:2008/05/12(月) 02:50:34 ID:zuXYDnzG
>438
当たり小:飛行形態
当たり大:ロボ形態

を切り換えるとか?
447名前は開発中のものです。:2008/05/12(月) 19:17:31 ID:N6z6aNxM
>446
いいね
それぞれの形態のメリット、デメリットを直感的に分かりやすいようにできれば
システムとして活きてくるような気がする。
448名前は開発中のものです。:2008/05/14(水) 01:27:09 ID:lqOtnNPH
う〜ん・・・なかなか難しいですね。
色々試したんですが、なんかピンとこないんです。
>446
形態は・・・既にフォース(ボムみたいなモノ)消費で変形するんですよ。
普段は戦闘機、フォース消費で時間を止めて中間形態。
フォース消費ボタンを二度押しでさらに消費してロボ形態に。
ロボ形態時は時間は止まらず操縦不能だけど、無敵状態で手当たり次第に敵に突っ込んでいく感じ。
オメガブースト(知ってる人いるか分からないけど)の必殺技と大体同じ。

まだ今のところ「二つも消費してまで使う必要があるのか」とか「スコアボーナス」とかそういうので仮決定状態なんですけどね。
シューターって、よく追い詰められると(ボムが底をつく等)覚醒したように弾幕を見切れたりするじゃないですか。
それをサポートするためにフォースがゼロになったら当たり判定をさらに小さくして「俺TUEE」状態にさせてあげたいんですがどう思いますか?
「シューターズハイ」って言葉を聞いて「これはいいな」とか思ったんですが・・・。
抱えボムで死ぬのも防ぎたいですし。

長々とすいません。
449名前は開発中のものです。:2008/05/14(水) 12:21:42 ID:01CnOr+t
ボム中に操作不能は個人的には嫌い。ストレス溜まるw
中間形態って何かメリットあるの?そもそも二段階ボムになってる理由がわからないよ。

あと俺tueeやりたいなら実感しづらい回避性能より火力を上げたほうがいい気がする。
450名前は開発中のものです。:2008/05/14(水) 14:44:49 ID:sE+cy/S5
>火力
雷電のクラスターとかVIPER Phase2のナパームが個人的に爽快だた
火力というよりも演出か
451名前は開発中のものです。:2008/05/14(水) 14:57:11 ID:5CxtNDd2
>>448
> 既にフォース(ボムみたいなモノ)消費で変形するんですよ
変形できるからロボット化を行わなければいけない決まりはないでしょ。
ブースター展開とかいくらでも追加方法はある。(ゲッター123w)

> フォースがゼロになったら当たり判定をさらに小さくして「俺TUEE」状態にさせてあげたいんですがどう思いますか?
俺なら、ボムゼロ時限定で時間停止の弱効果でスローを一発使えるようにする。(もちペナルティ付き)
で、2段ボムの1段階目をスローにして2段階目をストップにして、ストップの時は敵の弾も撃ち落とせるようにする。
さらに弾の破壊にスコアボーナス付ければ「二つ使ってでも」と言う理由付けができると思う。
ボムゼロスローはペナルティもあることだし、弾破壊可能にすればこれも戦略に組み込めるようになるな。
(時よ止まれ、そしてマトリックスがドーピングw)
が、こんなすぐに浮かぶアイディアだし既に存在してそうw
(それ以前に大幅システム変更になりそうだから提出時に即却下だなw)

>>449
> ボム中に操作不能は個人的には嫌い。ストレス溜まるw
次の位置取りとかあるしね。
452名前は開発中のものです。:2008/05/14(水) 15:10:24 ID:01CnOr+t
>次の位置取りとかあるしね。
そうそう、そもそも即発動型のボムはダメージ与えられるのが嬉しいんじゃなくて
無敵状態で接近して撃ち込めるのが気持ちが良いのさw
453名前は開発中のものです。:2008/05/14(水) 19:24:38 ID:ZdilNO3k
「ボム=自機無敵」ってルールはいつできたのかなぁ。
454名前は開発中のものです。:2008/05/14(水) 19:50:51 ID:h9Urf45v
結局気持ちが良いとか面白いとかって
過去の作品の手法を踏襲しろってことなんだよなぁ
455名前は開発中のものです。:2008/05/14(水) 19:51:06 ID:01CnOr+t
別にルールじゃない
456名前は開発中のものです。:2008/05/14(水) 22:18:41 ID:b3GXaHWY
>449
> 中間形態って何かメリットあるの?
今のところは・・・無いです。前は火力も同時強化でしたけど、今現在はタイムストップ使用形態みたいになってます・・・。
ホントは「時間とまってるのに戦闘機が後退するのおかしくね?」って事で中間形態は全方位移動型って設定だったんですが、
敵なんか平気で後退したりしてるんでそこまで拘らずに良かったですよね・・・。
> あと俺tueeやりたいなら実感しづらい回避性能より火力を上げたほうがいい気がする。
火力アップも考えたんですが、一応弾避けも楽しみたいということで・・・あえて回避性能にしてみたんです。
「俺ニュータイプ化してるぜー」的な・・・ちょっと無理なこじつけかも知れませんけど。

>451
> 変形できるからロボット化を行わなければいけない決まりはないでしょ。
そうですよね・・・。「今回はロボに変形する戦闘機でいこう!」ってノリだったんで固執しすぎました。
> 俺なら、ボムゼロ時限定で時間停止の弱効果でスローを一発使えるようにする。(もちペナルティ付き)
スローをさっき無理やり実装してみましたが・・・ちょっと挙動不審でした。
しっかり実装させるとなると最初から組みなおさないといけないモノが大量に出てくるのでちょっと今回は見送りさせてください・・・。
とりあえずタイムストップ終了時に敵弾が一気に動き出すので、いくら弾道が読めていても被弾しやすい点があったので
発動時と終了時に短時間ですがシールドを張って切り抜けられるようにしました。
あと、敵弾画像も丸弾を無くしてタイムストップ中でも敵弾の弾道が読めるようにしました。あとなるべく直線弾がメインの方がいいですよね。
457名前は開発中のものです。:2008/05/14(水) 22:22:50 ID:b3GXaHWY
あと二段目のボムは・・・操縦不能になるのはやっぱ好きじゃない人いるんですね。
次々と撃破していくあたりの爽快感を出したつもりだったんですが、位置取りもあるとなると厳しいですね。
今のところ終了時に発動場所に戻るようになってます(同時にシールドも発動)。
これも考え直しておきます。
スコア面は敵弾消滅と同時に消した数だけボーナスにしてみようと思います。
あとその時間中に倒した敵も得点が倍加するとか。

>452
> 無敵状態で接近して撃ち込めるのが気持ちが良いのさw
怒首領蜂のオーラ撃ちみたいなシステムがあったほうが良いって事でしょうか・・・?
今のところショットは2種類あるんですが、
直線ショット(高速移動時):連射速め
ロックショット(低速移動時):連射は直線の半分だけど出る弾の数は倍。自機より前方の敵で一番近い敵を自動で狙う。
こんな感じです。単位時間当たりの威力は同じになってます。
直線ショットの方を近ければ近いほど高威力にしてみてもいいかなと思ったりしたんですが。
例えば「一番離れてるときはロックショットの半分で一番近いと二倍 中間の距離は同じ威力」のような感じで。

長くなりました・・・。
プレイ動画も載せてみたいんですが、重くてマトモに撮れないんで勘弁してください・・・。
458名前は開発中のものです。:2008/05/17(土) 03:01:22 ID:/g6IEs5J
人の意見を聞くのもいいけど 度を越すとつまらなくなるよ。
最終的に面白ければ異端はエポックとして受け入れられるから心配するな。バランス取りの方が重要。
459名前は開発中のものです。:2008/05/18(日) 21:13:42 ID:szLcvKNL
音声無し、画質最悪のデモプレイでも晒せばアドバイス貰えるかな?
460名前は開発中のものです。:2008/05/18(日) 22:32:15 ID:5lmcOuwn
それなりに。
461名前は開発中のものです。:2008/05/18(日) 22:52:31 ID:szLcvKNL
じゃあ晒してみます
いまのところ、こんな感じ
http://jp.youtube.com/watch?v=H-7NN13A_do
http://jp.youtube.com/watch?v=gRDVPM2VfbM
462名前は開発中のものです。:2008/05/18(日) 22:52:51 ID:XX/E8PWy
>>459
ニコにうpればコメで感想書くぜ
草だって生やしてやる
463名前は開発中のものです。:2008/05/18(日) 22:55:25 ID:XX/E8PWy
なんかかぶったwwww
>>461
ようつべかー
家に帰ったら変な外人の振りしてコメ書くとするよ
464名前は開発中のものです。:2008/05/18(日) 23:51:37 ID:gIkkDYDh
>>461

早送り?
それともこのスピードが通常?
465名前は開発中のものです。:2008/05/19(月) 00:30:45 ID:q0dQmjCf
>>461
だいたいコレぐらいのスピードにするつもりだよ
速すぎかな?
466名前は開発中のものです。:2008/05/19(月) 00:52:35 ID:BvXwbyK8
PDA用に作ってるんだが、アルファブレンドとかちょっとしたことでかなりCPU食われる。
デスクトップは無尽蔵なマシンパワーでいろんな派手なエフェクト使えるからうらやましい。
467名前は開発中のものです。:2008/05/19(月) 00:56:06 ID:LR+/mrg1
弾幕じゃないし、速過ぎとは思わないな。
アイテムと弾が見分けづらい気がする。弾と同じ速度で降ってくるからかな。
468名前は開発中のものです。:2008/05/19(月) 01:07:55 ID:oGgL+bx9
>>461
斜めに移動するときXY要素の速度を1/√2倍してる?低速移動がついてるのだろうか
なんか自機速度が変化してるように見える

あと爆発が明るすぎる。今はいいが敵が多くなってくると弾が見えづらくなってくるはず
弾が見えづらいと撃ち込みに行けない(ワイドショットのとき)から非弾幕の面白さが半減
爆発を白くフラッシュさせるのは初めの一瞬だけで、あとは地味にするべき

余裕があったら敵の動きを増加量で制御する(直線的な動きにしない)と見栄えが良くなる
469名前は開発中のものです。:2008/05/19(月) 01:21:48 ID:oGgL+bx9
文句ばっかりだけど、こういうハイスピードなstg好きだな
てか今作ってるのに雰囲気が似てる
470名前は開発中のものです。:2008/05/19(月) 01:32:40 ID:9tt6Wf3E
斜め移動時の速度をどうするかはゲームデザイン次第だよ
1.4倍でも別に構わない
471名前は開発中のものです。:2008/05/19(月) 09:12:47 ID:vU9LU+XZ
バトルガレッガですね、わかります。
472名前は開発中のものです。:2008/05/19(月) 13:52:23 ID:b02HV0tQ
ガレッガもそうだっけ
473名前は開発中のものです。:2008/05/19(月) 23:56:07 ID:q0dQmjCf
>>467
そこは盲点だったな
確かにコレは混同しそうだから、アイテムの移動に関しては少し工夫してみるよ

>>468-469
適格なアドバイス感謝
1/√2倍してなかったから、やってみるよ
(自機は攻撃中に減速する設定)
爆発は、明るさの減衰する速度を上げて、もっとシャープにしてみるぜ
爆発の規模はなるべく落とさずに済ませたいんだ
474名前は開発中のものです。:2008/05/20(火) 00:35:35 ID:RWit6ryT
>爆発の規模はなるべく落とさずに済ませたいんだ
ボリューム感や爽快感が欲しいなら、暗い破片を飛ばすといいと思う
ただアイテムが見づらくなりそうではあるが・・・
475名前は開発中のものです。:2008/05/20(火) 01:21:07 ID:KPsJ1W8W
>ボリューム感や爽快感が欲しいなら、暗い破片を飛ばすといいと思う
じゃあ破片もアイテムとして回収できるようにする、ってのも一つの手かもしれないな
476名前は開発中のものです。:2008/05/20(火) 23:04:27 ID:eSoqJRV2
表示の優先順位さえちゃんとしてれいれば、それほど見づらくなることはないと思う。
優先順位は大事だ。
477名前は開発中のものです。:2008/05/22(木) 00:33:51 ID:hCaUmiay
敵機と爆発エフェクトのどちらを上にするかで迷ったけど
見やすさを優先するなら敵機を上にすべきだったか
478名前は開発中のものです。:2008/05/22(木) 01:24:13 ID:fF08pbvS
 ↑
その他の敵機
爆発エフェクト
実際に爆発してる敵機
 ↓

とかは?
479名前は開発中のものです。:2008/05/22(木) 03:02:18 ID:UbCa5G5P
爆風が被って見づらくなるような敵配置を避けるという手もある
480名前は開発中のものです。:2008/05/22(木) 03:33:48 ID:94YaRrU7
爆風で敵が死ぬようにすればおk
481名前は開発中のものです。:2008/05/22(木) 05:22:35 ID:1s9x2HLd
それ何てグロブダー?
482名前は開発中のものです。:2008/05/22(木) 05:28:39 ID:WCAssrUM
改めて>>461を見て思ったこと
・黄色系の敵弾と爆発の色がかぶってる
・でかい敵が爆発エフェクトと似た弾を撃ってくる(でかいやつ)
・爆発エフェクトが下の方まで飛んでくる
この3点が気になった。
3番目に関しては、爆発エフェクトをゆっくりでいいので上方向に動かしてみてはどうか。
こういうシューティングは嫌いじゃないのでがんばってね。
483名前は開発中のものです。:2008/05/23(金) 03:10:48 ID:jtP/wS7R
>>461
見た感じすごく面白そう
たぶんわざとだと思うけど戦闘が全体的に高速なのもスピード感があって良いし
大胆に爆発する敵機を見ても、爽快感を重視しようとしてるのがすごく分かる
ただ欲を言えば、弾を喰らった敵機が死ぬまで何の変化もしないのが残念
弾を喰らった瞬間だけ白っぽく点滅するとか、死ぬ少し前は赤く変色するといった変化を加えると、
さらに爽快感が増すんじゃないかな?
484名前は開発中のものです。:2008/05/25(日) 13:54:22 ID:9MtmvDnQ
>>482
>・黄色系の敵弾と爆発の色がかぶってる
 本当だ、これも盲点だった
 黄色じゃなきゃダメってワケでもないので、他の色を使うことにするよ
>・でかい敵が爆発エフェクトと似た弾を撃ってくる(でかいやつ)
 うーん、もったいないけど、あの弾は道中では使わない方がよさそうだね
 確かに紛らわしい気がしてきた
>・爆発エフェクトが下の方まで飛んでくる
 上方向に等加速度運動させたほうがリアリティ出るかも知れないね
 やってみる

>>483
>弾を喰らった瞬間だけ白っぽく点滅するとか、死ぬ少し前は赤く変色するといった変化
 なるほど、ダメージ受けてるのかどうか分かるようにすべきか
 素材増やすのはめんどうだから、色が変わるような描画関数を作ってみるぜ
485名前は開発中のものです。:2008/05/25(日) 15:49:04 ID:RBU9DpQl
意見を全部鵜呑みにすんなよ
486名前は開発中のものです。:2008/05/25(日) 16:08:59 ID:w5UX9m2d
それだけか。
どの意見に反対すべき点があるとかいうキミの意見は無しか。
487名前は開発中のものです。:2008/05/25(日) 16:11:59 ID:JO05VTT1
>486
「頑張れよ」とか「期待してるぜ」みたいな、定番文句だから別にいいんじゃね?w
488名前は開発中のものです。:2008/05/25(日) 16:44:41 ID:9MtmvDnQ
>>485-486
実際に動かしてみて「何か違うような…」って思ったら元に戻せば良いんだし、
まずは言われたことを試してみようと思ってな
そういう試行錯誤って好きなんだよ俺
489482:2008/05/25(日) 17:56:37 ID:nSZgwUpQ
鵜呑みにされちゃうのはイヤだから一言書いておこうかとは思ったけどね。
ここまで作れる人ならそれくらい分かってるだろうと思ってそのままにしたよ。
490名前は開発中のものです。:2008/05/26(月) 16:46:32 ID:QpDGpG2C
取捨選択は本人がやるべき
491名前は開発中のものです。:2008/05/26(月) 18:13:55 ID:XKbn2YAt
>>489-490
色々試してみた後の、取捨選択の結果を簡単に報告しとくよ

 ・敵の黄色い弾と爆発エフェクトの色が似てる件に関しては、従来の素材と”黄緑色方向に少しだけ色調補正した弾”と”色が変化する弾”を
  混ぜて使うことで視認性が確保できたし、より綺麗な色合いになったような気がする。

 ・爆発エフェクトと似た大きな弾に関しては、完全にこっちの設計ミスだから、赤色メインなのは変わらずに、特殊な形の弾を作成。

 ・爆発が下まで飛んでくる件は、爆炎に上方向の加速度をつけるのを試したけど、なんかイマイチでな、
  むしろ今までの爆発エフェクトに加えて敵の破片を飛ばしてブッ壊してる感じを強調する方向で素材作ってる。

 ・敵の点滅や赤色変化については、攻撃命中時に白色に点滅するエフェクトのみ作成。
  確かに”攻撃が効いてる”って実感は重要だと判った。
  あと攻撃が命中するたびに小さな火の粉を飛ばしまくって削り感を出すエフェクトも作成予定。

今のところ、こんな感じ。
なるべく「攻撃してる!」「破壊してる!」っていう感じを出していきたいんだ。
492名前は開発中のものです。:2008/05/28(水) 13:15:53 ID:yIjbYgmf
そろそろ俺が動くものを投下する時のようだな
493名前は開発中のものです。:2008/05/28(水) 13:35:19 ID:DPtH00SA
よくわからないが性的な想像をしてしまった
494名前は開発中のものです。:2008/05/28(水) 14:03:05 ID:VhLX8kTD
私自らが出る
495名前は開発中のものです。:2008/05/28(水) 23:54:15 ID:r2Z7pcvh
プログラムとか一切知らないけど東方みたいなの作りたい
どの言語がいいと思う?
あと分かりやすい講座みたいなの載ってるページないかな
496名前は開発中のものです。:2008/05/29(木) 00:58:20 ID:sI4xc3xg
HSPあたりか
497名前は開発中のものです。:2008/05/29(木) 01:13:44 ID:C6Mdsiet
あえて1からC++を学ぶというのも
498名前は開発中のものです。:2008/05/29(木) 01:16:47 ID:7q/pJngE
プログラミングの知識が全く無いなら、いきなりゲームではなくて
Pythonあたりで勉強した方がいいんじゃないかね。
大事なのは言語の文法ではなくて、プログラミング的な物事の
捕らえ方だから、言語なんて何でもいい。

実行効率やゲームを作るための情報量で言えばC++が一番だけど
C++だと文法の勉強だけで半年以上かかるかと。
499名前は開発中のものです。:2008/05/29(木) 01:34:02 ID:x9N3rBnw
Python とか Delphi とか良く聞くけど、いいライブラリでもあるのかい?
HSP か、CでDXライブラリ使っておけばいいんじゃないのかね。
乗り捨て前提で言語覚える必要ないっしょ。
500名前は開発中のものです。:2008/05/29(木) 02:24:54 ID:7q/pJngE
>>499
CとPythonでは学習速度が違い過ぎる。
文法の差もあるが、Pythonの対話モードの存在も大きい。

HSPは言語設計があまりにも古臭い。
PythonからJava, C#, C++への移行はスムーズに行えるが
HSPからだとほとんど0からの学習になる。

pygameっていうゲーム用ライブラリもあるし、配布されている
ゲームは基本的にソースコードが見れるという利点もある。
ttp://www.pygame.org/tags/arcade

というわけで、俺はPythonがおすすめ。
501名前は開発中のものです。:2008/05/29(木) 13:17:49 ID:V7n9iczi
CかC++で先人が作って配布しているライブラリを使うのが一番良い。
マイナー言語では質問を投げても返ってくることは少ないからな。
502名前は開発中のものです。:2008/05/29(木) 13:21:44 ID:VGCnrM13
ライブラリで一番気になるのがGPLのように問題にならないかなあと
503名前は開発中のものです。:2008/05/29(木) 15:07:33 ID:V7n9iczi
なんつーか、そんなこと気にする前に手を動かせよ。
504名前は開発中のものです。:2008/05/29(木) 15:10:04 ID:nOtkeXIc
>>503
いやもう別環境では動いてるソース持ってるんだって。
で、PCに最適化するために書き換える部分がいくつかあるんだけど
そこをどうするかで検討してるんじゃん。

ライブラリでGPL絡んであとでごちゃごちゃするの嫌なので
先に調査してるだけ。
505名前は開発中のものです。:2008/05/29(木) 15:35:50 ID:V7n9iczi
手を動かせ=自分で作れ
のつもりで書いたんだけど分りにくかったな。
506名前は開発中のものです。:2008/05/29(木) 16:17:58 ID:ci2Rwp21
ライセンス絡みの話じゃね
507名前は開発中のものです。:2008/05/29(木) 16:51:23 ID:XHqPrNQg
シューティング制作者の優しさは異常
508名前は開発中のものです。:2008/05/29(木) 17:33:13 ID:As6AFkA0
シューティングくらい自分で作ってみようぜ!
509名前は開発中のものです。:2008/05/29(木) 18:33:57 ID:Psit5nhx
趣味で2Dシューティング作りたいだけなら一生HSPでも別に困らんけどな
というかSBとかでいいんじゃないか
大多数の人はゲーム一本完成させる前に飽きるし、そういう人は言語習得の段階で飽きちゃうからな
510名前は開発中のものです。:2008/05/29(木) 18:57:39 ID:4Z+TPnxc
言語によって習得しやすいとかしにくいっていう概念が良くわかんないんだが・・・

どの言語でも
絵を表示したい⇒絵を表示する命令探す
文字を表示したい⇒文字を表示する命令を探す
ってだけじゃないの?

ちょっと書き方が違うだけっていうか
511名前は開発中のものです。:2008/05/29(木) 19:00:02 ID:szUKAV1r
いやーぜんぜん違う
HSPだと進化したBASICって感じで割りと簡単だけど
CでDirectXを使うとなるとそれなりの知識はいる。
512名前は開発中のものです。:2008/05/29(木) 19:00:38 ID:qrufruFL
その手間が全然違ったりするからじゃない
513名前は開発中のものです。:2008/05/29(木) 19:12:34 ID:BS7vFlaH
うむ
514名前は開発中のものです。:2008/05/29(木) 23:21:51 ID:zeARvIKP
>510
言語によっては、机を用意して、その上に置くノートを用意して
ペンしか使わないのに筆記用具一式が入った筆箱を用意しないと
文字が書けなかったりするからな。
515名前は開発中のものです。:2008/05/30(金) 14:35:29 ID:ZlEmHweA
導入の手間を除けば、
CとDXライブラリが一番簡単じゃないかな。
それこそBASIC感覚で作れると思う。
516名前は開発中のものです。:2008/05/31(土) 01:59:26 ID:CYZ6kssv
>>504がソース持ってるって書いてあるのがすげーーーー気になる
どっかからパクってきたのか?
517名前は開発中のものです。:2008/05/31(土) 21:11:29 ID:1CVvU5aM
ライブラリにGPLが〜って気にしてても、自分でライブラリを作る選択が無いところを見ると
同人ゲーをPC基板に移植とかそういう仕事だったりするんかな。
518名前は開発中のものです。:2008/05/31(土) 21:54:32 ID:ml7R2ir5
GPLが読める奴はゲームなんぞ作ってませんよ
519名前は開発中のものです。:2008/06/01(日) 12:09:04 ID:odS/oJGJ
人権委員会に報告されちゃうっ(ビクビクッ
520名前は開発中のものです。:2008/06/01(日) 17:53:12 ID:ExLpTmmO
BulletMLManager
の使い方がいまいちよくわからんのだがつかってる人います?
521名前は開発中のものです。:2008/06/04(水) 11:33:27 ID:xVETCOHb
新しいgamedeveカキカキ

TopPage - game-develop.com wiki
http://wiki.game-develop.com/

GameDevWikiを何とかするスレ
http://pc11.2ch.net/test/read.cgi/gamedev/1156117275/
522名前は開発中のものです。:2008/06/06(金) 03:37:13 ID:M4cUj8sn
ただいまDXライブラリでシューティングゲームを作っているんですが
敵の軌道に凄い迷っています。
何かいいサイトとか教えてもらえると嬉しいです・・・
523名前は開発中のものです。:2008/06/06(金) 05:01:50 ID:ccm+UKUf
敵の軌道が軌道に乗らないと。
524名前は開発中のものです。:2008/06/06(金) 06:53:06 ID:+EwpaMeA
軌道の作り方?
それともどんな軌道があるかって話?
プログラム的な話ならともかく、ゲーム内容の話だったら他のゲームみて研究しなさいとしか
525名前は開発中のものです。:2008/06/06(金) 11:54:13 ID:5E9ARiON
STGプログラミングとか、STGアルゴリズムマニアックスとか、こういう時には丁度いいと思うよ。
526名前は開発中のものです。:2008/06/06(金) 16:20:06 ID:M4cUj8sn
ありがとうございます。
あと質問の仕方が少し悪かったですね。すみません。
えっと、敵の軌道についてどういったプログラムの書き方があるのかを
聞きたかったんです。

>>525さん
ググッたらでてきました。
よさそうな本なので使わせてもらいますorz


527名前は開発中のものです。:2008/06/06(金) 20:01:04 ID:5E9ARiON
>526
ある程度ゲーム作りなんかを経験したことある人間なら、
プログラム的にはそんなに有効なものではないけれど、

・やりたいことはあるけど実装方法が微塵も思いつかない
・あまりSTGに詳しくないので、(プログラマ視点からの)演出リストみたいなものが欲しい

とかなら便利だと思う
528名前は開発中のものです。:2008/06/07(土) 07:21:42 ID:HwGhKYeT
>>526さん
ありがとうございます。
とりあえずこれで勉強してみようと思います。


529名前は開発中のものです。:2008/06/09(月) 21:47:15 ID:xIkwo1U1
質問があります
敵キャラクターの色に関してですが、
敵キャラクターは背景の色とは、なるべく違う色を使って保護色でない見やすい色の方が良いと言われますが、
その際、敵キャラクターの色はなるべく統一させておいた方が良いのでしょうか?
例えば、
一面の森林ステージは、背景の緑色とかち合わないように敵は全員ピンク色系に。
二面の列車ステージは、背景の線路の色とかち合わないように敵は全員青色系に。
といったような感じで。
既存のゲームでは、どういったパターンで敵の配色を決めているのか教えてもらえませんか?
530名前は開発中のものです。:2008/06/10(火) 01:01:07 ID:nimaFHPb
メカもので世界観を重視するなら
明度・彩度を変えたほうがいいんでは
531名前は開発中のものです。:2008/06/10(火) 01:12:25 ID:+aDmgWFn
確かに、やたら派手で目立つ戦闘機ばかりというのはワケ分からんな。
もちろん、わざとそうやる機体があるのは認める。
532名前は開発中のものです。:2008/06/10(火) 01:16:08 ID:NUtaWqlE
せめて背景とキャラは区別が付くようにしてほしい。
昨今のゲームってハードの能力が上がってやたら背景とか凝ってるんだけど
弾がわかり難いとかあるし
3Dを使って1軸固定の場合、いつ同一軸に来たのかわかりくいのとかあるからな〜
533名前は開発中のものです。:2008/06/10(火) 08:05:33 ID:nTtkz+dw
敵の動きを実装したいのですが、
私の作ったシステムだと、直線と、円書きながら移動の2パターンぐらいしか表現できず、
あまり、おもしろくないというか 見た目に欠けるのです。

そこで、どうやったら、敵の微妙な移動を表現できるのでしょうか?
534名前は開発中のものです。:2008/06/10(火) 08:16:47 ID:f1guzX+l
全てのキャラの色が派手すぎると変だし
背景とキャラが区別ついた方が良いとなると難しい

現在使用している素材は、基本的に青色なんですが
下地が緑の部分では、キャラの彩度や明度を変えても限界がありますし
背景そのものの彩度や明度をかえると、
キャラが浮いてくれるのですが
全ての背景が夜みたいになってしまうのも考えものです

何か方法はないでしょうか?
535名前は開発中のものです。:2008/06/10(火) 08:31:33 ID:arPqS3KG
>>553
システムってのが、どんなのかわかりませんが、
直線移動が実装されているのであれば、
下に直線的に移動した後
左上、右上、と直線的に繰り返し移動
みたいに直線行動の組み合わせでも
わりと微妙なキャラの動きは作れると思いますが。

敵の微妙な移動について詳しく
536名前は開発中のものです。:2008/06/10(火) 08:55:12 ID:phyGEt7B
>>533
他人の作ったゲームを観察すればいいだろう。
まぁ、名作と言われるゲームでも、意外と単純な動きしかしてないけどね。
537名前は開発中のものです。:2008/06/10(火) 12:17:00 ID:hsBh970A
連隊として出てくるとかねー。
538名前は開発中のものです。:2008/06/10(火) 14:18:54 ID:RT02LfrH
>>533
放物線をはじめとして、いろんな数学的曲線を見て利用できそうなもの探すのはどうよ?
539名前は開発中のものです。:2008/06/10(火) 16:17:37 ID:FupEvrLt
敵、弾の動きとか出現を全部プログラム中に直接書いちゃってんだけど

BulletML以外で自分で弾幕定義とかしてる人いる?
540名前は開発中のものです。:2008/06/10(火) 16:19:15 ID:BhUcQ+GT
way弾とかの関数は独自に作ってるよ
541名前は開発中のものです。:2008/06/11(水) 00:17:29 ID:w4VzkzQG
>>539
void ShotNWay(引数);//NWay弾
こんな感じの関数ならいっぱい作ってるよ
542名前は開発中のものです。:2008/06/11(水) 00:54:26 ID:Yzm3EAbw
ちょっ速のPCがあればスクリプト言語など不要ですね、わかります。
543名前は開発中のものです。:2008/06/12(木) 09:37:47 ID:f1+USoD9
逆だろ
544名前は開発中のものです。:2008/06/12(木) 15:35:40 ID:jAc1OSoI
俺も最初逆に思ったけどたぶんコンパイル速度が速いってことだろう
545名前は開発中のものです。:2008/06/12(木) 20:50:25 ID:yDi/ZIrs
c++だって、コンパイルなんてせいぜい数秒じゃないか?
546名前は開発中のものです。:2008/06/12(木) 21:30:53 ID:gzO65s1E
マ以外の人に編集や調整を頼むなら簡単なスクリプトは要るかもだが
俺ずっと一人制作だったから弾幕定義まで一個一個全てdllにして
プレイ中に修正可能にしたりとかヘンテコな事やってる
547名前は開発中のものです。:2008/06/12(木) 22:28:30 ID:TSLRdYb6
>>546
それってヘッダーファイルじゃダメなの?
548名前は開発中のものです。:2008/06/12(木) 22:48:12 ID:gzO65s1E
>>547
ヘッダーファイル?よく分からんが
リリースビルドのexeでもプレイ中にコード差し替えしたいという
意味不明な俺要求で全部dllにしてた。ただそれだけ。

エディットコンティニュー用のデバッグ情報があるなら
デバッグしながらでも普通に書き換えられるけど
549名前は開発中のものです。:2008/06/13(金) 10:37:09 ID:WTt391nL
少しスレチかもしれませんが質問です
効果音で、雷電2及び雷電DXのボス破壊時の効果音のような
気持ちいい感じというか、こもった感じではない爆発音って、
配布されている効果音の中には、意外とないように思えるのですが
どなたか、ご存じないでしょうか?
550名前は開発中のものです。:2008/06/13(金) 11:08:21 ID:eIgFj6sJ
スピーカーのせいなんじゃないの?
551名前は開発中のものです。:2008/06/13(金) 12:26:22 ID:hkP7hw1T
的外れなレス発見
552名前は開発中のものです。:2008/06/13(金) 16:17:36 ID:EQ9QC8Ez
>>549
それはアレだ。プロが作り出す音響効果の素晴らしさってやつだよ
音響効果のノウハウに関する公開情報って異様に少ないんで
俺みたいな門外漢のマには何が何やらサッパリだ

アニメ界で有名なサウンド○ィ○のお偉いさんなんて何十年も前から
ずっと現役の職人さんだよ。すげぇよな
553名前は開発中のものです。:2008/06/16(月) 12:03:46 ID:elENusH/
>>552
なるほど……
フリーで見つけるのは難しいということですね
亀レスですみませんでした
ありがとうございます
554名前は開発中のものです。:2008/06/16(月) 23:15:19 ID:ClTaNQNv
マウスだけで遊べて、パワーアップなしで爽快感UPできる方法
を追及した結果、マウスでコマンド入力し、成功すると一定時間
攻撃力がアップするってのを作ってみたけど、(効果が高いほど
入力操作が多い)コマンド体得するまではいいんだが、
一通り覚えると飽きる気がしてきた・・・。

なんかうまい使い方ないだろうか・・・。
555名前は開発中のものです。:2008/06/16(月) 23:31:23 ID:uX6B7Jne
敵クリックで撃破。
556名前は開発中のものです。:2008/06/17(火) 00:07:49 ID:Gh2sy0to
>>554
左クリックで線を描き、右クリックでスポイト。
557名前は開発中のものです。:2008/06/17(火) 01:00:52 ID:ZH96Nhjs
マウスで遊べるシューティングっていうと、喧嘩番長のやつが
結構面白かったよ。
ttp://jp.shockwave.com/games/arcade/shooting/tsubushi/play.html
558名前は開発中のものです。:2008/06/17(火) 13:34:09 ID:kknD/33w
晩夏県庁
559名前は開発中のものです。:2008/06/18(水) 02:05:34 ID:qz8Cw7gV
>敵クリックで撃破。
>左クリックで線を描き、右クリックでスポイト。
インスピレーションは得られた。

喧嘩番長30分ぐらいやっちまった・・・。
が、方向性が違うことに気づいた・・・。

もうちっと考えてみるわ。
560名前は開発中のものです。:2008/06/18(水) 02:15:41 ID:NlS9ptn1
えられたんだ・・・?
561名前は開発中のものです。:2008/06/18(水) 09:01:30 ID:mqJXL/tf
>>539
単純な弾幕は作れるようにしてあるな。
予めリストのように自分の型の変数を持つ弾幕インターフェイスを作ってそこから
n-way弾、全方位弾、連なる弾、発射調整用(ここが色々作れる。)のクラスを作る。

これで初期化時に弾の方向、方向間隔、同時発射数などを初期化できるようにした後、
複数の弾幕インスタンスを組み合わせるだけで、簡単な弾幕は作れる。
例えば5-wayインスタンスの変数に3包囲奇数型全方位弾を登録しておけば、
奇数3方向に5way弾が打てるようになる。


562名前は開発中のものです。:2008/06/18(水) 15:02:24 ID:6MKGIX0P
way弾の組み合わせでほぼ事足りるからなー
東方みたいな弾幕作りたければだいぶ変わるけど、あれはあれで別だし…
563名前は開発中のものです。:2008/06/18(水) 23:25:39 ID:oPZri8ro
ストラテジーパターンと、
「弾を発射する弾」で全て済ましてるな
564名前は開発中のものです。:2008/06/18(水) 23:38:14 ID:qz8Cw7gV
まだ形になっていないけど、コマンドシステムは実装したので、
アゲてみた。
ttp://gamdev3.hp.infoseek.co.jp/cgi-bin/up/upup.html

[No_0293.jar] マウスコマンド習作
ってやつがそれ。

ちなみにインスピレーションから得たものは未実装。

発動した技をフル活用させようとするとなんかパズルゲーみたいに
なりそうなんだよな・・・。

思いつきのアイデア求む。
565名前は開発中のものです。:2008/06/19(木) 01:58:01 ID:SRbwL4tV
>>564
4軸コマンドを簡単な図形に置き換えるとか。
566名前は開発中のものです。:2008/06/22(日) 00:39:38 ID:XlCCcTXY
タスクシステム難しいな・・・
どう実装すればいいかさっぱり。

オブジェクト吐いて連結リストにしておわったら削除みたいな感じでいいのかな
567名前は開発中のものです。:2008/06/22(日) 00:55:59 ID:8fUS+A6I
リストで繋いだオブジェクト群に操作を加えていけばそれでタスクシステムなんじゃないの
568名前は開発中のものです。:2008/06/22(日) 02:02:19 ID:aaplPd6e
>>566
リストなんか使わずに配列に入れて毎回全走査でいい。
親子関係とかなければ、これで十分。

要点は、
・全てのキャラクタが共通の基底クラスから派生している
・1フレームに1回呼ばれる状態更新メソッドを持っている
この2つだけ。

オブジェクト自身にリスト構造を持たせるのは前時代的な
実装だから、俺は薦めない。
569名前は開発中のものです。:2008/06/22(日) 02:33:15 ID:di01Ub84
配列全走査なんかしたら処理順序が狂うだろう。
弾幕シューなら敵弾の前後関係とかに影響が出る。
570名前は開発中のものです。:2008/06/22(日) 02:36:39 ID:+i/0tpop
というか双方向リストとかは覚えておいたほうがいいだろ。
それにネットでは解説されてるし、組み込んじゃえば
自分が触るのはリストに関係ない構造体のデータだけだし。
571名前は開発中のものです。:2008/06/22(日) 02:59:46 ID:l+iPD5/q
自作でオブジェクトをリスト化するのが面倒なら、
STLのlistで、オブジェクトへのポインタを管理すればいいんジャマイカ?
572名前は開発中のものです。:2008/06/22(日) 03:23:40 ID:Zr+DHgg1
オブジェクトがリスト構造を持っていなくて、独立したリストがオブジェクトへのポインタを
持たせることも出来るだろうけど、あんまり分ける意味を感じないな。
配列は使い勝手を考えると流石にありえないと思うけど。
573名前は開発中のものです。:2008/06/22(日) 06:38:41 ID:DSllsGKe
配列で領域確保してリストとして作動させるのが簡単ってなんかの本で読んだ覚えがあるな。
もちろん配列を超えないこと前提で。
574名前は開発中のものです。:2008/06/22(日) 06:46:16 ID:+i/0tpop
>>573
そりゃそうだけどね。

でも今となったらどっちもどっちでしょ。

その都度領域を確保する場合はmalloc、freeのコストが発生。
配列で領域確保してリストとして機能させる場合は
使っている配列で構成されるリストと
あいている配列で構成されるリストの
二つが存在して、ややこしくなる。
575名前は開発中のものです。:2008/06/22(日) 10:34:16 ID:HN2ihE2T
>>573
たしかHSPとCだったと思うけど、配列を使ったリスト構造の実装をこの板でみたぞ
ついでに情報処理の試験でも出題されたはず

配列を使った場合、静的に領域を確保するので、領域の上限がキッチリ決まってくる。
しかし、動的に確保する場合でも、ゲーム中にmalloc使って・・・なんて事はしないから条件は同じ
(ゲーム開始前に一気に確保)

>>574
>使っている配列で構成されるリストと
>あいている配列で構成されるリストの
これはmalloc等でも(ゲーム開始前に一気に確保)をした場合は同じ処理が必要

あれ?ひょっとしてどっちで実装してもメリット・デメリットあまり大差ないのか?
配列ならポインタでエラーがでないから、デバッグが多少は楽になるかもしれんが・・・。
(ポインタより配列の添え字とにらめっこするほうがらくだよね?ダンプ出しやすいし)
576名前は開発中のものです。:2008/06/22(日) 11:14:50 ID:qz8iv83D
>>566だが頭がおかしくなりそう

基底クラス

 ├自機クラス→リストへ挿入
 │
 ├敵機クラス→リストへ挿入
 │
└弾クラス
   ├自弾クラス→リストへ挿入
    └敵弾クラス→リストへ挿入

な感じでいいのか?
といってもこれすらどう組んでいいか分からん

C++とオブジェクト指向もっと勉強したほうがいいですね、わかります
 
577名前は開発中のものです。:2008/06/22(日) 12:12:03 ID:8fUS+A6I
俺の場合は敵機・自機・敵弾・自弾・・・でリストをわけてる
そうすれば描画順を気にしないで済むし、例えば敵弾に移動速度のパラメータを持たせて
動的に全ての敵弾の速度を一気に変えたりできる

配列でのメモリ確保ってのは要するにメモリプールを作るってことだろ
そんでそのプールを固定長に区切ってそれぞれの領域をオブジェクトとして利用する
プールを使えばfree/mallocに伴う処理とかメモリの断片化を防げるって利点がある
578名前は開発中のものです。:2008/06/22(日) 12:59:42 ID:rl6WJKHf
> あれ?ひょっとしてどっちで実装してもメリット・デメリットあまり大差ないのか?
> 配列ならポインタでエラーがでないから、デバッグが多少は楽になるかもしれんが・・・。
> (ポインタより配列の添え字とにらめっこするほうがらくだよね?ダンプ出しやすいし)
サイズの違う領域を確保したり開放したり繰り返すと、
あとで再利用されない領域が発生しやすい。

本棚の本をランダムに出し入れするイメージかな。
(勿論既に本棚に入ってる本を左右にずらすのは禁止でw)
579名前は開発中のものです。:2008/06/22(日) 13:15:17 ID:GHWgXrcU
おまえら細かい実装の話に熱くなりすぎだろ。
そんなのは個々人が好きなようにすればいいんであって、
もっと全体の設計の話をすべきじゃないか?
580名前は開発中のものです。:2008/06/22(日) 14:22:22 ID:qz8iv83D
class hoge{
public:
 hoge(int id);
 virtual ~hoge();

private:
 int hogeid;
};
typedef std::list<hoge*> hogeList;

main(){
hogeList hogelist;

hogeClass obj1(1);
hogeClass obj2(2);
hogeClass obj3(3);

hogeList::iterator it = hogelist.begin();
hogeList::iterator ++it = hogelist.insert(it, &obj1);
hogeList::iterator ++it = hogelist.insert(it, &obj2);
hogeList::iterator ++it = hogelist.insert(it, &obj3);
}

とりあえずSTLのlistでやってみたがこんなんでいいのかな
これに自機、敵機、自弾、敵弾、その他クラスをつっこんで描画やらのループにいれればいいのか?
581名前は開発中のものです。:2008/06/22(日) 16:07:22 ID:Who4Uyml
STLのlist使うなら

hogeList objectlist[n]; //n=0自機 1敵機……
objectlist[i].pop_back(new hoge(...)); //オブジェクト生成

あと、hogeクラスのhogeidってなにに使うんだ?
582名前は開発中のものです。:2008/06/22(日) 16:08:22 ID:Who4Uyml
寝ぼけてるな…
pop_backじゃなくてpush_backだよ・・・
583名前は開発中のものです。:2008/06/22(日) 18:42:53 ID:j2oc2Sqc
何か話をぶった切って悪いんだが、
リプレイで早送りを実装する場合、
本来1/60秒経過したら更新するところを1/240秒経過したら更新、とする以外でいい方法ある?
この方法だと、処理落ちしたところは早くできないんだよね。
584名前は開発中のものです。:2008/06/22(日) 18:56:10 ID:8b6P9lU/
だいたい処理落ちの原因は描画だから、
描画を省略したらいいんジャマイカ?
585名前は開発中のものです。:2008/06/22(日) 19:11:27 ID:/NIY82Nu
エフェクト類の計算処理を省略するとか
描画処理を間引きするとか
586名前は開発中のものです。:2008/06/22(日) 19:13:46 ID:j2oc2Sqc
>>584,585
サンクス。レスしたあと席立ったら普通にその考えが出てきたorz
587名前は開発中のものです。:2008/06/22(日) 19:20:25 ID:dWz0Uliv
アフリカでは良くあること
588名前は開発中のものです。:2008/06/22(日) 19:23:07 ID:yBkfb3j+
オープンアプリ向けに作っている人は少ないのかな
589名前は開発中のものです。:2008/06/22(日) 22:22:03 ID:XlCCcTXY
>>581
いんや、適当にオブジェクトを突っ込むのを実装したら
こうなるかな、ってことで別に自機とか弾とかの概念はないです。
あとthx。

今度は実際にクラス作って実装か・・・
処理してる物体がPCじゃないだけに怖いな
590名前は開発中のものです。:2008/06/23(月) 08:18:42 ID:88AJQOqo
>>574
つ メモリプール
591名前は開発中のものです。:2008/06/23(月) 15:44:39 ID:FfEyNKqI
>>569
>敵弾の前後関係

表示順序が問題になるような(半透明処理)が無ければ
表示上の前後関係は深度バッファまかせにできるから
std::vectorを使った順序なしリストの走査順で描画しても
何も問題ないよ
592名前は開発中のものです。:2008/06/23(月) 16:49:40 ID:FfEyNKqI
>>568
たしかに敵や弾は自身がどんなコンテナにぶち込まれてるかなんて
本来なら別に知る必要のない余計な情報ともいえるから
boost::intrusiveみたいな押し入り癒着してくるタイプのコンテナを下手に使えば
軒先貸して母屋ひっかきまわされるだけで終わることもある

この手の侵入式(?)コンテナがドマイナーなのは利点欠点を勘定したら
欠点のほうが目立つケースのほうがずっと多いから
593名前は開発中のものです。:2008/06/23(月) 18:59:42 ID:FfEyNKqI
>>566
>>567
>タスクシステム

一部でそう呼ばれ、未だに一部レトロマニアに珍重・尊崇されているものの実態は
boost::intrusive同様、コンテナのパラメータがオブジェクトに癒着している。
このパラメータは自前のアロケータ内部でも使われるものなので
アロケータとオブジェクトが癒着しているとも言える。
またオブジェクトのメンバ変数は単なる汎用のワークメモリという扱いで
状態遷移のたびに仮想関数テーブルポインタを上書きして型が別物に化ける。
継承図とか完全無視で型が変化するので状態遷移の前後でメンバ変数が
様変わりする。
これは静的型言語のポリシーを完全に逸脱したものであり、アセンブリ言語を
使っていた自由の時代ならともかく、静的型言語であえてこんなアクロバットを
披露するのはある種の変態プレイとか路上オナニー。人前で自慢できる趣味ではない。

こんな妙なことするなら、動的型言語を新たに創造しそれをエディットする環境を構築するか
既存のスクリプト言語(LuaとかSquirrelとか)を組み込んだほうが良い
594名前は開発中のものです。:2008/06/23(月) 20:21:42 ID:FfEyNKqI
話がわき道に逸れた
敵や弾をどんなコンテナに入れるのか、これは配列でも連結リストでも
n分木でも好きなようにすればいいが、その要素を走査して更新いくという
ゲームの基本的な仕掛けを「タスクシステム」って呼ぶのは変かなと

あれはある特殊な、もはや時代錯誤ともいえる実装に付けられた
固有名詞、ローカル用語なのだから
595名前は開発中のものです。:2008/06/23(月) 21:34:37 ID:HikCyTD1
ちなみに正確には擬似タスクシステムな。
596名前は開発中のものです。:2008/06/23(月) 21:58:57 ID:FfEyNKqI
>>595
教えてくれ。あれは一体何の擬似なんだ
オペレーティングシステムにおけるマルチタスクシステムのタスクの擬似なのか?
ならば要件を満足してない(コンテキストスイッチすらできない)から擬似ですらないぞ
スケールも素材も使用目的もまるで違うただの玩具というべきだろう
597名前は開発中のものです。:2008/06/23(月) 22:07:12 ID:9mnpmN5C
>>596
OSの構造しらない昔のゲームプログラマーが適当に名付けただけだよ。

その昔のゲームはキーボードからコマンドを入力するまで
イベントが動かないのもあった。アニメーションもろくにできなかったしね。

その点アクションやシューティングは一定サイクル(FPS)で処理を続けてるので
タスクといえる。だから擬似タスクシステムとしようってことでしょ。
組み込みのちょっとしたプログラムもRTOSとか呼ばれてるようだし。
598名前は開発中のものです。:2008/06/23(月) 22:21:05 ID:FfEyNKqI
擬似なんて言い出したのは素人だろ
エンドたんでも引っ張り出して詰問してみれ
599名前は開発中のものです。:2008/06/23(月) 22:33:39 ID:FfEyNKqI
まぁどっちでもいいや
現場では擬似タスクは全く聞いたことないし、タスクにしたって
使わなくなってずいぶんと久しい。ほぼ廃れた言葉といっていい

いまどきタスクシステムなんて単語を駆使してるのは
一部の懐古趣味野郎とかマムコ信者くらいだ。いずれにしろ老害。
痛い素人の真似するのが本望でないならもっとかっこいい言い方を
模索するべきだろう。ゲームエンジンとかオートマトンエンジンとか
600名前は開発中のものです。:2008/06/23(月) 22:54:42 ID:ij0TulEQ
めんどくさいからタスクシステム、擬似〜〜でも良くね?
601名前は開発中のものです。:2008/06/23(月) 22:57:43 ID:PFSFGR1E
ケチを付けるのが目的だから細かい名称なんてどうでもいいのさ。
602名前は開発中のものです。:2008/06/23(月) 23:00:02 ID:9mnpmN5C
>>600
いやゲームエンジンだとか、商業的になるとミドルウェアという言葉で片付く。

擬似タスクシステムってやっぱり古い時代の名残だよ。
マイコンなんかで使う用語が規模も似たようなゲームマシン時代に
当てはめて生み出した造語
603名前は開発中のものです。:2008/06/23(月) 23:25:21 ID:HdAQdXjX
描画順はともかく、固定長配列じゃオブジェクトの追加に時間がかかるだろう
毎回走査して空きを探すのか?
富豪的に見えて、面倒なだけじゃね?
604名前は開発中のものです。:2008/06/23(月) 23:31:51 ID:9mnpmN5C
>>603
いやだから固定長配列だって、リストにすればOKだよ。

でもテストして最大値を割り出しておかないとだめだけどね。
605名前は開発中のものです。:2008/06/23(月) 23:37:50 ID:HdAQdXjX
待って、俺が誤解していない場合、
やっぱりオブジェクトを追加するときに、
空きを探して配列を走査する必要がないか?
606名前は開発中のものです。:2008/06/23(月) 23:40:03 ID:uMAOIcwL
>>603-604
富豪厨召喚呪文が唱えられたようなのでム板からカッ飛んできた
配列厨と罵倒されることもあるけど私は元気です

さて、>>591のおじさまが言ってる配列による順序無しリストってのはたぶん
要素削除時に最後の要素をそこに移動&上書きするものだと思うよ
順序がメチャクチャになるけど条件が許すなら大丈夫だよね

アルファブレンドなしの2D弾幕ならZ値で上下関係は保てるしね
607名前は開発中のものです。:2008/06/23(月) 23:46:37 ID:9mnpmN5C
>>605
配列でオブジェクトを8コ取ったとするよね
これには当然リストを構築するためのポインタも入ってるとする。

配列 □□□□□□□□

で、ゲームを起動した際に初期化処理として

使用中リスト NULL
未使用リスト □->□->□->□->□->□->□->□->NULL

こうやって置く。

あとは関数でも用意してオブジェクトを追加したければ

使用中リスト □->NULL
未使用リスト □->□->□->□->□->□->□->NULL

使用中リスト □->□->NULL
未使用リスト □->□->□->□->□->□->NULL

・・・・

使用中リスト □->□->□->□->□->□->□->□->NULL
未使用リスト NULL

使わなくなればまた未使用リストへつなげばいい。
malloc freeのコストはないけど配列で確保した個数以上は管理できない。
608名前は開発中のものです。:2008/06/23(月) 23:49:54 ID:uMAOIcwL
ところで富豪厨はシモジモの日々の苦しいやりくりとは無縁なので
タスクシステムとかの貧民的なアプローチに興味ないのですが
このあいだ「タスクも知らないの?プギャー」と貧乏人に煽られたので
ちょっとシメてやろうと思ってタスクスレを開いたら既にタスク派が
盛大に虐殺されていました

あまりの恐ろしい光景に震えあがってム板に帰りました
609名前は開発中のものです。:2008/06/23(月) 23:51:54 ID:5JyA6mIk
>>605
空きの部分も線形リストで結んで管理するのが
データ構造では一般的じゃなかったかなあ
610名前は開発中のものです。:2008/06/23(月) 23:52:07 ID:HdAQdXjX
>>607
OK理解した
要するにメモリプールに固定長配列を使ってるわけね
って>>577が既に書いてたし
物覚え悪くてスマソ

>>606
コピーのコスト(ry
これぞ富豪
611名前は開発中のものです。:2008/06/23(月) 23:58:11 ID:xReDDG2i
隔離スレあるんだからタスクシステムそのものについてはそっちでやってくれ
612名前は開発中のものです。:2008/06/24(火) 00:29:33 ID:oNKHrkss
むしろ隔離スレから出てくるというゲハ板→ニュー速現象が・・・
こういう全体の設計って結局は人それぞれだから、あんまり2ch向けの話題じゃないな

しかしレスから見るにDSとかPSP辺りで作ってるのかな?
613名前は開発中のものです。:2008/06/24(火) 00:31:28 ID:PrpKabUz
>>612
今となったらオブジェクトの管理メモリより
素材の方がメモリ食うんだけどね・・・
614名前は開発中のものです。:2008/06/24(火) 00:31:35 ID:NcdiOwFI
>>610
富豪厨は厨なのでパフォーマンスとか興味ないんだけど
たまには庶民の期待に応えるためにベンチとり遊びもしてたよ

弾はサイズ小さい(弾種、座標、速度、深度とかで24Bytesくらい)から
削除時のコストは24バイトのブロック転送に過ぎないよ
弾アップデートのための巡回はただのリニアアクセスだから楽だよ
2000発の弾をランダムに飛ばしたり生成削除するテストしたときは
boost::simple_segregated_storageとの速度競争で勝利を収めたよ

ところでboost::simple_segregated_storageの中身って>>607のそれと
よく似ていたんだけど、これは使用中リストから外して未使用リストに
繋げるとき(またはその逆のとき)ポインタ書き換えは何回発生する?
それと弾アップデートのための巡回は隣接要素のポインタ経由の
ランダムアクセスになるよね

まぁ富豪厨にとっては瑣末な問題なので普通に弾一個一個で
malloc/freeしてたけど
615名前は開発中のものです。:2008/06/24(火) 01:01:38 ID:R7H+ft0X
>>565
スレありがと。仕事で死んでたんで見れなかったんで。
参考になりますです。
616名前は開発中のものです。:2008/06/24(火) 01:06:33 ID:BbGOZBxw
>>603
富豪的に見えるかもしれないが、いまどきのPCはリストをポインタ辿って
走査するよりも配列を順走査する方が同じ要素数なら1.5倍くらい速いよ。
追加のコストが増えても、その他の処理で十分ペイできる。
617名前は開発中のものです。:2008/06/24(火) 01:12:19 ID:4FqnTxUJ
シューティングゲームに必要な要素数(せいぜい2000以下)だと、確かにそうなるかも
どどんぱちの裏ステージ的な状況だとどうか知らんがw
618名前は開発中のものです。:2008/06/24(火) 03:41:05 ID:3USBYfmM
>>617

>>591>>606>>614の言ってる配列コンテナの使い方は
削除処理=削除対象の要素を最後の要素で上書きするだけ。O(1)時間。
当然虫食いはないので要素追加時も空き要素検索は必要ない。O(1)時間。
これらの処理時間は要素数に関わらず常に一定。ただ要素サイズに比例する。
あと最大の欠点は削除・追加を繰り返すことで要素巡回順が不定になること。
だから「順序なしのリスト」なのね

これが問題にならないケースで使えばいい
619名前は開発中のものです。:2008/06/24(火) 05:39:53 ID:2pkhJQN/
固定配列にこだわって富豪ってのもなんだかな。
俺は大富豪なので弾幕シューでも容赦なくnew/deleteするが。
620名前は開発中のものです。:2008/06/24(火) 07:38:39 ID:sTkkjGQB
>まぁ富豪厨にとっては瑣末な問題なので普通に弾一個一個で
>malloc/freeしてたけど
621名前は開発中のものです。:2008/06/24(火) 09:34:14 ID:wbqG7Qtf
>>603
シューティングでは最初に発射された弾が最初に画面外に出て消滅(FIFO)するような気がするので、
空きオブジェクトをリストで管理しなくても、キュー(リングバッファ?)っぽく管理してもいいかなと思って、
最期に取得したオブジェクトの位置を保存してみたりして
試している今日このごろ。
622名前は開発中のものです。:2008/06/24(火) 10:38:43 ID:LBFcTyab
>621

Before----------------------------------------

Σ三>    -        -
                   敵


After----------------------------------------

Σ三>           -  敵   -
                  ↑
623名前は開発中のものです。:2008/06/24(火) 10:46:15 ID:7sGdPDL+
>>622に言おうとしたことかかれたw

敵とか地形が邪魔をしないゲーム(と呼べるのか?)であれば
>>621の言うようにFIFOでも成り立つがゲームらしくすると
敵もしくは地形で後に発射した弾が消滅する可能性だってある。

貫通弾にすればいいというかもしれないがやっぱり
動的にオブジェクトが増えたり減ったりする場合は
リストが向いてる
624名前は開発中のものです。:2008/06/24(火) 12:47:57 ID:wbqG7Qtf
>>622>>623のやさしさに泣いた。

そこで、対策としてとりあえず、配列の大きさを十分に大きくしておくことと、
使用中のオブジェクトに関しては、「使用中です」フラグをつけて、スキップしようと思うんだ。

配列さえ十分な大きさがあれば、
配列を一周するまでにきっと最初に撃った弾も画面外に出て消滅してるはずってことで
625名前は開発中のものです。:2008/06/24(火) 13:47:19 ID:S5i4Hl5N
どっかで

class hoge{
int x;
int y;
char[256];
}

のcharがフリー領域として使えるとかあったが、どういう仕組みなんだ?
626名前は開発中のものです。:2008/06/24(火) 15:14:33 ID:cUcYhgYN
sizeof(char*256)バイト分確保しとくから好きな型にキャストして使えってことじゃないの?

んでも、C++でわざわざこんな方法するかね?
もっと別に良い方法があると思うけど。
よくわからん。
627名前は開発中のものです。:2008/06/24(火) 15:35:22 ID:3yXq89ZE
Cではそんな組み方してたみたいね
628名前は開発中のものです。:2008/06/24(火) 18:47:38 ID:nk5lzdPA
placement new用にメモリをプールするためにchar型の配列使ってる教本があったな
素直にnewしたいオブジェクトの配列にしろよ、と
629名前は開発中のものです。:2008/06/24(火) 19:14:29 ID:YG9wxXVw
東方も順番だけ記録して固定長配列でやってそう
最後尾まで行くと最初に戻って描画順序狂ってる時があるし
cave系はlistっぽいけど

普通の2D弾幕系STGなんてどっちで実装しても問題なしじゃね?
630名前は開発中のものです。:2008/06/24(火) 19:39:33 ID:cSyjiEYz
ぶっちゃけ最近のPCのスペックならどっちでも余裕だろうな
631名前は開発中のものです。:2008/06/24(火) 19:40:35 ID:ueXZ64IW
ブルーセイバーズやテイルズギアのところはBASICで作ってるらしいけど
どうやってオブジェクトを管理してるのか気になる
632名前は開発中のものです。:2008/06/24(火) 21:26:33 ID:pF7sIXlF
みんなで一緒に富豪厨になろうぜ。
633名前は開発中のものです。:2008/06/24(火) 22:07:45 ID:NcdiOwFI
>>631
富豪厨でなおかつ玉葱狂信者なのでLGPはよく知らないんだけど
マニュアルを流し読みした感じでは配列使ってやりくりする以外の手がないような。
配列の添え字(番号)を使って連結リストとか

3Dのアニメーション用にフレーム(座標系)の親子関係があるみたいだけど
姿勢と座標を自動変更(線形的なアニメーション)するためだけのもので
ユーザー定義の変数を入れ込んだりユーザー定義関数を登録して
ゲーム独自の処理をかませるようなことはできないくさい
634名前は開発中のものです。:2008/06/25(水) 01:48:12 ID:yLL8mfYi
ゲームとして面白ければ富豪厨だろうがなんだろうが関係ないぜ、
と言いつつ結構細かいプログラムに拘ってしまう俺降臨
無駄な処理を削って云々とかよりも、はやく体験版を出して色んな人から意見を貰った方がためになるのに…orz
635名前は開発中のものです。:2008/06/25(水) 02:15:01 ID:ZT5O8Vsq
公開してから「フリゲ≒軽くて当たり前」信者の対応がタルくなるけどな!
636名前は開発中のものです。:2008/06/25(水) 09:39:54 ID:EtCnEfpl
>>629
それってステージで描画されるすべてのオブジェクトを前もって生成して
あとは順番に描画だけしてるってこと?
637名前は開発中のものです。:2008/06/25(水) 10:11:08 ID:HqBe87x9
東方はやったことないんで推測だけ。

>636
固定長配列を前から見て、「空席があったらそこに座る」ってことじゃないかと。
638名前は開発中のものです。:2008/06/25(水) 12:59:07 ID:pCORKo/h
>>634
よう俺
最近はアイデアが浮かばないから無意識のうちにギミックに凝ってしまうのだと気づいた。
勇気を出して前に進むのも必要だと思うぜ。
639名前は開発中のものです。:2008/06/26(木) 16:22:49 ID:VGgrpFAu
ygs2000を使って縦スクロールSTG作ってるんですが、
インポートライブラリのatan2(y,x)の戻り値が、0から65536になっているんですよ。
どうすれば、戻り値を0から360度の範囲に変換できますか?
640名前は開発中のものです。:2008/06/26(木) 16:51:15 ID:RTbJUwyD
ygsは知らんけど、65536 == 360度として考えるなら

int deg = atan2(y,x) / (65536/360);
641名前は開発中のものです。:2008/06/26(木) 17:06:38 ID:7XWLzTd8
元がどう見てもintなんだから、360掛けてから65536で割る方がいいだろう。
642名前は開発中のものです。:2008/06/26(木) 17:08:05 ID:mOejCOBQ
俺なら

* 360 / 65536

とするけど。

って書こうとしたら既にかかれてたw
643名前は開発中のものです。:2008/06/26(木) 17:08:39 ID:Im8BFapF
>>639
勝手な予想なんだが、それ角度が360度 = 2π(rad)を超えても気にせず計算できるようになってるんじゃね??
大抵の三角関数はラジアンで実装してるだろうから。
違ってたらすまん。
644名前は開発中のものです。:2008/06/26(木) 17:11:19 ID:Im8BFapF
と思ったけどすごく見当違いですね、なかったことに。
645名前は開発中のものです。:2008/06/26(木) 23:03:08 ID:a/ZP+zQY
>>639
Selene?

むしろ、ゲーム自体を65536度にあわせて設計したほうがいいかもしれない
646名前は開発中のものです。:2008/06/28(土) 15:07:32 ID:nt11KuRN
おまいら話ズレすぎだろw
647名前は開発中のものです。:2008/07/01(火) 01:37:53 ID:9uZftGEH
横シューの背景ってどうしてますか?
648名前は開発中のものです。:2008/07/01(火) 01:45:16 ID:aWjEECAh
横にスクロールさせてます。
649名前は開発中のものです。:2008/07/01(火) 02:32:17 ID:PQIEP/fX
お前頭いいな
650アジェグ4倍 ◆4xAJeG.COM :2008/07/01(火) 10:15:19 ID:1U0sNwre
もう決着ついてるかもしれんが、配列の空き走査なんて、
描画の処理時間に比べれば、微々微々たるもんだよ。

ループ中にnew/deleteする方が非効率だと思うけどね。
651名前は開発中のものです。:2008/07/01(火) 15:19:14 ID:QwYE1J0X
いまさらすぎて噴いた
652名前は開発中のものです。:2008/07/01(火) 16:24:12 ID:/457mXHb
空席を見つけて適当に座る、って言って通じるもんだろうか?
653名前は開発中のものです。:2008/07/01(火) 17:20:02 ID:XbvaRuwU
つか何この空気コテ
654名前は開発中のものです。:2008/07/01(火) 21:08:59 ID:wExkfdnX
トリップでググれば哀愁漂うLinux板の糞コテ
655名前は開発中のものです。:2008/07/01(火) 23:42:16 ID:Ya9L5X18
>>647
シューティングツクール的な発想でいくなら、16x16(ピクセル)のタイルを画面一杯に敷き詰めてた。
あれ、32だっけ?
656名前は開発中のものです。:2008/07/02(水) 00:02:49 ID:DI24ohjW
む?
俺は普通にそうしてるけど、シューティングツクール的発想以外だと違うの?
657名前は開発中のものです。:2008/07/02(水) 00:08:16 ID:gdApJWkY
画面サイズと同じくらいのテクスチャをくるくる回して、
その上に当たり判定のないオブジェクト配置してるけど
658名前は開発中のものです。:2008/07/02(水) 00:25:19 ID:GT+Oyjsr
インベーダーやミサイルコマンドのように、そもそも背景が動かないというのも一つの選択肢だな。
659名前は開発中のものです。:2008/07/02(水) 01:07:49 ID:GdeAeksN
最近の個人製作なんかでよく見る、雲模様みたいな画像を
加算、乗算処理なんかしつつ流していく手法も結構面白い。
660名前は開発中のものです。:2008/07/02(水) 01:23:47 ID:rkPq3Fgi
>>656
ずっと前に見たどこかのエロゲ会社が無料で配布してたやつは
画面と同じ大きさのbmpが10枚くらい入ってたよ。
661名前は開発中のものです。:2008/07/02(水) 02:53:17 ID:Z7PtKJGp
テクスチャを使うゲームの場合、
画面サイズだと正方形じゃないから無駄にVRAM食うのが気になって、
サイズ一つ下(512x512)のテクスチャをフィットするように拡大して使っている貧乏性な俺。
662アジェグ4倍 ◆4xAJeG.COM :2008/07/02(水) 07:49:09 ID:VoUGDrkh
レイヤーのビットマップを設けて、
表示する際の座標をずらせばいいんじゃあ?
663656:2008/07/02(水) 21:04:37 ID:OZmBfWcb
皆の言葉を信じて、背景の描画方法を
16×16のマップチップを敷き詰める方法から、
一画面〜四画面分の画像をベタ表示する方法へ変更してみた。

なんかリプレイ時の早送り動作が軽くなった。
664名前は開発中のものです。:2008/07/02(水) 21:21:58 ID:GT+Oyjsr
リプレイ機能ついてるのか。

人気あるのかな。リプレイ機能って。
665名前は開発中のものです。:2008/07/02(水) 21:29:29 ID:giqVUVjy
初めてリプレイ機能を実装したときは感動した。
666名前は開発中のものです。:2008/07/02(水) 21:31:38 ID:lS1P7Ldh
今時ないほうが珍しいな
デモ見せるにしても必要だし
667名前は開発中のものです。:2008/07/02(水) 22:20:06 ID:OZmBfWcb
>>665

俺もw
リプレイ機能自体は早々に作ってたんだけどうまく再生しなくて長い間放置ぎみだったけど、
結局初期化されてない項目があった事に気づいて、ちゃんと動くようになった時は感動した。

リプレイ実装のおかげで、デモの実装も実現したし、デバッグにも役立つようになったw
(テストプレイで、キャラが想定外の動きをした時、リプレイを取っておいて
 修正後にリプレイを実行して、ちゃんと直ってるか確認する)
668名前は開発中のものです。:2008/07/02(水) 23:08:12 ID:surY1LL8
>665
俺も俺も!

その時はリプレイをどうやって実装すればいいかも分からなくて適当だったけどなw
(ちなみに全ての入力を保存すると言う、よくある方法だった)

そのリプレイ処理のおかげで、だいたい1日でポインタやファイル読み書き、ビットフィールドの操作とか覚えられたし。
人間、必要だと思ったらすんなりと頭に入るんだなあと思ったよ。

逆に、他人がポインタで詰まってても教えられないという欠点はあるがw
669名前は開発中のものです。:2008/07/03(木) 07:40:20 ID:qi9huYH9
非ポインタとポインタは一言で言えば、
変数の中身を取り出す時に、値をじかに取り出すのか、それとも住所を取り出すか。じゃね?
ポインタは住所をやり取りする、と。

リプレイはまだ実装した事無いなー。今度実装してみよう。
670名前は開発中のものです。:2008/07/03(木) 08:37:45 ID:Yl0JVKtk
キー入力保持のリプレイを他のマシンに持っていくとうまく動かないことがあるんだよな。
浮動小数点の計算誤差が若干違ったりするからだと思うけど・・・
671名前は開発中のものです。:2008/07/03(木) 09:10:54 ID:DTx5b/+j
INTELとAMDのメジャーなCPU(要するにIA32互換のやつ)しかサポートしてない俺は
とりあえず

・ゲームの進行に直接作用する計算は全てFPU(x87互換のやつ)に任せる
・_controlfpとか使って計算精度等をきちんと指定する。

これで上手くいってる
FPUバグ持ちクラシックペンティアムとかもう骨董品だから無視してる
672名前は開発中のものです。:2008/07/03(木) 10:08:43 ID:FVj30rAO
673名前は開発中のものです。:2008/07/03(木) 16:33:12 ID:gwFP/f3L
>669
似たような説明はしたことがあるが、通じてるかどうかが怪しいw
674名前は開発中のものです。:2008/07/04(金) 00:41:50 ID:lh91Gh1r
XMLでシューティングゲームを記述できるエンジンを作ってるんだが、
敵の動きを高度にプログラムできるようにしようとすると、
結局ソースで実現した方が良いじゃないかという気がして、何だか悲しい。
Flexみたく、XMLの中にプログラム(or スクリプト)書きはじめるような仕様を作ったが最後、
100%エターなる。
675名前は開発中のものです。:2008/07/04(金) 00:51:01 ID:XLyUbCLu
XMLてのはデータの構造を記述するためのものだろ
それでロジックを表現しようとするのがそもそも間違いだと思うが・・・

そのXMLによるシューティングゲーム作成にはどんな利点があるんだ?
676名前は開発中のものです。:2008/07/04(金) 01:09:13 ID:qYh8NvWd
動作ロジックはハードコーディングして、配置や個体パラメータを
XMLデータで指定するだけでもいいんじゃね?俺がやってる方法だけど。
677名前は開発中のものです。:2008/07/04(金) 01:11:47 ID:XLyUbCLu
敵の出現タイミングとか位置だけ外部ファイルで定義するようなもんか
それだったらXMLの方が見やすいかもな
エンジンとして公開するならハードコーディングの部分にかなりの工夫とバリエーションが必要だな
678名前は開発中のものです。:2008/07/04(金) 01:42:15 ID:lh91Gh1r
最初は、スクリプトでシューティング作れたら、楽かなあなんて思って始めたんだけど、
XMLだと、最初から読み込んで解析してくれるライブラリがあったから、使ってみた。

ちなみに、某シューティングツクールのように

「自機に向かって移動」「移動」「弾発射」「敵発射」「なにもしない」「自爆」

で敵の動きが完結するなら、
敵の動作ロジックも全てXMLで記述できる。
679名前は開発中のものです。:2008/07/04(金) 02:21:14 ID:fzMGN+kp
>>674

XMLじゃないがスクリプトでシューティングのオブジェクト配置したり
するのならすでに弾幕風とかあるぞ。
680名前は開発中のものです。:2008/07/04(金) 11:57:57 ID:/8DfK8rI
技術的な会話しているところに、空気を読まず質問

縦スクロールSTGで、アイテムを放出する味方機を出そうと思っているのですが
なんかぱっと見て敵機にしか見えなくて困っています。(普通に避けてしまう)
見るからに味方機として出現させるために、何か良い方法はないでしょうか?
681名前は開発中のものです。:2008/07/04(金) 12:01:36 ID:fzMGN+kp
>>680
・軽めのカットインとかメッセージを表示して見方機が来たよをかもし出す
・東方のボス戦の場合は画面下にボスのx座標がわかるようになってるがああいったマーカーを出してあげる。

で、説明書に書いておけばOK?
682名前は開発中のものです。:2008/07/04(金) 12:43:58 ID:dKlhKsZq
>>680
その味方機が敵の弾を喰らうとか
683名前は開発中のものです。:2008/07/04(金) 12:54:34 ID:lh91Gh1r
味方機と自機のカラーを統一するとか。
684名前は開発中のものです。:2008/07/04(金) 12:54:40 ID:7DWi7vho
>>674
てゆかbulletMLあるよなぁ
674のも使ってみたいが。
685名前は開発中のものです。:2008/07/04(金) 14:23:05 ID:9J7xybES
>>680

・敵のカラーとは明らかに違う、目立つ明るい色にする。
・デザインの系統を敵とは一目見て違うようにする。
 (敵が直線っぽいデザインなら、曲線ぽいデザインに、敵が生物っぽいなら、メカっぽいデザインに)
・自機と同じ形、同じような色にする。
・明るい色で縁取りするとか、とにかく他のキャラや背景と比べて「浮く」ようにする。
686名前は開発中のものです。:2008/07/04(金) 15:45:01 ID:eL1SAVRC
動き方でも差別化をはかりたいね
小型なのにゆっくり現れて消えていくとか
687名前は開発中のものです。:2008/07/04(金) 18:25:06 ID:qjrvpm0l
機体に「味方」って書いておけ
ってのは冗談だが、自軍のエンブレム的なものを作っておいて、
それとわかるように機体に表示しておくのも手だな
688名前は開発中のものです。:2008/07/04(金) 20:19:03 ID:oittVPD9
救急車が飛んでくるしかあるまい
689名前は開発中のものです。:2008/07/04(金) 20:24:11 ID:fzMGN+kp
ちょwそれBeeメイツ
690名前は開発中のものです。:2008/07/04(金) 21:07:37 ID:juhuhHaO
ツインビーも救急車だったような・・・
691680:2008/07/04(金) 23:27:30 ID:JgmzXrxe
多くのレス、ありがとうございます!
絵の素材にフリー素材を使用しているため、
デザインの系統分けをしたり
エンブレムを書くのは難しいものがありますが
(雰囲気的な意味でも、救急車も厳しいです)

縁取りや、色の統一、カットインでの表示
なんらかの味方軍に統一の記号をつける
敵の弾を食らうなどの演出は、実装できそうなので、試してみることにします
本当にありがとうございました!
692名前は開発中のものです。:2008/07/04(金) 23:39:04 ID:XLyUbCLu
質問者が納得したうえに話の腰を折るが
製作者が気にするほどプレイヤーは見た目にこだわってないし
慣れてしまえば気にならない
だからよっぽどややこしいデザインでなければ結構適当でも大丈夫
693名前は開発中のものです。:2008/07/05(土) 02:08:08 ID:OY2NBo76
こちらも流れに乗って技術的じゃない質問を一つ。

ショットタイプについてなんですが、
ショットボタン長押しで低速移動&ショット変化ってのと
ショットとショット変更のボタンが別になっているのがあるじゃないですか。
あれってどちらが一般的なんでしょう?
最近は長押しで変化するのが多く見られる気がするんですよね。
でも昔はチェンジするボタンがあったし・・・。

ボタン配置は長押しで変化するタイプは
@ショット Aボム等 Bフルオート
チェンジするボタンのついてるものは
@ショット Aショットチェンジ Bボム
こんな感じなんでしょうかね。

オプションで好みで変えられるようにすればいいじゃないって言われればそうなんですが気になったので・・・。
694名前は開発中のものです。:2008/07/05(土) 02:23:37 ID:yT3V8RBn
>>693
メインウェポンのパワーアップアイテムが一定時間で種類が切り替わるようにしとけ.
ウェポンチェンジしたくなったらその色のアイテムをとる,と.
695名前は開発中のものです。:2008/07/05(土) 03:05:34 ID:+VTXj324
>>693
銀銃みたいにボタンの組み合わせという手もある
696名前は開発中のものです。:2008/07/05(土) 04:13:01 ID:wbV3lwSQ
ショット変更ボタン式は、
自機の現在の武装を記憶して、目的の武装に切り替えるには何回変更ボタン押さないといけないか、
を常に考えないといけなくて煩わしく感じる。
武器別にボタン用意するか銀銃式にする方が手順を省略できてやりやすい。
697名前は開発中のものです。:2008/07/05(土) 04:35:56 ID:OY2NBo76
>>694
アイテムでチェンジかぁ。
怒首領蜂みたいに最初からタイプを決める形式でやってるんで
通常時と低速時の変更をどうするかで悩んでるんですよ・・・。
アイテムはパワーアップか、ハイパーみたいな感じになるかも知れないです。

>>695
ボタンの組み合わせって事は何種類か武装があるって事ですよね?
今つくってるのはそこまでバリエーションを持たせる予定がないんです。

とりあえず今は機体2種類とビット3種類で全6種類の組み合わせができるようにしてあります。
機体α:高速移動集中攻撃型(ビット可動範囲が狭い)
機体β:低速移動拡散攻撃型(ビット可動範囲が広い)
ビットA:機体の前で左右に振れながら前方に攻撃。
ビットB:移動した方向に攻撃が傾く。
ビットC:前方の一番近い敵を狙う。

ちなみに通常時はメインショットオンリーで低速時(変更時)にビット展開になってます。
698名前は開発中のものです。:2008/07/05(土) 08:13:53 ID:BRmlyj+Z
高速/低速の切り替えと武器が連動しているのなら
怒首領蜂式がなじみは深いな
699名前は開発中のものです。:2008/07/05(土) 08:25:07 ID:bJc5CaWq
ゲーム性&操作感と連動するべきだろう
即座に武器を切り替えさせる必要があるゲームなら長押しは向かないってだけ

蜂は強いレーザーで押し込むゲーム性と、ボタンを押し込む動作が非常にマッチした
心地いい操作感だよなぁ
700名前は開発中のものです。:2008/07/05(土) 19:23:58 ID:Def2so2E
そういえば少し前にリプレイに関する実装があったけど、その前段階として入力情報をどう管理してる?
ゲームパッドも管理するのでDirectInputを使うのが一番楽っぽいのでそれを想定して。
・DirectInputを使用して、KeyboardStateやJoystickStateを直接使用する。
・予めキーコンフィグ情報に応じてbool配列を吐き出す様な仕組みを作っておき、bool配列を読み取る。

後者だとリプレイ再生のさい、乱数情報とbool配列を保持していけば良いだけだから実用的かな?
701名前は開発中のものです。:2008/07/05(土) 19:29:38 ID:kss7FKxc
リプレイやキーコンフィグ機能があるかどうか関係なく後者
702名前は開発中のものです。:2008/07/05(土) 23:06:46 ID:jZ262oYg
弾幕風とBulletMLに泣いた。

こいつらに太刀打するには、もっと他の利点を押し出さなきゃな。
XMLスキーマとXSLT書いて、WEBブラウザでゲームの仕様が閲覧できるとかw
703名前は開発中のものです。:2008/07/06(日) 01:10:01 ID:KV5s28Rv
>>696 >>698 >>699
今のところプレイ中のショットタイプは2種類だけで、瞬時に変える必要もないので怒首領蜂形式でやってみますね。
アドバイスありがとうございました。
704名前は開発中のものです。:2008/07/06(日) 21:02:59 ID:LhJHzATs
画像しかできてないんだけどどうすればいいの
705名前は開発中のものです。:2008/07/06(日) 22:11:01 ID:Wq87ZP+f
十分な量の画像があるなら、素材スレかどこかで晒してみれば?
706名前は開発中のものです。:2008/07/07(月) 08:13:49 ID:AsUKMvOQ
>>700
ゲームパッドやキーボード、マウスといった具象データを、
ゲームに与える抽象データとしてまとめる。
リプレイ用に保存するのは抽象データ。
707名前は開発中のものです。:2008/07/07(月) 10:49:42 ID:e2sx0hGW
>>704
その画像が素材として使えるなら欲しいと思ってしまう
708名前は開発中のものです。:2008/07/07(月) 11:58:08 ID:yfAt10n7
おまえら一緒にやれやw
709707:2008/07/07(月) 13:46:44 ID:dJh8Ifkj
ツクール(SB)で製作してる俺は、お呼びでないような気がするから困る
710名前は開発中のものです。:2008/07/07(月) 14:21:11 ID:qtUGx97D
>>702
俺はとにかく高速性を求めたものをこしらえたよ
オブジェクトプール、固定小数点、バイトコード、C/Javaライクetc
しょぼいSTGなのに、見えないところに無駄に時間をかけたぜww
711名前は開発中のものです。:2008/07/07(月) 16:31:12 ID:AsUKMvOQ
もう弾幕には心の底から興味がないので、別のもので勝負をかける予定。冬か来年の夏な。
712704:2008/07/07(月) 17:08:59 ID:N4UsRXoF
>>707
ttp://www2.uploda.org/uporg1528706.jpg
一応出しておくけど十分な量がない上に
まともなのは爆発ぐらいしかない
713名前は開発中のものです。:2008/07/07(月) 17:13:10 ID:1fd4Wq9E
グラIIと見せかけてMSX系?
714名前は開発中のものです。:2008/07/07(月) 17:23:24 ID:OVkuxJVV
去年くらいから避けゲーとしての弾幕は減ってきてる気がするな。
715名前は開発中のものです。:2008/07/07(月) 17:47:46 ID:8OrB6Wg2
>712
これ見てるだけで、今やってる仕事を破棄してSTG作りたくなってくるな。
素材だけで。そこまでのパワーを得られる気がした。
716名前は開発中のものです。:2008/07/07(月) 18:14:10 ID:yfAt10n7
jpegなのは敢えてかw
まあ使う気はないがw
717704:2008/07/07(月) 19:57:11 ID:N4UsRXoF
>>712
ゴーファーの野望エピソード2のリメイクを作ってるんだ
718名前は開発中のものです。:2008/07/07(月) 20:02:56 ID:aZNnbaQ1
日本語は正しく使ってくれ。

つまり、

「ゴーファーの野望エピソード2」のリメイクを個人で遊ぶ目的で作ろうとして、
ドット絵を(トレスなのか1から作っているのか解らないが)作ってる途中。
動かす方の知識は無いままドット絵を作り続けているが、
これからどうすればいいのかわからない。

という話でいいの?
719704:2008/07/07(月) 22:03:15 ID:N4UsRXoF
>>718
OK
ゆとりですまん
一応シューティングゲームビルダー使ってみたけど
途中で挫折した
ある程度知識をつけてからまたここにくるよ
720名前は開発中のものです。:2008/07/08(火) 01:12:39 ID:/74FD1OI
まあがんばれや
721名前は開発中のものです。:2008/07/08(火) 05:03:13 ID:iq4s5004
エピ2を知ってる程度におっさんで今そんなんだと
もう一生かけても無理だな。残念だが。
722名前は開発中のものです。:2008/07/08(火) 05:09:34 ID:p1JtdrU4
開発を手伝ってもらうってのもいいと思う
まず音楽どうするんだろ、アレンジじゃなくて原曲かな
723707:2008/07/08(火) 08:09:35 ID:stdsNVnL
>>704
素材の出来が凄すぎて吹いた
しかし作っても公開できなさそう?
この辺の著作権がさっぱりわからん件

ともかくSBについては、SBのスレに書き込めば、いろいろわかってくるとは思います
手が入るというなら、自分で良ければ手伝いますよ
未だSBを全然使いこなしてはないですが。
724名前は開発中のものです。:2008/07/08(火) 11:52:52 ID:gJzpS9fO
エミュからの吸出しを加工したもんじゃ無いの
725名前は開発中のものです。:2008/07/08(火) 18:20:45 ID:gbythylf
そうなのか。STGほとんどやったことないから微妙に分からんことがある。
726名前は開発中のものです。:2008/07/08(火) 18:58:53 ID:Z1TOyIZq
どうもこちらでは初めまして
とあるスレでWiki管理をやってたものです
そこの専属をやめてこの度7/10から新しいWikiにします
http://www.erc-j.com/stg/
STG製作のまとめWikiです
うpろだもありますので良かったら使ってください
727名前は開発中のものです。:2008/07/09(水) 01:51:32 ID:g3bziBg/
>>726
728名前は開発中のものです。:2008/07/09(水) 12:11:40 ID:+WxpMWoT
http://frgm.jp/ フリーソフトで面白いゲーム まとめ(新)
復活したので好きなゲームに投票してくれい。
729名前は開発中のものです。:2008/07/12(土) 12:57:25 ID:eramyNaF
メタルブラックの1面終了後のボーナスステージの背景の表示ってどんなアルゴリズムなんでしょうか。
2D画を3Dっぽく表示させてるんだと思うんですが、拡大縮小を駆使するんでしょうかね?
730名前は開発中のものです。:2008/07/12(土) 13:43:35 ID:Px1gdp4h
よく覚えてないけどラスターと拡縮だっけか
731名前は開発中のものです。:2008/07/12(土) 17:32:14 ID:4tnUBWbg
ちょっと製作のモチベが上がらないので
少し作ったものをうpします
以前、このスレの>>377でうpして、
いろいろ意見をいただき、出来る範囲で修正を行って続きを作りました
前回プレイされた方もそうでない方も、プレイしていただければ幸いです
良ければ感想、意見お願いします

one case
http://www.erc-j.com/stg/
の左上にあるSTG-URLから入れるアップローダーのstg0261.lzhにうpしました。
732名前は開発中のものです。:2008/07/12(土) 19:34:59 ID:Px1gdp4h
>>731
とりあえず二つのモードともやってみたが、スタンダードはちょっとあっさりしすぎてないか。
でも5面6面は面白かったぞ。ここにやりたかったこと詰め込んだ感じw
最初なぜか死にまくってコンティニューしたが後半はそのまま進めてクリア。

チャレンジモードは確かに最初から難しいがこっちのが序盤から面白い。
スタンダードとチャレンジの構成をほぼ同じにして難易度調整するだけのが
スタンダードも面白くなるんじゃないかね。後方攻撃にも意味出るし。

ちなみにチャレンジはクリアできなかった。最後のシャッター地帯とか
沙羅曼蛇並に意地悪になってんのかねw
733名前は開発中のものです。:2008/07/13(日) 20:54:08 ID:UdfaMMKk
>>732
プレイしてくれてありがとうございます!
その優しさに泣きそうw

もともとこれはチャレンジの方だけで作っていたのですが
一面から本気すぎる
特に一面の機雷や三面の後方雑魚が鬼過ぎる
という意見を受け、
構成そのものを変える必要が生まれたため、
スタンダードがあんな感じに生まれた感じになりました。
プレイしやすさを重視させたのですが、
そればっかりが重視されてて、確かにあっさりですよね
もう少しスタンダードの調整は考えてみることにします。
難易度調整って、本当に難しい…

沙羅蔓蛇レベルのシャッターほど鬼畜にはしてないですw
そうすると自分自身がクリアーできなくなるのでw
734名前は開発中のものです。:2008/07/13(日) 20:58:15 ID:6QYOrVUt
>>733
>の左上にあるSTG-URLから入れるアップローダーのstg0261.lzhにうpしました。
の左上にあるSTG-UPL

だったのねw
試したかったんだけどなんのこちゃって思ってたw
735名前は開発中のものです。:2008/07/13(日) 21:50:08 ID:jtrnXLQN
>>733

俺もプレイさせてもらったよ。
前バージョンのスタート直後から殺る気マンマンな敵には正直マイッタ(苦笑)が、今回のは普通に楽しめた。
演出的にもおおっと思うようなところがいくつかあったし。
ただもうちょっとにぎやかにしてもいいかもね。

あと、起動にえらく時間がかかるのと、6面がなぜかスローモーションになる
(処理落ち?)のが気になる。
736名前は開発中のものです。:2008/07/14(月) 00:26:03 ID:G2OD2oeJ
同じくプレイ。
最初なかなか起動しないんで思わずタスクマネージャを開いたら、
メモリ消費200MB超えてて吹いた。
もしや音楽全部起動時にデコードしてないか?
737名前は開発中のものです。:2008/07/14(月) 00:36:05 ID:IyRi5N7H
確かに起動に時間かかったねw
何か一気に読み込んでそう
738名前は開発中のものです。:2008/07/14(月) 08:04:57 ID:nEyGaefz
プレイありがとうです!

>>734
なんかわかりづらい書き方してて、すまんかったw
国語ちょっと勉強し直してくる

>>735
全体的に地味なのは確かに
最低限、自機ショットは派手にしてみようとは思っていますw
製作して初めて、既存のSTGの爽快感の良さに気づけた件

>>735-737
起動時やたら重たいのは、自分自身でも気になっていたところ
問題点を調べてみます
うっかりループとかしてそうで怖い
プログラム部分は他の有志が作ってるものなので
>>736の言うようにデコードしてるのかどうかは現時点ではわからないです

6面は処理落ちだと思います。
多重スクロールかけたりしてたからかな……
こちらも軽くなるよう改善してみます
739名前は開発中のものです。:2008/07/14(月) 08:18:28 ID:ArjsFr9C
国語じゃなくてUPLがURLになってるだけでしょうw

俺も最初わからなかったけど、前回の書き込みみて間違ってると気づいた。
740名前は開発中のものです。:2008/07/14(月) 09:44:50 ID:nM1lOpfJ
>>739
うああああ、今やっと気づいたw
形的に絶対URLだと思っていた俺涙目
わかりづらい日本語使ったから、誤解を招いたものだとばかり
すまんかった、さんくす
741名前は開発中のものです。:2008/07/15(火) 22:08:14 ID:JtGVfrRu
東方弾幕風以外でそれくらい機能の充実してるツールって何がありますか?
742名前は開発中のものです。:2008/07/16(水) 21:29:39 ID:ul07QMbT
シューティングゲームの当たり判定って矩形、円形方式以外にあるんでしょうかね?
743名前は開発中のものです。:2008/07/16(水) 21:41:41 ID:sDshxJUY
1回当たり判定が正確なの作ろうとして、
1ドットずつの当たり判定を画像から配列に読み込んだ。

□□■□□
□■■■□
□■■■□
■■■■■
■■■■■

こんな感じに。

それで、まず短形で判定してぶつかってたら、配列で細かい判定をした。
プレイしてみると短形と変わらなかったけどね。
744名前は開発中のものです。:2008/07/16(水) 21:42:49 ID:HKtDx1Lp
abs(自機座標Xー弾座標X)+abs(自機座標Yー弾座標Y)<適当範囲

おれ適当に作ってみたとき、これでやってた。ひし形ですな。
745名前は開発中のものです。:2008/07/16(水) 21:50:22 ID:4EgF3qxQ
>>744
すげえ、初めて見た
746名前は開発中のものです。:2008/07/16(水) 21:52:34 ID:ul07QMbT
>>743
あーそれと近いことやってます〜

今うちでやってるモードだと1ドットレベルで当たり判定できるんですが
自機の弾の当たり判定の先端と敵の端が丁度のときは思ったようにいかないんですよね・・・
747名前は開発中のものです。:2008/07/16(水) 22:33:28 ID:tH6C9Mk9
弾などのオブジェクトを基底クラスへのポインタのリストで管理しているのですが、
メモリプールとかどうしてます?
new/deleteは確保・解放速度、メモリ消費量で劣りますが、
boost::poolはサイズ固定なので派生クラスで使いづらかったり
boost:object_poolはクラス固定なので向きません
748名前は開発中のものです。:2008/07/16(水) 22:54:04 ID:ps1864uM
char型配列の形でプール確保
プールで管理したいクラスのnew/delete演算子をオーバーロードしてメモリをプールから確保

これでやってる
749744:2008/07/16(水) 23:12:47 ID:HKtDx1Lp
>>745
矩形の方が処理はやいから実際の使い道は微妙ww

巨大な敵ならいいかもしれません。
750名前は開発中のものです。:2008/07/16(水) 23:25:00 ID:Cl1ru+Nb
なんかみんなハイレベルなことやってんなぁ
クラスとかポインタとかよくわからん俺は全部構造体と配列で敵とか弾とか管理してる
751名前は開発中のものです。:2008/07/16(水) 23:30:18 ID:UitUcmmL
>>747
boost::fast_pool_allocator
752名前は開発中のものです。:2008/07/16(水) 23:33:13 ID:UitUcmmL
>>750
それでいいと思うよ。
抽象化だとか言っても結局は自己満足だ。
自分の作りやすい作り方を模索すれば良し。
753名前は開発中のものです。:2008/07/16(水) 23:37:49 ID:ul07QMbT
>>750
まあ管理機能はあるタイミングで画面に何千もオブジェクトがでないのであれば
配列でいいんじゃね?
千越えるとさすがにリストでも使っていったほうがいいだろうけど。


>>752
でもさ、C言語でゲーム組んでてサイズでかくなってきたら
クラスみたいな実装形態にいつの間にかしちゃってたぜw

数種類のデータがあったらそのデータ毎にソースが独立してて
アクセスする際は専用関数を呼び出す。

効率は悪くなるが安全だしな。
754名前は開発中のものです。:2008/07/16(水) 23:43:34 ID:ul07QMbT
それに実は双方向リストもたいしたことないんだよね。
どんなに構造体のサイズが変わろうが、次と前のポインターが入ってて
入り口と最後をさす管理用ポインターさえあればネットに転がってる
ソースをちょこっと修正すれば完成。
755名前は開発中のものです。:2008/07/16(水) 23:50:36 ID:Cl1ru+Nb
>>752>>753
なるほど…自分のやりたいようにやれば良いのか…
弾とか敵とか合計13000個くらい(敵弾が12500発)当たり判定つきでいっぺんに動かしたらさすがに60FPS維持がキツくなったけどこんなもんなんだろうか
CPUはせろりんの1.6Ghzでグラボは8400GS
756名前は開発中のものです。:2008/07/16(水) 23:58:44 ID:wSTAyXoK
一画面にそれ全部描画してるの?
757755:2008/07/17(木) 00:11:06 ID:6mPYwzZu
>>756
全部描画してることになるのかな…
表示領域?キャラが動ける範囲、そこに全部描画してみた
自機はおろか背景も見えない

移動してはみ出た弾は勝手に削除、敵は常に360/1Fの勢いで弾を出させてたから弾切れ起こしてた

携帯でスマヌ
758名前は開発中のものです。:2008/07/17(木) 00:13:24 ID:dzlckui1
>>747
富豪厨はfailmallocが大好きです
759名前は開発中のものです。:2008/07/17(木) 00:44:03 ID:O2fFtOBP
なんか>>750が俺とよく似ている……w

自分で自己満足ゲーム作ってる分には問題ないんだけど
Cを使うプログラマ、という観点から見るとダメダメだなぁと落ち込むんだよなぁ。
760名前は開発中のものです。:2008/07/17(木) 00:49:19 ID:WDu5mPhV
>>759
別に勉強すればいい。
それにC++とかでクラスを使いだすとあれこれ面倒だけど
Cでリスト程度ならネットで検索すれば解説もごろごろ出てるし
関数化してしまえばぜんぜん問題ない。

761名前は開発中のものです。:2008/07/17(木) 03:53:57 ID:3ZWP2jps
どうしてもこの処理がしたい!
でもそれをやるにはポインタが必要だ!

って状況になったら覚えれるよ。
762名前は開発中のものです。:2008/07/17(木) 08:34:21 ID:VECkyagI
もうC++でクラス使わないと何も作れませんorz

ってかこのスレ技術的な話多いなw

>>755
一つ一つ描画命令出すとそのくらいが限界かな
俺だったらポリゴンで一括レンダリングするけど
それなら10万はいける、あたり判定の高速化はまた別な
763名前は開発中のものです。:2008/07/17(木) 09:44:25 ID:9eeMOl1K
丁度、プログラムの高速化について雑誌で見てたからカキコ。

・メモリアクセスを少なくする。
・マクロやインライン関数をつかう
・sinやcosの数学関数をそのままではなく、テーブルにしてつかう

 生産性を犠牲にしない範囲で高速化を図るようにと注釈もあった。
 あと、高速化の有効性を自分で確かめる(時間を計測する)ように。
とのことでした。
764名前は開発中のものです。:2008/07/17(木) 10:53:11 ID:WDu5mPhV
>>763
まあありったけの負荷を改善する前と後でやってみればその方法はよかったのか悪かったのかわかるよね。
765名前は開発中のものです。:2008/07/17(木) 13:47:40 ID:GufNL2sf
皆さんの自機はどういう設定がありますか?
戦闘機に限らずキャラ等でも。
766名前は開発中のものです。:2008/07/17(木) 14:21:50 ID:jiZ/qAuU
人類最後の(ry
767名前は開発中のものです。:2008/07/17(木) 14:37:14 ID:W6BVgn78
人間の母と魔族の父の間に生まれ、左目に破邪の瞳を持つ
外見15歳だが実年齢300歳
意思を持ち人の血を啜りながら生きる魔剣を使う
本気を出すと世界が滅びる
みんな死ぬ
768名前は開発中のものです。:2008/07/17(木) 14:56:07 ID:6mPYwzZu
設定が濃すぎてここじゃ語り尽くせないぜ
769名前は開発中のものです。:2008/07/17(木) 15:27:11 ID:YhFgBkqt
>>767
なんか俺以外にも厨設定でゲーム作ってる人が居て安心した
770名前は開発中のものです。:2008/07/17(木) 16:08:39 ID:HZhntlnc
>765
目的地に商品や人を運ぶ途中の飛行船。
ぷかぷか〜。

なんで武装してて、なんで敵が襲ってくるのかは知らんw
771名前は開発中のものです。:2008/07/17(木) 17:12:04 ID:0byGPeAR
海賊に襲われるから自衛してるんじゃね?
前近代では常識だろ
772名前は開発中のものです。:2008/07/17(木) 17:14:53 ID:xyGCf9Fs
現代でも海賊いるしね
773名前は開発中のものです。:2008/07/17(木) 17:32:09 ID:jiZ/qAuU
>>769
767はネタだろw
774名前は開発中のものです。:2008/07/17(木) 18:35:11 ID:WlLz+UQE
>・sinやcosの数学関数をそのままではなく、テーブルにしてつかう

以前にこの話が出た時に、時代遅れみたいな事言われてバカにされてたなぁ。

前時代の人間である俺はこの方法使ってるが。
775名前は開発中のものです。:2008/07/17(木) 18:42:05 ID:WDu5mPhV
>>774
今でも十分有効だよ。

sin cosって戻りがdoubleなんだけど実際そこまでの精度って2Dシューだといらないんだよね。

それにオブジェクトが多くなれば、毎回計算するのは馬鹿にならないし
実際のところ度換算で360度分くらいの分解能あれば十分だしねえ。
776名前は開発中のものです。:2008/07/17(木) 18:54:01 ID:HZhntlnc
そうか、1周を256に分割するオリジナルの角度単位を作って
それ専用の三角関数を作ってる俺はアホなのか
777名前は開発中のものです。:2008/07/17(木) 18:58:07 ID:WDu5mPhV
>>776
いや、そりゃ8bitマシンとかでメモリもカツカツとかならそれもありだろうけど
そこまでつめなくてもintもしくはfloatで360度持ってればかなり精度いいよ。
778名前は開発中のものです。:2008/07/17(木) 19:01:41 ID:W6BVgn78
360分割は少なくないか?
あとテーブル使うんなら、2のn乗に分割したほうが気持ちいい
779名前は開発中のものです。:2008/07/17(木) 19:04:43 ID:WDu5mPhV
>>778
intで管理して精度上げるために左シフトxnとかでやってるなら2のn乗がいいかもね。
うちは面倒なんでfloat管理したから2のn乗管理やめたよ。
780名前は開発中のものです。:2008/07/17(木) 20:34:47 ID:3bs9k49v
>>731
結構遊べた。
機雷のバラマキとか、z軸変化Uターン編隊とか新鮮だった。
はね返りブロックをばらまいてくるボスでやられまくった。
個人的には、パワーアップは気前のいいのが好みだ。
次リリース、待ってるぜ。
781名前は開発中のものです。:2008/07/17(木) 20:40:22 ID:39vTv6df
三角関数テーブルは数年前に止めて以来使ってない。
正直時代遅れだと思う。
782名前は開発中のものです。:2008/07/17(木) 20:46:42 ID:xyGCf9Fs
新時代のやり方kwsk
783名前は開発中のものです。:2008/07/17(木) 20:54:51 ID:QxW+pcvX
別に普通に数学関数使うんじゃね?
784名前は開発中のものです。:2008/07/17(木) 21:01:07 ID:VN6WBvXG
今のマシンだと、キャッシュの関係で、テーブル使うと逆に重くなるんだっけ?
よく分からんけど。
785名前は開発中のものです。:2008/07/17(木) 21:05:24 ID:5CIbf8+6
>>784
CPUのL1 L2のサイズにおけるテーブルサイズがどれ位占めるか
数学関数がどれくらいキャッシュを占めるかってことね。

別にテーブルが正解とはいってないよ。
ベンチ取って最適な方法選べばいいだけでしょ。
786名前は開発中のものです。:2008/07/17(木) 21:05:49 ID:3bs9k49v
コンパイル後の機械語ステップ数やメモリアクセス数は
数学関数 >>>> 三角関数テーブル
じゃないの?
787名前は開発中のものです。:2008/07/17(木) 21:06:19 ID:QC7AGaQZ
フツーのゲームくらいなら誤差程度の違いしか見られなかったから三角関数を使うようにした。
788名前は開発中のものです。:2008/07/17(木) 21:07:18 ID:VN6WBvXG
ただ、doubleを使うと整数系より重くなる、という話も
キャッシュの関係であったような気がするんだよな。
バス幅のバイト数の関係で。
789名前は開発中のものです。:2008/07/17(木) 21:10:47 ID:5CIbf8+6
>>786
だからそれはCPUとかハードによってぜんぜん違うんだって。

>>788
CPUの演算命令の実装で違うからなあ。
最近のx86だとSSE系とかあるしな。
バス幅はどうなんだろ?
今ってポイント間はシリアル化されてる場合もあるしな。
過去のパラレルバス互換のプロトコルになってるだけで>例:PCIe
790名前は開発中のものです。:2008/07/17(木) 21:15:21 ID:5CIbf8+6
数学関数の実行ステップとすでに用意されたテーブルの参照とそこから持ってきたデータの掛け算
だったらそりゃテーブル化したほうが早いんだけど、問題はCPUキャッシュの存在。




791名前は開発中のものです。:2008/07/17(木) 21:16:26 ID:9eeMOl1K
>>731へ俺もコメント
 全体的によくできてると思う。でも中型機の攻撃パターンが少なく
単調に感じた。攻撃のパターンを増やすか、自機を狙い撃つような
雑魚を一緒にだしても良いかもしれない。
 期待してます!
 
 それとは別に、ボス戦の音楽、ギガウィングで聴いたことがあるような。。。
 似てるだけですよね?
792名前は開発中のものです。:2008/07/17(木) 22:23:34 ID:EkPgOCzO
PCと違う処理系で今やってるんだけど思ったより速度が出ない・・・
当たり判定に矩形使ってるけど空間分割のほうがいいのか?
793名前は開発中のものです。:2008/07/17(木) 22:26:08 ID:FcrOhhAY
>>792
まずはプロファイリングして、どの処理が一番時間を食っているのかを分析してみたらいいと思う。
unix系ならgprofとか使えるんだけど。
794名前は開発中のものです。:2008/07/17(木) 22:36:47 ID:uAQ9zE97
>>742
凸多角形(積分)

>>743
当たり判定を考慮したキャラ形状なら影響ないけど
フリーダムな形をしたキャラなら違いが出てくると思う
今のオーバースペックPCの余剰処理能力の使い道はそこだと思ってる

矩形を複数使って誤魔化すほうが手軽だけど

>>763
PCの難しさは環境によって最速な手法が変わることだよね
INTELとAMD、VCとDelphi、ハードや開発環境が違うとアルゴリズムレベルの見直しが迫られる

>>764
複数の改善策を一度にやると、どれが改善でどれが改悪なのか判断がつかず、
トータルで改善なら良しとしてしまい無駄が見えなくなる

>>778
え、8分割以上必要なんですか?
それ以上の精度で高速化するならBresenhamアルゴリズムでよくないですか?
795名前は開発中のものです。:2008/07/17(木) 23:10:33 ID:gkpEGQ0q
2Dで当たり判定に拘ると自機と敵弾の高さ判定はするのか?というジレンマが発生する。
3Dだと適当じゃないとプレイする側が正直やってられない。
796名前は開発中のものです。:2008/07/17(木) 23:14:06 ID:uAQ9zE97
3Dはどうしても視界から外れる部分が発生するから当たり判定を知覚させるのが難しい。
距離感も影つけるぐらいしかないし。
797名前は開発中のものです。:2008/07/17(木) 23:22:20 ID:5CIbf8+6
>>795-796
まーあたり判定を振った本人だけどさ、所詮は擬似なんだしある程度見栄えがよければいいと思うけどね。
あんまり細かく言い出すと30FPSと60FPSだと進む距離も違ってくる。

で、問題なのは昨今の素人って作ったこともないくせに評論家気取りが多くて
やたらリアリティやクオリティは求めるが、手間暇かけてもプレイしてやってるんだから
タダで当然みたいなのもいるしな・・・
別にシェアにするつもりなくてもさ、その態度はねーよとかさ・・・
798名前は開発中のものです。:2008/07/17(木) 23:23:11 ID:5CIbf8+6
>まーあたり判定を振った本人だけどさ、所詮は擬似なんだしある程度見栄えがよければいいと思うけどね。
>あんまり細かく言い出すと30FPSと60FPSだと進む距離も違ってくる。
ので当たり判定も結構変わってくるしね。

という一行がもれた。
799名前は開発中のものです。:2008/07/17(木) 23:25:52 ID:5CIbf8+6
>>797の続き

で、こういう評論家気取りがまた当たり判定とかうるさいんだわ。
800名前は開発中のものです。:2008/07/17(木) 23:34:09 ID:HZhntlnc
>797
まあ、茶でも飲んで落ち着こうか。

つ旦
801アジェグ4倍 ◆4xAJeG.COM :2008/07/18(金) 02:44:36 ID:QBLl7TJA
固定少数だの三角関数テーブルだのの負荷軽減効果なんて
100個以上のキャラを描画するだけで、みーんな台無し。
いまは計算部分は360FPSで行うのがトレンドなんだよ。

今の開発は書くことより読むことのが多いんだから、
人様が読んで理解しやすいソースを書くことを心がけろよ。
802名前は開発中のものです。:2008/07/18(金) 06:20:19 ID:XI4IWibL
素人の俺には前半が理解できないのはさておいて、
前半と後半が必ずしも繋がらないと思うんだが
803名前は開発中のものです。:2008/07/18(金) 08:00:03 ID:VlAIMbxs
>>742
最強の当たり判定は「点」じゃないか?
2Dならプレイヤーの当たり判定を点にした方が安心して遊べる気がする
804名前は開発中のものです。:2008/07/18(金) 11:04:32 ID:AUX7bEid
矩形と線分以外ほぼ要らん
805名前は開発中のものです。:2008/07/18(金) 11:53:20 ID:xVivw78+
当たり判定は全部円

それが俺のジャスティス
806アジェグ4倍 ◆4xAJeG.COM :2008/07/18(金) 11:58:47 ID:HJoWJmUA
>>802
要するに、昔使われた高速化のためのテクニックというのは、
今のCore2Duoではなんの効果もないから、
いたずらに変なテクニックにこだわらないで、
素直な設計を心がけなさい、と言う意味だよ。
807名前は開発中のものです。:2008/07/18(金) 12:12:09 ID:mluuYPaT
>>806
は?
CPUや環境で違うのでベンチマークとって最適な答えを選べだろ?
うそ教えるなよ
808アジェグ4倍 ◆4xAJeG.COM :2008/07/18(金) 12:17:34 ID:XAPPlmlM
CPUや環境の違いで影響を与えるのは、
描画に関連するグラフィックカードの部分。
DirectX使うんなら尚更だな。
メインCPUは貧弱ならXPがロクに動かないからそれでわかる。

結局のところ、一番負荷が大きいのは描画部分で
メソッドを呼び出した先の方で重いんだからどうしようもない。

95が入ったマシンでも動くようにしたいんなら別だが・・・
809アジェグ4倍 ◆4xAJeG.COM :2008/07/18(金) 12:27:14 ID:XAPPlmlM
XPの動作に耐えられる、500MHzオーバーのメインCPUにとっては、
1ミリ秒ってのは相当長い時間だぞ。
60FPSなら、16.66666666666ミリ秒で間に合えばいい。

描画が行われる前からそれが厳しい状況なんてのは、
明らかに設計やアルゴリズムの問題だから、
三角関数テーブルや固定少数とかで何とかなるような問題じゃない。

最新のCPU使ったって、セキュリティソフトとの併用とかで
同じ現象起こるよ。
810名前は開発中のものです。:2008/07/18(金) 12:34:52 ID:AT+gjQzx
ここってwindowsというか、PC前提だったっけ?
811アジェグ4倍 ◆4xAJeG.COM :2008/07/18(金) 12:38:30 ID:XAPPlmlM
>>810
おれはその前提で書いてる。
X68000で作るってンならまた別だけど。

だってDSやプレステ3などのゲーム機で作る場合、
シューティング自体、売れないんだから作らんって
上司から言われてるんだろ?
812名前は開発中のものです。:2008/07/18(金) 12:38:50 ID:mluuYPaT
>>810
いーや

ID:XAPPlmlMがwindows前提で言ってるだけ
813名前は開発中のものです。:2008/07/18(金) 12:52:26 ID:mluuYPaT
非公式な開発環境とか含めてると今って下記以外に何があったっけ?

・ソニーゲーム系
・NDS
・携帯アプリ
・windows系
814アジェグ4倍 ◆4xAJeG.COM :2008/07/18(金) 12:57:22 ID:XAPPlmlM
まあ、開発環境自体は、もっとイロイロあるにはあるんだけどね。

MacとJavaの組み合わせもアリだし、LinuxでX使うのもアリだし、
ザウルスもプログラムが作れるらしいね。
815アジェグ4倍 ◆4xAJeG.COM :2008/07/18(金) 13:01:22 ID:XAPPlmlM
少なくとも確実なのは、
ゲームのプログラムで最も処理が重いのが
描画であることがわからん時点で、
そいつは絶対プロ(業者)じゃない。

別の方面でやってた人間が
趣味レベルでゲームを作ろうと思い立った、フォースメーカーだろう。
彼等の環境を考えりゃ、当然Windowsしかないわな。
816名前は開発中のものです。:2008/07/18(金) 13:14:12 ID:xC34+fPB
そもそも皆、三角関数を何に使ってるんだろう。
ループの奥で使いまくりな人と、それほど使わない人で分かれてるって感じだな。
俺は三角関数よりもsqrtの方を多用するんだけど。
817名前は開発中のものです。:2008/07/18(金) 13:24:35 ID:mluuYPaT
そりゃ敵から弾飛ばすという基本的なところから開発環境によっては
画像の回転すら自前で実装しないと厳しいのとかいろいろ
818アジェグ4倍 ◆4xAJeG.COM :2008/07/18(金) 13:25:48 ID:XAPPlmlM
三角関数は、ガルザカートを再現するためには必須とも言える。
ゼビウスの時代は、確かに三角関数テーブルが必須で、
でも、せいぜい16方向分ぐらいしかなかったようだ。

正確に狙いをつける場合は、ピタゴラスの定理を使ったsqrtだろうけど、
3方向弾とかで三角関数が使えるかな。

ガルザカートと言うのは、全方向に丸い状態で球が飛んでいく処理のことだよ。
花火みたいなもんだ。
819アジェグ4倍 ◆4xAJeG.COM :2008/07/18(金) 13:28:27 ID:XAPPlmlM
ちなみに、三角関数テーブル自体は、今でもよく使うよ。
高速化という目的よりも、敵の攻撃処理などを簡単にするためにね。
820名前は開発中のものです。:2008/07/18(金) 14:01:36 ID:xC34+fPB
過去の俺のソース見てたら、
狙い撃ちするためにatanで敵との角度測ってから、
sin, cosで発射する弾のx, y方向の速度決めてたww

>>817
きっとそれは画像を回転させてくれるなというお告げじゃね。
グラフィック部隊に回転アニメーション描かせようぜ。

>>818
3-way, 16-wayくらいなら、sin, cosの値をハードコーディングできそうだけど、
それをやると仕様変更に弱くなりそうだ。
821名前は開発中のものです。:2008/07/18(金) 14:06:58 ID:mluuYPaT
>>820
>グラフィック部隊に回転アニメーション描かせようぜ。
いや、320x240のスクリーンで使うようなドット絵ならまだしも
640x480を超えるスクリーンなんかを想定するとさすがに
全部ドット絵ってのはきついな。

それにソフト書いてる方としてはこれはちょっと手は抜きたくないよな。
どうしてもハード上の制約云々で仕方ない部分は絵を増やしてもらうが、可読性を維持したまま
チューニングでカバーできる部分はソフト屋でやるべき。

>3-way, 16-wayくらいなら、sin, cosの値をハードコーディングできそうだけど、
>それをやると仕様変更に弱くなりそうだ。
そうそう。
適度な落としどころを探してある程度汎用性も持ってないとね。
822アジェグ4倍 ◆4xAJeG.COM :2008/07/18(金) 14:15:06 ID:XAPPlmlM
三角関数のテーブル化は仕様変更に弱いのは確かだな。
方向を元にXとYの移動量を抽出する関数で、その都度計算するやり方でも、
今のCore2Duoなら十分だろう。

方向に少数を使えるようにして、時計と同じ12とか60とかを基準にすれば
素人でもわかりやすいかもしれないねぇ。

ガンダムみたいに「7時の方向に弾を飛ばす」とかいう表現になるわけだ。
823名前は開発中のものです。:2008/07/18(金) 14:15:43 ID:RCeZk3rR
誰も言わないんだな。
しょうがない。
俺が言っておくか。









恋の三角関係ならお手の物だぜ。
824名前は開発中のものです。:2008/07/18(金) 14:38:33 ID:xC34+fPB
>>822
ツクールとか作るなら「○時の方向に撃て!」っていうコマンドがあってもいいな。
ちなみに俺は方向はX、Yの移動量(dx, dy)で管理してる。

確かに画像処理が一番のネックであると思う。
背景画像を二枚重ねてスクロールさせただけでも、
俺のPenIIじゃあ、320x200, 32bit, 30fps(その他オブジェクト20個)を維持することが難しい。

それでもロジック的な限界は感じないんだけどな。
(色数が多すぎるって?気にするな。)

>>823
がんばれよ。
825名前は開発中のものです。:2008/07/18(金) 14:45:55 ID:TQeORPZV
>>820
>狙い撃ちするためにatanで敵との角度測ってから、
>sin, cosで発射する弾のx, y方向の速度決めてたww

え?バリバリそうやってるんだけど
これ以外に方法あるの?
826アジェグ4倍 ◆4xAJeG.COM :2008/07/18(金) 14:46:44 ID:fi3ZrBdD
ペン2だと320x200でも厳しいんだねぇ。
60FPSを目指すなら、スレッドとSleepコマンドが必須。
タイマーイベントなど使い物にならんから注意。

それを見越してなのか、Javaや.NETでは、ミリ秒単位のSleepメソッドが
スレッド関連のクラス内にあるんだよね。
827名前は開発中のものです。:2008/07/18(金) 14:58:41 ID:xC34+fPB
>>825
自分の位置(x1, y1)、相手の位置(x2, y2)があったとき
相手に速度speedで突撃するためのx, y方向の速度(dx, dy)は以下の式で求めております。
dx = (x2 - x1) / sqrt ( (x2 - x1)^2 + (y2 - y1)^2 ) * speed
dy = (y2 - y1) / sqrt ( (x2 - x1)^2 + (y2 - y1)^2 ) * speed

sqrtの所は一回計算してキャッシュしたのを使いまわすけど。
間違ってたら教えてちょ。

>>826
あくまでもLinux/SDLの話だけどね。OpenGLとかは使ってないよ。
もっと良い方法があるかもしれないな。
828名前は開発中のものです。:2008/07/18(金) 15:04:50 ID:jlmVVge4
>>827
これはうちで使ってるやつ

敵が自機に向けて弾打ち出し用だけどさ

float Rag = atan2((Sy - y,Sx - x);

この後
x方向のベクトル x cos(Rag)
y方向のベクトル x sin(Rag)
829名前は開発中のものです。:2008/07/18(金) 15:06:31 ID:MVN07Rpp
俺も>>828と同じ方法
ただし、角度は36000分割の整数値でテーブル使用
830828:2008/07/18(金) 15:12:03 ID:jlmVVge4
で、実際のところこの自機狙いの弾撃つ部分はテーブルを使ってない。
なぜかというとたとえば弾幕ゲーにしても自機狙いの弾なんて瞬間で見ると
高々数百オーダーの話。

しかも自機狙いの弾っていうのは画面から消えやすいし、処理負荷がかかるのは
打ち出すまで。

むしろテーブル化で効率化しないいけないのが東方のような移動が遅くて
画面に滞留する時間の長い時間経過であれこれ変化するような弾
831アジェグ4倍 ◆4xAJeG.COM :2008/07/18(金) 15:43:33 ID:z4GLq2ui
分割数が36000にも及ぶと、今度は消費メモリの問題が出てくるから、
その場合、テーブルにはしない方がいいような気が・・・

しかも整数で行うと、ビットシフトなどの処理も必要になるから、
そういうのが時代遅れと言われて以下略。
832名前は開発中のものです。:2008/07/18(金) 15:52:15 ID:4Qoh0VCq
実際のところ、sin,cosよりsqrtの方が処理重いよな
それと近似値でいいならmath.hのは使わないでライブラリ探すか自作したほうがいいよ
うまくやれば100倍くらい早くなる
833792:2008/07/18(金) 15:54:31 ID:XsMP/n/A
>>825
俺もそうやってるからそれがネックなのかね?

テーブル使ってみようかな
834名前は開発中のものです。:2008/07/18(金) 16:12:42 ID:tORyrF64
unsigned charで256分割なんだけど、精度悪いかな?
835名前は開発中のものです。:2008/07/18(金) 16:18:04 ID:jlmVVge4
>>834
それ以前にわざわざ1バイトに収めるって8bitCPUなのか?
CPUによっては1バイトは扱いにくくて速度落ちるのとかあるぜ。

それにマイコンとかでなければそこまで削減する必要はないだろ。
せめて2バイトとか4バイトで・・・256分割でもそれほどメモリ食わないだろ。
836アジェグ4倍 ◆4xAJeG.COM :2008/07/18(金) 16:18:44 ID:z4GLq2ui
おれの場合、三角関数テーブルを使うのは
ワザと精度を荒くするのが目的だな。
せいぜい32方向分程度に抑える。

弾幕だらけのシューティングには、
隙間(安全地帯)を設けるのがセオリーってもんさ。
837名前は開発中のものです。:2008/07/18(金) 16:26:00 ID:DSPbNjfF
atanで求めた角度をそのままsin,cosに渡すのは、結構恥ずかしい処理だよ。
この辺の処理はベクトルの知識があれば、三角関数は滅多に必要ない。

ただnWay弾なんかは一度角度を求めてからの方が素直に実装できるから、
ケースバイケースだが。
特に綺麗なnWayではなく乱数で散らす感じのは、角度ベースでないと厳しい。
838名前は開発中のものです。:2008/07/18(金) 16:28:45 ID:jlmVVge4
>>837
知ってる。
10倍してテーブル化すれば64分割としてそのまま使えたりするけどね。
839アジェグ4倍 ◆4xAJeG.COM :2008/07/18(金) 16:31:53 ID:oiLB1uoC
昔のシューティングには、45度の角度のみ攻撃可能で、
撃つ前にチョロチョロ走り回る敵とかいたねぇ。
840名前は開発中のものです。:2008/07/18(金) 16:50:48 ID:MAojNpIh
>>837
別に恥ずかしくはないだろ。1wayを後からn wayに変えることだってあるし、
そもそも敵弾発射なんてフレームあたり何回の処理だ。
富豪厨としては、角度を求めてしまうのが直感的で正しいと主張する。
841アジェグ4倍 ◆4xAJeG.COM :2008/07/18(金) 16:54:54 ID:oiLB1uoC
考えてみりゃ、シューティングってのは
仕様変更がアホほど多いんだな。

>>840が言うようにいつでもnWayに変わることなどを
想定の範囲内に入れる必要があるわけか。

ソノヘンの難易度調整が不十分だと、
コナミみたいになっちゃうわけだ。
842名前は開発中のものです。:2008/07/18(金) 17:18:39 ID:jlmVVge4
そういえば、敵の挙動とかってやっぱり行動パターンを作って
それをソース内部に組み込んだりしてるのか?

東方風弾幕っていうスクリプトや、ラノベエンジンのように外部にデータを置いて
本体をいじらなくてもできるようにしてるとか?
843名前は開発中のものです。:2008/07/18(金) 17:21:16 ID:xC34+fPB
>>832
うひひひひ。
ベンチマーク作ったぜ。

#include <stdio.h>
#include <math.h>
#include <time.h>
int main()
{
    int i, LOOP = 1 << 28;
    timespec start, stop;
    double time;
    printf("LOOP is %d.\n", LOOP);
    clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &start);
    for ( i = 0; i < LOOP; i++ ) {
        sqrt(100); /* ここに計測したい関数をおく */
    }
    clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &stop);
    time = stop.tv_sec+stop.tv_nsec/pow(10,9) - start.tv_sec+start.tv_nsec/pow(10,9);
    printf("%f\n", time);
}

ループ回数268435456
結果[秒]:
3.296000 sqrt(100)
3.632000 sin(100)
3.764000 cos(100)
3.852000 atan(100)

ベンチとったのは良いけど、裏で動いてるタスクのせいで値が安定しないw
844名前は開発中のものです。:2008/07/18(金) 17:26:09 ID:xC34+fPB
ループ回数を増やしてみた。

LOOP is 1073741824.
13.080000 sqrt(100)
12.308000 sin(100)
12.640000 con(100)
12.928000 atan(100)

だあああああ、
sqrtが三角関数よりも遅くなったぁぁぁぁぁぁ
845名前は開発中のものです。:2008/07/18(金) 17:29:36 ID:CPdVgZs+
>>842
俺はザコ敵の行動制御部分は一つの関数だけでやってる
速度とか角度のパラメータをいろいろ与えてやればどんな動きでもしてくれるから便利
846名前は開発中のものです。:2008/07/18(金) 17:32:14 ID:jlmVVge4
>>844
それよりさ、問題のsin cosのテーブル化した場合もやってみてよ
847アジェグ4倍 ◆4xAJeG.COM :2008/07/18(金) 17:42:12 ID:oiLB1uoC
テーブル化した場合、角度の指定が整数限定になるから、
角度の変数をdoubleからintにキャストする処理を
いれたほうがいいだろうね。
848名前は開発中のものです。:2008/07/18(金) 17:48:38 ID:KM7CpNV1
みんなちゃんと考えてるんだな。角度とか
849名前は開発中のものです。:2008/07/18(金) 18:03:18 ID:xC34+fPB
#define tbl_size 36000
double sin_table[tbl_size];
double sin2(double pi)
{
    return ( sin_table[ llrint( pi / ( 2 * M_PI ) * tbl_size ) % tbl_size ] );
}

>>846
テーブル作ってみたけど、初めてだからか、何かおかしい。
10倍くらい遅くなってる。
実装まちがえたかなー

LOOP is 8388608
0.116000 sqrt(100)
0.312000 sin(100)
0.504000 cos(100)
0.696000 atan(100)
3.984000 sin2(100) /* コレ */
850名前は開発中のものです。:2008/07/18(金) 18:07:18 ID:xC34+fPB
double sin2(double pi)
{
  return (sin_table[100]);
}
こんな邪道をしてみた。

LOOP is 8388608.
0.120000 sqrt(100)
0.320000 sin(100)
0.520000 cos(100)
0.720000 atan(100)
1.188000 sin2(100) /* やっぱり遅い */

グローバル変数へのアクセスが遅いのだろうか。
851名前は開発中のものです。:2008/07/18(金) 18:07:38 ID:jlmVVge4
>>849
double なんていらんw
floatで十分。
しかも36000ってw
852アジェグ4倍 ◆4xAJeG.COM :2008/07/18(金) 18:11:16 ID:oiLB1uoC
やはり、キャストの影響が出てる可能性が高い。

多分、関数の引数がintなら、大幅に速くなるんじゃないかと・・
853名前は開発中のものです。:2008/07/18(金) 18:15:25 ID:xC34+fPB
#define tbl_size 36
float sin_table[tbl_size];

float sin2(int pi)
{
    return (sin_table[100]);
}

以上の様に変更してみた。

LOOP is 8388608.
0.120000 sqrt(100)
0.316000 sin(100)
0.508000 cos(100)
0.708000 atan(100)
1.048000 sin2(100) /* ちょっぴり速くなった? */
854名前は開発中のものです。:2008/07/18(金) 18:18:26 ID:xC34+fPB
ごめん、なんかベンチマークプログラムがバグってるっぽい。
最後にsqrt持ってきたら、sqrtが一番遅くなった(汗)
855名前は開発中のものです。:2008/07/18(金) 18:20:32 ID:jlmVVge4
>>854
つーかプログラムが連続で動くからL1L2が汚れていく -> 最後のほうの処理は
L1->L2->(CPUによってはL3)->メモリの書き戻しをしてからのL1L2へ読み込み
とかしてるんからじゃねーの?
windowsマシンだよね
856名前は開発中のものです。:2008/07/18(金) 18:20:46 ID:t1AXciYI
普通はatanで方向取ってsinとcosでx,y成分分解だろ
sqrtとかでやるほうがアホなやり方
857名前は開発中のものです。:2008/07/18(金) 18:28:21 ID:xC34+fPB
>>855
Linuxとだけ言っておきましょ。

いろいろな不確定要素をごまかすために、
ループ数を増やして、二回ずつ計測してみた。
プログラムは>>853のまま。

LOOP is 1073741824.
13.136000 sqrt
13.468000 sin
14.560000 cos
13.624000 atan
33.208000 sin2
15.084000 sqrt
13.572000 sin
13.788000 cos
14.876000 atan
33.216000 sin2
単位は[秒]
858名前は開発中のものです。:2008/07/18(金) 18:31:07 ID:jlmVVge4
>>857
じゃあさっきいってた並びを変えた場合の速度変化は?
859名前は開発中のものです。:2008/07/18(金) 18:31:25 ID:hp2X2Zxj
>>856

なぜその方法が「普通」で、それ以外が「アホなやり方」なのかを
解説しないとただ自分のやり方以外をバカにしてるだけですよ。

俺はatanでやっててsqrtの方法ははじめて知りましたたが。
860名前は開発中のものです。:2008/07/18(金) 19:08:32 ID:2gu5SRJi
ちょっと試しに測ってみた
timeGetTime で 16777216回ループ 5回平均 単位 秒

sqrt 1.0574
sin 1.9146
cos 1.9788
table 0.1220 (グローバル変数・double型36000)
861名前は開発中のものです。:2008/07/18(金) 19:19:59 ID:CCSDgjAT
>>780
ありがとうございます!
パワーアップは気前が良い方がって人は案外多いみたいですね
自分は昔プレイしたダライアスがトラウマになってて、
パワーアップ状況と難易度が密接に関係するシステムに拒否感があったり
おかげで地味なパワーアップにしていましたが、
ちょっとトラウマ克服して、次の作品を作るときの参考にします
……とりあえずネタが出るまでは次リリースできそうにないですがw

>>791
中型機の攻撃パターンに関しては、もう一度見直してみます!
道中作成は本当に難しいぜ
ボス戦の音楽はsentiveでぐぐって一番上に出てくるサイトのslosっていうコンテンツの配布曲の一つで
2005年に配布してあるものの56番のmight flowという曲です
ギガウイングとは関係ない……はず
862名前は開発中のものです。:2008/07/18(金) 19:24:06 ID:jlmVVge4
>>860
開発環境とかってどんなんだろ?

>>861
ドット絵の色の雰囲気とかも好きだしプレイしやすかったが・・・

しょっぱなのロードはどうにかしろw
マジでフリーズにしか見えん。

まー某ゲーム開発を解説してるところはゲーム素材をパックして・・
とかあるけどさ、まとめすぎw

863名前は開発中のものです。:2008/07/18(金) 19:49:44 ID:xC34+fPB
>>858
すまん、わかんね。

gccのバージョンは4.1.0
最適化オプション(-O3)つけたら、ループ回数1073741824で、全部0.016秒になっちゃった。
もうね、わけがわかりません。

いいベンチマークの取り方誰か教えてー
864名前は開発中のものです。:2008/07/18(金) 20:19:18 ID:2gu5SRJi
>>862
VC++ ですな
865名前は開発中のものです。:2008/07/18(金) 20:31:43 ID:maAkmLTW
Seleneっていうライブラリが65536分割テーブルを使ったSin関数を
搭載しているので、速度評価してみた
計算回数1億回、関数を呼ばないループオンリーの時間を引いて、

C++標準sin 3.40秒
Seleneのsin 0.45秒
自前のsin   0.29秒(直接テーブル参照)

C++標準atan2 13.25秒
SeleneのATan2 2.85秒

計測順を逆にしたり数回計測したが、誤差は10%程度に収まった。
atan2は使う値によって速度がバラけるので参考程度に
環境はXP XP2,VC++9.0(最適化なし),CPu AthX2 64 5200+
866名前は開発中のものです。:2008/07/18(金) 20:32:56 ID:jlmVVge4
>>865

867名前は開発中のものです。:2008/07/18(金) 20:36:03 ID:maAkmLTW
補足:
sinのほうは0.03秒以内、
atan2のほうは0.1秒以内の誤差
868名前は開発中のものです。:2008/07/18(金) 20:39:36 ID:RpIJU/e+
あんまりゲームには関係ないけど、実験用のプログラムで対数(log)の関数を使ったときはさすがに参った。
あれはテーブル化しないとやってられん。テイラー展開の罠。
869名前は開発中のものです。:2008/07/18(金) 20:52:56 ID:TQeORPZV
>>827-828
遅くなったけどありがとう
そんなので求まるんだね
870名前は開発中のものです。:2008/07/18(金) 21:29:28 ID:FoHi2Ltq
多分誰も言ってないから一応。

C/C++に限った話かもしれないけど、
#pragma intrinsic
で、配列に変換表を作る効果はあまりなくなることもあるらしい。あるいはコンパイラのオプションで。
ゲーム開発のための数学・物理学入門 (ISBN-10: 4797329076 Wendy Stahler 著) に、
ほんのちょっとだけ、さらっと書いてある。
871名前は開発中のものです。:2008/07/18(金) 21:46:47 ID:xC34+fPB
>>870
へえ、勉強になります。
MSDNにもそれっぽい記述があった。
gccはあまり気にしなくてもいいみたい。

C/C++でビルトイン関数を使えば最適化できるなんて知らんかった。
872名前は開発中のものです。:2008/07/18(金) 23:32:35 ID:xC34+fPB
コンパイルオプションに -fno-builtin を加えて、ビルトイン機能を無効にしてみたところ、
テーブルを使ったsinが他より2,3倍速かったので報告しとく。
(sqrtの揺らぎがヒドスw)

LOOP is 16777216. /* ループ回数 */
sqrt(): 4.499229
sin(): 4.613313
cos(): 5.739126
atan(): 6.888427
sin_table(): 2.404845 /* テーブルを使ったsin */
sqrt(): 5.444190
(単位は秒)
873名前は開発中のものです。:2008/07/19(土) 01:44:48 ID:lkKBaNaD
>>861
音楽、ちがうなら安心です。
そして良いサイトですね。ありがとうございますm(__)m

三角関数あたりの計算はどれがいいかFA出さない方がよい。のかな・・・?
874873:2008/07/19(土) 01:48:01 ID:lkKBaNaD
忘れてた。。
計算してくださった方々、ありがとう!

そして、コンパイラやオプションでここまで結果が変わるとは。。。
875名前は開発中のものです。:2008/07/19(土) 02:41:52 ID:/d7Hrci8
関数に渡す値しだいでは、コンパイラ時に関数を呼んで既に値を出しちゃったりするから
(もちろん、ゲーム内ではありえない挙動)
最適化ははずさないとダメだぜ
876名前は開発中のものです。:2008/07/19(土) 04:55:33 ID:/JW5lPky
いや最適化された結果でベンチせんと実用で意味なかろ。
そういう最適化がなされないような検証コードをかかにゃならんというなら同意だが。
877名前は開発中のものです。:2008/07/19(土) 11:13:45 ID:WPaxlwFO
その通り。
ゲーム中に変わるパラメータは、最適化されないようにね。
878名前は開発中のものです。:2008/07/19(土) 15:36:13 ID:grjjkTbc
つまり、関数に渡す値が変動すれば良いってこと?
こんなふうに。

for ( int i = 0; i < INT_MAX; i++ ) { hogehoge = sin(i); }
879名前は開発中のものです。:2008/07/19(土) 17:10:05 ID:tQxTpGlI
>>878
それ、最適化されて

hogehoge=sin(INT_MAX-1);

になる可能性ないか?
880名前は開発中のものです。:2008/07/19(土) 18:00:20 ID:vkWkQc62
皆、オブジェクトの座標やHPなどのデータはどこに保持させている?
全体を管理しているクラス?
オブジェクトのスーパークラスとなっているクラス?
それとも各々のオブジェクトについての派生クラス?
881名前は開発中のものです。:2008/07/19(土) 19:26:05 ID:grjjkTbc
>>879
double hogehoge;
int main( int argc, char* argv[] ) {
    srand( argc );
    for ( int i = 0; i < INT_MAX; i++ ) { hogehoge = sin( rand() ); }
}
外部入力に依存する変数で種を初期化した乱数なら、流石のコンパイラも最適化できまい。

>>880
OOP的な発想でいくなら、スーパークラスかな。
俺の場合はゲーム内のオブジェクトは
「衝突判定オブジェクト」
「毎フレームごとの行動オブジェクト」
「画面に画像を表示するオブジェクト」
「キー入力処理オブジェクト」の集合体なんで、スーパークラスなんてものが存在しないので、
とりあえず、衝突判定オブジェクトが座標とHP持ってる。
882名前は開発中のものです。:2008/07/19(土) 20:17:07 ID:tQxTpGlI
オブジェクト基底クラス(updateメソッド、drawメソッド、グラフィック等)
 →当たり判定ありオブジェクト(当たり判定、HP)
  →プレイヤーオブジェクト

基底クラスを継承してエフェクトを、
当たり判定ありオブジェクトを継承して、敵、弾、アイテム作ってる
883名前は開発中のものです。:2008/07/19(土) 22:09:01 ID:vkWkQc62
あぁぁぁリストについて色々考えてたら頭がおかしくなってきた。

皆、座標等のメンバ変数だけじゃなくて
描画や移動などのメソッドを持ったクラスごとリストにしてんの?
それだとメモリ食わない?
884名前は開発中のものです。:2008/07/19(土) 23:04:21 ID:x4HtvRoA
メソッドってメモリ食わないよ。クラスごとに共通だからね
基底クラスに仮想関数がある場合、インスタンス毎に4バイトだけ増えるけど
ていうか、メソッドがなくしたらOODじゃなくね?
885名前は開発中のものです。:2008/07/19(土) 23:10:38 ID:sdJvFS+U
>>883
オブジェクトごとにメソッドが生成されるとでも思ってるのか?
もう少しプログラミングの勉強を重ねてはいかがか。
886名前は開発中のものです。:2008/07/19(土) 23:38:56 ID:grjjkTbc
動的にインスタンスのメソッドを書き換えることのできる言語なら
必要に応じてコードをコピーと言うのもありうる話かもしれないな。
887名前は開発中のものです。:2008/07/19(土) 23:43:55 ID:x4HtvRoA
メソッド内でif文で分岐しろw
それかメソッドへのポインタを切り替えるか、ストラテジーパターン適応するか
888名前は開発中のものです。:2008/07/20(日) 13:43:14 ID:IeOFGmSd
自分も基底クラスの役割と管理方法で最近煮詰まってきた。

いわゆるOOP的な発想の管理方法で自機や弾を管理してるのだが、かなり基底クラスが肥大化してる気がしてならない。
(座標、属性、食らい判定半径、画像ポインタ、体力、攻撃力などを各インスタンスが保持。メソッドもDraw、Moveなど5.6個ある。)

そこはいいんだけど、たとえば特定条件を満たした弾・機体の移動速度の変更や、座標のワープ、
と言った仕様を後から追加しようと思ったとき、あまりに仕様変更に対して融通が利かなくて困ってる。

何かいい基底クラスやその管理方法はないかな。>>881のとかかなり柔軟性が高そうなんだけど。



889名前は開発中のものです。:2008/07/20(日) 14:04:36 ID:Tcsf7iZJ
>>873
結局のところ、CPUとかOSとか、コンパイラとかで性能が変わって来るので、
対象とするマシンごとにベンチマークとった方がいいと思う。

数学関数ベンチマークの続き
- ループ内の変数(sinテーブル除く)はグローバルで、volatile宣言。
- 関数への引数にrand()による乱数使用。
- srand(argc)により、乱数初期化。(argcは、もちろん、mainの引数)
- 三角関数はコンパイラのビルトイン関数により高速化される(VCなら#pragma intrinsic(sin, cos, tan,,,
- テーブル参照型のsinについては人によって実装が違うので、あくまでも参考程度に。
- スペック: gcc4.1.0/Pentium II

arg1 + arg2: 0.018393, 0.017820, 0.017960, 0.017903, 0.018402,
arg1 - arg2: 0.018351, 0.017216, 0.017944, 0.016988, 0.017809,
arg1 * arg2: 0.018655, 0.018498, 0.017475, 0.017424, 0.017912,
arg1 / arg2: 0.312386, 0.312131, 0.311159, 0.312575, 0.311817, /* 四則演算の中で、割り算がべらぼうに遅い */
floor(rand()): 0.359771, 0.360056, 0.360613, 0.359535, 0.360410,
sqrt(rand()): 0.371734, 0.370627, 0.372083, 0.370517, 0.371231,

sin(rand()): 0.496849, 0.498673, 0.497215, 0.497070, 0.496469, /* ライブラリのsin */
sin_table(rand()): 0.275411, 0.273136, 0.273017, 0.275622, 0.272431, /* テーブル参照型sin */

cos(rand()): 0.492284, 0.491513, 0.491417, 0.490797, 0.490769,
tan(rand()): 0.618618, 0.619241, 0.616512, 0.618693, 0.618386,
atan(rand()): 0.580075, 0.580360, 0.578727, 0.580545, 0.580344,
asin(rand()): 1.032839, 1.031955, 1.032328, 1.032158, 1.033706,
acos(rand()): 0.977117, 0.976528, 0.977257, 0.977658, 0.977407,

単位は秒。
ループ回数は1,048,576回。
五回ずつ計測。
890名前は開発中のものです。:2008/07/20(日) 14:13:04 ID:QtFWAd9W
>>888
仕様変更に対して融通が利かないのはOOPの思想とは反するよね。
(Open-Closed-Principleなんて考え方もあるし)

スーパークラスに置いておくのは最低限のものだけにしておいて、(インターフェイスを最小化)
サブクラスに対して機能を追加・入れ替えできるようにするのもいいんじゃない?
ストラテジパターンとかコマンドパターンなんかを利用して。
要は>>881のやり方になるね。
891名前は開発中のものです。:2008/07/20(日) 15:21:26 ID:7Pw8gPPC
うちの場合、基底クラスのが持つのは
・位置
・死亡フラグ
・更新メソッド
・更新メソッドその2
・描画メソッド
892名前は開発中のものです。:2008/07/20(日) 15:28:27 ID:1+5Xa78R
更新が2個?いったい何に使ってる?
893名前は開発中のものです。:2008/07/20(日) 19:37:21 ID:0hJq9s+C
staticなメンバ変数を使わないで組む方法が思いつかないんだが…
何かないかな?
894名前は開発中のものです。:2008/07/20(日) 19:52:04 ID:Tcsf7iZJ
>>893
エスパーするなら、

1. グローバル変数を使う
2. 必要なデータはクラスが構造体に入れて、そのポインタを配り回る
3. シングルトンパターン(インスタンス自体はstaticフィールドで管理されてるが、、、)
895名前は開発中のものです。:2008/07/20(日) 20:33:52 ID:zgBZw03q
staticじゃないメンバ変数なんてあるの?
896名前は開発中のものです。:2008/07/20(日) 20:35:56 ID:0hJq9s+C
>>894
即レスthx。

1は変数のスコープを狭めたいのであまりなぁ。
2か3あたりがいいんだろうけど、実際static使って作るのとどっちがいいんだろ?
897名前は開発中のものです。:2008/07/20(日) 21:47:15 ID:q1soWaso
基本のクラスからその先の細かいクラスを宣言していって
最初に基本のクラスをnewするんじゃないのか?
898名前は開発中のものです。:2008/07/20(日) 21:53:09 ID:a0u7JnwX
キーボードやマウスの個数が変化するかもとか
ゲーム世界はひとつのはずが
気が変わって並行世界も加えることになるかもとか
自機は一機のはずが見えないスタンドが重なるかもとか
そういう「かも」が絶対ないと仕様で決めたものは
何の躊躇もなく静的領域に変数作ってるよ
899名前は開発中のものです。:2008/07/20(日) 22:45:55 ID:Tcsf7iZJ
俺は主に定数の定義や同一クラス内で共有したいデータにstaticを使うな。
900名前は開発中のものです。:2008/07/20(日) 23:53:06 ID:7Pw8gPPC
>>892
あ、更新その2は基底クラスじゃなくて、コリジョンクラスのメソッドだった
二機編制の敵機とかで、相棒に死亡したとき編制を返るために使う
衝突メソッドで死亡フラグ立てて、更新2メソッドで関連する敵の死亡フラグをチェックする
多関節芋虫型の敵が途中で分離したり
901名前は開発中のものです。:2008/07/21(月) 09:02:40 ID:559Z+4ID
constでないstatic変数なんて使うなよアホか
あんなものはリエントラントの概念すら無かった過去の遺物だ
902名前は開発中のものです。:2008/07/21(月) 09:12:21 ID:A8JLKYNe
>>893
staticなメンバ変数を何に使っているのか書けば、もっと適切な
アドバイスが得られるかと。
903名前は開発中のものです。:2008/07/21(月) 12:00:29 ID:+hwOlj93
>>902
staticなメンバ変数は、オブジェクトのリストに使っている。
そして各オブジェクトの派生クラスがそのリストを持っているクラスのインスタンスのポインタを作成して使っているという仕組み。
904名前は開発中のものです。:2008/07/21(月) 12:10:21 ID:byV7OktD
弾とかアイテムとかの管理をlistで実装したんだけど
1フレームに5000〜6000回程度push_backする必要があるせいかかなり重くなってしまった
これに早送りとか導入すると普通に処理落ちしてしまう
listってこんなに重いものなの?
905名前は開発中のものです。:2008/07/21(月) 12:15:54 ID:iDfW1/pZ
>>904
実装が悪いんじゃね?
やってることは単純なんだけね。

コストがかかるのは領域の確保開放?

それ以外はアドレスをコピーしたりしてるだけだしな。
906名前は開発中のものです。:2008/07/21(月) 12:34:24 ID:h59ljIxh
5000〜6000のpush_backってどんなゲームだよ。
907名前は開発中のものです。:2008/07/21(月) 13:47:21 ID:UAMfujAl
>1フレームに5000〜6000回程度push_backする必要がある

俺の鳥頭にはこういう手続きが必要な状況が想像できない。。。
908名前は開発中のものです。:2008/07/21(月) 14:04:16 ID:Y2wx43DX
capacityを設定してないんじゃね

まずはプロファイルとってどの部分が重いのか計測すべき
909名前は開発中のものです。:2008/07/21(月) 15:07:24 ID:+hwOlj93
1フレームに弾が5000〜6000発発射されるとか
敵が5000〜6000匹出てくるとか
アイテムが5000〜6000個でてくるとか

60フレームで300000〜360000…
910名前は開発中のものです。:2008/07/21(月) 15:44:59 ID:ysrcl0qh
MMOでもつくってるの?
911名前は開発中のものです。:2008/07/21(月) 16:10:14 ID:HHCwPw2H
>>904
毎フレーム6000回のpush_backが発生するというのならともかく
最大6000回という意味なら、オブジェクトを同時に発生するのではなく、連射型にしたり、
他のオブジェクトと発射するタイミングをずらしてやることで、
負荷を分散してみたらどうだろう。
912名前は開発中のものです。:2008/07/21(月) 17:16:14 ID:+hwOlj93
話ぶった切って悪いんだが、
STGを管理するクラスのポインタをオブジェクトのスーパークラスがメンバで持つことはできないかね?
俺の組み方が悪いだけかもしれんが、
STG管理はメンバにスーパークラスのインスタンスをリストで持ってるんだけど、

STG管理→スーパークラス の順にヘッダをインクルードするとSTG管理がスーパークラスを使えないし、
スーパークラス→STG管理 の順だとスーパークラスがSTG管理のポインタを使えない…
913名前は開発中のものです。:2008/07/21(月) 17:42:23 ID:vlXSR/s8
>>904
パーティクルで爆発とかレーザーを作ってるとか
914名前は開発中のものです。:2008/07/21(月) 17:43:05 ID:kiNn+I1R
相互参照でいいんじゃないか
915名前は開発中のものです。:2008/07/21(月) 18:17:28 ID:UAMfujAl
>>912
class IObject
{
 virtual Update() = 0;
};
class CSTGKanriKurasu
{
 std::list<IObject*> m_objectcollection;
};
CSTGKanriKurasu g_kanrikurasu;
class SuupaaKulasu : public IObject
{
 CSTGKanriKulasu* m_kanrikurasu;
};
916名前は開発中のものです。:2008/07/21(月) 18:25:17 ID:+hwOlj93
>>915
g_kanrikurasuは何のために?
917名前は開発中のものです。:2008/07/21(月) 18:31:21 ID:UAMfujAl
何もかもが面倒になったとき、それはあなたを助けるでしょう><
918名前は開発中のものです。:2008/07/21(月) 18:49:39 ID:h59ljIxh
Updateの引数としてゲーム全体の管理クラスを渡してるのが俺の実装。
919名前は開発中のものです。:2008/07/21(月) 19:02:36 ID:/UvsnTqh
ポーズボタンを押したらレーザーが普通の弾の群れに化けるゲームがあったような記憶が
920名前は開発中のものです。:2008/07/21(月) 20:07:04 ID:HHCwPw2H
>>912
>STG管理→スーパークラス の順にヘッダをインクルードするとSTG管理がスーパークラスを使えないし、
>スーパークラス→STG管理 の順だとスーパークラスがSTG管理のポインタを使えない…

以下の様に書けば、相互参照できるよ。
コツは、ヘッダ内でライブラリと自分が継承するクラス以外のヘッダをincludeしないことかな。
あと、ヘッダ内では相互参照の相手のクラスのフィールドやメソッドにアクセスしないこと。
これはinline関数を定義するときにかなりの障害になるかもしれない。

/* スーパークラス.h */
class STG管理;
class スーパークラス
{
    STG管理* STG管理へのポインタ;
};

/* STG管理.h */
#include <list>
class スーパークラス;
class STG管理
{
    std::list<スーパークラス*> スーパークラスのリスト;
};
921名前は開発中のものです。:2008/07/21(月) 21:05:15 ID:+hwOlj93
>>920
おぉ本当に出来た。分かりやすい説明thx。

あと質問続きで申し訳ないが、
敵や弾やアイテムなどの種類ごとの定義はどこに、どのように書いてる?
多分それぞれのクラスのインスタンスを種類だけ作って、実際にそれをpush_backするときはコピーしてるんだろうけど、
それぞれの定義(HPとか威力とか)を書く良い場所(格納するクラス?)が分からないんだが…
それとも外部ファイルに定義して読み込んでるの?
無知な質問で本当にスマン。
922名前は開発中のものです。:2008/07/21(月) 21:31:18 ID:HHCwPw2H
>>921
テキストファイル(CSVとかXMLとか固定フィールド長の何かとか)で管理すると、再コンパイル無しでゲームの調整ができるから便利だよ。
923名前は開発中のものです。:2008/07/21(月) 22:41:06 ID:ZkoziOkw
>>904
まさかインスタンスのリストにしてないよな
ちゃんとインスタンスへのポインタのリストにしてるよな
newが重いと思うのでboost.pool使え

>>921
好みの問題
俺はコンストラクタやメソッドに直接書いてるな
外部ファイルで管理すると、ゲーム自体に大きな仕様変更が起こった場合に対応しにくいから
924名前は開発中のものです。:2008/07/22(火) 01:08:27 ID:4bN09nre
>>921-923
プログラムの規模によるのでは?
俺は、ファイルに定数として書き込んでるけど、コンパイルと実行が
一瞬だからまだ困ってない。
925名前は開発中のものです。:2008/07/22(火) 02:22:15 ID:TRIzaodv
あとは、配置とかレベルデザインとかをやる専門のメンバーがいるかどうか、かな。
926名前は開発中のものです。:2008/07/22(火) 15:04:12 ID:SL2/omP2
俺は自機や敵や配置データなんかは全部テキスト保存してる。
テキストを読み込んだ後の内部データをシリアライズしてファイルに保存しておけば、
次回からそのファイルを読み込んでデシリアイズすれば起動が速くなるんじゃね?とか思ったまでは良かった。
けど、C++にデフォルトでシリアライズ機能が付いてなかったのでがっかり。

boost::serializeってのがあるらしいからそれでも使ってみようと思う。
でもめんどくさいから思うだけで終わろうかな。
927名前は開発中のものです。:2008/07/22(火) 15:18:30 ID:Whx6Woqs
stlとかboostとかって、例外スロー前提の設計だけど、自作部分に例外って使ってる?
俺はどうしても戻り値で判断したくなるんだけど、速度的な問題や開発のしやすさ的にはどうなんだろう

速度的コストがないなら例外系に移行したほうがいいのかな。ごっちゃだと訳わからん
928名前は開発中のものです。:2008/07/22(火) 15:39:31 ID:SL2/omP2
>>926 誤字修正 boost::serialize → boost::serialization

>>927
基本的には使ってるフレームワークとかライブラリに合わせるけど、
不精者の俺は例外が発生した時点で
cerr << "エラーだよ!"; exit(-1) みたいなことしてる(笑)
929名前は開発中のものです。:2008/07/22(火) 15:51:37 ID:Whx6Woqs
exitかよw
せめて終了シーケンス通してあげてww
930名前は開発中のものです。:2008/07/22(火) 16:45:20 ID:SL2/omP2
>>929
まあ、最低限の終了処理は atexit()で登録してあるから、exit()で終わる分には問題ない、、、、はず(汗)。


boost::serializationが何げにXMLでの読み込み/保存もサポートしててワロタ。
931名前は開発中のものです。:2008/07/22(火) 17:41:14 ID:oX0LgAz/
boost::serializationのXMLはANSIだけなら良いんだが
日本語使おうとすると面倒だった気がする。
変数名と同じで偶に日本語タグ使いたいときに文字コード変換が面倒。
932名前は開発中のものです。:2008/07/22(火) 20:18:09 ID:SL2/omP2
>>931
あ、ほんとだ。
タグ名を日本語に書き換えたら what(): stream error とか怒られたよ。
値が日本語なのは良いみたいだから、とりあえずは使えそう。
933名前は開発中のものです。:2008/07/23(水) 00:56:10 ID:KzD/Jv4Z
初歩的な質問で悪いんだが、
みんな画像の読み込みはどこでやってる?

各オブジェクトのインストラクタでやったらインスタンス作るたびに読み込むことになって目も当てられないので、
多分最初に読み込んでそのグラフィックハンドルの値(若しくはそのポインタ)を各インスタンスに持たせてるんだと思うんだけど、
その値は引数としてインスタンス作る時に渡してるの?
934名前は開発中のものです。:2008/07/23(水) 01:01:21 ID:Ggpkpx1w
>>933
俺は今のところ一番最初に全部読み込んでる。
今後の展開としては、○○フレーム前から別スレッドで必要な画像読み込みを開始するみたいなことが出来るといいなと思ってる。
935名前は開発中のものです。:2008/07/23(水) 04:47:46 ID:6+b+7ITx
まとめて読み込んじゃうのが面倒が無くていい
936名前は開発中のものです。:2008/07/23(水) 09:40:10 ID:nM8x5SX3
>>933
こういう時に一応シングルトンを使う、って方法もあるが・・・
普通に考えれば初期化のときに全ての画像リソースを読み込んでおくのが無難。
937名前は開発中のものです。:2008/07/23(水) 12:18:27 ID:sxXZrmBq
このスレって作ったシューティングの宣伝オーケー?
まだ途中だけど
938名前は開発中のものです。:2008/07/23(水) 12:22:51 ID:omBc93Pl
技術総合だからきわどいな
こっちに張ってみたら?
http://pc11.2ch.net/test/read.cgi/gamedev/1202473528/
939名前は開発中のものです。:2008/07/23(水) 12:28:09 ID:QWrubiCn
サンクスコ
技術的に対したことしてないし、もうちょい出来たらそうするわー
940名前は開発中のものです。:2008/07/23(水) 14:22:21 ID:uDEHxwnt
このスレでもいいような気がするお
941名前は開発中のものです。:2008/07/23(水) 14:23:40 ID:3WuY5+EK
>>936
お前さんみたいなのを度々見かけるが、シングルトンはリソース管理の手法じゃないぞ
942名前は開発中のものです。:2008/07/23(水) 15:18:32 ID:nM8x5SX3
うちは使ったことないからなんともいえんけど、こういうケースでない場合で、
たとえばどういう時にシングルトン使うん?
943名前は開発中のものです。:2008/07/23(水) 15:29:03 ID:DdTDYKUr
Singleton+Flyweightって、
重いオブジェクトを扱う場合には選択肢になるんじゃなかったっけ
・・・・・この場合はあんまり良くなりそうにないが
944名前は開発中のものです。:2008/07/23(水) 16:27:27 ID:RRqp4XP4
シングルトンは糞パターン。
止めておけ。
所詮アドホックな回避策として考えつく奴が多いだけのもの。
GoFは「命名すること」が目的だっただけで、教科書的に捉えるのは誤解。
945名前は開発中のものです。:2008/07/23(水) 16:37:10 ID:omBc93Pl
>>933
今更だがインストラクタじゃなくてコンストラクタ
946名前は開発中のものです。:2008/07/23(水) 16:51:16 ID:nM8x5SX3
>>943,944
あくまで仕様変更や拡張時の緊急回避として使うこともある、程度で
それを前提とした設計をすることは、(Flyweightと併用する時以外は)そもそも間違いってことか。
947名前は開発中のものです。:2008/07/23(水) 17:58:52 ID:L7nabZd1
一体何の話をしているのかさっぱりだ…
948名前は開発中のものです。:2008/07/23(水) 18:44:58 ID:u+Wb4MUX
設計する時に使うよ派
人に話す時に使うよ派
暇だからネタにするよ派
トランザクション処理なんて知らないよ派
949名前は開発中のものです。:2008/07/23(水) 18:46:18 ID:R6e+9Mrl
>>937-939
むしろ作りかけなら今すぐ報告スレの1を熟読して書き込むべきだよ。うん。
ある程度試遊や感想も期待できるし、数日おきに更新するのも普通。
評価スレは…この場合はスルーかw
950名前は開発中のものです。:2008/07/23(水) 18:52:38 ID:iifEG8wA
米国時間22日、マイクロソフトは「Xbox LIVE Community Games」を北米で今年後半から
開始すると発表した。その他の地域については2009年から逐次開始する予定。

Xbox LIVE Community Gamesは、XNA Game Studioで開発されたXbox360用ソフトを
Xbox Liveを通じ一般利用者へ販売することを可能とするサービス。

Xbox LIVE Community Gamesでの販売は、XNA開発者コミュニティ「XNA Creators Club」の
有料会員(年額9,800円)であれば誰でも行うことが可能となる。

販売価格については200〜800マイクロソフトポイントの間で自由に設定することができ、
手数料として売上の30%が引かれることとなる。

XNA Game Studioは、マイクロソフトが無償で公開しているVisual Studioをベースとした
ゲーム特化型の統合開発環境。.NET Framework及びDirectXをベースとしたライブラリ
「XNA Framework」を使用し、基本的には設定ひとつでXbox360及びWindowsへの両対応が
可能となる。

XNAについては、RPGツクールが次期バージョンでの対応を表明しており、日本での
普及にも期待がかかる。また、教育機関による学習教材としての採用も増加しており、
月刊ベーシックマガジンの休刊以降問題視されていた日本人ゲーム開発者の急激な
減少に歯止めをかける期待も持たれている。

http://news4xbox.blogspot.com/2008/07/xbox360.html
951名前は開発中のものです。:2008/07/23(水) 19:43:56 ID:6+b+7ITx
国内での対応次第では期待
という感じ
952名前は開発中のものです。:2008/07/23(水) 20:30:15 ID:uDEHxwnt
>>950
> 月刊ベーシックマガジンの休刊以降問題視されていた日本人ゲーム開発者の急激な減少に

元ベーマガ投稿者だが、何かおかしな歴史が捏造されつつある気がするぞw
953名前は開発中のものです。:2008/07/23(水) 22:00:44 ID:rbsBrjQF
>>950
日本の老舗メーカーは、黙って指をくわえて見ていて良いのか。
根本的目標の差のせいか、ゲームの分野でも、MS社に好き勝手やらせつつあるようだな。
どれだけのアドバンテージが、支援勢力獲得の点であることか。
954名前は開発中のものです。:2008/07/23(水) 23:01:37 ID:NWsKn2as
>>952
ベーマガ投稿者ナカーマ
955名前は開発中のものです。:2008/07/23(水) 23:42:37 ID:3WuY5+EK
>>942
リソースとオブジェクトがごっちゃになってるぞ
それだとリソースが誰か(オブジェクト。ゲームオブジェクトでない意味で)の管理下に置かれないでいることになる。
誰かの管理下なら">>936の"シングルトンパターンは生じない。
メモリ食うものなんだから一緒という理解だと、C++以外ではリソース漏らしまくるよ。
956933:2008/07/23(水) 23:49:56 ID:KzD/Jv4Z
皆の意見を受けて、とりあえず最初に全部読ませようと思ったんだが、具体的にどうやってるんだろ?
ゲームを管理するクラスにstaticでそのハンドル保存しとく変数作ったら何だかゲーム起動しなくなったし、
もう何が何だか。

>>945
本当だ…恥ずかしい。
957名前は開発中のものです。:2008/07/23(水) 23:55:54 ID:Ggpkpx1w
実は俺は最初にオブジェクトも作ってて、そのオブジェクトの初期化処理の中に画像読み込み処理が入ってる。
ちなみに画像読み込み処理は読み込んだ画像のポインタをstd::mapのような連想配列でキャッシュしていて、
同じ画像を使うオブジェクトに対しては画像を共有するようにしてる。
958名前は開発中のものです。:2008/07/24(木) 00:05:20 ID:TQoM1lcC
shared_ptrでいいじゃん
959名前は開発中のものです。:2008/07/24(木) 00:39:53 ID:Ho5hcVqz
グローバル変数/static変数/シングルトンは
メンテナンスでの応急措置以外では使わない方が良い。
960名前は開発中のものです。:2008/07/24(木) 01:18:12 ID:RjLQMeSR
まぁ、使いこなす腕がないうちはそうだね
961名前は開発中のものです。:2008/07/24(木) 08:29:46 ID:zU2vTRP5
         ☆ チン     マチクタビレタ〜
                         マチクタビレタ〜
        ☆ チン  〃  Λ_Λ   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
          ヽ ___\(\・∀・) < 次スレまだ〜?
             \_/⊂ ⊂_ )   \_____________
           / ̄ ̄ ̄ ̄ ̄ ̄ /|
        | ̄ ̄ ̄ ̄ ̄ ̄ ̄|  |
        |  愛媛みかん  |/
962名前は開発中のものです。:2008/07/25(金) 00:22:55 ID:iSEcvi0V
最初は当たり判定を自機と敵の2グループに分けてたんだけど、
作ってるうちに自機の弾とか敵の弾とか段々とグループが増えてきて、気持ち悪くなってきた。
963名前は開発中のものです。:2008/07/25(金) 01:33:38 ID:Nzpdw50J
四種類程度で……
あと、アイテムと(横シューなら)地形が要るぞ
964名前は開発中のものです。:2008/07/25(金) 09:03:35 ID:iSEcvi0V
>>963
そうそう。
(自機と敵がぶつかる)地形とか地形の弾とか(弾同士は当たらない)
自機だけがぶつかる地形とか、敵だけがぶつかる地形とか
誰にも当たらないとか

アイテムは敵の弾扱いにしようかなと思う今日このごろ。(実装できてない(汗))
965名前は開発中のものです。:2008/07/25(金) 11:42:39 ID:XP9yE3FO
こういう表を作っておけばいいんじゃない?

----------------------------------------------
  \  相| 自 自 敵 敵 道 地
自分\手| 機 弾 機 弾 具 形
-------+--------------------------------------
   自機 | × × ○ ○ ◎ ○
   自弾 | × × ◎ × × ○
   敵機 | ○ ○ × × × ×
   敵弾 | ○ × × × × ○
   道具 | ○ × × × × ◎
   地形 | ◎ ◎ × ◎ ◎ ×

【凡例】
◎ … 当たり判定あり。当たっても自分は消滅しない。
○ … 当たり判定あり。当たったら自分は消滅(ダメージ)。
× … 当たり判定なし。

ちなみに自機の弾はレーザー系を想定してみた。(敵に当たっても消滅しない)
966名前は開発中のものです。:2008/07/25(金) 12:43:28 ID:lVHsoBDT
R-TYPE4面の敵の軌跡に残される卵って、どんな実装になってるんだろ。
元から地形として存在する、広範囲の卵密集地帯もあるし。
地形データを書き換えて、地形データに基づいて描画しているのかな。

>このスレを見ている人はこんなスレも見ています。(ver 0.20)
おかしいね。
967名前は開発中のものです。:2008/07/25(金) 12:55:14 ID:iSEcvi0V
>>965の努力は評価されていい。

>>966
>敵の軌跡に残される卵
動かない敵弾の一種じゃね?
R-TYPEやったことないけど、、、
968名前は開発中のものです。:2008/07/25(金) 14:19:37 ID:lVHsoBDT
>>967
R-TYPEやってくれ。
R-TYPE4面の卵は、障害物と同じスペックを持っている。
- 敵弾が通り抜けできない。卵に当たると消滅する。
- 障害物を通り抜けられない敵が、卵の壁に引っ掛かる。
- 重力に縛られている敵が、卵を足場にできる。


>>964
俺は、オブジェクト内に【当たり判定処理用の構造体/クラス】を設けて、
その構造体/クラスの部分だけ【当たり判定用リスト】に登録している。
【当たり判定用リスト】は、オブジェクト種類(自機弾、敵弾、敵、アイテム)ごとに用意する。

当たり判定を実際に行う段階では、オブジェクトごとに、当たりのあるオブジェクトの【当たり判定用リスト】を走査する。
その際に、当たり判定結果を、【当たり判定処理用の構造体】に登録する。
各オブジェクトは、【当たり判定処理用の構造体/クラス】を通じて、当たり判定のフィードバックを得る。

オブジェクトごとの【当たり判定用リスト】の管理がネック。
【当たり判定処理用の構造体/クラス】は、タスクシステムのタスクと同じ要領で登録・解除する。

実装作業時には、>>965みたいな表を用意しておいて、一つ一つつぶしていく。
969名前は開発中のものです。:2008/07/25(金) 15:01:04 ID:iSEcvi0V
>>968
つまり、地形の当たり判定を持ったオブジェクトを発射しながら進んでるってことじゃないかな。
発射するオブジェクトの当たり判定を自由に変えられるなら簡単だろうけど、実装によっては大変そう。


俺は当たり判定部がオブジェクトを分類するためのリストを持っていて、
単にどのリストに登録するかで当たり判定が変わるようになってるから、
自機オブジェクトであっても、当たり判定は敵と同じになったり地形と同じになったりできるようにしてる。
また、>>965と違うのは、当たったからと言って消滅したり、弾けたりするかどうかを判断するのはオブジェクト自身で、
当局(当たり判定部)は一切関知してない。


やっぱ人それぞれに実装方法があるから、参考になるなー。
970名前は開発中のものです。:2008/07/25(金) 15:08:42 ID:580ljGv9
まあこれは俺が作ってるシューティングのオブジェクト管理方法(C言語)なんだけどさ

参考にしたのはFLASHとかなんだけど

レイヤーをイメージして
リストを管理するポインターを配列にして
0から15くらいのレイヤーをイメージして
リスト0は背景1(当たり判定無い)
リスト1は背景2(当たり判定あり)
とかさ
971名前は開発中のものです。:2008/07/25(金) 18:41:57 ID:lVHsoBDT
>>969
レスthx。

問題の卵が画面いっぱいに配置されている個所があるんだが、
全部が個別オブジェクトだったら負荷大きいんじゃないかと思うんだ。
972名前は開発中のものです。:2008/07/25(金) 19:38:26 ID:542dF0IB
>>966
昔のゲーム機の多くは、フレームバッファのように1ピクセル単位で
グラフィックを描画する能力がなく、8*8ドット程度のタイルパターンを
パターン番号のテーブル(40*30程度)を元に描画していた。

地形に対する判定は、このテーブルを直接参照することで行うことが多く、
画面に表示されるデータがそのまま地形データになっていた。
だから、動的に地形として描画すると、当たり判定も自動的に発生する。

R-TYPEもこれと同様ではないかな。
973名前は開発中のものです。:2008/07/25(金) 20:09:11 ID:lVHsoBDT
>>972
とりあえず、レスthx。
回答内容については、考えてみます。
974名前は開発中のものです。:2008/07/25(金) 21:24:09 ID:GsVzCSrt
テキストの表示みたいなものだよな。一文字に相当するのが1タイル分。
背景はそれが全体でしかスクロールできなくて
キャラクターだけはその上の自由な位置に上書きできるが数に制限がある。
975名前は開発中のものです。:2008/07/25(金) 21:47:24 ID:6r4f5df7
久しぶりにテキストVRAMという名前を思い出した。
976名前は開発中のものです。:2008/07/26(土) 01:17:55 ID:+2uolo1R
         ☆ チン     マチクタビレタ〜
                         マチクタビレタ〜
        ☆ チン  〃  Λ_Λ   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
          ヽ ___\(\・∀・) < 次スレまだ〜?
             \_/⊂ ⊂_ )   \_____________
           / ̄ ̄ ̄ ̄ ̄ ̄ /|
        | ̄ ̄ ̄ ̄ ̄ ̄ ̄|  |
        |  愛媛みかん  |/
977名前は開発中のものです。:2008/07/26(土) 01:49:39 ID:tmD9ms6K
978名前は開発中のものです。:2008/07/27(日) 09:51:58 ID:1ENZqqIw
スクリプト読み込み部の構造改革をしたら変更が大域に広がってしまってくじけそうです。
979名前は開発中のものです。:2008/07/30(水) 05:59:59 ID:PtVSHEnq
サイトに体験版をうpするときって、何面まで作るべきかな?
2面まで、しかも1面あたりのプレイ時間が4分程度なんてのはアリ?
980名前は開発中のものです。:2008/07/30(水) 07:03:55 ID:uO2BrsLd
2面ならボリュームある方かもしれんね。

それはさておき、体験版にするなら、ステージ単位で考えるんじゃなく、
「自分が見せたい要素」をちゃんと含んでいるかを考えるべきだと思う。
これはSTGに限らずね。


例えば、特徴的なシステムが売りなら
 ●そのシステムのチュートリアル的なステージ
 ●そのシステムが活きるステージ
を作って、そのシステムで遊んでもらうことを考えるべき。

キャラクターが可愛さなどにこだわってるなら、
 ●会話シーンなどのイベント
 ●(敵も可愛いキャラクターなら)ボス戦闘
を入れるべきだろう。

981名前は開発中のものです。:2008/07/30(水) 18:09:54 ID:xzRz+d85
見せ場だけを詰め込んだ1分くらいの詐欺動画で完璧
982名前は開発中のものです。:2008/07/30(水) 20:46:12 ID:OX95YwTS
それ作っただけで満足してゲーム作らずに終わりそうだ
983名前は開発中のものです。:2008/07/30(水) 22:01:37 ID:Lgzy7JPK
見せ場だけ作れるというのもそれはそれで凄いな。
984名前は開発中のものです。:2008/07/31(木) 00:55:55 ID:lKwihcfN
面白いゲームは1面にもちゃんと面白い要素が詰まっている。
逆に言えば、1面だけ遊んだプレイヤーにそのゲームの面白さを
予感させられないようではダメかと。
985名前は開発中のものです。:2008/07/31(木) 01:06:45 ID:WCTI7nTT
まあ2Dシューティングなんてどこを切り取ってても少しやれば
だいたい自分の好みかどうかなんてすぐ判るしなー
986名前は開発中のものです。:2008/07/31(木) 01:57:14 ID:woPw/wLG
体験版でプログラムが重いか軽いかが分かるだけでもありがたく思います。
987アジェグ4倍 ◆4xAJeG.COM :2008/07/31(木) 02:55:24 ID:g+sfGXRt
なに? ベーマガが終わってからの、この5年間で
日本人技術者が急激に減っているだと?

逆だろ? 日本人技術者が急激に減ったから、
ベーマガが終わっちまったんだよ。

ゲームなんてモノ売るってレベルじゃないもんねぇ。
988名前は開発中のものです。
スレ違いな話だよなそれ