シューティングゲーム製作技術総合 9機目
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
2005/12/11(日) 02:45:19ID:mUK4fRmrそれは「シューティングゲーム製作」・・・。
このスレでは、そんなシューティングゲームの製作技術や技術の検証、成功談
失敗談笑い話、難易度の設定方法論、多弾の是非などについて語り合いましょう。
もちろんBulletMLなどで弾幕を作成してみたり、自分の作ったシューティングを
晒してみたり、プロジェクトをはじめてみるなどもOK!
ただし、シューティングの未来とか既存のゲームの話題などは、関連する他の
スレでやってくれ。
過去スレ,関連スレは >>2で。
0251名前は開発中のものです。
2006/01/17(火) 01:13:15ID:BePG7deSはぁw そうですかw
で、
>並列動作させるオブジェクトが数百あろうがコアが2つだからスレッドは2つ、
>4コアになったからスレッド4つというふうに使うのが普通では?
↑この自分で書いた恥ずかしい文章はどうするのww?
0252名前は開発中のものです。
2006/01/17(火) 01:25:34ID:28sxExEk俺ついてけねえwww
0253名前は開発中のものです。
2006/01/17(火) 01:46:19ID:r59AENEl暇なので252と酒でも飲む。
0254名前は開発中のものです。
2006/01/17(火) 07:58:56ID:LW1RggL0計算部分をスレッドにして16ミリ秒とか33ミリ秒ごとにコールするようにして
描画部分はメインループで処理すればfpsとリフレッシュレートが
一致しない事による画面のカクツキを抑えることが出来る
同期の問題で実装が難しいけどな
0255名前は開発中のものです。
2006/01/17(火) 09:51:04ID:WVOcDfiN切り替えコストが少なくなるのは当然じゃねーのか
0256名前は開発中のものです。
2006/01/17(火) 10:47:29ID:MtVqA6rKスレッド使ってややっこしくしてバグ生む要因を増やすなら、素直にシングルで
作って、その労力や時間をゲームの方に割り当てたいよ。
PCみたいな動作環境がバラバラで、ゲームのコア部分にスレッド使ってシビアな
同期取るとか、考えただけでも頭こんがらがりそうだ。
243はやたらマルチスレッドが重要だ!って言ってる気がするが、マルチスレッドが
必要になるくらいパフォーマンス要求される2DSTGってどんなんだよ。
出てくるオブジェクト全部が物理演算で動いてて、しかも常時1000個以上がグリグリ動いて
とかだったら、それは必要かもしれんが。
0257名前は開発中のものです。
2006/01/17(火) 13:26:05ID:AJ+Jw87F> 同期取るとか、考えただけでも頭こんがらがりそうだ。
ここでのシビアな同期って? 例えば何?
> マルチスレッドが必要になるくらいパフォーマンス要求される2DSTGってどんなんだよ。
> 出てくるオブジェクト全部が物理演算で動いてて、しかも常時1000個以上がグリグリ動いて
> とかだったら、それは必要かもしれんが。
それはマルチスレッドで解決するの? たとえば60FPSを目標にしたばあい、
次のフレームまでのわずかな時間に演算を終らせるかどうかが問題であり、
その話題にマルチスレッドうんぬんがどうからんでくるの?
複数のプロセッサの場合スレッドがそれを有効に使うんだっけ?
0258名前は開発中のものです。
2006/01/17(火) 16:04:39ID:WYB6k/rmhttp://pc8.2ch.net/test/read.cgi/tech/1115311515/643-
0259名前は開発中のものです。
2006/01/17(火) 21:25:41ID:+YDj+cqfマルチコアを有効に使うには、まずこの考え自体を破棄しているのが、最近の流れだな
わずかな時間で処理する物と、フレームを飛び越えて長い時間をかけて処理するものと、など
0260名前は開発中のものです。
2006/01/17(火) 22:03:47ID:zdmRfE9uおまいらが今話していることはどうでもいい!
スレッドの1つや2つ使うことに関しては個人の自由だ勝手にしやがれ!
って友達が言ってた。
0261名前は開発中のものです。
2006/01/17(火) 22:14:58ID:WYB6k/rm>>222のそういう発想は誰もが一度はするかもね
で終わってるんだが。>>237みたく引っ張ってるやつもいるけど。
0262名前は開発中のものです。
2006/01/17(火) 22:17:08ID:wIyB/JTz0263名前は開発中のものです。
2006/01/17(火) 22:51:03ID:fFbNMkDz終わってねーよボケ。
お前の人生は終わってるけど。
0264名前は開発中のものです。
2006/01/17(火) 22:54:10ID:AJ+Jw87F0265名前は開発中のものです。
2006/01/17(火) 23:09:07ID:U95GqFOr↓次の話題ドゾー↓
0266名前は開発中のものです。
2006/01/17(火) 23:10:27ID:v/t2iyA10267名前は開発中のものです。
2006/01/17(火) 23:54:42ID:WVOcDfiN0268名前は開発中のものです。
2006/01/17(火) 23:56:03ID:AJ+Jw87F0269名前は開発中のものです。
2006/01/18(水) 00:26:10ID:c2N1wZsa0270名前は開発中のものです。
2006/01/18(水) 00:36:32ID:r0qZUgzd0271名前は開発中のものです。
2006/01/18(水) 00:38:34ID:Y4Ph60bK0272名前は開発中のものです。
2006/01/18(水) 01:49:01ID:ywg82UUl0273名前は開発中のものです。
2006/01/18(水) 02:08:34ID:r0qZUgzd俺は絵描き&音屋なんでプログラムはできれば誰かにやって欲しいんだが
誰もいないので仕方なく全部一人でやってるというわけさorz
0274名前は開発中のものです。
2006/01/18(水) 02:19:09ID:pPSpzIS9絵は1パターンにつき16色、サイズ16*16の組み合わせ、パレット16本を使いまわし
音はMDXでPCM8無し
それでも良ければやってやる
0275名前は開発中のものです。
2006/01/18(水) 02:38:24ID:r0qZUgzdんじゃあらかじめ複数パート合成したPCMでPDXを用意して…
0276名前は開発中のものです。
2006/01/18(水) 02:51:16ID:ZoolGVYbえらく東方の人くさいw
0277名前は開発中のものです。
2006/01/18(水) 02:51:58ID:XTj3S8TT0278名前は開発中のものです。
2006/01/18(水) 04:22:16ID:acZ9pvyTプログラムはできるけど絵、作曲ができない人なんてごろごろいるから本気で探せばすぐ見つかるんじゃないか?
0279210
2006/01/18(水) 09:31:31ID:Y4Ph60bK絵と音楽の問題はいつも俺のモチベーションを下げる(苦笑)。
0280名前は開発中のものです。
2006/01/18(水) 12:53:48ID:O0LAXWPJ0281名前は開発中のものです。
2006/01/18(水) 13:53:06ID:YZsgC2vF0282名前は開発中のものです。
2006/01/19(木) 01:38:30ID:1AbyI4uF0283名前は開発中のものです。
2006/01/19(木) 23:51:19ID:G+Fa0eE/0284名前は開発中のものです。
2006/01/20(金) 01:20:09ID:B/gap/lO0285名前は開発中のものです。
2006/01/20(金) 01:40:22ID:GqKVO76u作りすぎはそれはそれでよくない
>カプセル化
変数を勝手なタイミングで書き換えたり関数を呼んではいけないタイミングで呼んだりしてほしくないならしたほうがいい
そこらへんを完全に管理できる自信があるんならしなくてもいい
0286名前は開発中のものです。
2006/01/20(金) 01:49:28ID:AahjlHJWカプセル化は最初のうちは気にしなくてもいいが、
1メソッドはなるべく50行以内にするべし。
変数のスコープを最小限に抑えるようにしよう。
0287名前は開発中のものです。
2006/01/20(金) 05:22:28ID:RKJ8Oxlg「なぜそうしなければならないのか」
それが分からないうちはやる必要がないよ
0288名前は開発中のものです。
2006/01/20(金) 08:28:37ID:sMyuG+ym0289名前は開発中のものです。
2006/01/20(金) 09:40:12ID:RKJ8Oxlg俺は、オブジェクト指向プログラミングという概念があって、
それを実現するためにクラスを使うと表現が洗練される、という程度の問題で、
クラスを使うことは必須ではないと思うんだけれど。
そーいった意味で必須なのはモジュール化だと俺は思う。
0290名前は開発中のものです。
2006/01/20(金) 11:36:21ID:BRqppxJO>>285 なにかおかしい。
クラスの作りすぎが良くないの意味がどうにも分からん。
何をどうクラス化するか、粒度とか役割のバランスをきちんとすれば、
その結果、クラスの数が多くなる事だってあるでしょ。
0291名前は開発中のものです。
2006/01/20(金) 13:55:41ID:l6R/m2Su0292名前は開発中のものです。
2006/01/20(金) 18:42:19ID:GqKVO76u>バランスをきちんとすれば
いや俺は作り「すぎ」はいくないと言っただけであって
たくさん作るなとは言ってないわけで
適正に考えた上での数なら別に文句は言わんよ。
極端すぎる話だが1関数につき1クラスとか、どう考えても多いでしょ。
0293名前は開発中のものです。
2006/01/20(金) 18:51:51ID:BRqppxJO> 極端すぎる話だが1関数につき1クラスとか、どう考えても多いでしょ。
うん、まぁこれについても、「多い」のが直接の問題というよりは、
「そもそもその設計で正しいのか?」という匂いがするのが問題かな、と思う。
(余談:一個の関数のみオーバーライドした派生クラスなどは、関数一個と数えるのかな)
0294名前は開発中のものです。
2006/01/20(金) 21:52:57ID:Un0F1Pki0295名前は開発中のものです。
2006/01/20(金) 23:52:53ID:rs0ICqBVクラスは基礎をかじっただけでも飛躍的にプログラムが組みやすくなる
0296名前は開発中のものです。
2006/01/21(土) 00:29:20ID:x/UppAtT0297名前は開発中のものです。
2006/01/21(土) 00:30:08ID:3jTeBScx0298名前は開発中のものです。
2006/01/21(土) 00:30:18ID:dmPbXSD+0299名前は開発中のものです。
2006/01/21(土) 00:31:52ID:G740ceEl0300名前は開発中のものです。
2006/01/21(土) 00:39:49ID:G740ceElどちらかといえば大雑把な設計向け
0301名前は開発中のものです。
2006/01/21(土) 00:49:30ID:G740ceElクラスの数が異常なまでに増えたりするわな
漏れの事だが
0302名前は開発中のものです。
2006/01/21(土) 01:02:30ID:NWahimDI現状、
関数A1(&player, &enemy)
関数A2(&enemy, &player)
理想、
関数A3(&player, &enemy)
関数A3(&enemy, &player)
ちなみにplayerとenemyは構造体です。
0303名前は開発中のものです。
2006/01/21(土) 01:07:12ID:k2Azwx8g0304名前は開発中のものです。
2006/01/21(土) 01:11:33ID:NbWlpyc9方法1
playerとenemyの基底クラスを揃える
方法2
共用体を使う
方法3
構造体の内容を無理やりにでも揃える
方法4
当たり判定に必要なデータを入れ子にして保持する
方法5
入れ替える必要あんの?どっちが主で従でも当たってるかどうかがわかればいいのでは?
方法4がお手軽で汎用的
構造体の中にx、y、width、heightをバラバラに持つのではなく
player構造体やenemy構造体にrect構造体を持たせる
0305名前は開発中のものです。
2006/01/21(土) 01:13:55ID:qcTN1Btg0306名前は開発中のものです。
2006/01/21(土) 01:19:01ID:ht2WeWt90307名前は開発中のものです。
2006/01/21(土) 01:23:16ID:geuRotB0OOPで作ってる場合はほとんど当然方法1になっており、
悩む必要が発生しない。クラスを使うかどうかというより、
OOPを自分が採用するかどうかに悩めばいいのに!とおもふ。
0308名前は開発中のものです。
2006/01/21(土) 01:27:04ID:geuRotB00309名前は開発中のものです。
2006/01/21(土) 01:31:53ID:K9PfjxeG0310名前は開発中のものです。
2006/01/21(土) 01:34:02ID:qcTN1Btg0311名前は開発中のものです。
2006/01/21(土) 01:37:38ID:K9PfjxeG同じ関数を何度も書きたくないだけなんだよ
テンプレートを使えば良いだけなのかもしれんが・・・なんか抵抗があるんだよな・・・orz
0312名前は開発中のものです。
2006/01/21(土) 02:07:14ID:geuRotB0実装の手間を省くための継承、という面がしばしば強調されすぎてるんだとおもふ。
本当のおいしさはいつだってポリモーフィズムなんだから(偏見)、そのために継承を使い、
ほかはオブジェクトコンポジションでゆるーくクラス間を関係させておきたいよね。
クラスがうんぬんというだけじゃ不十分。OOPってもんがどうしてあるのか、
それが自分に役に立つのか、いっぺん調べてみるのが良いかと。
0313名前は開発中のものです。
2006/01/21(土) 08:00:50ID:2hhWbiuH0314名前は開発中のものです。
2006/01/21(土) 12:47:27ID:15mBv3lg同意。んでいかに仕様変更に強い設計ができるかがOOの肝だと思う。
0315名前は開発中のものです。
2006/01/21(土) 12:50:00ID:xWjgEtZL0316名前は開発中のものです。
2006/01/21(土) 12:58:45ID:GuWwvooSやろうと思えばC言語だけでもOOPで組める。
0317名前は開発中のものです。
2006/01/21(土) 13:08:32ID:6S9CHTnX過去の遺産をOOPに直すには、それなりに時間がかかるからだろ
0318名前は開発中のものです。
2006/01/21(土) 13:44:17ID:V0Dnr/bXまだこんなこといってるやついるのかw
0319名前は開発中のものです。
2006/01/21(土) 14:10:35ID:q3UiUWCR0320名前は開発中のものです。
2006/01/21(土) 14:40:44ID:8WfQblhtそもそも完成すらおぼつかない奴が多すぎる。
0321名前は開発中のものです。
2006/01/21(土) 15:07:29ID:3Z8sqjK0>>316は事実だろ、どこが悪いんだ?
それとも周知の事実だから別に言う必要もないという程度のこと?w
0322名前は開発中のものです。
2006/01/21(土) 15:16:49ID:geuRotB0CでOOP。この発言はちょくちょく見かけるけど複雑な思いがよぎるよ。
ホントにCでしか開発できない状況になったらそんな悪あがきするだろうけど、
C++も選べる状況だったらねー。意地でもC++使いたいけどね…。
OOPで楽をしたいと思ったとき、「Cでも出切る」って意見の意図が俺わからんのよね。
OOPLを軽視しているか、OOPを楽しめていないのか、そんな感じを受けるんだよね(偏見)。
0323名前は開発中のものです。
2006/01/21(土) 15:18:25ID:xWjgEtZL0324名前は開発中のものです。
2006/01/21(土) 15:24:04ID:geuRotB0どういう意図があるのか疑問に思ってるんです。
0325名前は開発中のものです。
2006/01/21(土) 15:48:25ID:8WfQblht0326名前は開発中のものです。
2006/01/21(土) 15:52:57ID:8WfQblht>クラスの実装はOOPの実装を補佐するための実装だからな。
>やろうと思えばC言語だけでもOOPで組める。
だとか
>本当のおいしさはいつだってポリモーフィズムなんだから(偏見)、そのために継承を使い、
>ほかはオブジェクトコンポジションでゆるーくクラス間を関係させておきたいよね。
だとか。何年も前に既に言われてることを、
さも自分の思いついた意見かのように言っちゃってまぁ…。
知識晒して、優越感感じたいだけだろ。
0327名前は開発中のものです。
2006/01/21(土) 16:12:06ID:geuRotB0俺の思いついた意見ではありません。受け売りとおっしゃるが、
技術的な基礎、これはこうやって共有していくもんとちがう?
だから>>284への返答をするとなると、こういうレスをつけちゃう。
> 知識晒して、優越感感じたいだけだろ。
あたりまえのことを晒しても優越感は得られません。
あたりまえのことを、あたりまえに言っただけ。
0328名前は開発中のものです。
2006/01/21(土) 16:21:13ID:3Z8sqjK0分かってると思うけど、OOPは所詮は概念だから、どの言語でもできるんだよ。
それが「Cでもできる」の意図でしょ。
そして、C++やJavaなどのOOPLな高級言語を使うと概念を記述するのが容易くなる。
例え「Cでもできる」と言い張っても、選択の制約が無いならわざわざCなど選ばんw
例えばPrologなんか知ってる奴は分かると思うんだが
手続き型プログラミングの設計でわざわざPrologでやる奴はおるまい?
概念に適した言語を使えばよいというだけだな。
0329名前は開発中のものです。
2006/01/21(土) 16:28:48ID:3Z8sqjK00330302
2006/01/21(土) 16:29:34ID:NWahimDIちょっと勉強不足せいでどうなるか(どうするか)不明です。けれどとても参考になりました。ありがとうございました。
0331名前は開発中のものです。
2006/01/21(土) 16:35:15ID:15mBv3lg0332名前は開発中のものです。
2006/01/21(土) 16:36:34ID:8WfQblht>俺の思いついた意見ではありません。
なら、
>実装の手間を省くための継承、という面がしばしば強調されすぎてるんだとおもふ。
「おもふ」とか言ってんじゃねーよ。実装継承がうんたらも何年前だよ。
>技術的な基礎、これはこうやって共有していくもんとちがう?
お前は単に情報を劣化して請け売りしてるだけ。ソースだけを示した方が良い。
>あたりまえのことを晒しても優越感は得られません。
お前は当たり前のことに言うのに「(偏見)」とか付けるのか。2回見たぞ。
0333名前は開発中のものです。
2006/01/21(土) 16:40:01ID:geuRotB00334名前は開発中のものです。
2006/01/21(土) 16:53:28ID:geuRotB0それなら分かる。
>>332
>> 実装の手間を省くための継承、という面がしばしば強調されすぎてるんだとおもふ。
> 「おもふ」とか言ってんじゃねーよ。実装継承がうんたらも何年前だよ。
>> 技術的な基礎、これはこうやって共有していくもんとちがう?
> お前は単に情報を劣化して請け売りしてるだけ。ソースだけを示した方が良い。
失礼、そのとおり。しょうもないことを言ってしまってごめん。
>> あたりまえのことを晒しても優越感は得られません。
> お前は当たり前のことに言うのに「(偏見)」とか付けるのか。2回見たぞ。
OOPの美味しさはいろいろあるだろう。そんなかでやっぱ特においしいものはといえば、
> ポリモーフィズムなんだから(偏見)
言い切ってしまうのはヘン。俺にとってはと限定しようとすると、偏見、とつけた。
> OOPLを軽視しているか、OOPを楽しめていないのか、そんな感じを受けるんだよね(偏見)。
これはまさに偏見。CでOOP発言をしている人にたいしての、俺の偏見。
0335名前は開発中のものです。
2006/01/21(土) 17:07:12ID:xWjgEtZL0336名前は開発中のものです。
2006/01/21(土) 17:31:10ID:ZfB5A8hx茶々入れも含めて、もはや何が何やら・・・
どっかに設計概念全般に関するスレッドは無かったか?
0337名前は開発中のものです。
2006/01/21(土) 17:35:44ID:E5l3VzaBいいんだけどなぁ。
0338名前は開発中のものです。
2006/01/21(土) 17:39:44ID:xWjgEtZL実装率ってあてにならんよね
しかもネイティブだけどSunのVM実装よりかなり遅いしな
ネイティブの意味がないとかよくいわれてる
どの道実行時にコンパイルしてるんだから
その辺はいまじゃこだわる必要はないと思うけどね
あれはNETBSDとか局地専用
そしてネイティブにこだわる人のほとんどは最適化の進んでいるWinだったり不思議なものだ
0339名前は開発中のものです。
2006/01/21(土) 18:14:03ID:0zSUa7B4漏れみたいに自前でスクリプトを作ることになるぞ。w
0340名前は開発中のものです。
2006/01/21(土) 19:50:38ID:x4Sj0Pj3家では贅沢な環境でやりたいなー
0341名前は開発中のものです。
2006/01/21(土) 20:32:50ID:xjFCJ8uL「OOP」を「おっぱい」と読むと楽しくなるぞ
0342名前は開発中のものです。
2006/01/21(土) 20:42:20ID:E5l3VzaB横に髪留めを付けたメガネ娘にも見える
0343名前は開発中のものです。
2006/01/21(土) 21:19:12ID:+7zb7qTQ0344名前は開発中のものです。
2006/01/21(土) 21:51:41ID:3jTeBScx敵とプレイヤーの当り判定。その結果をプレイヤーの構造体に書き込み。
プレイヤーと敵の当り判定。その結果を敵の構造体に書き込み。
まあつまり1つの関数で全部やろうとするから組み合わせ分関数が必要になるわけですよ。
当り判定専用関数とそれ専用の構造体なりクラスなりを持て。
で、当たってた場合の個別の処理は、それぞれの関数で実装すべし。
理想、
関数 bool Collision( &Collision, &Collision )
関数 void プレイヤ判定用( &Player, &Enemy )
関数 void 敵判定用( &EnemyCollision, &PlayerCollision, )
PlayserもEnemyもCollisionリストを持っており、それぞれを使って判定して
当たっていた場合の処理をそれぞれの関数のなかでやる。
C++で設計するならコリジョンクラスの中に判定用メソッドつける。
判定自体を汎用化しときゃバグ取りも1回で住むし、アイテムや敵同士の判定などにも
用意に使いまわせる。
0345名前は開発中のものです。
2006/01/21(土) 22:10:55ID:gJyZ7puh0346名前は開発中のものです。
2006/01/21(土) 22:45:21ID:xWjgEtZLバグの出にくい、わかりやすい保守しやすいコードは大事ではないかな
ミニゲーム程度ならきにはせんだろうけど、しっかり作るとなると
年単位でかかるのも珍しいことではなかろう
0347名前は開発中のものです。
2006/01/21(土) 22:45:33ID:ht2WeWt9ぐらいって、シューティング制作を無礼るな!
効率と言うより再利用性。
まあ>344はちょっと訊かれてもいない実装の詳細を語りすぎている感があるが。
0348名前は開発中のものです。
2006/01/21(土) 22:59:00ID:ien9/xz5シューティングなんて、プログラミング的にはぶっちゃけミニゲーム程度のモンだし。
0349名前は開発中のものです。
2006/01/21(土) 23:07:54ID:xqjb/9V/0350名前は開発中のものです。
2006/01/21(土) 23:17:39ID:geuRotB0何度も書き直せるサイズだからこそ、書き直しも楽になる。
効率や再利用性についても、とことん試せるってもんでしょ。
■ このスレッドは過去ログ倉庫に格納されています