シューティングゲーム製作技術総合 17機目
レス数が1000を超えています。これ以上書き込みはできません。
0001名前は開発中のものです。
2008/11/27(木) 10:18:19ID:bBI1A+d5それは「シューティングゲーム製作」・・・。
このスレでは、そんなシューティングゲームの製作技術や技術の検証、成功談
失敗談笑い話、難易度の設定方法論、多弾の是非などについて語り合いましょう。
もちろんBulletMLなどで弾幕を作成してみたり、自分の作ったシューティングを
晒してみたり、プロジェクトをはじめてみるなどもOK!
ただし、シューティングの未来とか既存のゲームの話題などは、関連する他の
スレでやってくれ。
過去スレ,関連スレは >>2-3で。
0918名前は開発中のものです。
2009/03/28(土) 11:25:05ID:lxZcFexf<SC>は sub commandだよな?
多分こんな奴で、
char script[] ={
QDD, //下行く (アドレス0)
_IF_EQU,F_whlr,7 //自機との相対的左右判定
QRR, //右に行く
_JUMP,0 //ループ
QLL, //左に行く (※8文字目 アドレスは7)
_JUMP,0 //ループ
};
どう?>>917
実装はオートマトンとかマシン語とかで、
折角C++使っても全部switchしか手が無い
Excelなら、目的アドレスを自動で吐くExcel式が書けそう
0919917
2009/03/28(土) 13:57:34ID:+5Y/r4Hnどうって言われてもな。たしか、Turbo C++の本だったよな?
外部エディッタを作ってゲームを作る発想は、昔の本にしては評価できる。
が、スクリプトに限定して見るならあまりにも原始的すぎる。こんな所か。
ちなみに俺の場合はC言語っぽい汎用俺様言語を作った。パッと見はC言語モドキだ。
もうちょい早くLuaとか知ってたら、そっち使ってたかもしれない。
0920917
2009/03/28(土) 14:13:33ID:+5Y/r4Hn//敵[0]の動作
int Enemy_0(){
int n;
move(角度,速度);
n=0;while(n<休憩時間){pause;n+=1;}
move(角度,速度);
n=0;while(n<休憩時間){pause;n+=1;}
move(角度,速度);
return 0;
}
ちなみにpause命令で処理をスクリプトからプログラムに戻してる。
0921名前は開発中のものです。
2009/03/28(土) 14:15:46ID:Ffh5P52X0922名前は開発中のものです。
2009/03/28(土) 15:05:13ID:lxZcFexfやっぱLuaだな
yaccもテンプレートも使わないので組み込みやすくて良い
0923名前は開発中のものです。
2009/03/28(土) 18:55:52ID:BvaX6KYTクラス名にこまった
タイトル→ StrategyTitle
機体選択 → StrategySelect
ゲーム中 → Strategy???
どんなクラス名がいいと思う?
0924名前は開発中のものです。
2009/03/28(土) 18:58:02ID:V/k8J2vR0925名前は開発中のものです。
2009/03/28(土) 19:52:30ID:BvaX6KYT基本 → EnemyPrototype
敵1 → Enemy01
敵2 → Enemy02
敵3 → Enemy03
敵4 → Enemy04
敵5 → Enemy05
これは楽だね プロトタイプパターン
0926名前は開発中のものです。
2009/03/28(土) 20:37:22ID:BvaX6KYT基本 → DecoratorPlayer
機体1 → Player01
機体2 → Player02
機体3 → Player03
機体4 → Player04
機体5 → Player05
機体6 → Player06
いやぁパターンは楽になるね
0927名前は開発中のものです。
2009/03/28(土) 20:49:33ID:lxZcFexfお前は春休みぐらい友達と何処かに遊びに行けよ
0928名前は開発中のものです。
2009/03/28(土) 21:19:21ID:BvaX6KYT>折角C++使っても全部switchしか手が無い
0929名前は開発中のものです。
2009/03/28(土) 21:25:15ID:lxZcFexfこんなにレスを消費しないイケナイという事がわかった
大変だね(´・ω・`)
0930名前は開発中のものです。
2009/03/28(土) 21:43:18ID:BvaX6KYTこんなにレスを消費しないイケナイという事がわかった
0931名前は開発中のものです。
2009/03/28(土) 21:47:00ID:lxZcFexf0932名前は開発中のものです。
2009/03/28(土) 22:32:26ID:BvaX6KYTお前は春休みぐらい友達と何処かに遊びに行けよ
こんなにレスを消費しない"と"イケナイという事がわかった
0933名前は開発中のものです。
2009/03/28(土) 23:06:26ID:BvaX6KYT新人の30年後の姿なんだろうね(逆なら、ジジイの30年前の姿が今の新人)
0934名前は開発中のものです。
2009/03/28(土) 23:18:19ID:BvaX6KYTオタク系や変態男が多い。
定年に近い人に変な人が多い気がした。
簡単に言うと動物園
正当化するあたりがね、DQNを通り越して変人だと思う。
学歴がどうこう言ってるやつにまともな人は少ないw
陰湿なやつ多いし、なんか終わってるというか!
60歳以上のじじいに変人多いよな マンコ、マンコってレンコする奴
たち悪い!高卒で入って今年でI年目になる女!チクチク言ってくるよ…器せまっ!!
ってしょっちゅう思ってる自分がいる☆
0935名前は開発中のものです。
2009/03/28(土) 23:21:23ID:CP3bamwP0936名前は開発中のものです。
2009/03/28(土) 23:23:38ID:BvaX6KYT私独自の開発した
対キチガイミサイルなんです
0937名前は開発中のものです。
2009/03/28(土) 23:27:44ID:lxZcFexf過去ログの幼稚なパターン厨かと思ったら、それ以下だったな
0939名前は開発中のものです。
2009/03/29(日) 02:15:40ID:d/WDwujV0940名前は開発中のものです。
2009/03/29(日) 02:32:14ID:DbfbvsH90941名前は開発中のものです。
2009/03/29(日) 02:43:44ID:FCDCetehどっかでおっさんにこっぴどく叩かれたんだろうな
0942名前は開発中のものです。
2009/03/29(日) 03:44:54ID:lZ8POZAJ0943名前は開発中のものです。
2009/03/29(日) 05:28:51ID:redkwKER「画面」のクラスなんだから、パターンは関係ねー。
ここでの弾クラスがbulletで敵クラスがenemyのように、分かりやすいプレ(リア)フィックスを点けれ。
一般的には2Dゲームだと、表示系がCanvasになるから、
mainCanvas titleCanvas selectCanvas みたいに付けるのが一般的だが、
3DゲームだとSchineとかにするのがいいらしいね。
全般的にはもっと抽象的にViewとかにしてもいいかもしれない。
0944名前は開発中のものです。
2009/03/29(日) 06:24:14ID:6HRCOm5idrawGameTitle とか drawGameMain だったりした
0945名前は開発中のものです。
2009/03/29(日) 08:49:54ID:FX3dpUqj老害のおっさん以外だったらこういう奴とも仲良くできるような事書くなよw
何処でも相手しねーよこんなの
組み込み言語で繰り返しや、sin,cosを直にスクリプトに書けるのもスゲーが、
配列で運搬出来る様な原始的なスクリプトも自動生成出来るのでおいしいです。
富豪的には自動生成した物を
0946名前は開発中のものです。
2009/03/29(日) 08:53:22ID:FX3dpUqj富豪的には自動生成した物を、組み込み言語で読み上げたり、中に
ハードコーディングしたりとかも出来ちゃうんだろうな
0947名前は開発中のものです。
2009/03/29(日) 09:51:21ID:bVDwy6iR0948名前は開発中のものです。
2009/03/30(月) 09:16:55ID:Bov4VD4y、近づいてきた2人組の男に「遊ぼうや」と声をかけられた。女性が無視したところ、男の1人
がいきなり女性の顔面を殴り、ナイフでほほを切りつけた。男らは走って逃げ、女性は顔に
軽傷を負った。女性は友人女性(21)と一緒にいたが、友人は無事だった。曽根崎署は
傷害容疑で捜査している。
0949名前は開発中のものです。
2009/03/30(月) 11:57:28ID:vlV9IOZj0950名前は開発中のものです。
2009/03/30(月) 13:51:50ID:DTzDKGyx0951名前は開発中のものです。
2009/03/30(月) 14:56:36ID:7NVi2nBuViewは、World*View*Projを何度も使う3Dではややこしくないか?
0952名前は開発中のものです。
2009/03/30(月) 16:01:14ID:kjBKEg9u:
45[SIN] = 2[SQRT] / 2.0;
:
↑この前こんな感じの見かけたんだけど、今時これはないと思った
0953名前は開発中のものです。
2009/03/30(月) 17:51:34ID:Bov4VD4yszExceptionTitle 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
0954名前は開発中のものです。
2009/03/30(月) 17:52:20ID:Bov4VD4ypush 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
0955名前は開発中のものです。
2009/03/30(月) 20:32:01ID:MsfTb8Bc0956名前は開発中のものです。
2009/03/31(火) 00:11:44ID:DQD5khQBdouble sin[360];
double sqrt[1000];
sin[45] = sqrt[2] / 2.0;
ってこと?
0957名前は開発中のものです。
2009/03/31(火) 01:33:09ID:jA3Wyd63本来めちゃくちゃコストがかかる計算のはずだよな?
なら、やっぱりゲーム的には精度落としてテーブル実装にするのがモアベターなのかなあ。
0958名前は開発中のものです。
2009/03/31(火) 01:35:57ID:7Dccknp/計算式で求めない確定した数値なら、テーブルのほうがベターじゃねーかな。
結局は、作り手の選択な部分なんで、絶対な解法というのはないよ。
0959名前は開発中のものです。
2009/03/31(火) 01:36:09ID:+yfcmkdB今時のPCゲームで数学関数がボトルネックになるなんて考えられない
そもそもそこを気にするんならまず描画をやめれ
0960名前は開発中のものです。
2009/03/31(火) 03:22:49ID:TlPvCoUd下手な考え何とやら
0961名前は開発中のものです。
2009/03/31(火) 04:22:06ID:DdunG5bw0962名前は開発中のものです。
2009/03/31(火) 05:20:12ID:AlfaWHG9DirectXなので当然そうなる
というか、>>961の脳内にだけ誤差とかで上手くいかない状況があるんじゃね?
0963名前は開発中のものです。
2009/03/31(火) 09:46:08ID:6nFXdL0R0964名前は開発中のものです。
2009/03/31(火) 10:03:31ID:lrQoi4dbテープル参照と三角関数のベンチマークを
ランダムな引数で比較してみろよw
0965名前は開発中のものです。
2009/03/31(火) 10:13:48ID:Z60UL3VOつ〜か、キャッシュ絡みの動作は分かりにくい。
0966名前は開発中のものです。
2009/03/31(火) 10:54:26ID:6nFXdL0Rテーブル参照の方が10分の1のコストで済んでいた。
どういう組み方すれば三角関数の方が早くなるのか教えて欲しい。
0967名前は開発中のものです。
2009/03/31(火) 11:20:46ID:NJFMHqzDまあそれでもテーブルの方が速いってことは十分ありえるが
0968名前は開発中のものです。
2009/03/31(火) 17:37:45ID:AlfaWHG9>>966のPCで特殊な結果が出たなら、珍しいねとしか言えない
0969名前は開発中のものです。
2009/03/31(火) 17:52:51ID:oMQsq3DX速度とか書き込む前に少なくともOS・CPUスペック・RAM容量・言語・住所・氏名を明示しましょう。
0970名前は開発中のものです。
2009/03/31(火) 18:03:17ID:EoCekJlWベンチマーク用のサンプルソースが示されないのはなんで?
論ずるよりもそれ実行すれば一発で納得できると思うんだけど
そんなに特殊なプログラムなの?
0971名前は開発中のものです。
2009/03/31(火) 18:08:55ID:wt58uqRX可読性重視
0972名前は開発中のものです。
2009/03/31(火) 18:35:26ID:YrEQyE+G0973名前は開発中のものです。
2009/03/31(火) 18:55:24ID:DdunG5bwDirectXなら当然のことなのか
ついでに動的使う負荷も無視できるのかな
あれってvirtual宣言した時点で動的と判断されて負荷かかるのかな
0974名前は開発中のものです。
2009/03/31(火) 19:30:48ID:e23bhJED設計する為に継承したり、インターフェース用意したりしてるんじゃねーの?
手元に1行も自分が書いたソースねーだろw
まさに>>888
0975名前は開発中のものです。
2009/03/31(火) 20:01:42ID:eRxRYNY8dblData = 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が多項式でいってるのかとか、どこまで精度だしてるかは不明。
0976名前は開発中のものです。
2009/03/31(火) 20:04:29ID:eRxRYNY8intKekka1が188、intKekka2が15
VS C++のsinだとメモリ参照したほうが早い
他のコンパイラは、ここになかったんで不明
0977名前は開発中のものです。
2009/03/31(火) 20:07:14ID:C8QskIEz0978名前は開発中のものです。
2009/03/31(火) 20:07:31ID:AlfaWHG9キャッシュを一言も挟まない辺り狙ってるなw
0979978
2009/03/31(火) 20:11:04ID:AlfaWHG9>Dual core 1.6GHz メモリの速度は忘れた。
Dualとか関係無いのはさすがに判るよね?
そこに書かなきゃいけないのは、CPUの2次キャッシュの大きさと、dblSin配列の大きさ
0980名前は開発中のものです。
2009/03/31(火) 20:12:13ID:EVrWm6RK文句ばっか言ってないでお前の環境での結果を見せればいんじゃね?
0981名前は開発中のものです。
2009/03/31(火) 20:12:53ID:C8QskIEzいや、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;
}
とかこんな感じじゃね?
0982名前は開発中のものです。
2009/03/31(火) 20:14:58ID:C8QskIEz0983名前は開発中のものです。
2009/03/31(火) 20:22:33ID:ZKYAtsRNテーブルを頭から走査したら駄目だろw
それでベンチマークになってると思ってるのかね。
それと、そのコードって最適化かかるとまずいんじゃない?
変数をvolatileで宣言してれば平気かもしれんが。
0984名前は開発中のものです。
2009/03/31(火) 20:23:51ID:C8QskIEz整数実装にすれば(0が0度、64が180度(1PI),96が270度(1.5PI)みたいな設計にしてるなら配列のサイズ関係ないっぽいぜ。
もちろん、それの前処理としてのiが渡ってくる過程が重要になるけど。
)
それにしたって*1000くらいしたあとに %128とかで片付ければいいだけなのでそんなにコストがかかってるとは思わないけどな。
0985名前は開発中のものです。
2009/03/31(火) 20:33:35ID:eRxRYNY82次キャッシュが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。
今のやり方だとまだテーブルのほうが速い。
0986名前は開発中のものです。
2009/03/31(火) 20:38:11ID:eRxRYNY8volatileはつけてる。
0987名前は開発中のものです。
2009/03/31(火) 20:40:53ID:eRxRYNY8ライブラリ組み込みのsinの求めかたってコンパイラが違っても
計算のやり方同じなん?
gccでもVCでも同じ?
0988名前は開発中のものです。
2009/03/31(火) 20:47:49ID:DdunG5bw速度繋がりでついでに別個の問題として聞いたわけだが
0989名前は開発中のものです。
2009/03/31(火) 20:49:04ID:C8QskIEz0990名前は開発中のものです。
2009/03/31(火) 21:14:20ID:+ipl15Vv今時三角関数省いたくらいで喜ぶなよ。
0991名前は開発中のものです。
2009/03/31(火) 21:35:55ID:WEsXEB630992名前は開発中のものです。
2009/03/31(火) 22:05:59ID:yOP/w+uJ「サンプルプログラム示して実行させれば誰もが納得するだろ」って話になってるのに
「環境で変わるから〜」とか
「三角関数省いたくらいで喜ぶな」とか意味わからん。
0993名前は開発中のものです。
2009/03/31(火) 22:16:26ID:AlfaWHG9734msのダミーコードを追加した
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];
0994名前は開発中のものです。
2009/03/31(火) 23:04:17ID:0FYQSp1Gそこまで明らかにミスキャッシュを誘発させるベンチはどうなんだろうね。
あと、dblSin[ intNo[i]]; だとテーブル二段階アクセスになるから
ちょっと不利な計測の仕方でしょ。
0995名前は開発中のものです。
2009/03/31(火) 23:15:34ID:WEsXEB630996名前は開発中のものです。
2009/03/31(火) 23:35:56ID:AlfaWHG9doubleData[i] = (double)rand() / (double)RAND_MAX;
なる配列を加えて、
dblData = sin ( doubleData[i]);
にした
kekka1 734
kekka2 781
確かに、画像の回転ぐらいやらせんと説得力ないな
0997名前は開発中のものです。
2009/03/31(火) 23:57:28ID:oMQsq3DX0998名前は開発中のものです。
2009/04/01(水) 00:02:19ID:NFPupAwb0999名前は開発中のものです。
2009/04/01(水) 00:10:27ID:LuCgRd4k1000名前は開発中のものです。
2009/04/01(水) 00:12:11ID:HvCh7B+t10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。