1 名前:名前は開発中のものです。 [2008/08/01(金) 23:32:33 ID:GzWnlC6Z] ゲームプログラマなら誰もが通る、もしくは、通った道。青春の香り? それは「シューティングゲーム製作」・・・。 このスレでは、そんなシューティングゲームの製作技術や技術の検証、成功談 失敗談笑い話、難易度の設定方法論、多弾の是非などについて語り合いましょう。 もちろんBulletMLなどで弾幕を作成してみたり、自分の作ったシューティングを 晒してみたり、プロジェクトをはじめてみるなどもOK! ただし、シューティングの未来とか既存のゲームの話題などは、関連する他の スレでやってくれ。 過去スレ,関連スレは >>2-3 で。
8 名前:名前は開発中のものです。 mailto:sage [2008/08/02(土) 19:40:12 ID:eWNSJZ1T] 無いがある。矩形の当たり判定でも、ある程度種類があるし、点vs矩形(内積)もある。 例えば絞り込みも if ( (dx<AAA) && (dy<BBB) )よりif (dx<AAA) if (dy<BBB) の方がはええ。
9 名前:名前は開発中のものです。 mailto:sage [2008/08/02(土) 19:56:01 ID:ffxR51b5] オブジェクトを配列に登録して、 オブジェクト同士の距離を基準にソートしておけば、 各オブジェクトは隣の要素と当たり判定するだけ、、、とかダメかな。 ソートのコストが問題だけど。
10 名前:名前は開発中のものです。 mailto:sage [2008/08/02(土) 20:39:56 ID:eWNSJZ1T] ある程度判定する要素数が多ければ、有用かも?単純にオブジェクト単位のソートでは無理で、 最低でもx軸y軸別々にソートする必要があるな。こーゆー感じでしょ? X軸―→ p1(0,0) Y p3(4,1) 軸 p4(2,2) | p2(1,3) ↓ p5(3,4) 仮にp1(0,0),p2(1,3),p3(4,1),p4(2,2),p5(3,4)の場合, p2-p3間の矩形で判定するとして、 x軸ソート: p1<p2<p4<p5<p3 y軸ソート: p1<p3<p4<p2<p5
11 名前:名前は開発中のものです。 mailto:sage [2008/08/02(土) 20:59:27 ID:ffxR51b5] >>10 まあ、半分妄想だったんで、そこまでは考えてなかった。 p1 -- p2 | p3 -- p4 L___________p5 無理矢理近い物をつないでいけばいいかな位に考えてたw でもそれだと上の図みたいに、配列上ではp3とp5が隣り合ってるにも関わらず、p4とp5が近いなんて場面もでちゃうのね。 X軸/Y軸でソートってのはいいね。 画面上に10000個互いに衝突するオブジェクトが有っても、9999 x 2 回くらいしか判定しなくていいわけだから あとはソートのコストとご相談だね。 総当たりなら、10000C2 だから 10000 x 9999 / 2 = 約5000万回くらいか。
12 名前:名前は開発中のものです。 mailto:sage [2008/08/02(土) 21:18:30 ID:eWNSJZ1T] 今更思い出したんだけど、確か前スレか前々スレ辺りに、似た話があった。 ソートする場合は、画面を例えば9分割(たとえば縦横3x3等間隔)位にエリア分けして、各エリアごと別々にソートするとか。 そうすればエリアの判定部分は要るが、総当たりのコストはもっと減る。 エリア境界に丁度かかる場合の判定は、ちょっとメンドクサイかも。
13 名前:名前は開発中のものです。 mailto:sage [2008/08/02(土) 21:21:13 ID:vNDa116L] >>10 これはソートした後、判定されるオブジェクト近辺の座標だけ判定するってこと? 数千個程度じゃあまり意味ないかなぁ
14 名前:名前は開発中のものです。 mailto:sage [2008/08/02(土) 21:45:08 ID:vNDa116L] 連投すまん >>12 空間分割か? 前スレ見たけど矩形より遅くなるとか書いてあったけども 空間分割で自機と敵弾が存在する空間にあるオブジェクトを取り出してあとは矩形で判定、って感じか。
15 名前:名前は開発中のものです。 mailto:sage [2008/08/02(土) 21:52:22 ID:NCNaReUU] いつも思うんだが、属性もたせて総当りじゃ速度足らないのだろうか? 敵弾と判定するのは自機、および自機系 自機弾と判定するのは敵機、および敵機系 敵弾の総数が300と仮定しても、バリア等あって3つ自機系があっても1500回 自機弾と敵機系がそれぞれ20、30としても600回程度じゃね?
16 名前:名前は開発中のものです。 mailto:sage [2008/08/02(土) 22:30:13 ID:ffxR51b5] >>15 それも有りだよな。 敵、敵弾が10000発あっても、自機が1機だけなら 10000回の判定ですむわけだし。 実際、俺もそんな感じで分類してる。
17 名前:名前は開発中のものです。 mailto:sage [2008/08/03(日) 01:18:08 ID:be/cNwxM] >>9 敵弾と自機の当たり判定だけで搾るけど、一番距離の近い弾だけを 取得(または保存)するだけでいいのでは?ソートする必要はないように 思える。
18 名前:名前は開発中のものです。 mailto:sage [2008/08/03(日) 01:37:14 ID:hllQJn35] 空間分割というか、自機の回りを大きめに判定して、その後詳細な自機との判定をすれば・・・ って>>17 とほぼ同じか
19 名前:17 mailto:sage [2008/08/03(日) 02:11:47 ID:be/cNwxM] >>18 いや、おれは空間分割は手をつけていないが。。。 というか、空間分割って、空間で分割をする処理が必要で、分割する手間で 自機と当たり判定を行えばよいという欠点があり、分割する頻度を下げないと 処理は軽くならんだろう。 おれは、当たり判定をするだけなら全ての弾をソートする必要はないのではと つっこみを入れたかっただけです。
20 名前:名前は開発中のものです。 mailto:sage [2008/08/03(日) 08:36:43 ID:cj6fH4C5] >>18 は自機付近の敵弾しか判定しないからその点では>>17 と同じって言ってるんだろ。 でも時期の周りしか判定しないとしても結局「総当たり+α」くらいの回数にならないか?
21 名前:名前は開発中のものです。 mailto:sage [2008/08/03(日) 09:51:06 ID:fGHh5ylA] 空間分割は相互に当たり判定がある物体が大量にある場合に、大きな効果があるけど シューティングのような多対一の場合は、やる意味が少ないよ。
22 名前:名前は開発中のものです。 mailto:sage [2008/08/03(日) 11:04:57 ID:cj6fH4C5] なんか良さげなの見つけたけどよくわからん lab.polygonal.de/articles/recursive-dimensional-clustering/ ざっと見るに>>10 みたいな感じだが・・・
23 名前:名前は開発中のものです。 mailto:sage [2008/08/03(日) 15:01:17 ID:0ZCECk8O] >>22 0. オブジェクトの左端、右端を示すデータ(*1)を作る。 1. *1をx軸方向にソートする 2. 重なってる*1をグループ化 例: [a,b], [c], [d,e,f],,, 3. 各グループの中身をy軸方向にソート、グループ化 { [a], [b] }, { [c] }, { [d,e], [f] } 4. もう一度x軸方向にソート、グループ化 5. 同じグループにあるオブジェクトはぶつかっている! 長所: 衝突が発生しないとき効率が良い。動かないオブジェクトはあらかじめグループ化しておけばお徳。 短所: 全てのオブジェクトに衝突が発生したとき効率は最悪になる ということだと理解した。 パーティクル(水しぶきとか?)の衝突判定を研究してるサイトみたい。
24 名前:名前は開発中のものです。 mailto:sage [2008/08/03(日) 15:11:58 ID:q7Wuxlyj] 実の所2Dゲームの当たり判定ってそんなに重くないよな でなかったら物理エンジンなんて夢のまた夢
25 名前:名前は開発中のものです。 mailto:sage [2008/08/03(日) 21:58:47 ID:xylQeBNi] >>8 >例えば絞り込みも if ( (dx<AAA) && (dy<BBB) )よりif (dx<AAA) if (dy<BBB) の方がはええ。 これほんと?
26 名前:名前は開発中のものです。 mailto:sage [2008/08/03(日) 23:06:02 ID:PkBsN97L] んなわけない。論理積演算子は左側のオペランドがfalseなら右側は評価されずスルーされる。 C++規格ドラフトより ttp://www.kuzbass.ru:8086/docs/isocpp/expr.html > Unlike &, && guarantees left-to-right evaluation: the second operand is not evaluated if the first operand is false. あとK&Rのp.26とか、プログラミング言語C++の6.2.2とか、アセンブリャーが吐くコードとか参照
27 名前:17 mailto:sage [2008/08/03(日) 23:09:19 ID:be/cNwxM] >>25 (1)if (条件A) && (条件B ) 条件Aを判定 条件Bを判定 条件Aと条件Bの両方を満たすか判定 の3ステップ (2)if (条件A) if (条件B) 条件Aを判定 Aが真ならばBを判定 最小1ステップ。最大でも2ステップ と想像してみた。、でも最近のコンパイラは裏でいろいろ頑張ってくれてる ので、実行ファイルでの処理は(1)でも条件Aが偽の時点で処理を終了 させてるそうな。特殊な環境で無い限り処理に差はでないらしい。
28 名前:名前は開発中のものです。 mailto:sage [2008/08/03(日) 23:14:42 ID:PkBsN97L] というか当たり判定の話題っていったい何周目なのか。 2D弾幕シューごときに空間分割なんか無用とか、>>26 だって以前にも書いた記憶が いくらキミらがシューティング大好きだからといっても永パ突入してそうなら阻止するぞ。
29 名前:名前は開発中のものです。 mailto:sage [2008/08/03(日) 23:16:44 ID:jrQGFSJZ] どっちも同じだよ 前者でも条件Aが偽だったらそこで終了
30 名前:名前は開発中のものです。 mailto:sage [2008/08/04(月) 00:05:23 ID:35hV0Fza] 携帯の弾幕ゲー作ろうとしてるのに空間分割いらないとな
31 名前:名前は開発中のものです。 mailto:sage [2008/08/04(月) 23:38:43 ID:Vp8LYTR0] SDL使って、Linux/Windows互換のシューティングを作ってるんだが、 Windows機が320x200の解像度をサポートしてなくて、フルスクリーン表示できなかった。 OSの問題というよりは、 ビデオカードの問題なのか!? そうなのか!? しょぼーん。
32 名前:名前は開発中のものです。 mailto:sage [2008/08/05(火) 23:33:02 ID:mNgd8k5l] ドライバだろう
33 名前:名前は開発中のものです。 mailto:sage [2008/08/06(水) 16:03:06 ID:gi5IYuOS] S式の構文を持つスクリプトでステージを作成できるSTG もう1年たつのにずっと設計中
34 名前:名前は開発中のものです。 mailto:sage [2008/08/07(木) 21:54:23 ID:qrl05lIa] >>32 そのセンも捨てがたいな (←良く分かってない(汗)) >>33 「S式」で具具ったらLISPが出てきた。 LISPでステージを記述できるのか!?
35 名前:名前は開発中のものです。 mailto:sage [2008/08/07(木) 22:27:33 ID:ASRJpF7k] >>34 そだよ〜
36 名前:名前は開発中のものです。 mailto:sage [2008/08/07(木) 22:36:35 ID:vxsGvHpL] >>34 クラッシュバンディグーとかジャック&スターはLispで書かれてるよ。 Lispは、文法がそのまま構文木だから、ほかの言語に比べたら組むのは楽かと。
37 名前:hoge ◆MvRbZL6NeQ [2008/08/16(土) 16:57:14 ID:PEdua842] シューティング制作しているのですが、 グラフィッカーがつかまりません フリー素材でも紹介してもらえないでしょうか?
38 名前:名前は開発中のものです。 mailto:sage [2008/08/16(土) 18:22:56 ID:bDq2k79v] とりあえず代替グラフィックを使って、完成したあとにそれを見せて誰かに頼めば、 たいてい誰でもやってくれると思う。
39 名前:名前は開発中のものです。 mailto:sage [2008/08/16(土) 18:45:25 ID:PEdua842] >>38 ありがとうございます そのように行いたいかと思います
40 名前:名前は開発中のものです。 mailto:sage [2008/08/16(土) 18:51:26 ID:QQGV0aMo] > たいてい誰でもやってくれると思う。 俺はやらんぞw > たいてい誰かしらがやってくれると思う。 だよな…?
41 名前:名前は開発中のものです。 mailto:sage [2008/08/16(土) 19:29:12 ID:3Mm4zQJB] >>37 爆発グラとかは自動生成できたりするね。「発色弾」とかうんたらかんたら。
42 名前:名前は開発中のものです。 mailto:sage [2008/08/16(土) 22:01:43 ID:bDq2k79v] >>40 修正サンクス、何でそんな間違いしたんだろう。
43 名前:名前は開発中のものです。 mailto:sage [2008/08/17(日) 07:46:41 ID:xl/Fh4Cp] 東方も実行ファイル軽いから弾幕を別ファイルで定義してるんだろうな
44 名前:名前は開発中のものです。 mailto:sage [2008/08/17(日) 12:51:09 ID:P6xeVicK] 別ファイルで、スクリプト化し、関数のパラメータだけ定義しているって感じでしょうか? 基本設計がしっかりしていないと、後で破綻するんで、正確な技術が求められますね
45 名前:名前は開発中のものです。 mailto:sage [2008/08/17(日) 17:59:26 ID:OLD3QmIj] いや、普通ソースコードなんかで実行ファイルが早々大きくなるもんじゃないだろう。
46 名前:名前は開発中のものです。 mailto:sage [2008/08/18(月) 00:19:15 ID:5XsFB2kk] >>44 容量を増やしたいならd3dx9.libとかリンクするといいよ
47 名前:名前は開発中のものです。 mailto:sage [2008/08/18(月) 00:21:38 ID:5XsFB2kk] ×>>44 ○>>43
48 名前:名前は開発中のものです。 mailto:sage [2008/08/18(月) 01:17:17 ID:vnL1FG7Q] 敵の動きとかを別ファイルから読み込みたいんだけど、こういう場合はscanfでやるの? GetPrivateProfileIntでやってたらマイナスの値が使えないことに気がついて鬱になった。 具体的に 敵ナンバー,フレーム数 [ENEMY1,0] MOVE_X = 1 MOVE_Y = 5 見たいな感じのがやりたい
49 名前:名前は開発中のものです。 [2008/08/18(月) 03:58:05 ID:ok9P/f48] YAMLパーサでも探して組み込みゃいいんじゃね 単純な構造だから自作してもそこそこ簡単だと思う
50 名前:名前は開発中のものです。 mailto:sage [2008/08/18(月) 21:10:51 ID:nA1GIgr0] Lua で良いんじゃない?
51 名前:名前は開発中のものです。 mailto:sage [2008/08/19(火) 04:16:44 ID:kdTC+AJw] >>48 文字列で読み込んで数値に変換したら
52 名前:名前は開発中のものです。 mailto:sage [2008/08/19(火) 11:08:00 ID:gdRTu9U0] >>48 GetPrivateProfile系は遅いという欠点もあるので、自作するのが吉
53 名前:名前は開発中のものです。 [2008/08/20(水) 08:52:39 ID:Ro4t5ceJ] スタート時に全データを読み込んじゃえばいいんだから、 速度的にはあまり気にする必要ないかと。 文字列の扱いはSTLのstringクラス使うと楽。
54 名前:48 mailto:sage [2008/08/21(木) 00:14:51 ID:y6XWHE5C] いろいろやり方あるんだな とりあえず適当に作ってみるよ
55 名前:名前は開発中のものです。 mailto:sage [2008/08/21(木) 12:58:41 ID:LdsSdAF0] 技術的な質問している中、横槍刺す感じになって悪いんだが、 質問があります 萌え系シューティングが増えてきて、 シューティングゲーム中に、会話文が出るのも珍しくなくなってきたわけだけど ああいう会話文って、多すぎると問題なのかな? ステージ開始時に、3行*10位の数の文章を表示するのは改善した方が良い?
56 名前:名前は開発中のものです。 mailto:sage [2008/08/21(木) 13:07:19 ID:ZYhotP5Z] >>55 バランスの問題じゃね? 徹底的に会話やりたいならシューティングではなく、ノベルゲーだと言い張るのも手だと思う。
57 名前:名前は開発中のものです。 mailto:sage [2008/08/21(木) 13:33:28 ID:UDvqCdRO] オプションでON/OFFできるようにしたら文句も出ないと思う
58 名前:名前は開発中のものです。 [2008/08/21(木) 13:45:49 ID:vRyaf4uY] >>55 ぶっちゃけ、2回目以降はウザくなるだけ。 無いほうがありがたい。
59 名前:名前は開発中のものです。 mailto:sage [2008/08/21(木) 15:18:04 ID:7l0UGN+r] >>56 のように、ノベルゲーと割り切ることも出来ないですし >>58 のように完全に無しにすると、ストーリー的な意味合いでの問題が生まれるので >>57 のようなオプションでON/OFF出来るような形を取りつつ、 バランスを考えていこうと思います レスありがとうございました!
60 名前:名前は開発中のものです。 [2008/08/21(木) 15:23:40 ID:vRyaf4uY] スタート時にプレイヤー名を入力、以後自動的にセーブされるシステムで解決。 最初にプレイする面でだけセリフが流れて、2回目以降は フラグ立ててオフにする。 このシステムなら最後にプレイした面からコンティニューもすることも可能。
61 名前:名前は開発中のものです。 mailto:sage [2008/08/21(木) 15:24:16 ID:tmUnDpCY] オプションもいいが、ボタン等でスキップできるとなおよい
62 名前:名前は開発中のものです。 mailto:sage [2008/08/21(木) 15:36:30 ID:CGEifo5c] >>60 そういった仕様のゲームでは、 必ず一回くらいは読み飛ばしてしまって、あうあうする俺に謝れw しかし、コンテニュー時は表示しないようにするなど、 細かい場面場面には使えそう >>61 ボタンスキップは考えてみる。 おまいらの優しさに涙でそう
63 名前:名前は開発中のものです。 mailto:sage [2008/08/21(木) 22:50:08 ID:tTjQUPWl] ぶっちゃけ最初から読まない俺みたいなのも多いと思うので 普通にスキップできるようにしておいたほうがいいかと
64 名前:名前は開発中のものです。 mailto:sage [2008/08/21(木) 23:36:18 ID:vCOn6b97] ヒントに気付かず死ぬんですね
65 名前:名前は開発中のものです。 mailto:sage [2008/08/21(木) 23:55:55 ID:FmoWGTBu] あーあるわー それはそうと。 >>59 最近の美少女系ゲームは軒並みゲーム要素が作りこまれてるゲームが人気だぜ。 つまりシューティングなんだかエロゲなんだかノベルなんだかわからんゲームを作ってもまったく無問題。
66 名前:名前は開発中のものです。 mailto:sage [2008/08/22(金) 18:31:20 ID:RTnVG24d] 種類、死亡 X座標 Y座標 向いてる角度 加速度(角度) 加加速度(角度) 動いてる速度 加速度(速度) 出現してからの時間 次の動作までの時間 HP ひとつ後の敵のポインタ(描画用) ひとつ前の敵のポインタ シューティング作ろうとしたら敵と弾の変数がこんなに多くなってしまったのですが これ1000個宣言しても大丈夫ですかね?
67 名前:名前は開発中のものです。 mailto:sage [2008/08/22(金) 18:41:28 ID:4khlv+bo] >>66 変数の数はあんまり気にしないほうがいいよ そんなもんだし あと、かなりの数でも余裕だけどその前に画面が埋まってゲームとして成り立たなくなるから大丈夫だと思う
68 名前:名前は開発中のものです。 [2008/08/22(金) 19:36:05 ID:3yjiLRX5] 流れ切ってすまんけど、弾幕系のゲームにシールドってありかな?初心者向け機体とかでいれようかと思ってるんだが…
69 名前:名前は開発中のものです。 mailto:sage [2008/08/22(金) 20:06:16 ID:NS7yc2Pr] カラスとかにもあるし良いんでない?
70 名前:名前は開発中のものです。 mailto:sage [2008/08/22(金) 20:14:48 ID:X34z8Pub] >>66 1000並べた時に問題になるのは変数の多さじゃなくて、画像処理の方だから問題ないと思う。 >>68 いいんじゃね。R-TYPEとかパロディウス的に考えて。
71 名前:名前は開発中のものです。 [2008/08/22(金) 20:41:13 ID:3yjiLRX5] >>69 >>70 サンクス!フォースあたりを参考に作ってみるわ
72 名前:名前は開発中のものです。 mailto:sage [2008/08/23(土) 10:23:14 ID:4bAD3hrh] >>66 俺は弾1個のクラスだけで150バイトぐらいあるがそれで2000個宣言してるから安心してOK
73 名前:名前は開発中のものです。 mailto:sage [2008/08/23(土) 12:25:00 ID:wlFOGBjl] >>72 まて、全部doubleでやっても流石にそんないかなくね?
74 名前:名前は開発中のものです。 mailto:sage [2008/08/23(土) 12:48:10 ID:cF2fhCmE] 点数が溢れる可能性があるからlongじゃなくてdoubleで持ちましょう ですね、分かります
75 名前:名前は開発中のものです。 mailto:sage [2008/08/23(土) 14:08:36 ID:3Oms+s7k] >>73 行動パターンとかもデータとして持っておくなら、いくらでも大きくなれるよ。
76 名前:名前は開発中のものです。 [2008/08/23(土) 17:21:58 ID:dlvgQBQZ] 敵の行動パターンなどはどうやって作成しているのでしょうか? 1.ソースコードに直接埋め込む 2.別ファイルに定義し、ステージ開始時に読み込む 1.2.それぞれ メリット、デメリットなどを書いてくれるとありがたいのですが
77 名前:名前は開発中のものです。 mailto:sage [2008/08/23(土) 17:30:06 ID:dlvgQBQZ] 他力本願もいけないので私なりの考えですと 1.メリット:作成が簡単 デメリット:いちいちコンパイルする必要がある 2.メリット:コンパイルする必要がなくなる デメリット:定義するパラメータなどの複雑化 他 ご意見ございませんでしょうか?
78 名前:名前は開発中のものです。 mailto:sage [2008/08/23(土) 17:43:59 ID:L0H1blrE] 中間もあるな
79 名前:名前は開発中のものです。 mailto:sage [2008/08/23(土) 17:45:45 ID:h4eOuCSR] >77に追加、補足など。 【1】 メリット: ●特に何もしなくても、定義データが実行ファイル内に含まれるので、 暗号化とか、アーカイブ化しなくても、データを弄られる心配がそんなにない。 ●プログラマが定義データを作るので、複雑な処理や例外的な動きなども必要な時にサクッと作れる。 デメリット: ●複数の人で開発している場合は、プログラマしかデータを弄れない。 【2】 メリット: ●特に複数メンバーで開発しているような場合だと、分担作業ができるので超☆有効。 というか何人かで一緒に作ってるなら外部ファイルは必須。 デメリット: ●定義ファイル(スクリプト)の仕様を、あまり複雑なものに出来ない。 複雑すぎるスクリプトは、結局プログラマしか扱えなくなることがあるという。 ただし、これに関してはスクリプタの腕次第。商業作品であれば専用のスクリプタがいる場合も。 ●定義ファイルは最終的に暗号化やアーカイブ化しないとユーザに内容を見られてしまう&弄られてしまう。 ●STGはそうでもないかもしれないが、既存のマップエディタの類を利用できる
80 名前:名前は開発中のものです。 mailto:sage [2008/08/23(土) 17:47:16 ID:n2JXhqWY] >>78 気になった。マクロで記述するとか?
81 名前:79 mailto:sage [2008/08/23(土) 17:48:08 ID:h4eOuCSR] 失礼。 >79の【2】のデメリットの3番目は、正しくはメリットですね。 というわけで。 複数のメンバーで開発してるなら外部ファイル、1人ならどっちでもいいかも、くらいかと思います。
82 名前:名前は開発中のものです。 mailto:sage [2008/08/23(土) 19:15:26 ID:3Oms+s7k] >>76 1. メリット: 起動が速い、プログラムがシンプル デメリット: 毎回コンパイルするのがまどろっこしい 2. メリット: 変更が即座に反映される デメリット: プログラムが複雑 3. 俺の考える中間 = リリース版においてはスクリプトを読み込み内部データを生成してシリアライズする。 メリット: 1、2のメリットを享受できる デメリット: プログラムが余計に複雑
83 名前:名前は開発中のものです。 mailto:sage [2008/08/23(土) 19:54:52 ID:dlvgQBQZ] ご意見ありがとうございます 中間、シリアライズが、よくわかりませんが 一人での開発となるので 1 を採用したいと思います。 ありがとうございました。
84 名前:名前は開発中のものです。 mailto:sage [2008/08/23(土) 23:29:42 ID:aWRf8BFC] シリアライズっつうか、C/C++コードに落とす方法もあるね。 WAIT 10 TURN 16 SHOT TO_MYSHIP みたいなマクロを void zako(Status st) { switch (st->state) { case 1: { if (++st->count < 10) break; else { st->count = 0; st->state++; break; } } case 2: { st->degree += 16; shot(st->my_x, st->my_y, GetMyShipDeg(&st)); st->state++; break; } case 3: { ・・・ みたいに機械変換・展開する。更に手を加えて関数テーブルにしてしまう。 速度命でなければあまり意味ないけど。
85 名前:名前は開発中のものです。 mailto:sage [2008/08/24(日) 06:08:05 ID:zMSpaWbd] 豚切り質問 極座標で、引力風の加減速する誘導弾作りたいんだけどやってる人いる? XYでそれぞれ増加量を取れば簡単だけどベクトル計算でもできるだろか? 一回直交座標に戻すことしか思いつかん・・・
86 名前:名前は開発中のものです。 mailto:sage [2008/08/24(日) 11:13:31 ID:zRm82S1j] >>84 LL系言語のテンプレートとかで自動生成してもいいかもね。
87 名前:名前は開発中のものです。 mailto:sage [2008/08/25(月) 16:24:14 ID:Tr1xSsHl] >>85 ベクトル計算とXYの増加量って同じじゃね?
88 名前:名前は開発中のものです。 mailto:sage [2008/08/26(火) 00:47:53 ID:mX/3cQ59] 直行座標系で移動ベクトルと加速度ベクトルを管理して、 曲面上に一旦投影したほうが単純なんじゃね? 極座標系のZはそのあと適用かな。僕エスパー。
89 名前:名前は開発中のものです。 mailto:sage [2008/08/27(水) 23:11:19 ID:0gVLJp85] 俺HAEEEEEEEEEEEE!なシューティング案が浮かばなくて困る。 レースゲーのような速度表示とかつけても、体感速度が上がらないとよくわからんゲームになりそうだし。 FPSを自前で制御して60以上に上げてもいいけど、低スペも考えると無理そうだなぁ
90 名前:名前は開発中のものです。 mailto:sage [2008/08/27(水) 23:13:16 ID:jmtIZjVC] とりあえず基本 ・縦シュー ・背景を高速スクロール
91 名前:名前は開発中のものです。 mailto:sage [2008/08/27(水) 23:25:00 ID:H1jnaxKC] >>89 敵が対応出来ない程の速度で突っ込んできたり 一瞬で画面外にすっ飛んで行っても困るしな
92 名前:名前は開発中のものです。 mailto:sage [2008/08/27(水) 23:34:21 ID:fj3ggo4y] >>86 ,87 スマン、角度と速度で弾と敵の動きを定義してたから、統一したくて XYの増加量を分離しないでやる方法があったら知りたいって質問だったけど よく考えたらベクトルの足し算ってXYで分離するしかなかった
93 名前:名前は開発中のものです。 mailto:sage [2008/08/27(水) 23:50:04 ID:0gVLJp85] >>90 まあ横でもアリかと思うが。 >>91 速くなりすぎた代償としてはいいんだがな。 衝突が嘘判定になりそう
94 名前:名前は開発中のものです。 mailto:sage [2008/08/28(木) 01:48:57 ID:KjrNgwzc] >>89 演出によって体感ハエー感はかなり変化すると思うぜ BGMがノリノリだとウホッ!俺ハエッ!となるし 3Dなら拡大系のフィードバックエフェクトで画面隅の背景に ブラーがかかってるとウハツ!俺ハヤス!となるかもだ
95 名前:名前は開発中のものです。 mailto:sage [2008/08/28(木) 02:06:04 ID:DoMNDuDR] 3D後方視点
96 名前:名前は開発中のものです。 mailto:sage [2008/08/28(木) 10:14:50 ID:MS2hHN8x] 敵を追撃する、あるいは敵を後ろから追撃させる形にすれば、 敵の動きはのろくても、高速の世界での戦いになるんじゃね。
97 名前:名前は開発中のものです。 mailto:sage [2008/08/28(木) 13:09:57 ID:VZwGSez1] 画面上では止まっていても、背景スクロールなどを考えるに、自機は常に前へと移動してるとする。 そう考えると、敵は後ろに下がりながら攻撃してたりするんだよな。
98 名前:名前は開発中のものです。 mailto:sage [2008/08/28(木) 13:36:33 ID:4ZvC6hJE] >>97 言われてみれば確かに! 今ままで全然気づかなかったw
99 名前:名前は開発中のものです。 mailto:sage [2008/08/28(木) 14:36:54 ID:73R3Xxs7] >>97 バック走ですね、わかります homepage2.nifty.com/Melancholy/text/img/10001947988_s.jpg
100 名前:名前は開発中のものです。 mailto:sage [2008/08/28(木) 16:25:55 ID:Y3Mv/OLQ] >>89 初代スグリのゲームシステム模せば俺HAEEEできるんじゃね?
101 名前:名前は開発中のものです。 mailto:sage [2008/08/29(金) 00:55:03 ID:2xEvauFT] ザナック!ザナック!
102 名前:名前は開発中のものです。 mailto:sage [2008/08/30(土) 19:09:07 ID:O3PxkN+V] 横シューの難易度調整の難しさは異常
103 名前:名前は開発中のものです。 mailto:sage [2008/09/01(月) 16:05:59 ID:2lnSdX1u] ↓これまじですか?持ってる人いたらください。お礼はします 362 名前:名無しさん@弾いっぱい[sage] 投稿日:2007/05/01(火) 10:52:07 ID:BXxW4/Vn 超連射の効果音はフリーとして配布してたような
104 名前:名前は開発中のものです。 mailto:sage [2008/09/01(月) 16:51:48 ID:CSGjNBDp] 普通に.pcmで入ってないか? 形式は MSM6258v 15.625kHz X68kのpcm>wav変換ツールは探せば出てきそうだが
105 名前:名前は開発中のものです。 mailto:sage [2008/09/01(月) 16:57:55 ID:gYzZxzMx] >>104 サンクス 2つぐらい試してみたけどうまくできなかった 家帰ったらもう一回やってみる
106 名前:名前は開発中のものです。 [2008/09/01(月) 17:06:04 ID:ZEiLOxfm] ちょっと質問です。一応自分なりのやり方で作ってはいるのですが、どうもすっきりしないので。 目的) 2Dシューティング上で、発射位置、命中位置の二点間をつなぐ。 ただし、レーザーのような直線ではなくて、方向にランダム性をもたせて 電撃のような軌道にし、最終的に命中位置まで到達させる。 条件1) 二点間の距離には上限がある。 条件2) 二点間をつなぐ線は、「短い線」を数珠繋ぎにして描く。「短い線」の長さは固定。 条件3) 線が弧を描くようにして、急激に折れ曲がるようなのは避ける。 繋がった線と線の角度差は45度が限界とする。 条件4) 繋げる「短い線」の数にも上限がある。 条件5) この「二点間を繋ぐ線」は1フレームごとに描きなおすので座標の保持は不要。 (ヘビのようにうねうね動かしたりしない) 「短い線」の長さが決まっていて、曲がる角度にも限界があると、 位置によっては衛星軌道のようにぐるぐる回るだけで命中位置に到達できないだろうって事は 試すまでも無く解ります。 また、二点間の距離に上限があるとしても、曲がり方にランダムが混ざる以上、 到達までにどれくらいかかるかは不明なので「短い線」の数が上限を越える場合もある事も解ります。
107 名前:名前は開発中のものです。 [2008/09/01(月) 17:07:15 ID:ZEiLOxfm] 結局、私がとった方法は、条件3と条件4を部分的に無視したもので、次のようなものです。 「発射位置から、命中位置の方向へ方位修正しながら向かう。 何回かに一回くらいの割合(ランダム)で、関係ない方向へ曲がる時をまぜる。 この時の曲がる角度もランダム(ただし曲がる角度は条件3の上限を守る)。 命中位置に到達すればおしまい。 もし、つなぐ「短い線」の数が上限に達した場合は、その位置から命中位置まで むりやり直線で繋ぐ。(この時に条件3と条件4を無視する)」 この方法だと線の最後あたりが情けない事になるけど、 全体的な曲線が、発射位置からみて扇状に伸びていくのが割とかっこいい。 他に考えた方法だと 案A) 発射位置と命中位置、それぞれからお互いにむかってランダムを含みながら線を伸ばし、 一定回数伸びたところで、その先端同士をむりやり直線で繋げる。 案B) 発射位置と命中位置の間の空間一帯に、2点ほどランダムで中継地点を設け、 発射位置〜中継地点A〜中継地点B〜命中位置、それぞれの間を 弧で綺麗に繋がるように計算して軌道を描く。 というものがあったのですが、どっちもいまいちピンときませんでした。 このような事を実現したい場合の良い方法には他にどのようなものがありますでしょうか。
108 名前:名前は開発中のものです。 mailto:sage [2008/09/01(月) 18:28:42 ID:Ik31Cyne] 全然自信なくて全然参考にならんと思うけど まず命中位置と発射位置を計算して弧でつなぐ 「短い線」の本数は距離によって変える 「短い線」が > こうなってるところは < こんなふうにしてつなぎ目を対象移動できる そしたら上の線とさらに上の線は > こんなふうになっているからそれも移動できる それを最後まで繰り返す 45度以上になるときは対象移動できなくする 棒を飛ばしたり 何個も含んで対象移動するとちょっと変わる