[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 2chのread.cgiへ]
Update time : 05/09 09:02 / Filesize : 199 KB / Number-of Response : 762
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:名前は開発中のものです。 [2008/02/18(月) 12:02:20 ID:JNgyhRqZ]
ゲームプログラマなら誰もが通る、もしくは、通った道。青春の香り?
それは「シューティングゲーム製作」・・・。

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

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

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

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してたけど

621 名前:名前は開発中のものです。 mailto:sage [2008/06/24(火) 09:34:14 ID:wbqG7Qtf]
>>603
シューティングでは最初に発射された弾が最初に画面外に出て消滅(FIFO)するような気がするので、
空きオブジェクトをリストで管理しなくても、キュー(リングバッファ?)っぽく管理してもいいかなと思って、
最期に取得したオブジェクトの位置を保存してみたりして
試している今日このごろ。


622 名前:名前は開発中のものです。 mailto:sage [2008/06/24(火) 10:38:43 ID:LBFcTyab]
>621

Before----------------------------------------

Σ三>    -        -
                   敵


After----------------------------------------

Σ三>           -  敵   -
                  ↑


623 名前:名前は開発中のものです。 mailto:sage [2008/06/24(火) 10:46:15 ID:7sGdPDL+]
>>622に言おうとしたことかかれたw

敵とか地形が邪魔をしないゲーム(と呼べるのか?)であれば
>>621の言うようにFIFOでも成り立つがゲームらしくすると
敵もしくは地形で後に発射した弾が消滅する可能性だってある。

貫通弾にすればいいというかもしれないがやっぱり
動的にオブジェクトが増えたり減ったりする場合は
リストが向いてる

624 名前:名前は開発中のものです。 mailto:sage [2008/06/24(火) 12:47:57 ID:wbqG7Qtf]
>>622>>623のやさしさに泣いた。

そこで、対策としてとりあえず、配列の大きさを十分に大きくしておくことと、
使用中のオブジェクトに関しては、「使用中です」フラグをつけて、スキップしようと思うんだ。

配列さえ十分な大きさがあれば、
配列を一周するまでにきっと最初に撃った弾も画面外に出て消滅してるはずってことで




625 名前:名前は開発中のものです。 mailto:sage [2008/06/24(火) 13:47:19 ID:S5i4Hl5N]
どっかで

class hoge{
int x;
int y;
char[256];
}

のcharがフリー領域として使えるとかあったが、どういう仕組みなんだ?

626 名前:名前は開発中のものです。 mailto:sage [2008/06/24(火) 15:14:33 ID:cUcYhgYN]
sizeof(char*256)バイト分確保しとくから好きな型にキャストして使えってことじゃないの?

んでも、C++でわざわざこんな方法するかね?
もっと別に良い方法があると思うけど。
よくわからん。

627 名前:名前は開発中のものです。 mailto:sage [2008/06/24(火) 15:35:22 ID:3yXq89ZE]
Cではそんな組み方してたみたいね

628 名前:名前は開発中のものです。 mailto:sage [2008/06/24(火) 18:47:38 ID:nk5lzdPA]
placement new用にメモリをプールするためにchar型の配列使ってる教本があったな
素直にnewしたいオブジェクトの配列にしろよ、と

629 名前:名前は開発中のものです。 mailto:sage [2008/06/24(火) 19:14:29 ID:YG9wxXVw]
東方も順番だけ記録して固定長配列でやってそう
最後尾まで行くと最初に戻って描画順序狂ってる時があるし
cave系はlistっぽいけど

普通の2D弾幕系STGなんてどっちで実装しても問題なしじゃね?

630 名前:名前は開発中のものです。 mailto:sage [2008/06/24(火) 19:39:33 ID:cSyjiEYz]
ぶっちゃけ最近のPCのスペックならどっちでも余裕だろうな

631 名前:名前は開発中のものです。 mailto:sage [2008/06/24(火) 19:40:35 ID:ueXZ64IW]
ブルーセイバーズやテイルズギアのところはBASICで作ってるらしいけど
どうやってオブジェクトを管理してるのか気になる

632 名前:名前は開発中のものです。 mailto:sage [2008/06/24(火) 21:26:33 ID:pF7sIXlF]
みんなで一緒に富豪厨になろうぜ。

633 名前:名前は開発中のものです。 mailto:sage [2008/06/24(火) 22:07:45 ID:NcdiOwFI]
>>631
富豪厨でなおかつ玉葱狂信者なのでLGPはよく知らないんだけど
マニュアルを流し読みした感じでは配列使ってやりくりする以外の手がないような。
配列の添え字(番号)を使って連結リストとか

3Dのアニメーション用にフレーム(座標系)の親子関係があるみたいだけど
姿勢と座標を自動変更(線形的なアニメーション)するためだけのもので
ユーザー定義の変数を入れ込んだりユーザー定義関数を登録して
ゲーム独自の処理をかませるようなことはできないくさい


634 名前:名前は開発中のものです。 mailto:sage [2008/06/25(水) 01:48:12 ID:yLL8mfYi]
ゲームとして面白ければ富豪厨だろうがなんだろうが関係ないぜ、
と言いつつ結構細かいプログラムに拘ってしまう俺降臨
無駄な処理を削って云々とかよりも、はやく体験版を出して色んな人から意見を貰った方がためになるのに…orz



635 名前:名前は開発中のものです。 mailto:sage [2008/06/25(水) 02:15:01 ID:ZT5O8Vsq]
公開してから「フリゲ≒軽くて当たり前」信者の対応がタルくなるけどな!

636 名前:名前は開発中のものです。 mailto:sage [2008/06/25(水) 09:39:54 ID:EtCnEfpl]
>>629
それってステージで描画されるすべてのオブジェクトを前もって生成して
あとは順番に描画だけしてるってこと?

637 名前:名前は開発中のものです。 mailto:sage [2008/06/25(水) 10:11:08 ID:HqBe87x9]
東方はやったことないんで推測だけ。

>636
固定長配列を前から見て、「空席があったらそこに座る」ってことじゃないかと。

638 名前:名前は開発中のものです。 mailto:sage [2008/06/25(水) 12:59:07 ID:pCORKo/h]
>>634
よう俺
最近はアイデアが浮かばないから無意識のうちにギミックに凝ってしまうのだと気づいた。
勇気を出して前に進むのも必要だと思うぜ。

639 名前:名前は開発中のものです。 mailto:sage [2008/06/26(木) 16:22:49 ID:VGgrpFAu]
ygs2000を使って縦スクロールSTG作ってるんですが、
インポートライブラリのatan2(y,x)の戻り値が、0から65536になっているんですよ。
どうすれば、戻り値を0から360度の範囲に変換できますか?

640 名前:名前は開発中のものです。 mailto:sage [2008/06/26(木) 16:51:15 ID:RTbJUwyD]
ygsは知らんけど、65536 == 360度として考えるなら

int deg = atan2(y,x) / (65536/360);

641 名前:名前は開発中のものです。 mailto:sage [2008/06/26(木) 17:06:38 ID:7XWLzTd8]
元がどう見てもintなんだから、360掛けてから65536で割る方がいいだろう。

642 名前:名前は開発中のものです。 [2008/06/26(木) 17:08:05 ID:mOejCOBQ]
俺なら

* 360 / 65536

とするけど。

って書こうとしたら既にかかれてたw

643 名前:名前は開発中のものです。 mailto:sage [2008/06/26(木) 17:08:39 ID:Im8BFapF]
>>639
勝手な予想なんだが、それ角度が360度 = 2π(rad)を超えても気にせず計算できるようになってるんじゃね??
大抵の三角関数はラジアンで実装してるだろうから。
違ってたらすまん。


644 名前:名前は開発中のものです。 mailto:sage [2008/06/26(木) 17:11:19 ID:Im8BFapF]
と思ったけどすごく見当違いですね、なかったことに。



645 名前:名前は開発中のものです。 mailto:sage [2008/06/26(木) 23:03:08 ID:a/ZP+zQY]
>>639
Selene?

むしろ、ゲーム自体を65536度にあわせて設計したほうがいいかもしれない


646 名前:名前は開発中のものです。 mailto:sage [2008/06/28(土) 15:07:32 ID:nt11KuRN]
おまいら話ズレすぎだろw






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<199KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef