シューティングゲーム製作技術総合 17機目
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
2008/11/27(木) 10:18:19ID:bBI1A+d5それは「シューティングゲーム製作」・・・。
このスレでは、そんなシューティングゲームの製作技術や技術の検証、成功談
失敗談笑い話、難易度の設定方法論、多弾の是非などについて語り合いましょう。
もちろんBulletMLなどで弾幕を作成してみたり、自分の作ったシューティングを
晒してみたり、プロジェクトをはじめてみるなどもOK!
ただし、シューティングの未来とか既存のゲームの話題などは、関連する他の
スレでやってくれ。
過去スレ,関連スレは >>2-3で。
0725名前は開発中のものです。
2009/03/08(日) 17:09:35ID:3kCVX1OJそう思います。
でもこれが通らないんです。
#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;
};
0726名前は開発中のものです。
2009/03/08(日) 17:11:14ID:XklWG2/f0727名前は開発中のものです。
2009/03/08(日) 17:12:13ID:iZlPrvU5virtual抜いたらコンパイルできない。
http://codepad.org/MaZEDgo2
「privateな抽象関数aa」は、pubicな aa()でもオーバーライドできるだろ
0728名前は開発中のものです。
2009/03/08(日) 17:15:16ID:XklWG2/fごめん間違えた。
「privateな抽象関数aa」は、class Bへ継承されているが class Bのpublic aa();の方が優先だから、
class Bのpublic aa();にしかアクセス出来ない。
ここでclass A の privateやvirtualなbb();とかあれば、継承されるから、
int main(void){
B b;
b.bb();
とかで使えると思う。
0729名前は開発中のものです。
2009/03/08(日) 17:18:35ID:3kCVX1OJclass Aの抽象関数を実体化しなくてはいけない。
と思っていたのです。
そうではないのですね。
javaから入ったので不思議でした。
0730名前は開発中のものです。
2009/03/08(日) 17:25:14ID:iZlPrvU5>class A の privateやvirtualなbb();とかあれば、
ねーよw
http://codepad.org/aEfKdVPO
0731名前は開発中のものです。
2009/03/08(日) 17:25:58ID:XklWG2/f>アクセス修飾子の規則の例外として、private 修飾されたメソッドはオーバーライドできません。
JavaもC++も同じじゃないかな?
0732名前は開発中のものです。
2009/03/08(日) 17:27:59ID:XklWG2/f>>728
ごめんそれも間違いだ。bb();とか無理です。
0733名前は開発中のものです。
2009/03/08(日) 17:31:31ID:3kCVX1OJ同class Aの抽象関数aaと同じ名前のpublicな関数をclass Bに作ったことで動く事が不思議。
同class Aの抽象関数aaを継承したclass Bでで作らないと実体化できない事が不思議。
なんかそんな感じです。
すみません。
0734名前は開発中のものです。
2009/03/08(日) 18:00:50ID:uTNKd2IK0735名前は開発中のものです。
2009/03/08(日) 20:02:21ID:t0AdkGXJメンバ変数も違うアクセス修飾詞でオーバーライドできるし
抽象関数を持ったクラスはそれを派生させて実装したクラスでないと実体化できんのはJavaでも同じでしょ
0736名前は開発中のものです。
2009/03/09(月) 00:20:55ID:vdPDd+Q/0737名前は開発中のものです。
2009/03/09(月) 00:54:10ID:4v1RPow6沢山残る罠。
0738名前は開発中のものです。
2009/03/09(月) 01:02:27ID:4v1RPow6そういう事になると言うのをいいたかっただけ。
0739名前は開発中のものです。
2009/03/09(月) 01:43:12ID:j7Fn6gwaオブジェクト指向とか言うほど大げさなモノでも無い
抽象基底クラスを作り、それの配列かコンテナに継承した子のオブジェクトをいれる
遷移するモノならインターフェースを作り、継承した状態のオブジェクトを保存しておくだろ
あんまり思い浮かばない。 楽につくる事が優先だ
0740名前は開発中のものです。
2009/03/09(月) 02:29:20ID:nD/Sv/Tx0741名前は開発中のものです。
2009/03/09(月) 05:33:07ID:s3+yn2Ga敵の構造体とか、弾の構造体でいいだろっ
動的確保?知らんがな(´・ω・`)
0742名前は開発中のものです。
2009/03/09(月) 05:50:33ID:nD/Sv/Tx俺は最初に作っとくの
0743名前は開発中のものです。
2009/03/09(月) 10:04:04ID:c/sep/SW予め発射される弾の数を決めてるってことか?
0744名前は開発中のものです。
2009/03/09(月) 10:41:10ID:s3+yn2Ga0745名前は開発中のものです。
2009/03/09(月) 10:48:15ID:nD/Sv/Tx一体何万発確保するつもり?
決めるといっても、せいぜい2〜3000発程度。これ以上多いとメモリ云々以前にゲームとして無理。
0746名前は開発中のものです。
2009/03/09(月) 12:24:29ID:c/sep/SWボス戦だと、ボス倒すまで延々と戦闘が続く訳じゃん。
合計弾発射数は、実質無限な訳じゃん? ということは、どっかで弾リストのクリーンナップでもしてるんだろ?
どうやって要らない弾とそうでないのとか分けてるのかと。
0747名前は開発中のものです。
2009/03/09(月) 12:30:20ID:c/sep/SWStreightBulletクラスとかAccelBulletとかcurveBulletな訳じゃん。
newしないでどうやって使いまわすの?
0748名前は開発中のものです。
2009/03/09(月) 12:36:43ID:nD/Sv/Txこんなことしてねーもんwww
0749名前は開発中のものです。
2009/03/09(月) 12:39:35ID:4gpR4arbクラスだけで動作変えてるならそりゃnew必要でしょう
0750名前は開発中のものです。
2009/03/09(月) 12:40:29ID:nD/Sv/Tx>どうやって要らない弾とそうでないのとか分けてるのかと。
リスト2つ作ればいいじゃん
0751名前は開発中のものです。
2009/03/09(月) 12:42:50ID:9YN/v32z本人は継承を有効活用してるつもりだろうが、無駄でしかない
0752名前は開発中のものです。
2009/03/09(月) 12:45:34ID:s3+yn2Ga俺リストよくわからん
弾にフラグもたせてて設置されているなら1、設置されていないなら0
置かれた順にソートもしてるぞ。設置する時に空いてる弾拾ってきて構造体の仮想連結の最後にくっつけてフラグON
弾が削除される瞬間に前後の番号の弾連結してから弾の構造体のメンバ初期化してフラグをOFF
0753名前は開発中のものです。
2009/03/09(月) 12:48:31ID:M8Y9J7eH>>492(というかそこからの一連の流れ)みたいな感じ?
あと動的確保するだけでそんな処理落ちする?
クラスだけで動作変えるってのがよく分からない
あとそうじゃなかったらどう動作を変えるの?
0754名前は開発中のものです。
2009/03/09(月) 12:53:40ID:c/sep/SW別々のクラスにしておけば拡張が簡単だよ?
0755名前は開発中のものです。
2009/03/09(月) 12:53:40ID:L17yPJfyうん、newしないと継承が使えなくなって不便な面はある。
でも弾が多くなってくると、それを差し引いてもnewしない事によるパフォーマンス的なメリットはあるよ。実際スペックしょぼいノートPCで試したら30fpsが60fpsになったし。
0756名前は開発中のものです。
2009/03/09(月) 12:53:44ID:nD/Sv/Txあぁ、ちょうどこんな感じ、STLは使ってないけど
処理落ちは量によってはする。弾数の多いn-way弾とか、出現と消失が頻繁なときとか。
最近のPCじゃ気にならないだろう。それだけに、こんなに話題が続くとは思ってなかったがw
>あとそうじゃなかったらどう動作を変えるの?
動作の部分だけ別に作る
0757名前は開発中のものです。
2009/03/09(月) 12:56:34ID:c/sep/SW0758名前は開発中のものです。
2009/03/09(月) 12:57:43ID:nD/Sv/Tx馬鹿?
0759名前は開発中のものです。
2009/03/09(月) 12:58:29ID:s3+yn2Ga弾の行動をひたすら書いてるソースファイルがある
特にキモイ動きさせたくなければ無指示でも動くし指示しまくれば弾が増えたりグラフィック変わったりどんな奇天烈な動作もお手の物
0760名前は開発中のものです。
2009/03/09(月) 13:02:11ID:9YN/v32z動作分岐でswitchしか知らないのか
0761名前は開発中のものです。
2009/03/09(月) 13:17:02ID:wiYT9l9H0762名前は開発中のものです。
2009/03/09(月) 13:33:25ID:Q0zoLpbu今時そんなところを気にしても仕方ないぞ。
心配ならboost::pool使っとけ。
booooostが気に食わないなら、弾の継承クラスを全て包含した共用体で配列を作って
placement newすればいい。
0763名前は開発中のものです。
2009/03/09(月) 13:35:45ID:M8Y9J7eHなるほどね、大体把握(したと思うw)
>動作の部分だけ別に作る
これってどんな感じ?
俺のイメージ的には
bullet{
bulletがもってるステータス(位置とか)
moveA(){ /* 動作A */};
moveB(){ /* 動作B */};
}
こんな感じなんだけど
それとももっと手続き的?な感じなのかな
0764名前は開発中のものです。
2009/03/09(月) 13:46:24ID:4gpR4arb0765名前は開発中のものです。
2009/03/09(月) 13:52:06ID:nD/Sv/Tx弾に直接はもたせない。デリゲートする。
0766名前は開発中のものです。
2009/03/09(月) 13:54:05ID:9YN/v32z設計自体が大きく変わる
0767名前は開発中のものです。
2009/03/09(月) 13:58:24ID:L17yPJfy言語にもよるだろうけどdelegate作るとnewと同様コストかかんない?
0768名前は開発中のものです。
2009/03/09(月) 14:02:36ID:nD/Sv/Txデリゲートっていうと大げさか。所詮ポインタ演算だし。関数ポインタとどっこい。
気に食わなきゃ>>762でもしてろってこった。でも「いちいちnew」は絶対にやだね。
0769名前は開発中のものです。
2009/03/09(月) 14:41:27ID:DKKqMNClnew/deleteをそこまで毛嫌いすることも無いと思うお。
ちなみに俺はnewしたものはdeleteせずにプールして使いまわしてる。
クラスごとにプールが出来てテラカオスw
0770名前は開発中のものです。
2009/03/09(月) 14:46:04ID:M8Y9J7eHそういう設計の話もしていいんじゃない?
というか参考にしたいから色々話をしててくれると助かる
>>768
うん、とりあえず「デリゲート」ってのを初めて知ったよw
簡単にググって調べただけだから全然理解できてないけど
オブジェクト指向版の関数ポインタみたいな感じかな?
>>763の例でいくとbullet以外にmoveobjがあって
その中にメソッドmoveA、moveBがあるみたいな感じでおk?
思ったんだけど「STG」でまとめてるけど弾幕系なのか否かで最適な設計も変わってくるよな
0771名前は開発中のものです。
2009/03/09(月) 14:47:13ID:nD/Sv/Tx0772名前は開発中のものです。
2009/03/09(月) 14:55:43ID:nD/Sv/Txまぁそんな感じ。汚いから多分もっとちゃんとした実装考えるけど。
0773名前は開発中のものです。
2009/03/09(月) 14:56:41ID:9YN/v32zスクリプトの解析は実行時にやるしか方法はないのか?
0774名前は開発中のものです。
2009/03/09(月) 15:15:38ID:M8Y9J7eHサンクス
いや勉強になったわ
>>773
ん、俺へのレス?
0775名前は開発中のものです。
2009/03/09(月) 19:45:24ID:yVcj05z4教えた方がいい希ガス。
newが重いなんてのは、newをオーバーライドできることを知らない奴の戯言だろう。
0776名前は開発中のものです。
2009/03/09(月) 20:01:59ID:c/sep/SW……すまん、それってjavaでもできるの?>newのオーバーライド
0777名前は開発中のものです。
2009/03/09(月) 20:08:44ID:Q0zoLpbu0778名前は開発中のものです。
2009/03/09(月) 20:10:05ID:VLwDy1Z0Javaはそもそも演算子オーバーライドをサポートしてないな。(文字列の+除く)
C#もnewはサポートしてないと思う。
0779名前は開発中のものです。
2009/03/09(月) 20:21:37ID:c/sep/SWいちいち弾丸を作成させる際にnewを使わないのは、ゲームにおける総使用メモリ量をむやみやたらと増やさないためだろ?
だとすれば、bulletクラスの中に総ての弾丸の動作なりパラメータを突っ込むのも、ましてや弾丸ひとつひとつがスクリプト動作なんてのも、
決して奨められるべき軽量化の仕組みじゃないんじゃねえか。
まあ、弾丸の最大出現数くらいは制限をかけてしかるべきだと思うけども。
0780名前は開発中のものです。
2009/03/09(月) 20:33:00ID:vlsfOe2n0781名前は開発中のものです。
2009/03/09(月) 20:37:29ID:iQeP+3UH逆でございます。
0782名前は開発中のものです。
2009/03/09(月) 20:41:09ID:9TcJmEGmある意味、全くの無知よりたちが悪い。
0783名前は開発中のものです。
2009/03/09(月) 20:54:50ID:hDtxD0U60784名前は開発中のものです。
2009/03/09(月) 20:58:05ID:xoToA8tCPCで作ってる分には何ら問題ないじゃん。
newをゲーム中にしたくないのはコストがでかくてボトルネックになるからだ。
とマジレス。
自信ないけどマジレスになってるよね?
0785名前は開発中のものです。
2009/03/09(月) 21:04:45ID:DKKqMNCl「1フレームあたりX回以上newすれば処理落ちが発生する」とかいう目安というか、カンみたいなものがあるなら良いんじゃね。
実際にnew/deleteがどれだけ重いのか評価する手法でもあればいいんだが。
0786名前は開発中のものです。
2009/03/09(月) 21:11:35ID:c/sep/SWま、デストラクタがあれば、そこも処理に影響するんだろうけど。
0787名前は開発中のものです。
2009/03/09(月) 21:34:19ID:vlsfOe2n>実際にnew/deleteがどれだけ重いのか評価する手法
メモリ断片化とか色々あって、線形的には求まらない予感
エンドの環境依存も大きいし
俺が賭け事で弱いので、カンとかあんまり頼れない
0788名前は開発中のものです。
2009/03/09(月) 22:56:30ID:86T0U1dK0789名前は開発中のものです。
2009/03/09(月) 23:26:04ID:YtHLVg0L俺はそうだと思っていったんある程度の量を最初に確保してから使い回そうと考えたこともあったな
結局面倒になって適宜 new にして使ってるけど
まあ俺は激しい弾幕使ってないから大して困らないのだろうけど
いったんある程度の量を最初に確保してから使い回す方法を取ってる本もあったな
0790名前は開発中のものです。
2009/03/09(月) 23:34:30ID:frstm+EJある程度複雑になると、突然例外大発生だもんな。どうにかならないものか。
0791名前は開発中のものです。
2009/03/09(月) 23:44:57ID:JKHKOtra256本もリスト作ったから変なソートいらないZE☆
0792名前は開発中のものです。
2009/03/09(月) 23:49:48ID:hDtxD0U6なんだかエロいな
0793名前は開発中のものです。
2009/03/10(火) 02:09:56ID:is2LuZ0W「シングルトンって言うのかな、等身大の自分に合った小悪魔的デザインパターン☆」
とか言ってるやつってなんなの
0794名前は開発中のものです。
2009/03/10(火) 08:19:34ID:YODFEaFk0795名前は開発中のものです。
2009/03/10(火) 08:20:22ID:XEibpF8Lたぶん起動時にものすごい量の弾を確保してるんだと思う
それにしても、あの化け物じみた描画速度はなんなんだ・・・・
0796名前は開発中のものです。
2009/03/10(火) 09:46:51ID:z6f1lzf6むしろ、リスト構造そのもののパフォーマンスでいえばArrayListの方が高い訳だし、構造体リストにこだわる必要は無いような。
0797名前は開発中のものです。
2009/03/10(火) 10:37:13ID:xhsEfov40798名前は開発中のものです。
2009/03/10(火) 11:57:08ID:zS8jCfA20799名前は開発中のものです。
2009/03/10(火) 12:24:14ID:iLQTzUsYまあ片手間とはいえ本職ゲームプログラマの作品だし・・・・・
ただ、いくら弾幕でも弾はせいぜい同時1000発ほど
容量を食ってるのはテクスチャとか音声だろう
0800名前は開発中のものです。
2009/03/10(火) 12:38:17ID:BXbMSorNさすがにこのスレにはPix for Windowsと東方(体験版含む)の
両方がそろえられないパソコン初心者は居ないだろうな?
0801名前は開発中のものです。
2009/03/10(火) 13:04:35ID:zS8jCfA20802名前は開発中のものです。
2009/03/10(火) 13:11:23ID:BXbMSorN>>799 せいぜい同時1000発から
が激しく可笑しかったという話
0803名前は開発中のものです。
2009/03/10(火) 13:40:55ID:WjmOfCMUPixなんちゃらも初めて知ったし東方は要るの?
東方をやろうとも思わないわけなんだけど
0804名前は開発中のものです。
2009/03/10(火) 13:57:07ID:qoncgAvFオレも東方は動画でちょっと見ただけだな。
0805名前は開発中のものです。
2009/03/10(火) 14:12:22ID:BXbMSorN否
東方が特別とは思ってない
たまたま、dat落ちしていたDirectX本スレのネタを思い出したぐらいの関連
0806名前は開発中のものです。
2009/03/10(火) 14:24:10ID:FYjcJP4eあたかもこのスレの人間全員に通じるように
いきなり語りだした心理状態が理解できない。
0807名前は開発中のものです。
2009/03/10(火) 14:27:20ID:WjmOfCMUほんとだ、入ってるわ。知らんかった
>>805
東方のことはわかった
でもPIXの方は使えてないとダメって意味じゃないの?
ここにくるからには「ゲームを作りたい」と思ってるのは確かだけど
DirectXの扱い(というか製作工程?)に熟練してるのを前提にしてるのはおかしくない?
そりゃ例えばC言語の基礎がわからないとかなら話は別だけど・・・
0808名前は開発中のものです。
2009/03/10(火) 14:31:43ID:NZS10vbU0809名前は開発中のものです。
2009/03/10(火) 15:20:21ID:BXbMSorN滑稽な笑い話だと思ったので、キツメの冗談をいれただけ
/_ |
/. \ ̄ ̄ ̄ ̄|
/ / ― ― |
| / - - |
||| (6 > |
| | | ┏━┓| / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| | | | ┃─┃| < 正直、すまんかった。
|| | | | \ ┃ ┃/ \________
| || | |  ̄  ̄|
自分の環境でもC++は現役じゃない、読めても書けない
だが、このスレは役立ってる もっとやれ
0810名前は開発中のものです。
2009/03/10(火) 15:32:06ID:is2LuZ0W0811名前は開発中のものです。
2009/03/10(火) 15:45:52ID:xIah3Ja80812名前は開発中のものです。
2009/03/10(火) 17:18:21ID:z6f1lzf6だって、テクスチャとかってDXならVRAMのほうにキャッシュされるじゃん、とかそういう感じ?
そもそも東方で使ってるテクスチャとかイメージとか全部足してもそんな大きいものにならんよな。
0813名前は開発中のものです。
2009/03/10(火) 18:55:33ID:w5LZNudx東方はスタート時に最大2000の弾の構造体用意して弾作るときに空きフラグ探してるだけのような雰囲気だけどね
弾幕眺めていると弾作成順序と描画順序が合ってないときがあるし
0814名前は開発中のものです。
2009/03/10(火) 20:00:35ID:EAZXIwPU0815名前は開発中のものです。
2009/03/10(火) 20:34:40ID:WjmOfCMU俺は詳しく分からないけどnew、deleteが原因で重くなるってのはどれぐらいからなの?
あと話変わるけどみんなどんな開発環境でやってる?
今どんな感じで進めようか考えてるところなんだけど色々参考にしたい
c++でDirectX使って自分でライブラリ作って進めるのとかってかなり根気いるよな?
やっぱDXライブラリとかseleneとかでやってる人の方が多いのかな
0816名前は開発中のものです。
2009/03/10(火) 21:10:45ID:7gM7pWnB対象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エンコーダ)
0817名前は開発中のものです。
2009/03/10(火) 21:39:11ID:r1vtyYFk私は勉強のためにC++とDirectXでやってますね。大規模なライブラリを使うのにはやや抵抗が。。
初心者脱却すればそういうこともなくなるんでしょうかね。
0818名前は開発中のものです。
2009/03/10(火) 23:44:39ID:TZYyXriiコピペ? 本人降臨でもさほど驚かないな
>>815
SlimDX
ソースが公開されていないことには話にならない
0819815
2009/03/11(水) 02:06:14ID:p1QxzQFQゲームを早く作るってことなら既成のライブラリ使った方が速いだろうけど
DirectXの勉強もしときたいんだよな
なかなか悩ましいところだ
0820名前は開発中のものです。
2009/03/11(水) 03:45:10ID:VaF0H100640x480もいいけど320x240の荒さも美しい。
0821名前は開発中のものです。
2009/03/11(水) 07:27:36ID:w8fCzJC60822名前は開発中のものです。
2009/03/11(水) 08:05:24ID:4/xdNvp50823名前は開発中のものです。
2009/03/11(水) 08:33:34ID:Tp27eIn2Mode 13hも便利だったけど。Mode Xもいいよね。
0824名前は開発中のものです。
2009/03/12(木) 19:20:39ID:1+6JKHL2時々天才現る煽りもあるよ
でいいですか?
■ このスレッドは過去ログ倉庫に格納されています