シューティングゲーム製作技術総合 2機目
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
04/01/10 21:07ID:hzI9eQA5それは「シューティングゲーム製作」・・・。
このスレでは、そんなシューティングゲームの製作技術や技術の検証、成功談
失敗談笑い話、難易度の設定方法論、多弾の是非などについて語り合いましょう。
もちろんBulletMLなどで弾幕を作成してみたり、自分の作ったシューティングを
晒してみたり、プロジェクトをはじめてみるなどもOK!
ただし、シューティングの未来とか既存のゲームの話題などは、関連する他の
スレでやってくれ。
■ 前スレ
シューティングゲーム製作技術総合
http://bbs.gamdev.org/test/read.cgi/gamedev/1056635103/
0136名前は開発中のものです。
04/01/28 12:45ID:6z9mWFVI俺は効率の追及以前に、自分にとっては高度すぎる配置と動きを組もうとして挫折したことがある
いまはやれる範囲でいろいろやってるので、時間がかかっても結果は出せてる
少しずつ高度なこともやれるようになってきた
0137名前は開発中のものです。
04/01/28 14:14ID:59+zu0I2道中が長いと面後半の調整は大変ですな。
昔作ったシューティングでは途中を飛ばす機能を入れておいた。
単に無敵にして目的の場所まで画面を表示しないようにしただけだけど。(w
当時は画面表示が占める処理が大きかったので結構使えた。
0138名前は開発中のものです。
04/01/28 15:04ID:6z9mWFVI表示しないモード、描画同期待ちしないモードの切り替えはいろいろ役立つな
0139名前は開発中のものです。
04/01/28 19:23ID:BrhzeRut0140名前は開発中のものです。
04/01/28 19:55ID:t2W4UT6r色んな角度に直進する動きだけ書いた敵動作関数にインデックス渡して、種類と動作関係フラグ毎に角度と速度決めて動かせばいいんでしょ?
0141名前は開発中のものです。
04/01/28 20:56ID:wWqy4BZN気が向いたら曲線も入れてやれ
0142名前は開発中のものです。
04/01/28 21:57ID:t2W4UT6r曲線なんていつ使うの?
1フレ毎に角度変えればいいだけじゃん。
0143名前は開発中のものです。
04/01/28 22:27ID:n5XtEH9qデータが小さくできるから変更が楽ですよ?
0144名前は開発中のものです。
04/01/28 22:50ID:UNXsAncS0145名前は開発中のものです。
04/01/28 23:50ID:t2W4UT6r便利な関数があるってわけだ。
0146名前は開発中のものです。
04/01/28 23:51ID:NHMF/MaTそれをなぞらせるだけのほうが開発効率いいかなぁとか最近オモタ
0147名前は開発中のものです。
04/01/29 10:51ID:sIo6BMgn毎フレーム、敵テーブルや敵配置マップから情報を読み取って、淡々と出現させるものと
一度にある一定数を出現させた後、プレイヤーが全部を倒すか、画面から消えるかすると
改めて、また一定数の敵を出現させる物
アーケードでは前者は怒首領蜂 大往生、後者は式神1が当てはまるな
0148名前は開発中のものです。
04/01/29 12:45ID:eU5sm3RC敵が自分で判断して挙動を変えたりとかはしないの?
0149名前は開発中のものです。
04/01/29 13:40ID:m6hm+YbS後者の代表例はゼビウス、スターフォース、ザナックあたりかな
出現時刻がアナログに変化するところが前者との大きな違いだ
前者のほうが確実に組めるので調整はしやすいが、
後者にもいろいろと可能性がありそう
0150名前は開発中のものです。
04/01/29 13:48ID:UL5pPhOq0151名前は開発中のものです。
04/01/29 15:15ID:m6hm+YbSZANACは敵消滅が次の敵のトリガになるわけじゃなかったね(キャラオーバー時のぞく)。
武器を取った瞬間にテーブルが変わって新しい敵が出る(ことがある)ので、それとごっちゃに語ってた。
0152名前は開発中のものです。
04/01/29 15:17ID:yY/wX3duしかし地形を意識しなくなると途端に作業が楽になるな。
0153名前は開発中のものです。
04/01/29 15:26ID:ymtBlT7p同人とかだと少なくない?
0154名前は開発中のものです。
04/01/29 15:44ID:m6hm+YbS時刻じゃなくてスクロールに同期してるよな
0155名前は開発中のものです。
04/01/29 17:13ID:yY/wX3du最近は美しい弾を多く出すことが重要なんで、近代〜近未来的な重厚なメカは流行らないからではないかな?
俺はGストリームのキャラに感動してたけど。(w
0156名前は開発中のものです。
04/01/29 19:14ID:2TZDu8Yt0157名前は開発中のものです。
04/01/29 20:53ID:SZOPAw1n敵と触れると爆発するという罠みたいな武器を作っているんだけど
爆弾が一個の時はうまく爆発アニメーションもしていけたのに
爆弾を5個にしたらなぜか爆発アニメーションもせず、その座標にずーっと
表示され当たり判定も全然触れてない敵と当たっているし・・・
モウ頭ガ大混乱・・・
0158名前は開発中のものです。
04/01/29 21:16ID:m6hm+YbS当たり判定表示モードを用意する手もある
0159名前は開発中のものです。
04/01/29 22:17ID:UkYq254h確実に変数がかぶってるでしょ。
構造体にフラグ持たせて、爆弾一個一個ごとにフラグもカウンタも持たせればいい。
0160名前は開発中のものです。
04/01/30 00:10ID:pxYy3mAzいいなぁ。。。俺もそんな時期があった。。。
あのころにはもうもどれない
0161名前は開発中のものです。
04/01/30 00:14ID:lKd8f126なーに、ちょっと記憶喪失になればスグだ
0162名前は開発中のものです。
04/01/30 01:26ID:PNE+GE9D当たり判定などごく基礎的なことからわからず調べている始末…
みなさんこういう入り口ってどこから学びました?
0163名前は開発中のものです。
04/01/30 01:40ID:lKd8f126webでの情報は…なかなか有用なものは無いんだよね
atanだけ知ってれば弾は吐けるから、そこをスタートにしてみるとか
アマチュアが作ったもので技術的に参考になりそうな作品を
ひととおりチェックしてみるといい
ソースを付けていたり、サイトでプログラム系コンテンツを展開していたりするものもある
0164名前は開発中のものです。
04/01/30 01:44ID:PNE+GE9D慣れようと思います。
ソース付きのサンプルは探しているけれどなかなか見つからず…
あとは本も探してみるかな。
みなさんが参考にしたサイトや書籍などを教えていただけたらうれしいです。
0165名前は開発中のものです。
04/01/30 02:21ID:wHwjFN70漏れはBASICからスタートして、BASICで一応STGと呼べるものを
作ってからWindowsに来たから、何ともいえないけどね。
まだ起きてるなら、
参考になれそうに無いサンプルでよければ上げるよ。
0166名前は開発中のものです。
04/01/30 02:30ID:w7Ni6Zjh162じゃないけどサンプル( ゚д゚)ホスィ…
0167名前は開発中のものです。
04/01/30 02:31ID:lKd8f126ttp://giggle.cside6.com/hotate/shoot/frame.htm
発見
関数ポインタのリスト、と言われてわかるならオススメ
一年前にこのサイトを見てもほとんど理解できなかったろうなあ…
今でもソースすいすい読めるとはいかないが
0168165
04/01/30 02:48ID:wHwjFN70>>167を見て
|Д`))) うわぁ、漏れのコード(ry
|)三 サッ
0169名前は開発中のものです。
04/01/30 03:01ID:w7Ni6Zjhdクス
キャラの管理にクラスは使ってないのね。
漏れはいつもクラス設計で迷ってなかなか先に進まない…アフォか_| ̄|○
0170165
04/01/30 03:05ID:wHwjFN70なんてゆーか、動的メモリ恐怖症なんです(((´Д`;;)))
今、このシステムをベースにしてゲーム作ってるんですが、
やっぱりクラスを使わないとできることが限られてしまうワケで。
次回作にはちゃんとクラスで実装して、
もう少しいろいろできるコアを作ろうと思ってます。
|Д`)。o (newしてdeleteするだけなのに出来ないチキンな漏れ…。
0171名前は開発中のものです。
04/01/30 03:08ID:lKd8f126gamdevうpろだを使う手があるのかーそーなのかー
0173名前は開発中のものです。
04/01/30 08:39ID:B84U1womこいつらの関数は派生するからサブクラス側でも使える。
固定サイズの作業領域を用意するなどのことは簡単
0174名前は開発中のものです。
04/01/30 09:48ID:WyldIjeOだめぽ・・・_| ̄|○
参考サイトとかそこらにあるゲーム見て回ったんだが・・・
弾幕作れない(最大敵弾数が低い)上に妙に重い・・・
おとなしく他のもの使おうと思います・・・
0175名前は開発中のものです。
04/01/30 09:57ID:I36G2mCC0176老人
04/01/30 11:15ID:ju7uiRkE0177名前は開発中のものです。
04/01/30 11:37ID:+ZMRzRw0>なんてゆーか、動的メモリ恐怖症なんです(((´Д`;;)))
つか、ゲームループ中での動的確保は流石にやらないのが普通では?
例えばタイトル->ゲーム本編->ゲームオーバー処理みたいに状態が大きく偏移するときならまだしも、
ゲーム本編のループ内で1キャラ出したり消したりする度に一々new/deleteなんてやらんでしょ
0178名前は開発中のものです。
04/01/30 12:41ID:EdduHOr8まだ書いたこと無いな
0179名前は開発中のものです。
04/01/30 13:06ID:B84U1womデフォのnew/delete使ってたんだけど
困ることってなかったけどね
今作ってる奴はそういうオブジェクトの基底クラスのnew/deleteを書き換えてるけど
そもそも開発環境のPC性能が圧倒的だから全然変わった気がしない
0180名前は開発中のものです。
04/01/30 19:25ID:yvxTFkB0オレは一々動的確保してます。
むしろ、動的確保しないで立ち回る方法がわからん・・・
0181名前は開発中のものです。
04/01/30 19:40ID:Ev4JnOfR途中で飽きてほったらかしにしてあるのでもあげてみるか。
C++でいろいろと無駄なことをやって分かりづらいと思うけど。
ttp://gamdev.org/up/img/216.lzh
0182名前は開発中のものです。
04/01/30 20:44ID:J/h2K8Zb0183名前は開発中のものです。
04/01/30 20:49ID:quCXdfvpなんとも古典的な内容のサイトだなあ。
今から始めるのなら参考にしないほうがいいよ。てゆーかするな。
こっちの「オブジェクト指向風シューティングゲーム」とかのほうが今風で役に立つと思う。
http://www.sm.rim.or.jp/~shishido/gamedev.html
あと、OOスレとかいろんなとこで話題になってるけど、
new/deleteは今のハードなら忌避する必要ありまへん。俺は16ビット時代に捨てたし。
0184名前は開発中のものです。
04/01/30 20:53ID:quCXdfvp・完成までの工程を計画する。
・開発日誌をつける。
・ToDoリストを作る。
これだけでだいぶ違う。
0185名前は開発中のものです。
04/01/30 21:08ID:I36G2mCC喧嘩してもいいけど引きずるとアウト
0186名前は開発中のものです。
04/01/30 21:46ID:TZcIf85k時間管理の不備がツッコミどころかな…
まあこれを読める人ならそれくらいは自力でなんとかできるかな
>>167は、古典的タスク管理以外はじゅうぶん真似すべき
プログラムはともかく、シューティングづくりの基礎がつまっている
0187名前は開発中のものです。
04/01/30 22:59ID:rh+IQ9Rwadjest
予想されるキーワード: adjust
ちょっと気になった。
0188名前は開発中のものです。
04/01/31 01:05ID:5B0kWu8Iマイクロチップを自在にプログラムできる技術は重宝するよ
0189名前は開発中のものです。
04/01/31 01:12ID:1U/kPgvPC++でやることをCでやったらこうなりました、って感じかのうw
完全移植するならvfテーブル使えってことにはなるけどな。
あれに無理に固執する必要は無いってだけで考え方は大切だと思うー
確かスーパーマリオとか既にああいう感じで作られてたと聞いたことあるけどそうなのかな?
だとしたら任天堂ってすげーなー。w
0190名前は開発中のものです。
04/01/31 01:38ID:DrBR1GMU配列だけでゲーム作ってるけど・・・
0191名前は開発中のものです。
04/01/31 02:55ID:noKezy4x0192名前は開発中のものです。
04/01/31 07:57ID:H1XPs9z1例えば、あるキャラのみで使う必要な変数が増えたらどうすんの?
固定長だとキャラ(=タスク?)共通の汎用のワークエリアみたいなのを増やすわけですか?
で、1キャラで大きな容量のメモリ領域を使いたいときは、
無駄にワークエリアを増やすのは無駄だから、
他のところで確保したメモリへのポインタを指すだけにするわけ?
あ、なんだか出来そうな気がしてきた・・・
0193名前は開発中のものです。
04/01/31 11:45ID:NyjV8jKYもう少しシューティングを研究してみたらいいと思う
0194190
04/01/31 12:07ID:DrBR1GMUとりあえず、ハードの容量にも寄るけど1タスクで64バイトくらいあれば
ゲームのキャラは動かせるので、それをゲームで使いそうな分を実行時に確保。
よっぽど足りない時は2タスク分確保してそっちも使う。
使ったこと無いけど。
自機弾なんて凝らなければ、座標と移動値か向きとタイマーと耐久力くらいがあればいい訳だから、弾は16バイトもあれば十分かな。
0196名前は開発中のものです。
04/02/01 03:11ID:8Ppt2JqF789
4敵6
123
数字が敵の動きとして
static int e_houkou[]={1,2,3,4,8,7,9};
e_flg=0;
int ex=100,ey=100;
int e_cnt;
〜(省略)〜
if(e_flg==1){
switch(e_houkou[e_cnt]){
case 1: ex-=10; ey+=10; break;
case 2: ey+=10; break;
case 3: ex+=10; ey+=10; break;
〜(省略)〜
という風にして配列に数値を最初に入れておいてその数値によって敵の動きを移動方向を決めれば
良いと言う事ですか?。
どのタイミングで敵の移動方向を出せば良いのだろう・・・_| ̄|○
0197名前は開発中のものです。
04/02/01 03:40ID:rg9VfL530198名前は開発中のものです。
04/02/01 05:33ID:+wlkYdKmC言語でそのまま記述するのではなくて、
もっと簡単に動きを記述できる中間言語を用いることだよ
0199168
04/02/01 11:34ID:+i7W5a7tスクリプト化は>>198さんが言ってる通りのこと。
スクリプト化する利点は、本体のコードを修正せずに変更できること。
(コンパイル不要。他人の協力を得やすいこと)
欠点は、処理速度の低下、本体のコードの複雑化など。
>>196のコードでe_houkouをファイルから読み出して使うようにすれば
一応スクリプト化は出来てると言えるんじゃないかな、とは思うけれども、
その言語仕様では柔軟性が無い。(敵弾は吐けないし、曲線を描く行動も、
自機追尾もできない。)
だから、といって十分柔軟な仕様のスクリプトを実装しろ、というわけでは
なく、目的に合った方法を使えということ。
敵行動に関して、漏れは以下のパターンでやってる。
実物は>>168に。
if(enemy.type[t] == EN_ENEMY1)MoveEnemy(t);
// >>131のカクッと折れる敵の行動
void MoveEnemy(t){
enemy[t].timer++;
if(enemy[t].timer < 120){
enemy[t].x -= 4;
}else{
enemy[t].y += 4;
enemy[t].x -= 4;
}
各敵にtypeとtimerを記憶させておいて、
それに応じて行動させている。
0200名前は開発中のものです。
04/02/01 13:49ID:bcjVD8/s>自機追尾もできない。)
文字列にしてa〜zにもコマンドを割り振ったりなんかしたりして。
いや言ってみただけ言ってみただけ
0201168
04/02/01 15:26ID:+i7W5a7tその考え方で正解だよ。
ただ、コマンド数を延々増やしてると、そのうち自分でも
ごっちゃになる。すると、それなりの言語設計をしたり、
パーサー(構文解析)を作ったりする必要が出てくる。
本来の作業に加えてね。
しかし、それを実装したところで、ゲームが面白くなるとは
限らない。そもそも、プレーヤーはゲームの中を見ることが
ない。
まぁ、利点欠点を考えて適材適所ってことなんですが。
0202名前は開発中のものです。
04/02/01 15:57ID:+wlkYdKmスクリプトに限らず、仕様ばっか凝り出してゲームが進まないってのは良くある罠だよね
0203名前は開発中のものです。
04/02/01 20:31ID:gPJywN+lなので今回はスクラッチとダウンサイジングと仕様削減を合言葉に作ってる
0204名前は開発中のものです。
04/02/01 21:06ID:l59wl63M0205名前は開発中のものです。
04/02/01 21:28ID:lw1srjwx弾回避や予測射撃の知識も身につくYO!
いや、はじめからSTG向けのスクリプトを弄れ!という指摘もあるだろうけど :P
0206名前は開発中のものです。
04/02/01 21:57ID:38LSgSLDというか、きっちりしようを決めて作るべし。
仕様を凝る(=拡張可能な柔軟なつくりばかり追求する)って、実は
一番重要な部分を先送りしてるだけなんだよね。
オレはやっと最近それに気づいたヘタレ…完成しないわけだよ…
0207名前は開発中のものです。
04/02/01 23:54ID:vey8p8Wy0208名前は開発中のものです。
04/02/02 03:06ID:i/GekYP5あとは90度回転で済ませたいんですが、画像を回転させてコピーする(Bitbltみたいに)APIってないですか?
開発環境はBCC5.5で32APIゴリ書きです。
0209名前は開発中のものです。
04/02/02 03:48ID:FCoWK6NPディザかけるなどの処理が無くてもよいバトルガレッガ程度の画質の回転ライブラリ、欲しいね
0210名前は開発中のものです。
04/02/02 04:00ID:MdNwFQG/0211名前は開発中のものです。
04/02/02 04:30ID:yc9JYL9G0212名前は開発中のものです。
04/02/02 06:26ID:HsES/+LZ一応こういう有名なゲーム用ライブラリがあるけど。回転拡縮スプライトあるにょ。
ただしAPIを見ても分かるとおり、かなり古風な作り。(DOS時代からのものだしな)
まあ、素直にDirect3D使うのが一番素直でしょう。
0213名前は開発中のものです。
04/02/02 06:28ID:HsES/+LZ0214208
04/02/02 11:32ID:i/GekYP5色々とご意見ありがとうございます。
まあ時代遅れなのはわかってるんですが、winプログラム覚えたてなもんで…
いずれはDirectXに移植したいんですけどね〜
0215名前は開発中のものです。
04/02/02 14:34ID:FCoWK6NPDirectX導入による保守性の低下が懸念なら、
回転オブジェクトの描画をきっぱり諦める。
または何か適切なラッパライブラリを使い、
コーディングの幅が狭くなるかわりに見通し良い状態にする。
のがいいんじゃないだろうか。
ラッパライブラリで何が適しているかはわからないけど。elとかdxlibとかは有名だね
0216208
04/02/02 15:00ID:i/GekYP50217名前は開発中のものです。
04/02/02 16:58ID:/V+ybFzq0218名前は開発中のものです。
04/02/02 17:58ID:BnC8luPI注意が必要だ(デバッグ版はDLLになってるのでそのまま使えるけど)。
いや、D3DX使わないなら関係ないけどね。
0219208
04/02/02 19:35ID:i/GekYP5そうなんですか…やっぱBCCでDirectXは険しい道のりなんですね〜
さっき本屋にも逝ったけどVC関連ばっかりで…
「VCの機能を最大限に生かしたプログラム」しなくてええっちゅーねん。
0220名前は開発中のものです。
04/02/02 22:09ID:dlkS80ye0221名前は開発中のものです。
04/02/02 23:17ID:wBMgBDwz0222名前は開発中のものです。
04/02/03 00:36ID:ZiFEw0DzABA Gamesのは(少なくともrRとかは)BCCじゃなくてMinGWな気が。
0223名前は開発中のものです。
04/02/03 01:15ID:J8lns4TSあとのC++とかDとかはおいといて
0224名前は開発中のものです。
04/02/03 01:17ID:/Uw/QLq7複数の敵を一つのグループで動かす場合は
どうすればいいのかわからない_| ̄|○
0225名前は開発中のものです。
04/02/03 01:32ID:vqom/Z2h編隊のこと?
俺は、編隊も1匹も同じで敵キャラの出現タイミングと出現場所を書いたデータファイルを
作成してステージのはじめに読み込むようにしてた。
これが正しいかわからんけど。
0226名前は開発中のものです。
04/02/03 02:37ID:fdd6paxL変態タスクを作って雑魚タスクを管理。
0227名前は開発中のものです。
04/02/03 12:30ID:pgLOj0Cx結果的に群れてるようにも見える。大往生4面雑魚とかはそんな感じだろう。
一方、グラディウスで雑魚が全滅したときにアイテムが出るが、これは
複数の敵をグループとして管理すると実現しやすい。
グループリーダー(実体はなく、アイテムを出すだけの役割)に
一匹一匹が「やられましたー」と報告して、最後の一匹がやられたらアイテムを出す。
リストで管理して削除していくのが一般的かな。
いきなり複数のグループを扱おうとする前に
まずは単純に画面内の敵すべてを1グループとして
敵全滅判断の処理を組んでみると、わかりやすくていいかもよ。
0228名前は開発中のものです。
04/02/03 16:50ID:v5+DNIElそういや回転といえば、ケイブのやつとかはちゃんと光源の方向を考慮した回転
パターンを用意してない?
達人とかビッグコアみたいに真上(真横)から光を当てたような、真ん中が明るく
エッジが暗い左右対称なデザインだと、回しても違和感が無いけど、今となっては
PC猿人のゲーム みたいで貧乏臭く感じるんだけど。
0229名前は開発中のものです。
04/02/03 18:17ID:pMaVXkyO3Dでモデル化したやつから2D画を起こしてるんじゃなかたっけ?
手法は違えど角度毎に別な画を全て用意するというのは古典的(かつ効果的)な手法だよな
よく2D絵を回す為にD3Dで2D絵を回転とか言うヤシ見かけるが、あらゆる意味でセンス無えと思う
0230名前は開発中のものです。
04/02/03 18:36ID:0mx1dz/i> D3Dで2D絵回転
プログラマ的視点から言えば正常じゃねーの?
うちでも、立体感ない回転させた日には、ドッタさんが腹立てて
「回転パターン書く!」とか言い出します。
0231名前は開発中のものです。
04/02/03 18:58ID:muHYIOOj素人作品はむしろモデリングやドット絵がボトルネックになっているもののほうが多い
0232名前は開発中のものです。
04/02/03 20:45ID:SuvAycYQまぁポリゴンならプログラムで回せて光源も正しく処理されるわけだが
0233208
04/02/03 22:09ID:7faPxv3Q色々調べたら、OpenGLはLinux上でも動くっぽいのでどうせVC++を持ってないならOpenGLにしようかなとも考えてます。
まだ大分先のことになりそうですけどね…
0234名前は開発中のものです。
04/02/03 22:50ID:vqom/Z2hあれなんか、WAVの爆発音を重ねるのが重くなるからか、
「どかーん」というWAVと「どかどかーん」というWAVを用意して
複数の敵を倒したときは「どかどかーん」を鳴らしてる。
けっこう力技の方が一般的なんだよね。光源の2D化とかも。
0235名前は開発中のものです。
04/02/03 23:51ID:1w8HaMS4ドット絵1枚描くよりも、プリレンダリング用のモデル1つ用意するほうがコストかかるじゃろ。
ちゃんとしたデザイナーさんがついてて今風の絵にするならともかく、
古典的な2Dゲーではグリグリ回してもあまり問題ないケースが多いと思われ。
まあ、光源の方向が決まってる絵をむやみに回すなってのは基本ではあるわよね。
あと昔のハードに必ず載ってた左右/上下反転も、今では使えないケースのほうが多い。
■ このスレッドは過去ログ倉庫に格納されています