- 1 名前:名前は開発中のものです。 [2008/02/18(月) 12:02:20 ID:JNgyhRqZ]
- ゲームプログラマなら誰もが通る、もしくは、通った道。青春の香り?
それは「シューティングゲーム製作」・・・。 このスレでは、そんなシューティングゲームの製作技術や技術の検証、成功談 失敗談笑い話、難易度の設定方法論、多弾の是非などについて語り合いましょう。 もちろんBulletMLなどで弾幕を作成してみたり、自分の作ったシューティングを 晒してみたり、プロジェクトをはじめてみるなどもOK! ただし、シューティングの未来とか既存のゲームの話題などは、関連する他の スレでやってくれ。 過去スレ,関連スレは >>2-3で。
- 520 名前:名前は開発中のものです。 mailto:sage [2008/06/01(日) 17:53:12 ID:ExLpTmmO]
- BulletMLManager
の使い方がいまいちよくわからんのだがつかってる人います?
- 521 名前:名前は開発中のものです。 mailto:sage [2008/06/04(水) 11:33:27 ID:xVETCOHb]
- 新しいgamedeveカキカキ
TopPage - game-develop.com wiki wiki.game-develop.com/ GameDevWikiを何とかするスレ pc11.2ch.net/test/read.cgi/gamedev/1156117275/
- 522 名前:名前は開発中のものです。 [2008/06/06(金) 03:37:13 ID:M4cUj8sn]
- ただいまDXライブラリでシューティングゲームを作っているんですが
敵の軌道に凄い迷っています。 何かいいサイトとか教えてもらえると嬉しいです・・・
- 523 名前:名前は開発中のものです。 mailto:sage [2008/06/06(金) 05:01:50 ID:ccm+UKUf]
- 敵の軌道が軌道に乗らないと。
- 524 名前:名前は開発中のものです。 mailto:sage [2008/06/06(金) 06:53:06 ID:+EwpaMeA]
- 軌道の作り方?
それともどんな軌道があるかって話? プログラム的な話ならともかく、ゲーム内容の話だったら他のゲームみて研究しなさいとしか
- 525 名前:名前は開発中のものです。 mailto:sage [2008/06/06(金) 11:54:13 ID:5E9ARiON]
- STGプログラミングとか、STGアルゴリズムマニアックスとか、こういう時には丁度いいと思うよ。
- 526 名前:名前は開発中のものです。 [2008/06/06(金) 16:20:06 ID:M4cUj8sn]
- ありがとうございます。
あと質問の仕方が少し悪かったですね。すみません。 えっと、敵の軌道についてどういったプログラムの書き方があるのかを 聞きたかったんです。 >>525さん ググッたらでてきました。 よさそうな本なので使わせてもらいますorz
- 527 名前:名前は開発中のものです。 mailto:sage [2008/06/06(金) 20:01:04 ID:5E9ARiON]
- >526
ある程度ゲーム作りなんかを経験したことある人間なら、 プログラム的にはそんなに有効なものではないけれど、 ・やりたいことはあるけど実装方法が微塵も思いつかない ・あまりSTGに詳しくないので、(プログラマ視点からの)演出リストみたいなものが欲しい とかなら便利だと思う
- 528 名前:名前は開発中のものです。 [2008/06/07(土) 07:21:42 ID:HwGhKYeT]
- >>526さん
ありがとうございます。 とりあえずこれで勉強してみようと思います。
- 529 名前:名前は開発中のものです。 mailto:sage [2008/06/09(月) 21:47:15 ID:xIkwo1U1]
- 質問があります
敵キャラクターの色に関してですが、 敵キャラクターは背景の色とは、なるべく違う色を使って保護色でない見やすい色の方が良いと言われますが、 その際、敵キャラクターの色はなるべく統一させておいた方が良いのでしょうか? 例えば、 一面の森林ステージは、背景の緑色とかち合わないように敵は全員ピンク色系に。 二面の列車ステージは、背景の線路の色とかち合わないように敵は全員青色系に。 といったような感じで。 既存のゲームでは、どういったパターンで敵の配色を決めているのか教えてもらえませんか?
- 530 名前:名前は開発中のものです。 mailto:sage [2008/06/10(火) 01:01:07 ID:nimaFHPb]
- メカもので世界観を重視するなら
明度・彩度を変えたほうがいいんでは
- 531 名前:名前は開発中のものです。 mailto:sage [2008/06/10(火) 01:12:25 ID:+aDmgWFn]
- 確かに、やたら派手で目立つ戦闘機ばかりというのはワケ分からんな。
もちろん、わざとそうやる機体があるのは認める。
- 532 名前:名前は開発中のものです。 mailto:sage [2008/06/10(火) 01:16:08 ID:NUtaWqlE]
- せめて背景とキャラは区別が付くようにしてほしい。
昨今のゲームってハードの能力が上がってやたら背景とか凝ってるんだけど 弾がわかり難いとかあるし 3Dを使って1軸固定の場合、いつ同一軸に来たのかわかりくいのとかあるからな〜
- 533 名前:名前は開発中のものです。 mailto:sage [2008/06/10(火) 08:05:33 ID:nTtkz+dw]
- 敵の動きを実装したいのですが、
私の作ったシステムだと、直線と、円書きながら移動の2パターンぐらいしか表現できず、 あまり、おもしろくないというか 見た目に欠けるのです。 そこで、どうやったら、敵の微妙な移動を表現できるのでしょうか?
- 534 名前:名前は開発中のものです。 mailto:sage [2008/06/10(火) 08:16:47 ID:f1guzX+l]
- 全てのキャラの色が派手すぎると変だし
背景とキャラが区別ついた方が良いとなると難しい 現在使用している素材は、基本的に青色なんですが 下地が緑の部分では、キャラの彩度や明度を変えても限界がありますし 背景そのものの彩度や明度をかえると、 キャラが浮いてくれるのですが 全ての背景が夜みたいになってしまうのも考えものです 何か方法はないでしょうか?
- 535 名前:名前は開発中のものです。 mailto:sage [2008/06/10(火) 08:31:33 ID:arPqS3KG]
- >>553
システムってのが、どんなのかわかりませんが、 直線移動が実装されているのであれば、 下に直線的に移動した後 左上、右上、と直線的に繰り返し移動 みたいに直線行動の組み合わせでも わりと微妙なキャラの動きは作れると思いますが。 敵の微妙な移動について詳しく
- 536 名前:名前は開発中のものです。 mailto:sage [2008/06/10(火) 08:55:12 ID:phyGEt7B]
- >>533
他人の作ったゲームを観察すればいいだろう。 まぁ、名作と言われるゲームでも、意外と単純な動きしかしてないけどね。
- 537 名前:名前は開発中のものです。 mailto:sage [2008/06/10(火) 12:17:00 ID:hsBh970A]
- 連隊として出てくるとかねー。
- 538 名前:名前は開発中のものです。 mailto:sage [2008/06/10(火) 14:18:54 ID:RT02LfrH]
- >>533
放物線をはじめとして、いろんな数学的曲線を見て利用できそうなもの探すのはどうよ?
- 539 名前:名前は開発中のものです。 mailto:sage [2008/06/10(火) 16:17:37 ID:FupEvrLt]
- 敵、弾の動きとか出現を全部プログラム中に直接書いちゃってんだけど
BulletML以外で自分で弾幕定義とかしてる人いる?
- 540 名前:名前は開発中のものです。 mailto:sage [2008/06/10(火) 16:19:15 ID:BhUcQ+GT]
- way弾とかの関数は独自に作ってるよ
- 541 名前:名前は開発中のものです。 mailto:sage [2008/06/11(水) 00:17:29 ID:w4VzkzQG]
- >>539
void ShotNWay(引数);//NWay弾 こんな感じの関数ならいっぱい作ってるよ
- 542 名前:名前は開発中のものです。 mailto:sage [2008/06/11(水) 00:54:26 ID:Yzm3EAbw]
- ちょっ速のPCがあればスクリプト言語など不要ですね、わかります。
- 543 名前:名前は開発中のものです。 mailto:sage [2008/06/12(木) 09:37:47 ID:f1+USoD9]
- 逆だろ
- 544 名前:名前は開発中のものです。 mailto:sage [2008/06/12(木) 15:35:40 ID:jAc1OSoI]
- 俺も最初逆に思ったけどたぶんコンパイル速度が速いってことだろう
- 545 名前:名前は開発中のものです。 mailto:sage [2008/06/12(木) 20:50:25 ID:yDi/ZIrs]
- c++だって、コンパイルなんてせいぜい数秒じゃないか?
- 546 名前:名前は開発中のものです。 mailto:sage [2008/06/12(木) 21:30:53 ID:gzO65s1E]
- マ以外の人に編集や調整を頼むなら簡単なスクリプトは要るかもだが
俺ずっと一人制作だったから弾幕定義まで一個一個全てdllにして プレイ中に修正可能にしたりとかヘンテコな事やってる
- 547 名前:名前は開発中のものです。 mailto:sage [2008/06/12(木) 22:28:30 ID:TSLRdYb6]
- >>546
それってヘッダーファイルじゃダメなの?
- 548 名前:名前は開発中のものです。 mailto:sage [2008/06/12(木) 22:48:12 ID:gzO65s1E]
- >>547
ヘッダーファイル?よく分からんが リリースビルドのexeでもプレイ中にコード差し替えしたいという 意味不明な俺要求で全部dllにしてた。ただそれだけ。 エディットコンティニュー用のデバッグ情報があるなら デバッグしながらでも普通に書き換えられるけど
- 549 名前:名前は開発中のものです。 mailto:sage [2008/06/13(金) 10:37:09 ID:WTt391nL]
- 少しスレチかもしれませんが質問です
効果音で、雷電2及び雷電DXのボス破壊時の効果音のような 気持ちいい感じというか、こもった感じではない爆発音って、 配布されている効果音の中には、意外とないように思えるのですが どなたか、ご存じないでしょうか?
- 550 名前:名前は開発中のものです。 mailto:sage [2008/06/13(金) 11:08:21 ID:eIgFj6sJ]
- スピーカーのせいなんじゃないの?
- 551 名前:名前は開発中のものです。 mailto:sage [2008/06/13(金) 12:26:22 ID:hkP7hw1T]
- 的外れなレス発見
- 552 名前:名前は開発中のものです。 mailto:sage [2008/06/13(金) 16:17:36 ID:EQ9QC8Ez]
- >>549
それはアレだ。プロが作り出す音響効果の素晴らしさってやつだよ 音響効果のノウハウに関する公開情報って異様に少ないんで 俺みたいな門外漢のマには何が何やらサッパリだ アニメ界で有名なサウンド○ィ○のお偉いさんなんて何十年も前から ずっと現役の職人さんだよ。すげぇよな
- 553 名前:名前は開発中のものです。 mailto:sage [2008/06/16(月) 12:03:46 ID:elENusH/]
- >>552
なるほど…… フリーで見つけるのは難しいということですね 亀レスですみませんでした ありがとうございます
- 554 名前:名前は開発中のものです。 mailto:sage [2008/06/16(月) 23:15:19 ID:ClTaNQNv]
- マウスだけで遊べて、パワーアップなしで爽快感UPできる方法
を追及した結果、マウスでコマンド入力し、成功すると一定時間 攻撃力がアップするってのを作ってみたけど、(効果が高いほど 入力操作が多い)コマンド体得するまではいいんだが、 一通り覚えると飽きる気がしてきた・・・。 なんかうまい使い方ないだろうか・・・。
- 555 名前:名前は開発中のものです。 mailto:sage [2008/06/16(月) 23:31:23 ID:uX6B7Jne]
- 敵クリックで撃破。
- 556 名前:名前は開発中のものです。 mailto:sage [2008/06/17(火) 00:07:49 ID:Gh2sy0to]
- >>554
左クリックで線を描き、右クリックでスポイト。
- 557 名前:名前は開発中のものです。 mailto:sage [2008/06/17(火) 01:00:52 ID:ZH96Nhjs]
- マウスで遊べるシューティングっていうと、喧嘩番長のやつが
結構面白かったよ。 ttp://jp.shockwave.com/games/arcade/shooting/tsubushi/play.html
- 558 名前:名前は開発中のものです。 mailto:sage [2008/06/17(火) 13:34:09 ID:kknD/33w]
- 晩夏県庁
- 559 名前:名前は開発中のものです。 mailto:sage [2008/06/18(水) 02:05:34 ID:qz8Cw7gV]
- >敵クリックで撃破。
>左クリックで線を描き、右クリックでスポイト。 インスピレーションは得られた。 喧嘩番長30分ぐらいやっちまった・・・。 が、方向性が違うことに気づいた・・・。 もうちっと考えてみるわ。
- 560 名前:名前は開発中のものです。 mailto:sage [2008/06/18(水) 02:15:41 ID:NlS9ptn1]
- えられたんだ・・・?
- 561 名前:名前は開発中のものです。 mailto:sage [2008/06/18(水) 09:01:30 ID:mqJXL/tf]
- >>539
単純な弾幕は作れるようにしてあるな。 予めリストのように自分の型の変数を持つ弾幕インターフェイスを作ってそこから n-way弾、全方位弾、連なる弾、発射調整用(ここが色々作れる。)のクラスを作る。 これで初期化時に弾の方向、方向間隔、同時発射数などを初期化できるようにした後、 複数の弾幕インスタンスを組み合わせるだけで、簡単な弾幕は作れる。 例えば5-wayインスタンスの変数に3包囲奇数型全方位弾を登録しておけば、 奇数3方向に5way弾が打てるようになる。
- 562 名前:名前は開発中のものです。 mailto:sage [2008/06/18(水) 15:02:24 ID:6MKGIX0P]
- way弾の組み合わせでほぼ事足りるからなー
東方みたいな弾幕作りたければだいぶ変わるけど、あれはあれで別だし…
- 563 名前:名前は開発中のものです。 mailto:sage [2008/06/18(水) 23:25:39 ID:oPZri8ro]
- ストラテジーパターンと、
「弾を発射する弾」で全て済ましてるな
- 564 名前:名前は開発中のものです。 mailto:sage [2008/06/18(水) 23:38:14 ID:qz8Cw7gV]
- まだ形になっていないけど、コマンドシステムは実装したので、
アゲてみた。 ttp://gamdev3.hp.infoseek.co.jp/cgi-bin/up/upup.html の [No_0293.jar] マウスコマンド習作 ってやつがそれ。 ちなみにインスピレーションから得たものは未実装。 発動した技をフル活用させようとするとなんかパズルゲーみたいに なりそうなんだよな・・・。 思いつきのアイデア求む。
- 565 名前:名前は開発中のものです。 mailto:sage [2008/06/19(木) 01:58:01 ID:SRbwL4tV]
- >>564
4軸コマンドを簡単な図形に置き換えるとか。
- 566 名前:名前は開発中のものです。 mailto:sage [2008/06/22(日) 00:39:38 ID:XlCCcTXY]
- タスクシステム難しいな・・・
どう実装すればいいかさっぱり。 オブジェクト吐いて連結リストにしておわったら削除みたいな感じでいいのかな
- 567 名前:名前は開発中のものです。 mailto:sage [2008/06/22(日) 00:55:59 ID:8fUS+A6I]
- リストで繋いだオブジェクト群に操作を加えていけばそれでタスクシステムなんじゃないの
- 568 名前:名前は開発中のものです。 mailto:sage [2008/06/22(日) 02:02:19 ID:aaplPd6e]
- >>566
リストなんか使わずに配列に入れて毎回全走査でいい。 親子関係とかなければ、これで十分。 要点は、 ・全てのキャラクタが共通の基底クラスから派生している ・1フレームに1回呼ばれる状態更新メソッドを持っている この2つだけ。 オブジェクト自身にリスト構造を持たせるのは前時代的な 実装だから、俺は薦めない。
- 569 名前:名前は開発中のものです。 mailto:sage [2008/06/22(日) 02:33:15 ID:di01Ub84]
- 配列全走査なんかしたら処理順序が狂うだろう。
弾幕シューなら敵弾の前後関係とかに影響が出る。
- 570 名前:名前は開発中のものです。 mailto:sage [2008/06/22(日) 02:36:39 ID:+i/0tpop]
- というか双方向リストとかは覚えておいたほうがいいだろ。
それにネットでは解説されてるし、組み込んじゃえば 自分が触るのはリストに関係ない構造体のデータだけだし。
- 571 名前:名前は開発中のものです。 mailto:sage [2008/06/22(日) 02:59:46 ID:l+iPD5/q]
- 自作でオブジェクトをリスト化するのが面倒なら、
STLのlistで、オブジェクトへのポインタを管理すればいいんジャマイカ?
- 572 名前:名前は開発中のものです。 mailto:sage [2008/06/22(日) 03:23:40 ID:Zr+DHgg1]
- オブジェクトがリスト構造を持っていなくて、独立したリストがオブジェクトへのポインタを
持たせることも出来るだろうけど、あんまり分ける意味を感じないな。 配列は使い勝手を考えると流石にありえないと思うけど。
- 573 名前:名前は開発中のものです。 mailto:sage [2008/06/22(日) 06:38:41 ID:DSllsGKe]
- 配列で領域確保してリストとして作動させるのが簡単ってなんかの本で読んだ覚えがあるな。
もちろん配列を超えないこと前提で。
- 574 名前:名前は開発中のものです。 mailto:sage [2008/06/22(日) 06:46:16 ID:+i/0tpop]
- >>573
そりゃそうだけどね。 でも今となったらどっちもどっちでしょ。 その都度領域を確保する場合はmalloc、freeのコストが発生。 配列で領域確保してリストとして機能させる場合は 使っている配列で構成されるリストと あいている配列で構成されるリストの 二つが存在して、ややこしくなる。
- 575 名前:名前は開発中のものです。 mailto:sage [2008/06/22(日) 10:34:16 ID:HN2ihE2T]
- >>573
たしかHSPとCだったと思うけど、配列を使ったリスト構造の実装をこの板でみたぞ ついでに情報処理の試験でも出題されたはず 配列を使った場合、静的に領域を確保するので、領域の上限がキッチリ決まってくる。 しかし、動的に確保する場合でも、ゲーム中にmalloc使って・・・なんて事はしないから条件は同じ (ゲーム開始前に一気に確保) >>574 >使っている配列で構成されるリストと >あいている配列で構成されるリストの これはmalloc等でも(ゲーム開始前に一気に確保)をした場合は同じ処理が必要 あれ?ひょっとしてどっちで実装してもメリット・デメリットあまり大差ないのか? 配列ならポインタでエラーがでないから、デバッグが多少は楽になるかもしれんが・・・。 (ポインタより配列の添え字とにらめっこするほうがらくだよね?ダンプ出しやすいし)
- 576 名前:名前は開発中のものです。 mailto:sage [2008/06/22(日) 11:14:50 ID:qz8iv83D]
- >>566だが頭がおかしくなりそう
基底クラス │ ├自機クラス→リストへ挿入 │ ├敵機クラス→リストへ挿入 │ └弾クラス ├自弾クラス→リストへ挿入 └敵弾クラス→リストへ挿入 な感じでいいのか? といってもこれすらどう組んでいいか分からん C++とオブジェクト指向もっと勉強したほうがいいですね、わかります
- 577 名前:名前は開発中のものです。 mailto:sage [2008/06/22(日) 12:12:03 ID:8fUS+A6I]
- 俺の場合は敵機・自機・敵弾・自弾・・・でリストをわけてる
そうすれば描画順を気にしないで済むし、例えば敵弾に移動速度のパラメータを持たせて 動的に全ての敵弾の速度を一気に変えたりできる 配列でのメモリ確保ってのは要するにメモリプールを作るってことだろ そんでそのプールを固定長に区切ってそれぞれの領域をオブジェクトとして利用する プールを使えばfree/mallocに伴う処理とかメモリの断片化を防げるって利点がある
- 578 名前:名前は開発中のものです。 mailto:sage [2008/06/22(日) 12:59:42 ID:rl6WJKHf]
- > あれ?ひょっとしてどっちで実装してもメリット・デメリットあまり大差ないのか?
> 配列ならポインタでエラーがでないから、デバッグが多少は楽になるかもしれんが・・・。 > (ポインタより配列の添え字とにらめっこするほうがらくだよね?ダンプ出しやすいし) サイズの違う領域を確保したり開放したり繰り返すと、 あとで再利用されない領域が発生しやすい。 本棚の本をランダムに出し入れするイメージかな。 (勿論既に本棚に入ってる本を左右にずらすのは禁止でw)
- 579 名前:名前は開発中のものです。 mailto:sage [2008/06/22(日) 13:15:17 ID:GHWgXrcU]
- おまえら細かい実装の話に熱くなりすぎだろ。
そんなのは個々人が好きなようにすればいいんであって、 もっと全体の設計の話をすべきじゃないか?
- 580 名前:名前は開発中のものです。 mailto:sage [2008/06/22(日) 14:22:22 ID:qz8iv83D]
- class hoge{
public: hoge(int id); virtual ~hoge(); private: int hogeid; }; typedef std::list<hoge*> hogeList; main(){ hogeList hogelist; hogeClass obj1(1); hogeClass obj2(2); hogeClass obj3(3); hogeList::iterator it = hogelist.begin(); hogeList::iterator ++it = hogelist.insert(it, &obj1); hogeList::iterator ++it = hogelist.insert(it, &obj2); hogeList::iterator ++it = hogelist.insert(it, &obj3); } とりあえずSTLのlistでやってみたがこんなんでいいのかな これに自機、敵機、自弾、敵弾、その他クラスをつっこんで描画やらのループにいれればいいのか?
- 581 名前:名前は開発中のものです。 mailto:sage [2008/06/22(日) 16:07:22 ID:Who4Uyml]
- STLのlist使うなら
hogeList objectlist[n]; //n=0自機 1敵機…… objectlist[i].pop_back(new hoge(...)); //オブジェクト生成 あと、hogeクラスのhogeidってなにに使うんだ?
- 582 名前:名前は開発中のものです。 mailto:sage [2008/06/22(日) 16:08:22 ID:Who4Uyml]
- 寝ぼけてるな…
pop_backじゃなくてpush_backだよ・・・
- 583 名前:名前は開発中のものです。 mailto:sage [2008/06/22(日) 18:42:53 ID:j2oc2Sqc]
- 何か話をぶった切って悪いんだが、
リプレイで早送りを実装する場合、 本来1/60秒経過したら更新するところを1/240秒経過したら更新、とする以外でいい方法ある? この方法だと、処理落ちしたところは早くできないんだよね。
- 584 名前:名前は開発中のものです。 mailto:sage [2008/06/22(日) 18:56:10 ID:8b6P9lU/]
- だいたい処理落ちの原因は描画だから、
描画を省略したらいいんジャマイカ?
- 585 名前:名前は開発中のものです。 mailto:sage [2008/06/22(日) 19:11:27 ID:/NIY82Nu]
- エフェクト類の計算処理を省略するとか
描画処理を間引きするとか
- 586 名前:名前は開発中のものです。 mailto:sage [2008/06/22(日) 19:13:46 ID:j2oc2Sqc]
- >>584,585
サンクス。レスしたあと席立ったら普通にその考えが出てきたorz
- 587 名前:名前は開発中のものです。 mailto:sage [2008/06/22(日) 19:20:25 ID:dWz0Uliv]
- アフリカでは良くあること
- 588 名前:名前は開発中のものです。 mailto:sage [2008/06/22(日) 19:23:07 ID:yBkfb3j+]
- オープンアプリ向けに作っている人は少ないのかな
- 589 名前:名前は開発中のものです。 mailto:sage [2008/06/22(日) 22:22:03 ID:XlCCcTXY]
- >>581
いんや、適当にオブジェクトを突っ込むのを実装したら こうなるかな、ってことで別に自機とか弾とかの概念はないです。 あとthx。 今度は実際にクラス作って実装か・・・ 処理してる物体がPCじゃないだけに怖いな
- 590 名前:名前は開発中のものです。 mailto:sage [2008/06/23(月) 08:18:42 ID:88AJQOqo]
- >>574
つ メモリプール
- 591 名前:名前は開発中のものです。 mailto:sage [2008/06/23(月) 15:44:39 ID:FfEyNKqI]
- >>569
>敵弾の前後関係 表示順序が問題になるような(半透明処理)が無ければ 表示上の前後関係は深度バッファまかせにできるから std::vectorを使った順序なしリストの走査順で描画しても 何も問題ないよ
- 592 名前:名前は開発中のものです。 mailto:sage [2008/06/23(月) 16:49:40 ID:FfEyNKqI]
- >>568
たしかに敵や弾は自身がどんなコンテナにぶち込まれてるかなんて 本来なら別に知る必要のない余計な情報ともいえるから boost::intrusiveみたいな押し入り癒着してくるタイプのコンテナを下手に使えば 軒先貸して母屋ひっかきまわされるだけで終わることもある この手の侵入式(?)コンテナがドマイナーなのは利点欠点を勘定したら 欠点のほうが目立つケースのほうがずっと多いから
- 593 名前:名前は開発中のものです。 mailto:sage [2008/06/23(月) 18:59:42 ID:FfEyNKqI]
- >>566
>>567 >タスクシステム 一部でそう呼ばれ、未だに一部レトロマニアに珍重・尊崇されているものの実態は boost::intrusive同様、コンテナのパラメータがオブジェクトに癒着している。 このパラメータは自前のアロケータ内部でも使われるものなので アロケータとオブジェクトが癒着しているとも言える。 またオブジェクトのメンバ変数は単なる汎用のワークメモリという扱いで 状態遷移のたびに仮想関数テーブルポインタを上書きして型が別物に化ける。 継承図とか完全無視で型が変化するので状態遷移の前後でメンバ変数が 様変わりする。 これは静的型言語のポリシーを完全に逸脱したものであり、アセンブリ言語を 使っていた自由の時代ならともかく、静的型言語であえてこんなアクロバットを 披露するのはある種の変態プレイとか路上オナニー。人前で自慢できる趣味ではない。 こんな妙なことするなら、動的型言語を新たに創造しそれをエディットする環境を構築するか 既存のスクリプト言語(LuaとかSquirrelとか)を組み込んだほうが良い
- 594 名前:名前は開発中のものです。 mailto:sage [2008/06/23(月) 20:21:42 ID:FfEyNKqI]
- 話がわき道に逸れた
敵や弾をどんなコンテナに入れるのか、これは配列でも連結リストでも n分木でも好きなようにすればいいが、その要素を走査して更新いくという ゲームの基本的な仕掛けを「タスクシステム」って呼ぶのは変かなと あれはある特殊な、もはや時代錯誤ともいえる実装に付けられた 固有名詞、ローカル用語なのだから
- 595 名前:名前は開発中のものです。 mailto:sage [2008/06/23(月) 21:34:37 ID:HikCyTD1]
- ちなみに正確には擬似タスクシステムな。
- 596 名前:名前は開発中のものです。 mailto:sage [2008/06/23(月) 21:58:57 ID:FfEyNKqI]
- >>595
教えてくれ。あれは一体何の擬似なんだ オペレーティングシステムにおけるマルチタスクシステムのタスクの擬似なのか? ならば要件を満足してない(コンテキストスイッチすらできない)から擬似ですらないぞ スケールも素材も使用目的もまるで違うただの玩具というべきだろう
- 597 名前:名前は開発中のものです。 mailto:sage [2008/06/23(月) 22:07:12 ID:9mnpmN5C]
- >>596
OSの構造しらない昔のゲームプログラマーが適当に名付けただけだよ。 その昔のゲームはキーボードからコマンドを入力するまで イベントが動かないのもあった。アニメーションもろくにできなかったしね。 その点アクションやシューティングは一定サイクル(FPS)で処理を続けてるので タスクといえる。だから擬似タスクシステムとしようってことでしょ。 組み込みのちょっとしたプログラムもRTOSとか呼ばれてるようだし。
- 598 名前:名前は開発中のものです。 mailto:sage [2008/06/23(月) 22:21:05 ID:FfEyNKqI]
- 擬似なんて言い出したのは素人だろ
エンドたんでも引っ張り出して詰問してみれ
- 599 名前:名前は開発中のものです。 mailto:sage [2008/06/23(月) 22:33:39 ID:FfEyNKqI]
- まぁどっちでもいいや
現場では擬似タスクは全く聞いたことないし、タスクにしたって 使わなくなってずいぶんと久しい。ほぼ廃れた言葉といっていい いまどきタスクシステムなんて単語を駆使してるのは 一部の懐古趣味野郎とかマムコ信者くらいだ。いずれにしろ老害。 痛い素人の真似するのが本望でないならもっとかっこいい言い方を 模索するべきだろう。ゲームエンジンとかオートマトンエンジンとか
- 600 名前:名前は開発中のものです。 mailto:sage [2008/06/23(月) 22:54:42 ID:ij0TulEQ]
- めんどくさいからタスクシステム、擬似〜〜でも良くね?
- 601 名前:名前は開発中のものです。 mailto:sage [2008/06/23(月) 22:57:43 ID:PFSFGR1E]
- ケチを付けるのが目的だから細かい名称なんてどうでもいいのさ。
- 602 名前:名前は開発中のものです。 mailto:sage [2008/06/23(月) 23:00:02 ID:9mnpmN5C]
- >>600
いやゲームエンジンだとか、商業的になるとミドルウェアという言葉で片付く。 擬似タスクシステムってやっぱり古い時代の名残だよ。 マイコンなんかで使う用語が規模も似たようなゲームマシン時代に 当てはめて生み出した造語
- 603 名前:名前は開発中のものです。 mailto:sage [2008/06/23(月) 23:25:21 ID:HdAQdXjX]
- 描画順はともかく、固定長配列じゃオブジェクトの追加に時間がかかるだろう
毎回走査して空きを探すのか? 富豪的に見えて、面倒なだけじゃね?
- 604 名前:名前は開発中のものです。 mailto:sage [2008/06/23(月) 23:31:51 ID:9mnpmN5C]
- >>603
いやだから固定長配列だって、リストにすればOKだよ。 でもテストして最大値を割り出しておかないとだめだけどね。
- 605 名前:名前は開発中のものです。 mailto:sage [2008/06/23(月) 23:37:50 ID:HdAQdXjX]
- 待って、俺が誤解していない場合、
やっぱりオブジェクトを追加するときに、 空きを探して配列を走査する必要がないか?
- 606 名前:名前は開発中のものです。 mailto:sage [2008/06/23(月) 23:40:03 ID:uMAOIcwL]
- >>603-604
富豪厨召喚呪文が唱えられたようなのでム板からカッ飛んできた 配列厨と罵倒されることもあるけど私は元気です さて、>>591のおじさまが言ってる配列による順序無しリストってのはたぶん 要素削除時に最後の要素をそこに移動&上書きするものだと思うよ 順序がメチャクチャになるけど条件が許すなら大丈夫だよね アルファブレンドなしの2D弾幕ならZ値で上下関係は保てるしね
- 607 名前:名前は開発中のものです。 mailto:sage [2008/06/23(月) 23:46:37 ID:9mnpmN5C]
- >>605
配列でオブジェクトを8コ取ったとするよね これには当然リストを構築するためのポインタも入ってるとする。 配列 □□□□□□□□ で、ゲームを起動した際に初期化処理として 使用中リスト NULL 未使用リスト □->□->□->□->□->□->□->□->NULL こうやって置く。 あとは関数でも用意してオブジェクトを追加したければ 使用中リスト □->NULL 未使用リスト □->□->□->□->□->□->□->NULL 使用中リスト □->□->NULL 未使用リスト □->□->□->□->□->□->NULL ・・・・ 使用中リスト □->□->□->□->□->□->□->□->NULL 未使用リスト NULL 使わなくなればまた未使用リストへつなげばいい。 malloc freeのコストはないけど配列で確保した個数以上は管理できない。
- 608 名前:名前は開発中のものです。 mailto:sage [2008/06/23(月) 23:49:54 ID:uMAOIcwL]
- ところで富豪厨はシモジモの日々の苦しいやりくりとは無縁なので
タスクシステムとかの貧民的なアプローチに興味ないのですが このあいだ「タスクも知らないの?プギャー」と貧乏人に煽られたので ちょっとシメてやろうと思ってタスクスレを開いたら既にタスク派が 盛大に虐殺されていました あまりの恐ろしい光景に震えあがってム板に帰りました
- 609 名前:名前は開発中のものです。 mailto:sage [2008/06/23(月) 23:51:54 ID:5JyA6mIk]
- >>605
空きの部分も線形リストで結んで管理するのが データ構造では一般的じゃなかったかなあ
- 610 名前:名前は開発中のものです。 mailto:sage [2008/06/23(月) 23:52:07 ID:HdAQdXjX]
- >>607
OK理解した 要するにメモリプールに固定長配列を使ってるわけね って>>577が既に書いてたし 物覚え悪くてスマソ >>606 コピーのコスト(ry これぞ富豪
- 611 名前:名前は開発中のものです。 mailto:sage [2008/06/23(月) 23:58:11 ID:xReDDG2i]
- 隔離スレあるんだからタスクシステムそのものについてはそっちでやってくれ
- 612 名前:名前は開発中のものです。 mailto:sage [2008/06/24(火) 00:29:33 ID:oNKHrkss]
- むしろ隔離スレから出てくるというゲハ板→ニュー速現象が・・・
こういう全体の設計って結局は人それぞれだから、あんまり2ch向けの話題じゃないな しかしレスから見るにDSとかPSP辺りで作ってるのかな?
- 613 名前:名前は開発中のものです。 mailto:sage [2008/06/24(火) 00:31:28 ID:PrpKabUz]
- >>612
今となったらオブジェクトの管理メモリより 素材の方がメモリ食うんだけどね・・・
- 614 名前:名前は開発中のものです。 mailto:sage [2008/06/24(火) 00:31:35 ID:NcdiOwFI]
- >>610
富豪厨は厨なのでパフォーマンスとか興味ないんだけど たまには庶民の期待に応えるためにベンチとり遊びもしてたよ 弾はサイズ小さい(弾種、座標、速度、深度とかで24Bytesくらい)から 削除時のコストは24バイトのブロック転送に過ぎないよ 弾アップデートのための巡回はただのリニアアクセスだから楽だよ 2000発の弾をランダムに飛ばしたり生成削除するテストしたときは boost::simple_segregated_storageとの速度競争で勝利を収めたよ ところでboost::simple_segregated_storageの中身って>>607のそれと よく似ていたんだけど、これは使用中リストから外して未使用リストに 繋げるとき(またはその逆のとき)ポインタ書き換えは何回発生する? それと弾アップデートのための巡回は隣接要素のポインタ経由の ランダムアクセスになるよね まぁ富豪厨にとっては瑣末な問題なので普通に弾一個一個で malloc/freeしてたけど
- 615 名前:名前は開発中のものです。 mailto:sage [2008/06/24(火) 01:01:38 ID:R7H+ft0X]
- >>565
スレありがと。仕事で死んでたんで見れなかったんで。 参考になりますです。
- 616 名前:名前は開発中のものです。 mailto:sage [2008/06/24(火) 01:06:33 ID:BbGOZBxw]
- >>603
富豪的に見えるかもしれないが、いまどきのPCはリストをポインタ辿って 走査するよりも配列を順走査する方が同じ要素数なら1.5倍くらい速いよ。 追加のコストが増えても、その他の処理で十分ペイできる。
- 617 名前:名前は開発中のものです。 mailto:sage [2008/06/24(火) 01:12:19 ID:4FqnTxUJ]
- シューティングゲームに必要な要素数(せいぜい2000以下)だと、確かにそうなるかも
どどんぱちの裏ステージ的な状況だとどうか知らんがw
- 618 名前:名前は開発中のものです。 mailto:sage [2008/06/24(火) 03:41:05 ID:3USBYfmM]
- >>617
>>591、>>606、>>614の言ってる配列コンテナの使い方は 削除処理=削除対象の要素を最後の要素で上書きするだけ。O(1)時間。 当然虫食いはないので要素追加時も空き要素検索は必要ない。O(1)時間。 これらの処理時間は要素数に関わらず常に一定。ただ要素サイズに比例する。 あと最大の欠点は削除・追加を繰り返すことで要素巡回順が不定になること。 だから「順序なしのリスト」なのね これが問題にならないケースで使えばいい
- 619 名前:名前は開発中のものです。 mailto:sage [2008/06/24(火) 05:39:53 ID:2pkhJQN/]
- 固定配列にこだわって富豪ってのもなんだかな。
俺は大富豪なので弾幕シューでも容赦なくnew/deleteするが。
- 620 名前:名前は開発中のものです。 mailto:sage [2008/06/24(火) 07:38:39 ID:sTkkjGQB]
- >まぁ富豪厨にとっては瑣末な問題なので普通に弾一個一個で
>malloc/freeしてたけど
|

|