09/03/06 20:45:54 g/bnT2ZX
当たり判定はゲーム本体のクラスでやる予定(以前はグローバル関数でやってた)
535:名前は開発中のものです。
09/03/06 21:37:07 xstPUn85
>>696
バックれたら 移転先もわからんだろうw
536:名前は開発中のものです。
09/03/06 21:42:08 ZZrBBfbz
>>697
ミジンコがうじ虫になるくらいの進化じゃないか!
マジレスするならグローバル関数でやるのと大差ないぞ、それ。
537:名前は開発中のものです。
09/03/06 21:50:00 QYwcIkUm
JAVAで作ってるのは俺くらいか……
つい最近調べてみたら、なんか東方遊夜雀なんてもんが開発されてたりするのね。
ハードル高いwwww
538:名前は開発中のものです。
09/03/06 21:58:23 g/bnT2ZX
駄目なのか
他にも敵クラス辺りに当たり判定するメンバ関数作ることも考えてるけど
まあ呼び出すところは変わらんけど
539:名前は開発中のものです。
09/03/06 22:02:00 QYwcIkUm
普通はbulletクラスかplayerクラスにisHit関数を付けるもんだろう。
だってそうしないと弾固有の当たり判定とかとれないじゃん。
540:名前は開発中のものです。
09/03/06 22:23:03 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:名前は開発中のものです。
09/03/06 22:27:05 C76RJ9rx
ぶっちゃけ関連ページが全部消えててメアドだけ生きてるとは普通思わないもんな
>>701
これくらいなら「ダメ出し」があったとしても、クラス設計の善し悪しの話で、
>>702みたいなのをifで逃がすことになると、クラス設計が下手だと言われる。
その関数の中に、switchやifが沢山含まれるなら、設計を変える事で
良くなる『可能性』があるし、将来の拡張でswitchやifを加えないで済む『可能性』もある
アドホックなswitchやifも許し…
…今クラス設計の話をしてるんだから、参考にすべきだ(゚Д゚)ハッ!
542:名前は開発中のものです。
09/03/06 22:51:03 QYwcIkUm
それはそうとおまえらに質問。
クラス名の相談なんだが、敵の弾クラスはbulletでいいと思うんだが、自分の発射した弾はなんて名前にするのがベスト?
bulletクラスを継承してないからplayerBulletって名前にするのも変だし……
543:名前は開発中のものです。
09/03/06 22:59:54 C76RJ9rx
shot に一票
544:名前は開発中のものです。
09/03/06 23:06:52 ZZrBBfbz
>>705
EnemyBullet,PlayerBullet
って明記してしまえば後で見ても間違わない気がする。
気がするだけかもしれない。
Object -> Enemy -> EnemyBullet
├ -> Player
└ -> PlayerBullet
みたくなるだろうけど、それでよければ。
545:名前は開発中のものです。
09/03/06 23:07:20 QYwcIkUm
>>706せんきゅー。shotって命名しておいたぜ!
それと、携帯アプリのSTGだとどういうインターフェイスで弾撃たせるのが楽かな?
自動で撃ってしまうとそれはそれで戦略性が低くなってしまいそうなのだが。
546:名前は開発中のものです。
09/03/06 23:09:44 ZZrBBfbz
>>707は矢印の方向に継承するってことでヨロ。
クラス図としてみたら逆になっちゃうけど突っ込んじゃらめぇ
547:名前は開発中のものです。
09/03/06 23:10:38 CCKZ0ZvT
プレイヤーの弾はChinkoにして可読性を著しく低下させてる
548:名前は開発中のものです。
09/03/06 23:14:46 ZZrBBfbz
>>710
おま…それアンタッチャブルじゃないか
触れないです><
549:名前は開発中のものです。
09/03/07 14:49:37 oFkRuMFA
class OchinpoMilkとかやるだろ。
あとで後悔するんだけど。
550:名前は開発中のものです。
09/03/07 15:07:06 bRexpzAJ
確かにシューティングゲームだな
551:名前は開発中のものです。
09/03/08 05:03:44 j2H/7CnL
class AbstractManko
{
private:
virtual long ChinkoPlease(size_t) = 0;
};
//○月×日作成: すべてのクラスはこれを継承してねw名前変えないでねw
552:名前は開発中のものです。
09/03/08 07:56:41 XlVAa9br
すべての存在はAbstractなMankoから生まれる……
553:名前は開発中のものです。
09/03/08 15:43:28 B8bsQorT
なるほど。playerはmotherShipクラスから生成されて、enemyはalienMotherクラスから生成されるんだな……
554:名前は開発中のものです。
09/03/08 16:19:58 AO3ln+kr
ChinkoPlease(size_t) がprivate:って、
ありえねぇーことを宣言するなw。
555:名前は開発中のものです。
09/03/08 16:29:42 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:名前は開発中のものです。
09/03/08 16:35:19 lUOcnlf/
何が疑問なのかわからないが、、、、virtual をオーバーライドした関数はvirtual が無くてもvirtual
557:名前は開発中のものです。
09/03/08 16:54:34 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:名前は開発中のものです。
09/03/08 16:54:35 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:名前は開発中のものです。
09/03/08 16:58:17 XklWG2/f
>>721
*aa=NULL; はまちがい。aa=NULL;
560:名前は開発中のものです。
09/03/08 17:01:45 3kCVX1OJ
C++はあまりわかんないです。
不思議だと思ったのは
class Aのprivateな抽象関数aaを
Aを継承したclass Bでpublicに実体を作っているところです。
561:名前は開発中のものです。
09/03/08 17:07:12 XklWG2/f
「privateな抽象関数aa」は、class Bへ継承させても、継承されてないよ。だってprivateだもん。
562:名前は開発中のものです。
09/03/08 17:09:35 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:名前は開発中のものです。
09/03/08 17:11:14 XklWG2/f
>>724
564:名前は開発中のものです。
09/03/08 17:12:13 iZlPrvU5
>>724
virtual抜いたらコンパイルできない。
URLリンク(codepad.org)
「privateな抽象関数aa」は、pubicな aa()でもオーバーライドできるだろ
565:名前は開発中のものです。
09/03/08 17:15:16 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:名前は開発中のものです。
09/03/08 17:18:35 3kCVX1OJ
抽象関数を持つclass Aを継承したclassは、
class Aの抽象関数を実体化しなくてはいけない。
と思っていたのです。
そうではないのですね。
javaから入ったので不思議でした。
567:名前は開発中のものです。
09/03/08 17:25:14 iZlPrvU5
>>728
>class A の privateやvirtualなbb();とかあれば、
ねーよw
URLリンク(codepad.org)
568:名前は開発中のものです。
09/03/08 17:25:58 XklWG2/f
URLリンク(msugai.fc2web.com)
>アクセス修飾子の規則の例外として、private 修飾されたメソッドはオーバーライドできません。
JavaもC++も同じじゃないかな?
569:名前は開発中のものです。
09/03/08 17:27:59 XklWG2/f
>>730
>>728
ごめんそれも間違いだ。bb();とか無理です。
570:名前は開発中のものです。
09/03/08 17:31:31 3kCVX1OJ
privateな抽象関数を持つclass Aを継承したclass Bが実体化出来るのが不思議。
同class Aの抽象関数aaと同じ名前のpublicな関数をclass Bに作ったことで動く事が不思議。
同class Aの抽象関数aaを継承したclass Bでで作らないと実体化できない事が不思議。
なんかそんな感じです。
すみません。
571:名前は開発中のものです。
09/03/08 18:00:50 uTNKd2IK
プログラム板の初心者C++スレでやろうぜ・・・
572:名前は開発中のものです。
09/03/08 20:02:21 t0AdkGXJ
Javaは違うのかもしれんがC++はそういう仕様なんでしょ
メンバ変数も違うアクセス修飾詞でオーバーライドできるし
抽象関数を持ったクラスはそれを派生させて実装したクラスでないと実体化できんのはJavaでも同じでしょ
573:名前は開発中のものです。
09/03/09 00:20:55 vdPDd+Q/
javaって派生先の仮想関数のアクセス修飾を変えれなかったんじゃなかったっけ?
574:名前は開発中のものです。
09/03/09 00:54:10 4v1RPow6
オブジェクト指向も度がすぎると、使われもしないゴミクラスが
沢山残る罠。
575:名前は開発中のものです。
09/03/09 01:02:27 4v1RPow6
↑ただ単に今一、配慮を怠ったクラスを書くと
そういう事になると言うのをいいたかっただけ。
576:名前は開発中のものです。
09/03/09 01:43:12 j7Fn6gwa
継承が多くても、STG中にキャストする様なオブジェクトとかあんまり無いと思うけどな
オブジェクト指向とか言うほど大げさなモノでも無い
抽象基底クラスを作り、それの配列かコンテナに継承した子のオブジェクトをいれる
遷移するモノならインターフェースを作り、継承した状態のオブジェクトを保存しておくだろ
あんまり思い浮かばない。 楽につくる事が優先だ
577:名前は開発中のものです。
09/03/09 02:29:20 nD/Sv/Tx
敵とか敵弾とか継承してもどうせ分けて扱っちゃうし・・・
578:名前は開発中のものです。
09/03/09 05:33:07 s3+yn2Ga
け、継承って何だ、クラスって何だ
敵の構造体とか、弾の構造体でいいだろっ
動的確保?知らんがな(´・ω・`)
579:名前は開発中のものです。
09/03/09 05:50:33 nD/Sv/Tx
いちいち動的確保なんかしてたら弾幕の生成でめちゃくちゃ処理落ちする
俺は最初に作っとくの
580:名前は開発中のものです。
09/03/09 10:04:04 c/sep/SW
ボス戦とかどうしてるんだ。
予め発射される弾の数を決めてるってことか?
581:名前は開発中のものです。
09/03/09 10:41:10 s3+yn2Ga
一万発分くらい確保しとけばおkkkkkk
582:名前は開発中のものです。
09/03/09 10:48:15 nD/Sv/Tx
>>743
一体何万発確保するつもり?
決めるといっても、せいぜい2~3000発程度。これ以上多いとメモリ云々以前にゲームとして無理。
583:名前は開発中のものです。
09/03/09 12:24:29 c/sep/SW
いや、そういう意味じゃない。
ボス戦だと、ボス倒すまで延々と戦闘が続く訳じゃん。
合計弾発射数は、実質無限な訳じゃん? ということは、どっかで弾リストのクリーンナップでもしてるんだろ?
どうやって要らない弾とそうでないのとか分けてるのかと。
584:名前は開発中のものです。
09/03/09 12:30:20 c/sep/SW
それとさ、普通はbullet[]にしろリストにしろ、実際に格納されてるのはbulletクラスを継承した
StreightBulletクラスとかAccelBulletとかcurveBulletな訳じゃん。
newしないでどうやって使いまわすの?
585:名前は開発中のものです。
09/03/09 12:36:43 nD/Sv/Tx
>StreightBulletクラスとかAccelBulletとかcurveBulletな訳じゃん。
こんなことしてねーもんwww
586:名前は開発中のものです。
09/03/09 12:39:35 4gpR4arb
画面外に出たりどっかにぶつかったら未使用状態に戻せばいいだけ
クラスだけで動作変えてるならそりゃnew必要でしょう
587:名前は開発中のものです。
09/03/09 12:40:29 nD/Sv/Tx
ちなみにこれ
>どうやって要らない弾とそうでないのとか分けてるのかと。
リスト2つ作ればいいじゃん
588:名前は開発中のものです。
09/03/09 12:42:50 9YN/v32z
クラスだけで動作変えるとかないわ
本人は継承を有効活用してるつもりだろうが、無駄でしかない
589:名前は開発中のものです。
09/03/09 12:45:34 s3+yn2Ga
>>746
俺リストよくわからん
弾にフラグもたせてて設置されているなら1、設置されていないなら0
置かれた順にソートもしてるぞ。設置する時に空いてる弾拾ってきて構造体の仮想連結の最後にくっつけてフラグON
弾が削除される瞬間に前後の番号の弾連結してから弾の構造体のメンバ初期化してフラグをOFF
590:名前は開発中のものです。
09/03/09 12:48:31 M8Y9J7eH
>>750
>>492(というかそこからの一連の流れ)みたいな感じ?
あと動的確保するだけでそんな処理落ちする?
クラスだけで動作変えるってのがよく分からない
あとそうじゃなかったらどう動作を変えるの?
591:名前は開発中のものです。
09/03/09 12:53:40 c/sep/SW
えー、みんな曲射弾とか加速/減速弾とか誘導弾とか重力弾とか拡散/炸裂弾とか別々のクラスにしてないのー?
別々のクラスにしておけば拡張が簡単だよ?
592:名前は開発中のものです。
09/03/09 12:53:40 L17yPJfy
>>747
うん、newしないと継承が使えなくなって不便な面はある。
でも弾が多くなってくると、それを差し引いてもnewしない事によるパフォーマンス的なメリットはあるよ。実際スペックしょぼいノートPCで試したら30fpsが60fpsになったし。
593:名前は開発中のものです。
09/03/09 12:53:44 nD/Sv/Tx
>>753
あぁ、ちょうどこんな感じ、STLは使ってないけど
処理落ちは量によってはする。弾数の多いn-way弾とか、出現と消失が頻繁なときとか。
最近のPCじゃ気にならないだろう。それだけに、こんなに話題が続くとは思ってなかったがw
>あとそうじゃなかったらどう動作を変えるの?
動作の部分だけ別に作る
594:名前は開発中のものです。
09/03/09 12:56:34 c/sep/SW
なるほど。弾種類からswitchしてprivate staticメソッドを呼ぶのかw なんかそれも変な気もするが。
595:名前は開発中のものです。
09/03/09 12:57:43 nD/Sv/Tx
>>757
馬鹿?
596:名前は開発中のものです。
09/03/09 12:58:29 s3+yn2Ga
>>754
弾の行動をひたすら書いてるソースファイルがある
特にキモイ動きさせたくなければ無指示でも動くし指示しまくれば弾が増えたりグラフィック変わったりどんな奇天烈な動作もお手の物
597:名前は開発中のものです。
09/03/09 13:02:11 9YN/v32z
>>757
動作分岐でswitchしか知らないのか
598:名前は開発中のものです。
09/03/09 13:17:02 wiYT9l9H
弾1発ごとにnewしてdeleteしてたらメモリに断片できまくらない?
599:名前は開発中のものです。
09/03/09 13:33:25 Q0zoLpbu
total memoryが1MB位しか無いenvironmentなら話はotherだが、
今時そんなところを気にしても仕方ないぞ。
心配ならboost::pool使っとけ。
booooostが気に食わないなら、弾の継承クラスを全て包含した共用体で配列を作って
placement newすればいい。
600:名前は開発中のものです。
09/03/09 13:35:45 M8Y9J7eH
>>753
なるほどね、大体把握(したと思うw)
>動作の部分だけ別に作る
これってどんな感じ?
俺のイメージ的には
bullet{
bulletがもってるステータス(位置とか)
moveA(){ /* 動作A */};
moveB(){ /* 動作B */};
}
こんな感じなんだけど
それとももっと手続き的?な感じなのかな
601:名前は開発中のものです。
09/03/09 13:46:24 4gpR4arb
関数ポインタ持たせてもいいけど、動きはスクリプトにして実行時に読ませることもあるしなあ
602:名前は開発中のものです。
09/03/09 13:52:06 nD/Sv/Tx
>>763
弾に直接はもたせない。デリゲートする。
603:名前は開発中のものです。
09/03/09 13:54:05 9YN/v32z
スクリプトはもう別の話だろう
設計自体が大きく変わる
604:名前は開発中のものです。
09/03/09 13:58:24 L17yPJfy
>>765
言語にもよるだろうけどdelegate作るとnewと同様コストかかんない?
605:名前は開発中のものです。
09/03/09 14:02:36 nD/Sv/Tx
>>767
デリゲートっていうと大げさか。所詮ポインタ演算だし。関数ポインタとどっこい。
気に食わなきゃ>>762でもしてろってこった。でも「いちいちnew」は絶対にやだね。
606:名前は開発中のものです。
09/03/09 14:41:27 DKKqMNCl
1フレーム内で100も200もnewしなければいいだけの話で、
new/deleteをそこまで毛嫌いすることも無いと思うお。
ちなみに俺はnewしたものはdeleteせずにプールして使いまわしてる。
クラスごとにプールが出来てテラカオスw
607:名前は開発中のものです。
09/03/09 14:46:04 M8Y9J7eH
>>766
そういう設計の話もしていいんじゃない?
というか参考にしたいから色々話をしててくれると助かる
>>768
うん、とりあえず「デリゲート」ってのを初めて知ったよw
簡単にググって調べただけだから全然理解できてないけど
オブジェクト指向版の関数ポインタみたいな感じかな?
>>763の例でいくとbullet以外にmoveobjがあって
その中にメソッドmoveA、moveBがあるみたいな感じでおk?
思ったんだけど「STG」でまとめてるけど弾幕系なのか否かで最適な設計も変わってくるよな
608:名前は開発中のものです。
09/03/09 14:47:13 nD/Sv/Tx
俺はID:c/sep/SWに突っ込まれたから答えてただけ
609:名前は開発中のものです。
09/03/09 14:55:43 nD/Sv/Tx
>>770
まぁそんな感じ。汚いから多分もっとちゃんとした実装考えるけど。
610:名前は開発中のものです。
09/03/09 14:56:41 9YN/v32z
>>770
スクリプトの解析は実行時にやるしか方法はないのか?
611:名前は開発中のものです。
09/03/09 15:15:38 M8Y9J7eH
>>772
サンクス
いや勉強になったわ
>>773
ん、俺へのレス?
612:名前は開発中のものです。
09/03/09 19:45:24 yVcj05z4
いつも思うんだけど、このスレでは一度newとdeleteを自分で定義する方法を
教えた方がいい希ガス。
newが重いなんてのは、newをオーバーライドできることを知らない奴の戯言だろう。
613:名前は開発中のものです。
09/03/09 20:01:59 c/sep/SW
アブストラクト尺取りパターンっていうあれだな!
……すまん、それってjavaでもできるの?>newのオーバーライド
614:名前は開発中のものです。
09/03/09 20:08:44 Q0zoLpbu
お前それただjava言いたいだけちゃうんかと
615:名前は開発中のものです。
09/03/09 20:10:05 VLwDy1Z0
>>776
Javaはそもそも演算子オーバーライドをサポートしてないな。(文字列の+除く)
C#もnewはサポートしてないと思う。
616:名前は開発中のものです。
09/03/09 20:21:37 c/sep/SW
ともかく。
いちいち弾丸を作成させる際にnewを使わないのは、ゲームにおける総使用メモリ量をむやみやたらと増やさないためだろ?
だとすれば、bulletクラスの中に総ての弾丸の動作なりパラメータを突っ込むのも、ましてや弾丸ひとつひとつがスクリプト動作なんてのも、
決して奨められるべき軽量化の仕組みじゃないんじゃねえか。
まあ、弾丸の最大出現数くらいは制限をかけてしかるべきだと思うけども。
617:名前は開発中のものです。
09/03/09 20:33:00 vlsfOe2n
ID:c/sep/SWは>>757からちっとも成長がないな…
618:名前は開発中のものです。
09/03/09 20:37:29 iQeP+3UH
>>779
逆でございます。
619:名前は開発中のものです。
09/03/09 20:41:09 9TcJmEGm
ひとつのパターンに凝り固まって他の可能性とその技術を考えられないんだな、
ある意味、全くの無知よりたちが悪い。
620:名前は開発中のものです。
09/03/09 20:54:50 hDtxD0U6
人それをバカの壁という
621:名前は開発中のものです。
09/03/09 20:58:05 xoToA8tC
何でもかんでも出来る1000byteくらいの弾クラスを10000発用意しておいてもメモリは10MBだろ。
PCで作ってる分には何ら問題ないじゃん。
newをゲーム中にしたくないのはコストがでかくてボトルネックになるからだ。
とマジレス。
自信ないけどマジレスになってるよね?
622:名前は開発中のものです。
09/03/09 21:04:45 DKKqMNCl
>>784
「1フレームあたりX回以上newすれば処理落ちが発生する」とかいう目安というか、カンみたいなものがあるなら良いんじゃね。
実際にnew/deleteがどれだけ重いのか評価する手法でもあればいいんだが。
623:名前は開発中のものです。
09/03/09 21:11:35 c/sep/SW
newの実質的なコストって生成時にmallocを発行してる部分くらいじゃないの。
ま、デストラクタがあれば、そこも処理に影響するんだろうけど。
624:名前は開発中のものです。
09/03/09 21:34:19 vlsfOe2n
>>785
>実際にnew/deleteがどれだけ重いのか評価する手法
メモリ断片化とか色々あって、線形的には求まらない予感
エンドの環境依存も大きいし
俺が賭け事で弱いので、カンとかあんまり頼れない
625:名前は開発中のものです。
09/03/09 22:56:30 86T0U1dK
実際にゲームを作ってみて重いと感じたら別の方法を模索すればいいだけの話だと思うんだがな。
626:名前は開発中のものです。
09/03/09 23:26:04 YtHLVg0L
やっぱ new にはコストかかるのか
俺はそうだと思っていったんある程度の量を最初に確保してから使い回そうと考えたこともあったな
結局面倒になって適宜 new にして使ってるけど
まあ俺は激しい弾幕使ってないから大して困らないのだろうけど
いったんある程度の量を最初に確保してから使い回す方法を取ってる本もあったな
627:名前は開発中のものです。
09/03/09 23:34:30 frstm+EJ
メモリの断片化か・・・根深い問題だな。自由度を増やせば増やすほどに異常が増えていく。
ある程度複雑になると、突然例外大発生だもんな。どうにかならないものか。
628:名前は開発中のものです。
09/03/09 23:44:57 JKHKOtra
性的確保&構造体リスト最強説
256本もリスト作ったから変なソートいらないZE☆
629:名前は開発中のものです。
09/03/09 23:49:48 hDtxD0U6
>>791
なんだかエロいな
630:名前は開発中のものです。
09/03/10 02:09:56 is2LuZ0W
関数WinMainの中にすべてを詰め込んで、
「シングルトンって言うのかな、等身大の自分に合った小悪魔的デザインパターン☆」
とか言ってるやつってなんなの
631:名前は開発中のものです。
09/03/10 08:19:34 YODFEaFk
名前聞けばいいだろ
632:名前は開発中のものです。
09/03/10 08:20:22 XEibpF8L
タスクマネージャ使うと分かると思うけど、東方は普通に50MBとか食ってるぞ
たぶん起動時にものすごい量の弾を確保してるんだと思う
それにしても、あの化け物じみた描画速度はなんなんだ・・・・
633:名前は開発中のものです。
09/03/10 09:46:51 z6f1lzf6
構造体リストと普通のジェネリックなLinkedListってなんか違うのか?
むしろ、リスト構造そのもののパフォーマンスでいえばArrayListの方が高い訳だし、構造体リストにこだわる必要は無いような。
634:名前は開発中のものです。
09/03/10 10:37:13 xhsEfov4
newのコストもだけど、GCがある言語(C#,D言語等)ではGCが動くコストも馬鹿に出来ない。これはnewする瞬間じゃなくてゲーム中常にかかる恐れがあるから性質が悪い。
635:名前は開発中のものです。
09/03/10 11:57:08 zS8jCfA2
構造体リストに限定した話なんて誰もしていない件
636:名前は開発中のものです。
09/03/10 12:24:14 iLQTzUsY
>>795
まあ片手間とはいえ本職ゲームプログラマの作品だし・・・・・
ただ、いくら弾幕でも弾はせいぜい同時1000発ほど
容量を食ってるのはテクスチャとか音声だろう
637:名前は開発中のものです。
09/03/10 12:38:17 BXbMSorN
DirectX本スレでも東方ネタで酷いコンニャク問答があったな
さすがにこのスレにはPix for Windowsと東方(体験版含む)の
両方がそろえられないパソコン初心者は居ないだろうな?
638:名前は開発中のものです。
09/03/10 13:04:35 zS8jCfA2
何の話だ
639:名前は開発中のものです。
09/03/10 13:11:23 BXbMSorN
>>795 起動時にものすごい量の弾を確保
>>799 せいぜい同時1000発から
が激しく可笑しかったという話
640:名前は開発中のものです。
09/03/10 13:40:55 WjmOfCMU
>>800
Pixなんちゃらも初めて知ったし東方は要るの?
東方をやろうとも思わないわけなんだけど
641:名前は開発中のものです。
09/03/10 13:57:07 qoncgAvF
PIXはDirectXのSDKいれてりゃあるだろ。
オレも東方は動画でちょっと見ただけだな。
642:名前は開発中のものです。
09/03/10 14:12:22 BXbMSorN
>>803
否
東方が特別とは思ってない
たまたま、dat落ちしていたDirectX本スレのネタを思い出したぐらいの関連
643:名前は開発中のものです。
09/03/10 14:24:10 FYjcJP4e
そのたまたま思い出したネタが
あたかもこのスレの人間全員に通じるように
いきなり語りだした心理状態が理解できない。
644:名前は開発中のものです。
09/03/10 14:27:20 WjmOfCMU
>>804
ほんとだ、入ってるわ。知らんかった
>>805
東方のことはわかった
でもPIXの方は使えてないとダメって意味じゃないの?
ここにくるからには「ゲームを作りたい」と思ってるのは確かだけど
DirectXの扱い(というか製作工程?)に熟練してるのを前提にしてるのはおかしくない?
そりゃ例えばC言語の基礎がわからないとかなら話は別だけど・・・
645:名前は開発中のものです。
09/03/10 14:31:43 NZS10vbU
そもそもプログラマしか居ないわけじゃないし…
646:名前は開発中のものです。
09/03/10 15:20:21 BXbMSorN
自治厨みたいに取られたとしたら、誤解だ
滑稽な笑い話だと思ったので、キツメの冗談をいれただけ
/_ |
/. \ ̄ ̄ ̄ ̄|
/ / ― ― |
| / - - |
||| (6 > |
| | | ┏━┓| / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| | | | ┃─┃| < 正直、すまんかった。
|| | | | \ ┃ ┃/ \________
| || | |  ̄  ̄|
自分の環境でもC++は現役じゃない、読めても書けない
だが、このスレは役立ってる もっとやれ
647:名前は開発中のものです。
09/03/10 15:32:06 is2LuZ0W
今日のキチガイはID:BXbMSorNか
648:名前は開発中のものです。
09/03/10 15:45:52 xIah3Ja8
はいはい、自虐風自慢自虐風自慢
649:名前は開発中のものです。
09/03/10 17:18:21 z6f1lzf6
よくわからんが、DXの重さとプログラム自体の重さがごっちゃになってないか?って話だろ多分。
だって、テクスチャとかってDXならVRAMのほうにキャッシュされるじゃん、とかそういう感じ?
そもそも東方で使ってるテクスチャとかイメージとか全部足してもそんな大きいものにならんよな。
650:名前は開発中のものです。
09/03/10 18:55:33 w5LZNudx
>>795
東方はスタート時に最大2000の弾の構造体用意して弾作るときに空きフラグ探してるだけのような雰囲気だけどね
弾幕眺めていると弾作成順序と描画順序が合ってないときがあるし
651:名前は開発中のものです。
09/03/10 20:00:35 EAZXIwPU
まったく話が先に進まんね
652:名前は開発中のものです。
09/03/10 20:34:40 WjmOfCMU
>>795の真意がわからないけどその前までの話は動的確保か静的確保かって話でしょ?
俺は詳しく分からないけどnew、deleteが原因で重くなるってのはどれぐらいからなの?
あと話変わるけどみんなどんな開発環境でやってる?
今どんな感じで進めようか考えてるところなんだけど色々参考にしたい
c++でDirectX使って自分でライブラリ作って進めるのとかってかなり根気いるよな?
やっぱDXライブラリとかseleneとかでやってる人の方が多いのかな
653:名前は開発中のものです。
09/03/10 21:10:45 7gM7pWnB
>>815
対象OS: Windows/Linux
エディタ: vi
使用言語: C++, Perl
コンパイラ: gcc
ライブラリ(GUI): SDL
ライブラリ(画像処理): SDL_image, SDL_ttf
ライブラリ(音声処理): SDL_mixer
Windows専用: MinGW(Windows版gcc), MSYS(Autoconf実行環境)
その他ツール: Autoconf, Automake(Makefile自動生成), make, Subversion(バージョン管理システム), Trac(バグトラッキングシステム)
画像関連ツール: GIMP(ペイント系のお絵かきソフト?), 発色弾(爆発画像生成)
音声関連ツール: Rosegarden(MIDIシーケンサ), Audacity(DAWソフト), OggEnc(OGG Vorbisエンコーダ)
654:名前は開発中のものです。
09/03/10 21:39:11 r1vtyYFk
>>815
私は勉強のためにC++とDirectXでやってますね。大規模なライブラリを使うのにはやや抵抗が。。
初心者脱却すればそういうこともなくなるんでしょうかね。
655:名前は開発中のものです。
09/03/10 23:44:39 TZYyXrii
URLリンク(www.freem.ne.jp)
コピペ? 本人降臨でもさほど驚かないな
>>815
SlimDX
ソースが公開されていないことには話にならない
656:815
09/03/11 02:06:14 p1QxzQFQ
おお、結構色々あるんだな
ゲームを早く作るってことなら既成のライブラリ使った方が速いだろうけど
DirectXの勉強もしときたいんだよな
なかなか悩ましいところだ
657:名前は開発中のものです。
09/03/11 03:45:10 VaF0H100
解像度ってどうしてる?
640x480もいいけど320x240の荒さも美しい。
658:名前は開発中のものです。
09/03/11 07:27:36 w8fCzJC6
縦長だろ常考
659:名前は開発中のものです。
09/03/11 08:05:24 4/xdNvp5
8*16最高
660:名前は開発中のものです。
09/03/11 08:33:34 Tp27eIn2
>>820 Mode Xか。
Mode 13hも便利だったけど。Mode Xもいいよね。
661:名前は開発中のものです。
09/03/12 19:20:39 1+6JKHL2
バカのバカによるバカのための井戸端会議
時々天才現る煽りもあるよ
でいいですか?
662:名前は開発中のものです。
09/03/12 19:29:26 1+6JKHL2
ジャンル: シューティング
対象OS: Windows/Linux
使用言語: C++, Perl
コンパイラ: gcc
この時点ですでに終わ(ry
それに気づかずにレスする奴も終わ(ry
日時: 2008/09/04 13:45
てか半年前ですか
663:名前は開発中のものです。
09/03/12 19:50:28 1+6JKHL2
#include <stdio.h>
class Object;
class Object{ public: virtual void Insert( Object* object ) = 0; };
class Penis : public Object{ public: virtual void Insert( Object* object ); };
class Vagina : public Object{ public: virtual void Insert( Object* object ); };
void Penis::Insert( Object *object ) {
if( object == Penis ) // 型判定
printf( "OMG!!\n" );
}
void Vagina::Insert( Object *object ){
if( object == Penis ) // 型判定
printf( "YES!!\n" );
}
型判定の方法忘れた
664:名前は開発中のものです。
09/03/12 20:13:16 9E1Rxsqt
typeofか.classだろ
665:名前は開発中のものです。
09/03/12 20:16:47 oJVouOUF
>『様々な質問に対する万能レス』
>
>Q. 制作が進まない。スレがうまく機能しない。盛り上がらない。人がいない。
> やる気がでない。思い通りにいかない。雰囲気が悪い。なんとなくムカつく。
> 気に入らない奴がいる。作業しない奴がいる。他企画を潰したい。
>
>A. まずは自演しろ、話はそれからだ。
を実演してくれてるだよ 生暖かく見守ってやれよ
666:名前は開発中のものです。
09/03/13 19:00:14 FmG/VDzc
例えば何かを失うとしても
守っていかなきゃ
ひとつだけは
667:名前は開発中のものです。
09/03/15 15:51:11 5K3GjlrZ
らめぇ
668:名前は開発中のものです。
09/03/16 11:17:49 eNBXNzM0
「悔しいのに・・・感じちゃうっ(ビクンビクン」
669:名前は開発中のものです。
09/03/17 01:22:02 e6BdzSZL
public class Loli extends Applet
{
いやぁ、らめぇ……そんな、こすっ、たらぁ……
なんか、んっ、で……ちゃう……
おしっこ、おしっこでちゃうよぉ……
あン、いやっ、やらぁ……!
ん、んんっ、は、はぁ、あ、あぁぁ!
だ、めぇ……きちゃ……んはぁ!!
あ、ああぁぁぁらめぇぇええぇぇ!!!!
あっ、くっ、んぁ、ひ、あああぁっ!!!!
}
670:名前は開発中のものです。
09/03/17 14:16:32 cJ6We/Al
(´・ω・`)ハァハァ
671:名前は開発中のものです。
09/03/17 16:18:35 VdQyhofw
(´・ω・`)やんのかてめー
672:名前は開発中のものです。
09/03/17 16:25:50 e6BdzSZL
しゃぶれよ
673:名前は開発中のものです。
09/03/17 20:20:22 BzIoAHhs
この一連のレスに新しいSTGのアイデアが隠されているかもしれない。
674:名前は開発中のものです。
09/03/17 20:36:51 120cRAoh
自機が精子で卵子を目指すSTG作れ
675:名前は開発中のものです。
09/03/17 20:41:23 H84ZNjLE
そのへんはフィロソマやR-TYPE⊿でやってないか?
・・・自機じゃないか
676:826
09/03/17 21:02:04 2sMEY88Z
続き
void main() {
Object *penis = new Penis;
Object *oninnin = new Penis;
penis->Insert( oninnin );
}
677:名前は開発中のものです。
09/03/17 22:42:14 cJ6We/Al
>>839
コンパイルエラー「移植性のない挿入行為」
678:名前は開発中のものです。
09/03/17 22:45:38 kQgGzQTB
おいおい、ウィンドウズプロフェッショナルゲームプログラミング読んだやつ居ないのかよ。
一般流通している専門書で
CCSakura->InsertStick(); //サクラたんに肉棒をハァハァ
みたいなのを載せた名著なんだが。 そろそろちょっと古いか。 多分2002年辺りの本。
679:名前は開発中のものです。
09/03/17 23:52:35 cJ6We/Al
CCSakura->InsertStick(); //サクラたんに肉棒をハァハァ に一致する情報は見つかりませんでした。
検索のヒント:
・キーワードに誤字・脱字がないか確認します。
・別のキーワードを試してみます。
・もっと一般的なキーワードに変えてみます。
・キーワードの数を減らしてみます。
680:名前は開発中のものです。
09/03/18 08:09:09 S/V1EoOn
その1行だけで誰が書いた本かわかるから困る
681:名前は開発中のものです。
09/03/18 11:37:40 zud1sGUj
コードとコメントが一致してないが
682:名前は開発中のものです。
09/03/18 12:32:55 yzxa8Eak
そうだよな。
stick->tukiage()とか
stick->grind()とかを実行した後にorgsumイベントが飛んできて、その時stick->shotzamen()が呼ばれてstickがdisElectになって、
それでstickを格納してるotakuクラスのgetMode()がkenjyaModeを返すようになって初めて
//さくらたんハァハァ
だよな。
683:名前は開発中のものです。
09/03/18 12:47:44 RAb/8Q9d
CCSakura->InsertStick();
だと、
//サクラたんがスティックを挿入
と書くのが自然。
引数が無いし文脈もよく分からんが、少なくとも「挿入される」とは読みにくい。
684:名前は開発中のものです。
09/03/18 22:47:34 qMfWPeJK
こっちでどうだ?
Oresama->Insert( CCSakura );
685:名前は開発中のものです。
09/03/18 23:14:54 uTQJ+Za+
やねうらおさんの本か!なら仕方ないw
686:名前は開発中のものです。
09/03/18 23:18:25 RAb/8Q9d
>>847
もはや>>841とは別の話になるけどな
687:名前は開発中のものです。
09/03/19 00:19:40 lp2wnfCw
私は、いのりがだぁぁぁい好きです。とくに、プリキュアになった時が、1ばーんすきかなぁ…
皆さん。どうかぁぁぁぁぁぁぁ私のいのりを応援してぇぇぇ。
そして、私のいのりをよろしくぅぅぅぅぅ。…っあ、でもぉぉぉぉ
もちろん いのり はぁぁぁぁぁ
私の私の私のぉぉ いのり だからね。
キュアピーチちゃんからのメッセージ
もかですみすみなぎさちゃん九条ひかりちゃん雪白ほのかちゃん日向さきちゃん夢原のぞみちゃん夏木りんちゃんみみのくるみちゃん水無月かれんちゃん
秋元こまちやん春日野うららちゃん桃園らぶちゃん蒼野みきちゃん山吹いのりちゃん忘年会やつて楽しい食事会やりたい津端あみちゃんとお話おしましたキュアピーチより
688:名前は開発中のものです。
09/03/19 00:55:26 Z816WPjh
マジキチ