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


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

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



1 名前:名前は開発中のものです。 mailto:sage [2008/11/27(木) 10:18:19 ID:bBI1A+d5]
ゲームプログラマなら誰もが通る、もしくは、通った道。青春の香り?
それは「シューティングゲーム製作」・・・。

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

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

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

539 名前:名前は開発中のものです。 mailto:sage [2009/03/06(金) 22:02:00 ID:QYwcIkUm]
普通はbulletクラスかplayerクラスにisHit関数を付けるもんだろう。
だってそうしないと弾固有の当たり判定とかとれないじゃん。

540 名前:名前は開発中のものです。 mailto:sage [2009/03/06(金) 22:23:03 ID:k/SdMtBY]
>>697
俺の場合、
class CollisionListener {
public:
  int getX();
  int getY();
  int getWidth();
  int getHeight();
  void touched(CollisionListener* obj) // objは衝突相手
};

class Player : public CollisionListener;
class Bullet : public CollisionListener;
class Enemy : public CollisionListener;

/* 衝突判定のカテゴリを分類する。(例:プレイヤなら敵、敵弾、地面と衝突。敵弾ならプレイヤ、地面と衝突) */
enum CollisionGroup { Player, PlayerBullet, Enemy, EnemyBullet, Ground };

/* 衝突検知を管理するクラス(ほんとは○○マネージャとかいう名前はダメなんだとかうんたらかんたら……) */
class CollisionManager {
public:
  void addListener( CollisionGroup type, CollisionListener* listener ); // リスナ(プレイヤ、敵とか)を登録する
  void removeListener( CollisionGroup type, CollisionListener* listener ); // 登録を抹消する
  void detect(); // 登録されたリスナの衝突を検知し、衝突したならリスナのtouchedメソッドを呼び出す
};


541 名前:名前は開発中のものです。 mailto:sage [2009/03/06(金) 22:27:05 ID:C76RJ9rx]
ぶっちゃけ関連ページが全部消えててメアドだけ生きてるとは普通思わないもんな

>>701
これくらいなら「ダメ出し」があったとしても、クラス設計の善し悪しの話で、
>>702みたいなのをifで逃がすことになると、クラス設計が下手だと言われる。

 その関数の中に、switchやifが沢山含まれるなら、設計を変える事で
良くなる『可能性』があるし、将来の拡張でswitchやifを加えないで済む『可能性』もある


アドホックなswitchやifも許し… 
…今クラス設計の話をしてるんだから、参考にすべきだ(゚Д゚)ハッ!

542 名前:名前は開発中のものです。 mailto:sage [2009/03/06(金) 22:51:03 ID:QYwcIkUm]
それはそうとおまえらに質問。
クラス名の相談なんだが、敵の弾クラスはbulletでいいと思うんだが、自分の発射した弾はなんて名前にするのがベスト?
bulletクラスを継承してないからplayerBulletって名前にするのも変だし……

543 名前:名前は開発中のものです。 mailto:sage [2009/03/06(金) 22:59:54 ID:C76RJ9rx]
shot に一票

544 名前:名前は開発中のものです。 mailto:sage [2009/03/06(金) 23:06:52 ID:ZZrBBfbz]
>>705
EnemyBullet,PlayerBullet
って明記してしまえば後で見ても間違わない気がする。
気がするだけかもしれない。

Object -> Enemy -> EnemyBullet
   ├ -> Player
   └ -> PlayerBullet
みたくなるだろうけど、それでよければ。


545 名前:名前は開発中のものです。 mailto:sage [2009/03/06(金) 23:07:20 ID:QYwcIkUm]
>>706せんきゅー。shotって命名しておいたぜ!
それと、携帯アプリのSTGだとどういうインターフェイスで弾撃たせるのが楽かな?
自動で撃ってしまうとそれはそれで戦略性が低くなってしまいそうなのだが。

546 名前:名前は開発中のものです。 mailto:sage [2009/03/06(金) 23:09:44 ID:ZZrBBfbz]
>>707は矢印の方向に継承するってことでヨロ。

クラス図としてみたら逆になっちゃうけど突っ込んじゃらめぇ

547 名前:名前は開発中のものです。 mailto:sage [2009/03/06(金) 23:10:38 ID:CCKZ0ZvT]
プレイヤーの弾はChinkoにして可読性を著しく低下させてる



548 名前:名前は開発中のものです。 mailto:sage [2009/03/06(金) 23:14:46 ID:ZZrBBfbz]
>>710
おま…それアンタッチャブルじゃないか
触れないです><

549 名前:名前は開発中のものです。 [2009/03/07(土) 14:49:37 ID:oFkRuMFA]
class OchinpoMilkとかやるだろ。
あとで後悔するんだけど。

550 名前:名前は開発中のものです。 mailto:sage [2009/03/07(土) 15:07:06 ID:bRexpzAJ]
確かにシューティングゲームだな

551 名前:名前は開発中のものです。 mailto:sage [2009/03/08(日) 05:03:44 ID:j2H/7CnL]
class AbstractManko
{
private:
    virtual long ChinkoPlease(size_t) = 0;
};
//○月×日作成: すべてのクラスはこれを継承してねw名前変えないでねw

552 名前:名前は開発中のものです。 mailto:sage [2009/03/08(日) 07:56:41 ID:XlVAa9br]
すべての存在はAbstractなMankoから生まれる……

553 名前:名前は開発中のものです。 mailto:sage [2009/03/08(日) 15:43:28 ID:B8bsQorT]
なるほど。playerはmotherShipクラスから生成されて、enemyはalienMotherクラスから生成されるんだな……

554 名前:名前は開発中のものです。 mailto:sage [2009/03/08(日) 16:19:58 ID:AO3ln+kr]
ChinkoPlease(size_t) がprivate:って、
ありえねぇーことを宣言するなw。

555 名前:名前は開発中のものです。 [2009/03/08(日) 16:29:42 ID:3kCVX1OJ]
STGの話題じゃないけど
#include <iostream>

class A{
private:
        virtual void aa(void) = 0;
};
class B : public A{
public:
        void aa(void){}
};


int main(void){
        B b;
        b.aa();

        std::cout << "hello" << std::endl;
        char c;
        std::cin >> c;
        return 0;
};

が通るのは何で?

556 名前:名前は開発中のものです。 mailto:sage [2009/03/08(日) 16:35:19 ID:lUOcnlf/]
何が疑問なのかわからないが、、、、virtual をオーバーライドした関数はvirtual が無くてもvirtual

557 名前:名前は開発中のものです。 mailto:sage [2009/03/08(日) 16:54:34 ID:iZlPrvU5]
タイプセーフが無いC++的にはこうだよ。 タイプセーフな他の言語から見るととおかしいのだろうけど
#include <iostream>

class A{
private:
? ? ? ? virtual void aa(void) = 0;
public:
? ? ? ? void update(void){
? ? ? ? ? ? ? ? std::cout << "update" << std::endl;
? ? ? ? ? ? ? ? aa();
? ? ? ? };
};
class B : public A{
public:
? ? ? ? void aa(void){
? ? ? ? std::cout << "aa() of B called." << std::endl;}
};


int main(void){
? ? ? ? B b;
? ? ? ? A *a;
? ? ? ? a = &b;

? ? ? ? //a->aa(); エラー
? ? ? ? a->update();
? ? ? ?
? ? ? ? return 0;
}




558 名前:名前は開発中のものです。 mailto:sage [2009/03/08(日) 16:54:35 ID:XklWG2/f]
???何で通らないと思うのか?

class A の private: virtual void aa(void) = 0;
は、どこでも使ってないから捨てられるだろ?
ちなみに *aa=NULL; って意味だから。aa(); とかやって実行するのは危険だね。
Windows なら特権エラー(不正な処理を実行しましたダイアログ)かな?

class B の public: void aa(void){}
は、main 始まったらすぐ実行されるね。ここは、
public: void aa(void){std::cout << "ot"; }
とでもしとけば?

559 名前:名前は開発中のものです。 mailto:sage [2009/03/08(日) 16:58:17 ID:XklWG2/f]
>>721
*aa=NULL; はまちがい。aa=NULL;


560 名前:名前は開発中のものです。 [2009/03/08(日) 17:01:45 ID:3kCVX1OJ]
C++はあまりわかんないです。
不思議だと思ったのは
class Aのprivateな抽象関数aaを
Aを継承したclass Bでpublicに実体を作っているところです。

561 名前:名前は開発中のものです。 mailto:sage [2009/03/08(日) 17:07:12 ID:XklWG2/f]
「privateな抽象関数aa」は、class Bへ継承させても、継承されてないよ。だってprivateだもん。

562 名前:名前は開発中のものです。 [2009/03/08(日) 17:09:35 ID:3kCVX1OJ]
>>724
そう思います。
でもこれが通らないんです。
#include <iostream>

class A{
private:
        virtual void aa(void) = 0;
};
class B : public A{
public:
        //void aa(void){}
};


int main(void){
        B b;
        //b.aa();

        std::cout << "hello" << std::endl;
        char c;
        std::cin >> c;
        return 0;
};


563 名前:名前は開発中のものです。 mailto:sage [2009/03/08(日) 17:11:14 ID:XklWG2/f]
>>724


564 名前:名前は開発中のものです。 mailto:sage [2009/03/08(日) 17:12:13 ID:iZlPrvU5]
>>724
virtual抜いたらコンパイルできない。
codepad.org/MaZEDgo2

「privateな抽象関数aa」は、pubicな aa()でもオーバーライドできるだろ

565 名前:名前は開発中のものです。 mailto:sage [2009/03/08(日) 17:15:16 ID:XklWG2/f]
>>724
ごめん間違えた。
「privateな抽象関数aa」は、class Bへ継承されているが class Bのpublic aa();の方が優先だから、
class Bのpublic aa();にしかアクセス出来ない。

ここでclass A の privateやvirtualなbb();とかあれば、継承されるから、
int main(void){
B b;
b.bb();
とかで使えると思う。


566 名前:名前は開発中のものです。 [2009/03/08(日) 17:18:35 ID:3kCVX1OJ]
抽象関数を持つclass Aを継承したclassは、
class Aの抽象関数を実体化しなくてはいけない。
 
 
と思っていたのです。
そうではないのですね。
javaから入ったので不思議でした。

567 名前:名前は開発中のものです。 mailto:sage [2009/03/08(日) 17:25:14 ID:iZlPrvU5]
>>728
>class A の privateやvirtualなbb();とかあれば、
ねーよw
codepad.org/aEfKdVPO



568 名前:名前は開発中のものです。 mailto:sage [2009/03/08(日) 17:25:58 ID:XklWG2/f]
ttp://msugai.fc2web.com/java/override.html
>アクセス修飾子の規則の例外として、private 修飾されたメソッドはオーバーライドできません。
JavaもC++も同じじゃないかな?

569 名前:名前は開発中のものです。 mailto:sage [2009/03/08(日) 17:27:59 ID:XklWG2/f]
>>730
>>728
ごめんそれも間違いだ。bb();とか無理です。

570 名前:名前は開発中のものです。 [2009/03/08(日) 17:31:31 ID:3kCVX1OJ]
privateな抽象関数を持つclass Aを継承したclass Bが実体化出来るのが不思議。
同class Aの抽象関数aaと同じ名前のpublicな関数をclass Bに作ったことで動く事が不思議。
同class Aの抽象関数aaを継承したclass Bでで作らないと実体化できない事が不思議。
なんかそんな感じです。
すみません。

571 名前:名前は開発中のものです。 mailto:sage [2009/03/08(日) 18:00:50 ID:uTNKd2IK]
プログラム板の初心者C++スレでやろうぜ・・・

572 名前:名前は開発中のものです。 mailto:sage [2009/03/08(日) 20:02:21 ID:t0AdkGXJ]
Javaは違うのかもしれんがC++はそういう仕様なんでしょ
メンバ変数も違うアクセス修飾詞でオーバーライドできるし
抽象関数を持ったクラスはそれを派生させて実装したクラスでないと実体化できんのはJavaでも同じでしょ

573 名前:名前は開発中のものです。 [2009/03/09(月) 00:20:55 ID:vdPDd+Q/]
javaって派生先の仮想関数のアクセス修飾を変えれなかったんじゃなかったっけ?

574 名前:名前は開発中のものです。 [2009/03/09(月) 00:54:10 ID:4v1RPow6]
オブジェクト指向も度がすぎると、使われもしないゴミクラスが
沢山残る罠。

575 名前:名前は開発中のものです。 [2009/03/09(月) 01:02:27 ID:4v1RPow6]
↑ただ単に今一、配慮を怠ったクラスを書くと
そういう事になると言うのをいいたかっただけ。

576 名前:名前は開発中のものです。 mailto:sage [2009/03/09(月) 01:43:12 ID:j7Fn6gwa]
継承が多くても、STG中にキャストする様なオブジェクトとかあんまり無いと思うけどな
オブジェクト指向とか言うほど大げさなモノでも無い

抽象基底クラスを作り、それの配列かコンテナに継承した子のオブジェクトをいれる
遷移するモノならインターフェースを作り、継承した状態のオブジェクトを保存しておくだろ

あんまり思い浮かばない。 楽につくる事が優先だ

577 名前:名前は開発中のものです。 mailto:sage [2009/03/09(月) 02:29:20 ID:nD/Sv/Tx]
敵とか敵弾とか継承してもどうせ分けて扱っちゃうし・・・



578 名前:名前は開発中のものです。 mailto:sage [2009/03/09(月) 05:33:07 ID:s3+yn2Ga]
け、継承って何だ、クラスって何だ

敵の構造体とか、弾の構造体でいいだろっ
動的確保?知らんがな(´・ω・`)

579 名前:名前は開発中のものです。 mailto:sage [2009/03/09(月) 05:50:33 ID:nD/Sv/Tx]
いちいち動的確保なんかしてたら弾幕の生成でめちゃくちゃ処理落ちする
俺は最初に作っとくの

580 名前:名前は開発中のものです。 mailto:sage [2009/03/09(月) 10:04:04 ID:c/sep/SW]
ボス戦とかどうしてるんだ。
予め発射される弾の数を決めてるってことか?

581 名前:名前は開発中のものです。 mailto:sage [2009/03/09(月) 10:41:10 ID:s3+yn2Ga]
一万発分くらい確保しとけばおkkkkkk

582 名前:名前は開発中のものです。 mailto:sage [2009/03/09(月) 10:48:15 ID:nD/Sv/Tx]
>>743
一体何万発確保するつもり?
決めるといっても、せいぜい2〜3000発程度。これ以上多いとメモリ云々以前にゲームとして無理。

583 名前:名前は開発中のものです。 mailto:sage [2009/03/09(月) 12:24:29 ID:c/sep/SW]
いや、そういう意味じゃない。
ボス戦だと、ボス倒すまで延々と戦闘が続く訳じゃん。
合計弾発射数は、実質無限な訳じゃん? ということは、どっかで弾リストのクリーンナップでもしてるんだろ?
どうやって要らない弾とそうでないのとか分けてるのかと。

584 名前:名前は開発中のものです。 mailto:sage [2009/03/09(月) 12:30:20 ID:c/sep/SW]
それとさ、普通はbullet[]にしろリストにしろ、実際に格納されてるのはbulletクラスを継承した
StreightBulletクラスとかAccelBulletとかcurveBulletな訳じゃん。
newしないでどうやって使いまわすの?

585 名前:名前は開発中のものです。 mailto:sage [2009/03/09(月) 12:36:43 ID:nD/Sv/Tx]
>StreightBulletクラスとかAccelBulletとかcurveBulletな訳じゃん。
こんなことしてねーもんwww

586 名前:名前は開発中のものです。 mailto:sage [2009/03/09(月) 12:39:35 ID:4gpR4arb]
画面外に出たりどっかにぶつかったら未使用状態に戻せばいいだけ
クラスだけで動作変えてるならそりゃnew必要でしょう

587 名前:名前は開発中のものです。 mailto:sage [2009/03/09(月) 12:40:29 ID:nD/Sv/Tx]
ちなみにこれ
>どうやって要らない弾とそうでないのとか分けてるのかと。
リスト2つ作ればいいじゃん



588 名前:名前は開発中のものです。 mailto:sage [2009/03/09(月) 12:42:50 ID:9YN/v32z]
クラスだけで動作変えるとかないわ
本人は継承を有効活用してるつもりだろうが、無駄でしかない

589 名前:名前は開発中のものです。 mailto:sage [2009/03/09(月) 12:45:34 ID:s3+yn2Ga]
>>746
俺リストよくわからん
弾にフラグもたせてて設置されているなら1、設置されていないなら0
置かれた順にソートもしてるぞ。設置する時に空いてる弾拾ってきて構造体の仮想連結の最後にくっつけてフラグON
弾が削除される瞬間に前後の番号の弾連結してから弾の構造体のメンバ初期化してフラグをOFF


590 名前:名前は開発中のものです。 mailto:sage [2009/03/09(月) 12:48:31 ID:M8Y9J7eH]
>>750
>>492(というかそこからの一連の流れ)みたいな感じ?
あと動的確保するだけでそんな処理落ちする?

クラスだけで動作変えるってのがよく分からない
あとそうじゃなかったらどう動作を変えるの?

591 名前:名前は開発中のものです。 mailto:sage [2009/03/09(月) 12:53:40 ID:c/sep/SW]
えー、みんな曲射弾とか加速/減速弾とか誘導弾とか重力弾とか拡散/炸裂弾とか別々のクラスにしてないのー?
別々のクラスにしておけば拡張が簡単だよ?

592 名前:名前は開発中のものです。 mailto:sage [2009/03/09(月) 12:53:40 ID:L17yPJfy]
>>747
うん、newしないと継承が使えなくなって不便な面はある。
でも弾が多くなってくると、それを差し引いてもnewしない事によるパフォーマンス的なメリットはあるよ。実際スペックしょぼいノートPCで試したら30fpsが60fpsになったし。

593 名前:名前は開発中のものです。 mailto:sage [2009/03/09(月) 12:53:44 ID:nD/Sv/Tx]
>>753
あぁ、ちょうどこんな感じ、STLは使ってないけど
処理落ちは量によってはする。弾数の多いn-way弾とか、出現と消失が頻繁なときとか。
最近のPCじゃ気にならないだろう。それだけに、こんなに話題が続くとは思ってなかったがw

>あとそうじゃなかったらどう動作を変えるの?
動作の部分だけ別に作る

594 名前:名前は開発中のものです。 mailto:sage [2009/03/09(月) 12:56:34 ID:c/sep/SW]
なるほど。弾種類からswitchしてprivate staticメソッドを呼ぶのかw なんかそれも変な気もするが。

595 名前:名前は開発中のものです。 mailto:sage [2009/03/09(月) 12:57:43 ID:nD/Sv/Tx]
>>757
馬鹿?

596 名前:名前は開発中のものです。 mailto:sage [2009/03/09(月) 12:58:29 ID:s3+yn2Ga]
>>754
弾の行動をひたすら書いてるソースファイルがある
特にキモイ動きさせたくなければ無指示でも動くし指示しまくれば弾が増えたりグラフィック変わったりどんな奇天烈な動作もお手の物

597 名前:名前は開発中のものです。 mailto:sage [2009/03/09(月) 13:02:11 ID:9YN/v32z]
>>757
動作分岐でswitchしか知らないのか



598 名前:名前は開発中のものです。 mailto:sage [2009/03/09(月) 13:17:02 ID:wiYT9l9H]
弾1発ごとにnewしてdeleteしてたらメモリに断片できまくらない?

599 名前:名前は開発中のものです。 mailto:sage [2009/03/09(月) 13:33:25 ID:Q0zoLpbu]
total memoryが1MB位しか無いenvironmentなら話はotherだが、
今時そんなところを気にしても仕方ないぞ。
心配ならboost::pool使っとけ。

booooostが気に食わないなら、弾の継承クラスを全て包含した共用体で配列を作って
placement newすればいい。

600 名前:名前は開発中のものです。 mailto:sage [2009/03/09(月) 13:35:45 ID:M8Y9J7eH]
>>753
なるほどね、大体把握(したと思うw)
>動作の部分だけ別に作る
これってどんな感じ?

俺のイメージ的には

bullet{
bulletがもってるステータス(位置とか)
moveA(){ /* 動作A */};
moveB(){ /* 動作B */};
}

こんな感じなんだけど
それとももっと手続き的?な感じなのかな

601 名前:名前は開発中のものです。 mailto:sage [2009/03/09(月) 13:46:24 ID:4gpR4arb]
関数ポインタ持たせてもいいけど、動きはスクリプトにして実行時に読ませることもあるしなあ

602 名前:名前は開発中のものです。 mailto:sage [2009/03/09(月) 13:52:06 ID:nD/Sv/Tx]
>>763
弾に直接はもたせない。デリゲートする。

603 名前:名前は開発中のものです。 mailto:sage [2009/03/09(月) 13:54:05 ID:9YN/v32z]
スクリプトはもう別の話だろう
設計自体が大きく変わる

604 名前:名前は開発中のものです。 mailto:sage [2009/03/09(月) 13:58:24 ID:L17yPJfy]
>>765
言語にもよるだろうけどdelegate作るとnewと同様コストかかんない?

605 名前:名前は開発中のものです。 mailto:sage [2009/03/09(月) 14:02:36 ID:nD/Sv/Tx]
>>767
デリゲートっていうと大げさか。所詮ポインタ演算だし。関数ポインタとどっこい。
気に食わなきゃ>>762でもしてろってこった。でも「いちいちnew」は絶対にやだね。

606 名前:名前は開発中のものです。 mailto:sage [2009/03/09(月) 14:41:27 ID:DKKqMNCl]
1フレーム内で100も200もnewしなければいいだけの話で、
new/deleteをそこまで毛嫌いすることも無いと思うお。
ちなみに俺はnewしたものはdeleteせずにプールして使いまわしてる。
クラスごとにプールが出来てテラカオスw

607 名前:名前は開発中のものです。 mailto:sage [2009/03/09(月) 14:46:04 ID:M8Y9J7eH]
>>766
そういう設計の話もしていいんじゃない?
というか参考にしたいから色々話をしててくれると助かる

>>768
うん、とりあえず「デリゲート」ってのを初めて知ったよw
簡単にググって調べただけだから全然理解できてないけど
オブジェクト指向版の関数ポインタみたいな感じかな?
>>763の例でいくとbullet以外にmoveobjがあって
その中にメソッドmoveA、moveBがあるみたいな感じでおk?

思ったんだけど「STG」でまとめてるけど弾幕系なのか否かで最適な設計も変わってくるよな



608 名前:名前は開発中のものです。 mailto:sage [2009/03/09(月) 14:47:13 ID:nD/Sv/Tx]
俺はID:c/sep/SWに突っ込まれたから答えてただけ

609 名前:名前は開発中のものです。 mailto:sage [2009/03/09(月) 14:55:43 ID:nD/Sv/Tx]
>>770
まぁそんな感じ。汚いから多分もっとちゃんとした実装考えるけど。

610 名前:名前は開発中のものです。 mailto:sage [2009/03/09(月) 14:56:41 ID:9YN/v32z]
>>770
スクリプトの解析は実行時にやるしか方法はないのか?

611 名前:名前は開発中のものです。 mailto:sage [2009/03/09(月) 15:15:38 ID:M8Y9J7eH]
>>772
サンクス
いや勉強になったわ

>>773
ん、俺へのレス?

612 名前:名前は開発中のものです。 mailto:sage [2009/03/09(月) 19:45:24 ID:yVcj05z4]
いつも思うんだけど、このスレでは一度newとdeleteを自分で定義する方法を
教えた方がいい希ガス。
newが重いなんてのは、newをオーバーライドできることを知らない奴の戯言だろう。

613 名前:名前は開発中のものです。 mailto:sage [2009/03/09(月) 20:01:59 ID:c/sep/SW]
アブストラクト尺取りパターンっていうあれだな!
……すまん、それってjavaでもできるの?>newのオーバーライド

614 名前:名前は開発中のものです。 mailto:sage [2009/03/09(月) 20:08:44 ID:Q0zoLpbu]
お前それただjava言いたいだけちゃうんかと

615 名前:名前は開発中のものです。 mailto:sage [2009/03/09(月) 20:10:05 ID:VLwDy1Z0]
>>776
Javaはそもそも演算子オーバーライドをサポートしてないな。(文字列の+除く)
C#もnewはサポートしてないと思う。

616 名前:名前は開発中のものです。 mailto:sage [2009/03/09(月) 20:21:37 ID:c/sep/SW]
ともかく。
いちいち弾丸を作成させる際にnewを使わないのは、ゲームにおける総使用メモリ量をむやみやたらと増やさないためだろ?
だとすれば、bulletクラスの中に総ての弾丸の動作なりパラメータを突っ込むのも、ましてや弾丸ひとつひとつがスクリプト動作なんてのも、
決して奨められるべき軽量化の仕組みじゃないんじゃねえか。
まあ、弾丸の最大出現数くらいは制限をかけてしかるべきだと思うけども。

617 名前:名前は開発中のものです。 mailto:sage [2009/03/09(月) 20:33:00 ID:vlsfOe2n]
ID:c/sep/SWは>>757からちっとも成長がないな…



618 名前:名前は開発中のものです。 mailto:sage [2009/03/09(月) 20:37:29 ID:iQeP+3UH]
>>779
逆でございます。

619 名前:名前は開発中のものです。 mailto:sage [2009/03/09(月) 20:41:09 ID:9TcJmEGm]
ひとつのパターンに凝り固まって他の可能性とその技術を考えられないんだな、
ある意味、全くの無知よりたちが悪い。

620 名前:名前は開発中のものです。 mailto:sage [2009/03/09(月) 20:54:50 ID:hDtxD0U6]
人それをバカの壁という

621 名前:名前は開発中のものです。 [2009/03/09(月) 20:58:05 ID:xoToA8tC]
何でもかんでも出来る1000byteくらいの弾クラスを10000発用意しておいてもメモリは10MBだろ。
PCで作ってる分には何ら問題ないじゃん。
newをゲーム中にしたくないのはコストがでかくてボトルネックになるからだ。
とマジレス。
 
自信ないけどマジレスになってるよね?

622 名前:名前は開発中のものです。 mailto:sage [2009/03/09(月) 21:04:45 ID:DKKqMNCl]
>>784
「1フレームあたりX回以上newすれば処理落ちが発生する」とかいう目安というか、カンみたいなものがあるなら良いんじゃね。
実際にnew/deleteがどれだけ重いのか評価する手法でもあればいいんだが。

623 名前:名前は開発中のものです。 mailto:sage [2009/03/09(月) 21:11:35 ID:c/sep/SW]
newの実質的なコストって生成時にmallocを発行してる部分くらいじゃないの。
ま、デストラクタがあれば、そこも処理に影響するんだろうけど。

624 名前:名前は開発中のものです。 mailto:sage [2009/03/09(月) 21:34:19 ID:vlsfOe2n]
>>785
>実際にnew/deleteがどれだけ重いのか評価する手法
メモリ断片化とか色々あって、線形的には求まらない予感

エンドの環境依存も大きいし
俺が賭け事で弱いので、カンとかあんまり頼れない

625 名前:名前は開発中のものです。 mailto:sage [2009/03/09(月) 22:56:30 ID:86T0U1dK]
実際にゲームを作ってみて重いと感じたら別の方法を模索すればいいだけの話だと思うんだがな。

626 名前:名前は開発中のものです。 mailto:sage [2009/03/09(月) 23:26:04 ID:YtHLVg0L]
やっぱ new にはコストかかるのか
俺はそうだと思っていったんある程度の量を最初に確保してから使い回そうと考えたこともあったな
結局面倒になって適宜 new にして使ってるけど
まあ俺は激しい弾幕使ってないから大して困らないのだろうけど
いったんある程度の量を最初に確保してから使い回す方法を取ってる本もあったな

627 名前:名前は開発中のものです。 mailto:sage [2009/03/09(月) 23:34:30 ID:frstm+EJ]
メモリの断片化か・・・根深い問題だな。自由度を増やせば増やすほどに異常が増えていく。
ある程度複雑になると、突然例外大発生だもんな。どうにかならないものか。



628 名前:名前は開発中のものです。 mailto:sage [2009/03/09(月) 23:44:57 ID:JKHKOtra]
性的確保&構造体リスト最強説

256本もリスト作ったから変なソートいらないZE☆

629 名前:名前は開発中のものです。 mailto:sage [2009/03/09(月) 23:49:48 ID:hDtxD0U6]
>>791
なんだかエロいな

630 名前:名前は開発中のものです。 mailto:sage [2009/03/10(火) 02:09:56 ID:is2LuZ0W]
関数WinMainの中にすべてを詰め込んで、
「シングルトンって言うのかな、等身大の自分に合った小悪魔的デザインパターン☆」
とか言ってるやつってなんなの

631 名前:名前は開発中のものです。 mailto:sage [2009/03/10(火) 08:19:34 ID:YODFEaFk]
名前聞けばいいだろ

632 名前:名前は開発中のものです。 mailto:sage [2009/03/10(火) 08:20:22 ID:XEibpF8L]
タスクマネージャ使うと分かると思うけど、東方は普通に50MBとか食ってるぞ
たぶん起動時にものすごい量の弾を確保してるんだと思う

それにしても、あの化け物じみた描画速度はなんなんだ・・・・

633 名前:名前は開発中のものです。 mailto:sage [2009/03/10(火) 09:46:51 ID:z6f1lzf6]
構造体リストと普通のジェネリックなLinkedListってなんか違うのか?
むしろ、リスト構造そのもののパフォーマンスでいえばArrayListの方が高い訳だし、構造体リストにこだわる必要は無いような。

634 名前:名前は開発中のものです。 mailto:sage [2009/03/10(火) 10:37:13 ID:xhsEfov4]
newのコストもだけど、GCがある言語(C#,D言語等)ではGCが動くコストも馬鹿に出来ない。これはnewする瞬間じゃなくてゲーム中常にかかる恐れがあるから性質が悪い。

635 名前:名前は開発中のものです。 mailto:sage [2009/03/10(火) 11:57:08 ID:zS8jCfA2]
構造体リストに限定した話なんて誰もしていない件

636 名前:名前は開発中のものです。 mailto:sage [2009/03/10(火) 12:24:14 ID:iLQTzUsY]
>>795
まあ片手間とはいえ本職ゲームプログラマの作品だし・・・・・
ただ、いくら弾幕でも弾はせいぜい同時1000発ほど
容量を食ってるのはテクスチャとか音声だろう

637 名前:名前は開発中のものです。 mailto:sage [2009/03/10(火) 12:38:17 ID:BXbMSorN]
DirectX本スレでも東方ネタで酷いコンニャク問答があったな

さすがにこのスレにはPix for Windowsと東方(体験版含む)の
両方がそろえられないパソコン初心者は居ないだろうな?



638 名前:名前は開発中のものです。 mailto:sage [2009/03/10(火) 13:04:35 ID:zS8jCfA2]
何の話だ

639 名前:名前は開発中のものです。 mailto:sage [2009/03/10(火) 13:11:23 ID:BXbMSorN]
>>795 起動時にものすごい量の弾を確保
>>799 せいぜい同時1000発から
が激しく可笑しかったという話






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

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

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