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

このエントリーをはてなブックマークに追加
916名前は開発中のものです。:2007/03/03(土) 18:21:25 ID:XlOVdV67
タスクの分割だの依存関係だのに気を遣えば
そこまで保守しにくくもないと思う。

初心者はタスクシステムを学ぶ前に
構造化プログラミングだのオブジェクト指向プログラミングだのを
学んだ方がいい気がする今日この頃。
この方が結果的にゲーム製作の近道になると思うのだが、
早く製作にとりかかりたい奴は見事にすっ飛ばして
結果的にオソロシイコードが完成すると。
917名前は開発中のものです。:2007/03/03(土) 18:56:00 ID:+OXGBFk1
そいやコンポジットとポリモーフィズムしらんと
C++でタスク構築できないんだっけ
918名前は開発中のものです。:2007/03/03(土) 19:02:32 ID:NpwQBMaQ
つーか抽象化はオブジェクト指向の基本概念だ。
919名前は開発中のものです。:2007/03/03(土) 19:13:57 ID:XlOVdV67
Compositeパターンは
タスクを階層化しないのであればいらないんじゃないかな。
まあシューティングの場合、敵と弾とか、ボスと敵とかを
親子関係にするのが自然だから、必須になってくるけど。

ポリモーフィズムを知らんような奴は
タスクシステムどころか普通のプログラムも満足に書けないと思うよ…。
C++を使用する意味が全くない。
920名前は開発中のものです。:2007/03/03(土) 19:15:58 ID:EdH6awpf
必要になったら学んで使えばいいだけじゃね?
なぜそれが必要なのか理解せずに使っても
これまたオソロシイコードになるぞw
921名前は開発中のものです。:2007/03/03(土) 19:18:33 ID:XlOVdV67
それもそうだなw
922名前は開発中のものです。:2007/03/03(土) 19:29:53 ID:37Z4YcGn
>>919
> C++を使用する意味が全くない。

つ ベターC
923名前は開発中のものです。:2007/03/03(土) 19:58:35 ID:n09SmcrK
ここはC++が前提なんですね。知らんかった。テンプレにいれとけよ
924名前は開発中のものです。:2007/03/04(日) 03:25:52 ID:fF+IhTRk
ステージボスばりの攻撃をしてくる雑魚が出せるようになれば解決じゃね?
925名前は開発中のものです。:2007/03/04(日) 03:27:10 ID:3s0I3fQ7
全部ボスにしてカオスフィールドでもつくれば解決じゃね
926名前は開発中のものです。:2007/03/04(日) 08:56:24 ID:U7DHZFAq
結局ボスルーチンは、雑魚ルーチンをカバーできるんだから、分ける意味は無いと。
927名前は開発中のものです。:2007/03/04(日) 14:57:05 ID:w0snWO05
ゲームスタート直後にすべてのボスが同時に出てこればOK
敵の戦術的にもいいだろ
928名前は開発中のものです。:2007/03/04(日) 15:35:08 ID:Xjqd8ZGI
急に巨大戦艦出したくなったけど背景として実装するしか選択肢がないとか
ボスがバックミラーにしか映らない吸血鬼の車だとか
ボスがmpeg動画でその中で自機を動かさなきゃならないとか
別ウィンドウのをタッチペンで叩かなきゃならないとか
あるかもしれない
929名前は開発中のものです。:2007/03/04(日) 15:42:27 ID:HAhTvGLC
>>928
いずれの場合でもメインループを分ける必要がないわけだが。
っていうか何が言いたいのかわからん。
930名前は開発中のものです。:2007/03/04(日) 15:56:28 ID:PI7DnOuV
背景とか言ってる時点でもう
931名前は開発中のものです。:2007/03/04(日) 15:57:10 ID:+vXxM3Oo
最初のがアンドアジェネシスだという事だけは判る。
932名前は開発中のものです。:2007/03/04(日) 16:51:49 ID:5R8TXDd8
このところスキルの低いっぽい人の書き込みに対するツッコミでスレが進行してるな。
あんまりガツガツ行かずにやわらかく対応しようぜ。
できれば各人のスペックは自分と同等では無いのを前提に、あいてに分るように話そう。
933名前は開発中のものです。:2007/03/04(日) 17:17:35 ID:U//ZsCle
>>929
東方みたいに画面チェンジと同時に弾の性質が変わったりとか、
インベーダゲームみたいな敵弾でもこっちの弾でも壊せる障害物を一時的に出してみるとか、
二体以上以上のボスキャラが合体変形したりして、全部倒してようやく先に進めるとか、
色々と変なバリエーションを使うと、グローバル変数の扱いがややこしくならね?
934名前は開発中のものです。:2007/03/04(日) 17:27:34 ID:HAhTvGLC
>>933
結論から言うとならない。
どんな言語でどんな設計をしているかは知らんが、
ややこしくなってしまうような設計が悪いだけにしか思えない。
935名前は開発中のものです。:2007/03/04(日) 17:34:52 ID:fartzWa7
むしろ、どう設計することを想定してるんだろう。
グローバルでフラグ立てるとして、上に出た例ってそんなにややこしくなるかな・・・
東方みたいに画面チェンジで弾の性質がかわるっては言ってる意味がよく解らんが、
ボスの合体とかステージ中精々1つか2つだよな・・・ややこしいか?
936名前は開発中のものです。:2007/03/04(日) 17:44:12 ID:U//ZsCle
>>935
弾幕を時間をかけて大量にばらまいたあと、全部の弾が効果音と共に一瞬で別の弾に変わったりするんだが?

つまり基本的には、ステージによってルールが変化するようなケースを想定してるわけ。
937名前は開発中のものです。:2007/03/04(日) 17:50:04 ID:HAhTvGLC
>>936
メインループ内に全部の処理がごちゃまぜになっているような
汚いプログラムであっても、画面チェンジ時にフラグをひとつ立てて
処理を分岐させるだけで十分だと思うのだが。

実装方法は山ほど思いつくが、グローバル変数がややこしくなるような
実装はひとつも思いつかねえ。
938名前は開発中のものです。:2007/03/04(日) 17:51:39 ID:fartzWa7
・グローバルでフラグ立てて、弾のタスクがフラグ見つつ変化
・一定時間後に弾をすべて変化させるタスクの発動
・最初から一定時間後に変化する弾を作る

めんどい?
939名前は開発中のものです。:2007/03/04(日) 17:58:46 ID:ELeB6++8
ファンタジーゾーンみたいにボスの挙動がまるっきり異なるケースでも?
940名前は開発中のものです。:2007/03/04(日) 18:01:19 ID:fartzWa7
具体的に言ってよ、何について言ってるのかさっぱり解らない
941名前は開発中のものです。:2007/03/04(日) 18:02:20 ID:HAhTvGLC
>>940に同意。悪いが意味がわからん。
というかせめて使っている言語ぐらい教えてくれ。
942名前は開発中のものです。:2007/03/04(日) 18:35:01 ID:HAhTvGLC
なんつーか、単にプログラミング言語自体の勉強量が
足りてないだけな匂いがするんだよね…。
Cを使っているのに関数ポインタや動的メモリ確保についてしらないとか、
C++やJava(いないと思うけど)を使っているのに
クラスを活用しきれていないとか(特に委譲とか)だったら
これらについて勉強しなおした方がいい。
あとタスクシステムについても。
スクリプトだったらごちゃごちゃになっても文句言うな。
943名前は開発中のものです。:2007/03/04(日) 18:38:15 ID:DdFsNkAz
スクリプトだったらごちゃごちゃになっても文句言うな
スクリプトだったらごちゃごちゃになっても文句言うな
スクリプトだったらごちゃごちゃになっても文句言うな
スクリプトだったらごちゃごちゃになっても文句言うな
スクリプトだったらごちゃごちゃになっても文句言うな
スクリプトだったらごちゃごちゃになっても文句言うな
スクリプトだったらごちゃごちゃになっても文句言うな
スクリプトだったらごちゃごちゃになっても文句言うな
スクリプトだったらごちゃごちゃになっても文句言うな
スクリプトだったらごちゃごちゃになっても文句言うな
944名前は開発中のものです。:2007/03/04(日) 18:39:49 ID:yrQ/olK7
こういう方向には盛り上がるんだよなこのスレw
945名前は開発中のものです。:2007/03/04(日) 18:44:04 ID:fartzWa7
あ、でも珍しくシューティングの話した気がするんだけどw
946名前は開発中のものです。:2007/03/04(日) 18:53:42 ID:HAhTvGLC
>>943
そこだけ取り上げるなバーローw
俺はスクリプトに関して無知だからアドバイスできんし
相手の仕様言語(ツール)は結局わからんしで
少々投げやりになって書いてしまっただけだw
でもスクリプトを馬鹿にする発言っぽいから謝っとく。すまんかった。
947名前は開発中のものです。:2007/03/04(日) 19:04:07 ID:3iY3lGBk
948名前は開発中のものです。:2007/03/04(日) 19:17:02 ID:k0G/xwJv
>>933
>東方みたいに画面チェンジと同時に弾の性質が変わったりとか、
オブジェクトリストから弾IDを持つものを探して、その情報を元に、同じ位置に新しい弾を作る。
古い弾は殺しとく。

>インベーダゲームみたいな敵弾でもこっちの弾でも壊せる障害物を一時的に出してみるとか、
障害物の当たり属性を敵弾と自機弾に設定する。

>二体以上以上のボスキャラが合体変形したりして、全部倒してようやく先に進めるとか、
子供を管理するだけの親を作り、合体前のキャラを子として見張る。
合体したくなったら子供に号令かけて合体させ、合体後は子供を殺して自分自身がキャラになる。

>色々と変なバリエーションを使うと、グローバル変数の扱いがややこしくならね?
グローバル変数は使わない。

>>937の言うとおり実装方法はいくらでもあるんだけど
俺だったらこうするみたいな。
949名前は開発中のものです。:2007/03/04(日) 19:17:17 ID:sf6/O3bq
どうも本当の初心者みたいだね・・・
口調がいっぱしのプログラマーぶってるから
みんな普通のやり方を教えてくれないのなw


敵弾っつっても、方向と速度(移動量)だけじゃなくて
「状態」「種類」「タイマ」といったパラメータをいろいろ持たせてあげよう。
タイマが一定値になったら速度・方向を変えてやれば
東方みたいな弾幕ができるよ。


敵・自機・障害物にもフラグを持たせて、それによって
敵弾に当たる・自機弾に当たる・障害物に当たるってやれば
当たり判定は共通処理にできる。
950名前は開発中のものです。:2007/03/04(日) 19:19:39 ID:E/eX2xqk
HSP使ってたときに似非タスクシステム組んだことあるけど
on〜gosubとローカル変数宣言で結構スッキリ組めたぞ
どんな環境でもやり方次第だと思うんだけどね
951名前は開発中のものです。:2007/03/04(日) 19:32:12 ID:HAhTvGLC
>>948
俺は階層型タスクシステムを利用しているからボスに関しては同じかな。
画面チェンジで性質の変わる弾に関しては、
大量のオブジェクトの生成・破棄はなるべく避けたいから
既存の弾オブジェクトの状態を変更するだけに留めるかな。
952名前は開発中のものです。:2007/03/04(日) 20:33:57 ID:9C2BU3SO
じゃあオレも

>東方みたいに画面チェンジと同時に弾の性質が変わったりとか、
複数のキャラクタが属性を共有する場合は独立させる
この場合は弾オブジェクトに弾の性質オブジェクトへの参照を持たせる

>インベーダゲームみたいな敵弾でもこっちの弾でも壊せる障害物を一時的に出してみるとか、
キャラクタの組み合わせによって分岐が変わる場合はテーブルを作成する
この場合は全キャラ×全キャラの衝突有無の表をつくって接触するたびに検索する

>二体以上以上のボスキャラが合体変形したりして、全部倒してようやく先に進めるとか、
集団を扱う場合は画面に表示しないコントロール専用のタスクを作成する
この場合はコントロールタスクからボス1やボス2へ参照を繋ぐ
コントロールタスクから合体などの指示をだす
ボス1や2が破壊された場合はコントロールタスクへそれを通知する


基本こんな感じだけど速度が問題になる場合はどんどん崩す
データベースでいう正規化された状態だからそのまま使うと遅いよ
でも設計する段階では正規化してるし崩すにしても崩すパターンあるから簡単
953名前は開発中のものです。:2007/03/04(日) 23:40:33 ID:Xjqd8ZGI
「あらかじめゲーム内容を予測してすべて適切に設計すれば良い」
という理想状態の話ばかりだけど、

「メインプログラムが糞仕様なのにも関わらず上司は最小限のソース改変しか許さない」
実務がそんなんだったらどうするんだよ
954名前は開発中のものです。:2007/03/04(日) 23:50:24 ID:RG9J/GKB
責任の所在を上司だと明確にするだけ
955名前は開発中のものです。:2007/03/04(日) 23:56:24 ID:E/eX2xqk
なんで上司の話とか出てくるんだよw
956名前は開発中のものです。:2007/03/05(月) 00:07:40 ID:vpsv+fAM
なんでそんな極論が出てくるのか理解に苦しむ
普通のプログラムの話しようぜ
糞仕様で改変させてくれない話なんてここは愚痴スレじゃ無いぜ
957名前は開発中のものです。:2007/03/05(月) 03:36:49 ID:7tVG/VWq
10年ぶりにゲームが作ろうと思うんですが
SDLの勉強をしっかりやっとけば大丈夫ですか?

最近じゃスレッドとか使えるから感動的に美しいコードが書ける予感がする。
958名前は開発中のものです。:2007/03/05(月) 05:23:39 ID:1nOvH2lg
昔ゲームPGだった人とかなら
何勉強しても大丈夫なんじゃないんですかね
959名前は開発中のものです。:2007/03/05(月) 09:19:24 ID:vD0HTcUo
スレッドって、同期関連しっかりやっとかないと例外で跳ぶんだよな。
特に最近のマシンは、複数のCPUが乗っていて、二つ三つのスレッドを同時処理したりするし。
960名前は開発中のものです。:2007/03/05(月) 09:24:15 ID:Cw2/WpnT
ふーん
961名前は開発中のものです。:2007/03/05(月) 11:16:21 ID:y4PcrGny
セマフォとかカウントダウンラッチとかサイクリック分割、バリアとかわからん人は
マルチスレッドの本みたほうがいいだろうね

そうしないと>>959の現象で落ちることになる
962名前は開発中のものです。:2007/03/05(月) 11:51:53 ID:ck7zxrxb
  ,j;;;;;j,. ---一、 `  ―--‐、_ l;;;;;;  最近じゃスレッドとか使えるから
 {;;;;;;ゝ T辷iフ i    f'辷jァ  !i;;;;  感動的に美しいコードが書ける予感がする。
  ヾ;;;ハ    ノ       .::!lリ;;r゙
   `Z;i   〈.,_..,.      ノ;;;;;;;;>
   ,;ぇハ、 、_,.ー-、_',.    ,f゙: Y;;f    そんなふうに考えていた時期が
   ~''戈ヽ   `二´    r'´:::. `!   俺にもありました
963名前は開発中のものです。:2007/03/05(月) 18:26:26 ID:MLlWK8lH
CPUが8bitから32bitになったのだから、一万倍のスプライト処理も余裕。
そんなふうに思っていた時期もありました。
964名前は開発中のものです。:2007/03/05(月) 18:29:35 ID:yTZHNxxt
自機の動きを制御するスレッド
敵機の動きを制御するスレッド
背景をスクロールさせるスレッド、みたいに分離して考えられるの?
965名前は開発中のものです。
それが逐次処理で駄目な理由が良く判らん
敵機がネットワークの向こう側ならまた話は別かもだけど