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


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

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



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

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

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

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

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度以上になるときは対象移動できなくする
棒を飛ばしたり 何個も含んで対象移動するとちょっと変わる

109 名前:名前は開発中のものです。 mailto:sage [2008/09/01(月) 21:22:13 ID:08mwU9Dg]
>>107
とりあえず、雷の画像をメモリに置いておいて、発射位置と命中位置が合うように回転/拡大縮小すればいいんじゃないかと思った。

110 名前:名前は開発中のものです。 mailto:sage [2008/09/01(月) 22:19:08 ID:7DSWwsP5]
>104
PCMCONVってやつで綺麗に変換できた
どもです

111 名前:名前は開発中のものです。 mailto:sage [2008/09/02(火) 02:51:02 ID:csq9srzC]
>>107
2点を発射位置P(x,y)、命中位置Q(x2,y2)とする。

平行移動して発射位置が原点に来るように移動。
P' = (0, 0)
Q' = (x2-x, y2-y) = (x', y')

新しい命中位置Q'(x',y')がX軸に重なるように回転。
回転させるために回転行列Rを用意する。

R = ( cosX, sinX ) ( -sinX, cosX ) 角度Xは線分P'Q'とX軸の間

P'' = RP' = 原点
Q'' = RQ' = X軸上の点

最後に原点からQ''までの間を、長さrでn本の線分Tで目指す。

線分の各点を Tn(tx(n),ty(n)) とするとき、極座標で差分を表現する。

tx(n) = tx(n-1) + r*cos(t)
ty(n) = ty(n-1) + r*sin(t)

rに乱数を混ぜれば線分の長さがかわる。
角度tの変化を抑えれば急激な曲がり方はしない。

例えば t(n) = t(n-1) + rand() * ??? という風に。

計算が終わったら逆回転と逆平行移動すればおわり。
0除算に気をつけろ!

とか、如何ですか。

112 名前:106 mailto:sage [2008/09/02(火) 20:01:05 ID:4WgYs4ZE]
106です。ご意見をありがとうございます。

>>108

イメージとしては置かれたヒモを指でちょいちょいと形作っていく感じでしょうか。
その発想は無かったです。45度制限がなければ簡単そうですが、
あると計算量が結構増えそうなところがネックでしょうかね。

>>109

それは無茶というものですw

>>111

二点間の距離をX軸とした、サイン波のようなものを描いてから
角度を戻す、という感じでしょうか。

113 名前:106 mailto:sage [2008/09/02(火) 20:04:27 ID:4WgYs4ZE]
ご意見を参考にしながら、私ももう一度考えてみました。

とりあえず、繋ぐ「短い線」の個数は無視するとして、
45度制限を守りながら、「命中位置」までしっかり到達するにはどうしたらいいか、と。

色々悩んだ末にやっと気づいたんですが、
45度で曲がりつづけて一周したら、正八角形になる。
つまり、その正八角形の中に「命中位置」があると絶対に到達できないんですね。
と言う事は、その内で辺同士が最もも離れた距離(対角線)、

   / ̄\
  ↑   ↓
   \_/

上図でいう矢印の先端同士の距離以上離れていたら、
「命中位置」に向かって方向修正しつつ進む事でいずれは到達できるんですよね。

というわけで現在は、「短い線を繋ぐ回数が限度を越えた」後は
「命中位置まで直線を描く」のではなく、一定の距離離れるまで「命中位置」とは逆の方向へ進み、
その後、命中位置向けて方向修正するという方法を試しています。



114 名前:名前は開発中のものです。 mailto:sage [2008/09/02(火) 20:10:55 ID:6yKZpfqS]
進むごとに線の長さ短くしたらいいんじゃないの?

115 名前:106 mailto:sage [2008/09/02(火) 20:38:22 ID:4WgYs4ZE]
画像を繋ぎ合わせる事が前提ですから,線の長さは固定なんですよ。

116 名前:名前は開発中のものです。 mailto:sage [2008/09/02(火) 21:42:42 ID:M0CWdIo4]
逆に命中地点から考えて 短い線の長さを1とすると
発射視点側の端が存在できるのは半径1の円周
その端から伸びている線の端が存在できる範囲は
原点から距離が√(2+√2) 〜 2の範囲
そうして計算を続けていくとその幅が1を超えるとき(n回目)がくる・・・

ここから先は何となくイメージできるけど字にできない

117 名前:名前は開発中のものです。 mailto:sage [2008/09/02(火) 23:43:07 ID:wnHyOugN]
電撃の形っていうのはフラクタルだから、そっちの方から考えてみる。

・始点をP0、終点をP1、描画に使う線の長さをLとする。
・P0とP1の中点P2を求めて、ランダムに少し移動させる。
・P0-P2の中点P3、P2-P1の中点P4を求めて同じようにランダムに少し移動する。
・以下、2つの点の距離が2L以下になるまで再帰的に繰り返す。
・2つの点の間を、2つの線を使って描画する。
Pn Pm
====== ←線
======
線の端の位置を点に揃えて、真ん中で少し重ねる。
重なるのがイヤなら、2つの線で二等辺三角形を描くように調整する。

45度制限や線の個数制限は考えてないけど、ランダム移動の時に考慮すれば
何とかなるかな?

118 名前:名前は開発中のものです。 mailto:sage [2008/09/02(火) 23:44:50 ID:wnHyOugN]
しまった、半角スペースは消えるのだった。
Pn      Pm
====
     ====

図はこんな感じで

119 名前:名前は開発中のものです。 mailto:sage [2008/09/03(水) 03:49:36 ID:5CRPY6OW]
>>112
サイン波はでてきません。

例えば単純化した P(0,0) 〜 Q(100,0)の接続について
線分の長さ r が一定で、角度 t は45度の範囲で変化するとします。

r = 10
t = 0 → 20 → 65 → 30 → -15 → -20 ...

P(0,0)
P1 = P + (10*cos(0), 10*sin(0) )
P2 = P1 + (10*cos(20), 10*sin(20) )
P3 = P2 + (10*cos(65), 10*sin(65) )
P4 = P3 + (10*cos(30), 10*sin(30) )
P5 = P4 + (10*cos(-15), 10*sin(-15) )
P6 = P5 + (10*cos(-20), 10*sin(-20) )

八角形理論と同じ条件になる初期値は
r = 41
t = 90度
という感じです。

120 名前:名前は開発中のものです。 mailto:sage [2008/09/04(木) 01:27:07 ID:Re8HSlEn]
無料で遊べる、あるFPSゲームがあるのですが
そのゲームはマルチ対戦しかできません
そこで、そのゲームをシングルモードで遊べるように制作したいのですが、質問があります。
シングルゲームを作るには、ゲーム制作用のフリーソフトや有料ソフトを使わないと作れないのでしょうか?
もしくは、c言語などのプログラムを取り組むだけで無料で作れるのでしょうか?


121 名前:名前は開発中のものです。 mailto:sage [2008/09/04(木) 01:38:09 ID:J1E9Lm+R]
>120
魔法の言葉を教えてあげよう。

   「今のお前には無理」

これは冗談でも叩きでもなく、
どのようにすれば実現できるかも分からないような段階では絶対に無理だということ。



ところで、このスレってFPSもOKだっけ?

122 名前:名前は開発中のものです。 mailto:sage [2008/09/04(木) 01:42:05 ID:k8o8pdXd]
>>120
C言語とかで無料で作れるよ。
最低限、理系大学生レベルの代数幾何は理解してないと無理だろうけど。

作れるようになるまでの努力はプライスレス。

123 名前:名前は開発中のものです。 mailto:sage [2008/09/04(木) 06:27:10 ID:IquF4PJZ]
>>120
>そこで、そのゲームをシングルモードで遊べるように制作したい

「そのゲーム」をシングルモードで遊ぶ=「そのゲームを」対BOT戦の一人プレイで遊ぶ
ということなら、そのゲームがBOT開発用のSDKを配布してるなら一応可能だな
SDKが無いなら極めて厳しいな

シングルプレイのFPSを新たに自作するということなら>>120の方法とか
あとはDarkBASIC Professional とかがお勧めだな

プログラミングとかあんましたくないならMODだな。MODが作れる他の市販を買え
HL2(HalfLife2)に付属するHammerエディタでレベル(マップ)作ってXSI ModToolで
キャラクターのスキンモデルを作れば見た目オリジナルっぽいゲームは作れる
MODの欠点はユーザーもHL2を持ってなくちゃいけないっつーことだな

まぁ、好きにしろ。がんばれ



124 名前:名前は開発中のものです。 mailto:sage [2008/09/04(木) 06:28:43 ID:IquF4PJZ]
× >>120の方法とか
○ >>122の方法とか

× 他の市販を買え
○ 他の市販FPSを買え

125 名前:名前は開発中のものです。 mailto:sage [2008/09/04(木) 07:01:06 ID:kLEmrHWM]
本を買ったら倍の速さでゲーム制作を習得できる
けど本はただではない






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

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

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