5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

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

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

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

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

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

924 :名前は開発中のものです。:2009/03/28(土) 18:58:02 ID:V/k8J2vR
そろそろXXパターンで組んだってわかるようにクラス名に反映するのはよそうぜ。

925 :名前は開発中のものです。:2009/03/28(土) 19:52:30 ID:BvaX6KYT
敵は楽だな
基本 → EnemyPrototype
敵1 → Enemy01
敵2 → Enemy02
敵3 → Enemy03
敵4 → Enemy04
敵5 → Enemy05
これは楽だね プロトタイプパターン

926 :名前は開発中のものです。:2009/03/28(土) 20:37:22 ID:BvaX6KYT
機体ごとにパラメータを変化させるにはDecoratorパターンが有効だね
基本 → DecoratorPlayer
機体1 → Player01
機体2 → Player02
機体3 → Player03
機体4 → Player04
機体5 → Player05
機体6 → Player06
いやぁパターンは楽になるね

927 :名前は開発中のものです。:2009/03/28(土) 20:49:33 ID:lxZcFexf
そうだな
お前は春休みぐらい友達と何処かに遊びに行けよ

928 :名前は開発中のものです。:2009/03/28(土) 21:19:21 ID:BvaX6KYT
>>927
>折角C++使っても全部switchしか手が無い

929 :名前は開発中のものです。:2009/03/28(土) 21:25:15 ID:lxZcFexf
ID:BvaX6KYTは 「906はショボイ」の一言を伝えるのに
こんなにレスを消費しないイケナイという事がわかった


大変だね(´・ω・`)

930 :名前は開発中のものです。:2009/03/28(土) 21:43:18 ID:BvaX6KYT
>>929
こんなにレスを消費しないイケナイという事がわかった

931 :名前は開発中のものです。:2009/03/28(土) 21:47:00 ID:lxZcFexf
こんなにレスを消費しない"と"イケナイという事がわかった

932 :名前は開発中のものです。:2009/03/28(土) 22:32:26 ID:BvaX6KYT
そうだな
お前は春休みぐらい友達と何処かに遊びに行けよ

こんなにレスを消費しない"と"イケナイという事がわかった

933 :名前は開発中のものです。:2009/03/28(土) 23:06:26 ID:BvaX6KYT
老害ジジイをみて思ったのだが、能力がないくせにプライドだけは一人前の使えない
新人の30年後の姿なんだろうね(逆なら、ジジイの30年前の姿が今の新人)

934 :名前は開発中のものです。:2009/03/28(土) 23:18:19 ID:BvaX6KYT
定年過ぎても独身で女には全く縁のなく、
オタク系や変態男が多い。

定年に近い人に変な人が多い気がした。

簡単に言うと動物園

正当化するあたりがね、DQNを通り越して変人だと思う。

学歴がどうこう言ってるやつにまともな人は少ないw

陰湿なやつ多いし、なんか終わってるというか!

60歳以上のじじいに変人多いよな マンコ、マンコってレンコする奴

たち悪い!高卒で入って今年でI年目になる女!チクチク言ってくるよ…器せまっ!!
ってしょっちゅう思ってる自分がいる☆

935 :名前は開発中のものです。:2009/03/28(土) 23:21:23 ID:CP3bamwP
またキチガイが沸いてるよ

936 :名前は開発中のものです。:2009/03/28(土) 23:23:38 ID:BvaX6KYT
すいません
私独自の開発した
対キチガイミサイルなんです

937 :名前は開発中のものです。:2009/03/28(土) 23:27:44 ID:lxZcFexf
2ch歴浅いけど、本物キチガイと遭遇したよ
過去ログの幼稚なパターン厨かと思ったら、それ以下だったな

938 :名前は開発中のものです。:2009/03/29(日) 01:00:46 ID:Ol+RNP7n
>>656のパターン厨じゃないの。
全然>>906を理解できていないし。

939 :名前は開発中のものです。:2009/03/29(日) 02:15:40 ID:d/WDwujV
ぉゃっょ

940 :名前は開発中のものです。:2009/03/29(日) 02:32:14 ID:DbfbvsH9
ヵッォ、ぉゃっゎ ぁっぃ ぉゅょ

941 :名前は開発中のものです。:2009/03/29(日) 02:43:44 ID:FCDCeteh
老害老害っていつも同じこと言ってるけど
どっかでおっさんにこっぴどく叩かれたんだろうな

942 :名前は開発中のものです。:2009/03/29(日) 03:44:54 ID:lZ8POZAJ
はいはい勃起勃起

943 :名前は開発中のものです。:2009/03/29(日) 05:28:51 ID:redkwKER
>>923
「画面」のクラスなんだから、パターンは関係ねー。
ここでの弾クラスがbulletで敵クラスがenemyのように、分かりやすいプレ(リア)フィックスを点けれ。
一般的には2Dゲームだと、表示系がCanvasになるから、
mainCanvas titleCanvas selectCanvas みたいに付けるのが一般的だが、
3DゲームだとSchineとかにするのがいいらしいね。
全般的にはもっと抽象的にViewとかにしてもいいかもしれない。


944 :名前は開発中のものです。:2009/03/29(日) 06:24:14 ID:6HRCOm5i
某本によれば、メンバ関数だけど
drawGameTitle とか drawGameMain だったりした

945 :名前は開発中のものです。:2009/03/29(日) 08:49:54 ID:FX3dpUqj
>>941
老害のおっさん以外だったらこういう奴とも仲良くできるような事書くなよw
何処でも相手しねーよこんなの

組み込み言語で繰り返しや、sin,cosを直にスクリプトに書けるのもスゲーが、
配列で運搬出来る様な原始的なスクリプトも自動生成出来るのでおいしいです。

富豪的には自動生成した物を

946 :名前は開発中のものです。:2009/03/29(日) 08:53:22 ID:FX3dpUqj
続き

富豪的には自動生成した物を、組み込み言語で読み上げたり、中に
ハードコーディングしたりとかも出来ちゃうんだろうな

947 :名前は開発中のものです。:2009/03/29(日) 09:51:21 ID:bVDwy6iR
そうや、BulletMLは使っている人いないのか?

948 :名前は開発中のものです。:2009/03/30(月) 09:16:55 ID:Bov4VD4y
29日午後8時55分ごろ、大阪市北区角田町で、大阪府枚方市のネイリストの女性(21)が
、近づいてきた2人組の男に「遊ぼうや」と声をかけられた。女性が無視したところ、男の1人
がいきなり女性の顔面を殴り、ナイフでほほを切りつけた。男らは走って逃げ、女性は顔に
軽傷を負った。女性は友人女性(21)と一緒にいたが、友人は無事だった。曽根崎署は
傷害容疑で捜査している。

949 :名前は開発中のものです。:2009/03/30(月) 11:57:28 ID:vlV9IOZj
はいはい勃起勃起

950 :名前は開発中のものです。:2009/03/30(月) 13:51:50 ID:DTzDKGyx
意味判らん

951 :名前は開発中のものです。:2009/03/30(月) 14:56:36 ID:7NVi2nBu
>>943
Viewは、World*View*Projを何度も使う3Dではややこしくないか?

952 :名前は開発中のものです。:2009/03/30(月) 16:01:14 ID:kjBKEg9u
//テーブル初期化
:
45[SIN] = 2[SQRT] / 2.0;
:

↑この前こんな感じの見かけたんだけど、今時これはないと思った

953 :名前は開発中のものです。:2009/03/30(月) 17:51:34 ID:Bov4VD4y

szExceptionTitle db "Exception",0

szWindows2000Required db "This application requires NT 5.0 (2000) or later versions of Windows system",0

szErrorSymDefFileNotFound db "The symbolic definition file has not found",0

szErrorSpecSymDefNotFound db "A specific symbolic definition has not found",0

szErrorFileNotReadable db "Could not open or read a specified file",0

szErrorInvalidSize db "The size of symbolic definition file is invalid",0

szErrorBomMismatch db "The byte order mark of symbolic definition file is not the UTF-16 unicode format",0

szErrorOutOfMemory db "Out of memory",0

szErrorMessageFormat db "A fatal exception has occured at procedure ID %08u:",0Dh,0Ah,0Dh,0Ah,"%s.",0


954 :名前は開発中のものです。:2009/03/30(月) 17:52:20 ID:Bov4VD4y
push OFFSET PerformRandomSeedExchangeProc
push 1
push SIZEOF PT_EXCHANGE_RANDOM_SEED
call ExchangeData
test ecx,ecx
mov eax,[lpLargeBuffer]
jl ProcessTerminated
cmp [eax + PT_PUBLIC_CONTROL_WORD.ControlWord],ACT_EXCHANGE_RANDOM_SEED
jne @b
cmp ecx,SIZEOF PT_EXCHANGE_RANDOM_SEED
jne @b
cmp [bHost],0
lea ecx,[edi + CONTEXT.regEax]
jne @f
mov eax,[eax + PT_EXCHANGE_RANDOM_SEED.Seed]
mov [ecx],eax


955 :名前は開発中のものです。:2009/03/30(月) 20:32:01 ID:MsfTb8Bc
もはやCコンパイラを自作したほうが楽なレベル

956 :名前は開発中のものです。:2009/03/31(火) 00:11:44 ID:DQD5khQB
>>952
double sin[360];
double sqrt[1000];

sin[45] = sqrt[2] / 2.0;

ってこと?

957 :名前は開発中のものです。:2009/03/31(火) 01:33:09 ID:jA3Wyd63
何気なくsinとかatanとか使ってるけど、結局それらの関数って
本来めちゃくちゃコストがかかる計算のはずだよな?
なら、やっぱりゲーム的には精度落としてテーブル実装にするのがモアベターなのかなあ。

958 :名前は開発中のものです。:2009/03/31(火) 01:35:57 ID:7Dccknp/
>>957
計算式で求めない確定した数値なら、テーブルのほうがベターじゃねーかな。
結局は、作り手の選択な部分なんで、絶対な解法というのはないよ。

959 :名前は開発中のものです。:2009/03/31(火) 01:36:09 ID:+yfcmkdB
携帯ゲームなら効果あるかも、って認識だ
今時のPCゲームで数学関数がボトルネックになるなんて考えられない
そもそもそこを気にするんならまず描画をやめれ

960 :名前は開発中のものです。:2009/03/31(火) 03:22:49 ID:TlPvCoUd
プロファイリングすれば分かるが携帯とかでも無い限り>>957案は逆に遅くなる
下手な考え何とやら

961 :名前は開発中のものです。:2009/03/31(火) 04:22:06 ID:DdunG5bw
じゃあ座標も少数型でいいんだね?

962 :名前は開発中のものです。:2009/03/31(火) 05:20:12 ID:AlfaWHG9
>座標も少数型
DirectXなので当然そうなる

というか、>>961の脳内にだけ誤差とかで上手くいかない状況があるんじゃね?

963 :名前は開発中のものです。:2009/03/31(火) 09:46:08 ID:6nFXdL0R
計算処理がテーブル参照一回分よりコスト低いなんて普通に考えたら信じられんのだが。

964 :名前は開発中のものです。:2009/03/31(火) 10:03:31 ID:lrQoi4db
まあ、バカにはわからんよ。

テープル参照と三角関数のベンチマークを
ランダムな引数で比較してみろよw


965 :名前は開発中のものです。:2009/03/31(火) 10:13:48 ID:Z60UL3VO
CPUの動作を理解しないと、テーブル参照と三角関数の速度差は理解出来んだろうからな。
つ〜か、キャッシュ絡みの動作は分かりにくい。

966 :名前は開発中のものです。:2009/03/31(火) 10:54:26 ID:6nFXdL0R
少なくとも俺が組んだプログラムでは
テーブル参照の方が10分の1のコストで済んでいた。

どういう組み方すれば三角関数の方が早くなるのか教えて欲しい。

967 :名前は開発中のものです。:2009/03/31(火) 11:20:46 ID:NJFMHqzD
関数のほうは、#pragmaとかで処理系の最適化を効かせた?
まあそれでもテーブルの方が速いってことは十分ありえるが

968 :名前は開発中のものです。:2009/03/31(火) 17:37:45 ID:AlfaWHG9
繰り返す話題だけど、環境依存があって当然の物の話だろ?
>>966のPCで特殊な結果が出たなら、珍しいねとしか言えない

969 :名前は開発中のものです。:2009/03/31(火) 17:52:51 ID:oMQsq3DX
環境が分からんから話が交錯するのです。
速度とか書き込む前に少なくともOS・CPUスペック・RAM容量・言語・住所・氏名を明示しましょう。

970 :名前は開発中のものです。:2009/03/31(火) 18:03:17 ID:EoCekJlW
この手の話題、過去に何度も出てくるけど、
ベンチマーク用のサンプルソースが示されないのはなんで?

論ずるよりもそれ実行すれば一発で納得できると思うんだけど
そんなに特殊なプログラムなの?

971 :名前は開発中のものです。:2009/03/31(火) 18:08:55 ID:wt58uqRX
描画以外の速度なんざ誤差
可読性重視

972 :名前は開発中のものです。:2009/03/31(火) 18:35:26 ID:YrEQyE+G
sinfじゃなくてsinを使うとコンシューマーでは遅くなるが。

973 :名前は開発中のものです。:2009/03/31(火) 18:55:24 ID:DdunG5bw
ああ俺はDXライブラリを使ってたから…
DirectXなら当然のことなのか
ついでに動的使う負荷も無視できるのかな
あれってvirtual宣言した時点で動的と判断されて負荷かかるのかな

974 :名前は開発中のものです。:2009/03/31(火) 19:30:48 ID:e23bhJED
コイツってさ、質問が意味を成してないよな
設計する為に継承したり、インターフェース用意したりしてるんじゃねーの?
手元に1行も自分が書いたソースねーだろw

まさに>>888

975 :名前は開発中のものです。:2009/03/31(火) 20:01:42 ID:eRxRYNY8
// sin関数
dblData = 0.0f;
intTime1 = GetTickCount();
for ( i = 0; i < 100000; i++)
{
dblData = sin ( 0.5f);
}
intTime2 = GetTickCount();
intKekka1 = intTime2 - intTime1;

// グローバルメモリ参照
dblData = 0.0f;
intTime1 = GetTickCount();
for ( i = 0; i < 100000; i++)
{
dblData = dblSin[i];
}
intTime2 = GetTickCount();
intKekka2 = intTime2 - intTime1;

これで、intKekka1が16、intKekka2が0
コンパイラ VS C++ 2008
Dual core 1.6GHz メモリの速度は忘れた。
C++のsinが多項式でいってるのかとか、どこまで精度だしてるかは不明。


976 :名前は開発中のものです。:2009/03/31(火) 20:04:29 ID:eRxRYNY8
100000→1000000で
intKekka1が188、intKekka2が15
VS C++のsinだとメモリ参照したほうが早い
他のコンパイラは、ここになかったんで不明



977 :名前は開発中のものです。:2009/03/31(火) 20:07:14 ID:C8QskIEz
関数がvirtualであることと擬似sinとライブラリ組み込みsinの速度が違うことに関係は無い……

978 :名前は開発中のものです。:2009/03/31(火) 20:07:31 ID:AlfaWHG9
どう見ても釣りです。 本当にありがとうございました。

キャッシュを一言も挟まない辺り狙ってるなw

979 :978:2009/03/31(火) 20:11:04 ID:AlfaWHG9
>>975
>Dual core 1.6GHz メモリの速度は忘れた。
Dualとか関係無いのはさすがに判るよね?

そこに書かなきゃいけないのは、CPUの2次キャッシュの大きさと、dblSin配列の大きさ


980 :名前は開発中のものです。:2009/03/31(火) 20:12:13 ID:EVrWm6RK
>>978
文句ばっか言ってないでお前の環境での結果を見せればいんじゃね?

981 :名前は開発中のものです。:2009/03/31(火) 20:12:53 ID:C8QskIEz
>>975
いや、sin[i]じゃないだろjk。
public double sinex(double rad)
{
for(int i=1;i<tbl.size();i++)
{
if(rad>tbl[i-1] && rad<tbl[i])return tbl[i];
}
return 0;
}
とかこんな感じじゃね?

982 :名前は開発中のものです。:2009/03/31(火) 20:14:58 ID:C8QskIEz
いやごめん忘れて。角度に関して、最初から整数で丸める実装にすればいちいちテーブル範囲参照しないでいいんだな。おkだ。

983 :名前は開発中のものです。:2009/03/31(火) 20:22:33 ID:ZKYAtsRN
>>975
テーブルを頭から走査したら駄目だろw
それでベンチマークになってると思ってるのかね。

それと、そのコードって最適化かかるとまずいんじゃない?
変数をvolatileで宣言してれば平気かもしれんが。

984 :名前は開発中のものです。:2009/03/31(火) 20:23:51 ID:C8QskIEz
>>979
整数実装にすれば(0が0度、64が180度(1PI),96が270度(1.5PI)みたいな設計にしてるなら配列のサイズ関係ないっぽいぜ。
もちろん、それの前処理としてのiが渡ってくる過程が重要になるけど。

それにしたって*1000くらいしたあとに %128とかで片付ければいいだけなのでそんなにコストがかかってるとは思わないけどな。

985 :名前は開発中のものです。:2009/03/31(火) 20:33:35 ID:eRxRYNY8
>>979
2次キャッシュが1024Kbyte
dblSinの大きさは、8000000byte

>>983
for ( i = 0; i < 1000000; i++)
{
intNo[i] = ((float)rand() / (float)RAND_MAX)* 1000000.0f;
}

dblData = 0.0f;
intTime1 = GetTickCount();
for ( i = 0; i < 1000000; i++)
{
dblData = dblSin[ intNo[i]];
}
intTime2 = GetTickCount();
intKekka2 = intTime2 - intTime1;

ランダムいれてみて、intKekka2が31。
今のやり方だとまだテーブルのほうが速い。

986 :名前は開発中のものです。:2009/03/31(火) 20:38:11 ID:eRxRYNY8
>>983
volatileはつけてる。



987 :名前は開発中のものです。:2009/03/31(火) 20:40:53 ID:eRxRYNY8
>>977
ライブラリ組み込みのsinの求めかたってコンパイラが違っても
計算のやり方同じなん?
gccでもVCでも同じ?

988 :名前は開発中のものです。:2009/03/31(火) 20:47:49 ID:DdunG5bw
別にvirtural とsin との問題に絡めて聞いたわけでなく
速度繋がりでついでに別個の問題として聞いたわけだが

989 :名前は開発中のものです。:2009/03/31(火) 20:49:04 ID:C8QskIEz
ライブラリ組み込み関数って大抵はgccの方が圧倒的に遅いんじゃないかなw

990 :名前は開発中のものです。:2009/03/31(火) 21:14:20 ID:+ipl15Vv
つーか、全体の処理の中でボトルネックになってるかどうかを確認するべきだと思うんだが。
今時三角関数省いたくらいで喜ぶなよ。

991 :名前は開発中のものです。:2009/03/31(火) 21:35:55 ID:WEsXEB63
シューティングなんぞループと加算と描画と三角関数くらいしか使わないもんだし、その中の一つ が削れただけでも影響は結構大きいかもだ

992 :名前は開発中のものです。:2009/03/31(火) 22:05:59 ID:yOP/w+uJ
「テーブル参照より三角関数の方が早い」って言う人がいて、
「サンプルプログラム示して実行させれば誰もが納得するだろ」って話になってるのに
「環境で変わるから〜」とか
「三角関数省いたくらいで喜ぶな」とか意味わからん。

993 :名前は開発中のものです。:2009/03/31(火) 22:16:26 ID:AlfaWHG9
現実にはミスキャッシュが起こるわけで、ソレの再現をすればよい
734msのダミーコードを追加した

intKekka1   750  実質 16ms
intKekka2   766  実質 32ms

for ( i = 0; i < 100000; i++)
{
 for ( j = 0; j < 100000; j++)
   tt = otherMemory[j]; //ダミーコード
}
intTime2 = GetTickCount();
dummyOnly = intTime2 - intTime1;

for ( i = 0; i < 100000; i++)
{
 dblData = sin ( 0.5f);
 for ( j = 0; j < 100000; j++)
   tt = otherMemory[j];
}
intTime2 = GetTickCount();
intKekka1 = intTime2 - intTime1;

// グローバルメモリ参照(←ヒープでいいよね?)
dblData = 0.0f;
intTime1 = GetTickCount();
for ( i = 0; i < 100000; i++)
{
 dblData = dblSin[ intNo[i]];
 for ( j = 0; j < 100000; j++)
   tt = otherMemory[j];

994 :名前は開発中のものです。:2009/03/31(火) 23:04:17 ID:0FYQSp1G
現実には割と続けて使われることも多いわけで、
そこまで明らかにミスキャッシュを誘発させるベンチはどうなんだろうね。

あと、dblSin[ intNo[i]]; だとテーブル二段階アクセスになるから
ちょっと不利な計測の仕方でしょ。

995 :名前は開発中のものです。:2009/03/31(火) 23:15:34 ID:WEsXEB63
誰か次スレたのむ

996 :名前は開発中のものです。:2009/03/31(火) 23:35:56 ID:AlfaWHG9
>>994
doubleData[i] = (double)rand() / (double)RAND_MAX;
なる配列を加えて、
dblData = sin ( doubleData[i]);
にした

kekka1 734
kekka2 781

確かに、画像の回転ぐらいやらせんと説得力ないな

997 :名前は開発中のものです。:2009/03/31(火) 23:57:28 ID:oMQsq3DX
妊娠してしまいますが

998 :名前は開発中のものです。:2009/04/01(水) 00:02:19 ID:NFPupAwb
埋め

999 :名前は開発中のものです。:2009/04/01(水) 00:10:27 ID:LuCgRd4k
シューティングで使う角度って10万も分割するのか……。

1000 :名前は開発中のものです。:2009/04/01(水) 00:12:11 ID:HvCh7B+t
http://pc11.2ch.net/test/read.cgi/gamedev/1212237657/

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

252 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)