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


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

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



1 名前:名前は開発中のものです。 mailto:sage [2008/11/27(木) 10:18:19 ID:bBI1A+d5]
ゲームプログラマなら誰もが通る、もしくは、通った道。青春の香り?
それは「シューティングゲーム製作」・・・。

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

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

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

89 名前:名前は開発中のものです。 mailto:sage [2008/12/06(土) 23:21:08 ID:8zCwMYDf]
ほれソース。
while(true)
{
//目標処理時間の取得
long limit = System.currentTimeMillis() + 16;

(処理)
//目標時間より処理した時間を差っぴく
long wait = limit - System.currentTimeMillis();

if (wait > 0) Thread.sleep(wait);//待つ
}

90 名前:名前は開発中のものです。 mailto:sage [2008/12/06(土) 23:27:05 ID:RvirWTCn]
うーん、特に問題は無いように見える

91 名前:名前は開発中のものです。 mailto:sage [2008/12/06(土) 23:53:56 ID:8zCwMYDf]
そりゃそうだ。問題のあるソースじゃなくて俺の使ってるソースだもん。

92 名前:名前は開発中のものです。 mailto:sage [2008/12/06(土) 23:57:34 ID:d+fN4aMe]
俺は1秒単位で作ってる
>>89みたいなのだとFPSを上げれば上げるほど誤差がでるから

if( (1〜1000の経過ミリ秒) < (この1秒間での更新回数)*1000/60) )
  wait(( この1秒間での更新回数)*1000/60) - (1〜1000の経過ミリ秒) );

みたいな

93 名前:名前は開発中のものです。 mailto:sage [2008/12/07(日) 01:20:05 ID:nT4ceVXH]
>>89
それは少し問題がある。
Windowsでは一番下のifからループの最初に戻るまでに時間がかかる可能性がある。
また、Sleepは指定した時間で戻る保証がない。遅れる可能性がある。

基本的にループ内で時間を取得するのは1ヶ所にしないとダメ。

94 名前:名前は開発中のものです。 mailto:sage [2008/12/07(日) 08:49:50 ID:CrWGaene]
解決したな

95 名前:名前は開発中のものです。 mailto:sage [2008/12/07(日) 11:40:55 ID:MnGKoZXg]
ってかWindows環境なら何も考えずにDirectX使っとけばよくね??

96 名前:名前は開発中のものです。 mailto:sage [2008/12/07(日) 21:15:48 ID:YhkzdsGX]
directX使うと何が良いのか分からんが、
少なからずリアルタイムループ制御の技術は身につけて置いて損は無いだろう。
……本当にリアルタイムなのかどうかはさておき

97 名前:名前は開発中のものです。 mailto:sage [2008/12/08(月) 02:42:41 ID:u3e7IEjo]
素人の俺にDirectX以外を使う理由を教えテレ




98 名前:名前は開発中のものです。 mailto:sage [2008/12/08(月) 11:02:44 ID:xkZWgcaE]
>>97
素人プレイヤーにDirectXなどという得体のしれないランタイムを
長時間かけてインストールさせる作業を強制できるだろうか

99 名前:名前は開発中のものです。 mailto:sage [2008/12/08(月) 12:12:53 ID:tNegh1fp]
いまどき何言ってんだ

100 名前:名前は開発中のものです。 mailto:sage [2008/12/08(月) 12:34:13 ID:xkZWgcaE]
なんつーかFlashもAdobe Readerもインスコすんのめんどくさいと感じるようになった
あと定期的にバグ修正版が出るWEBブラウザを更新するのもめんどい

101 名前:名前は開発中のものです。 mailto:sage [2008/12/08(月) 13:16:08 ID:espLlLLx]
Windows 7はCPU上でDirectX 10を実行可能
とあるので、そのうち DirectX が Windows 自体にインストール済みになる
時代が来るので、初心者は気にしなくていい時代がくる
と予測

102 名前:名前は開発中のものです。 mailto:sage [2008/12/08(月) 13:18:05 ID:espLlLLx]
てか、Windows98 には DirectX5が自動で入ってるので
3Dゲーでもしない限り気にしなくていい気がスルー

103 名前:名前は開発中のものです。 mailto:sage [2008/12/08(月) 13:30:04 ID:xkZWgcaE]
>>101
不景気で大量に失業者が増えるので、Windows7搭載PCを買えない人が続出して、
思ったほど普及しないと予測

>>102
Windows98でネットなんかつなぐなと言いたい
Microsoftのサポート切れるわ、Javaのサポート外だわ、ウィルスバスターのサポート外だわ
良いこと無い

104 名前:名前は開発中のものです。 mailto:sage [2008/12/08(月) 13:47:28 ID:espLlLLx]
>>103
てことはLinuxの出番ですか?
まぁサポート料でウハウハなんですが

105 名前:名前は開発中のものです。 mailto:sage [2008/12/08(月) 14:00:39 ID:tNegh1fp]
もうwin98でなんかテストもしないなw

106 名前:名前は開発中のものです。 mailto:sage [2008/12/08(月) 14:30:03 ID:txNXu5ct]
>>98
どっちにしろPCゲームプレイしたいなら
いつかはDirectXインストールしなきゃならんだろ

107 名前:名前は開発中のものです。 mailto:sage [2008/12/08(月) 14:46:11 ID:xkZWgcaE]
>>104
macも忘れないであげてください

>>106
そんときゃもう素人プレイヤーじゃないだろうからいいや



108 名前:名前は開発中のものです。 mailto:sage [2008/12/08(月) 15:34:15 ID:tNegh1fp]
東方とかこんだけ流行ってんだしDirectX前提で良いじゃないw

109 名前:名前は開発中のものです。 mailto:sage [2008/12/08(月) 15:43:31 ID:rjxQpxpY]
最近、東方と聞くとくりからの絵しか浮かびません

110 名前:名前は開発中のものです。 mailto:sage [2008/12/08(月) 16:41:04 ID:txNXu5ct]
>>107
訳分からん

111 名前:名前は開発中のものです。 mailto:sage [2008/12/08(月) 17:59:35 ID:xkZWgcaE]
うーん、やっぱWindows環境ならDirectXはインストールしてあたりまえの時代なのかね。


112 名前:名前は開発中のものです。 mailto:sage [2008/12/08(月) 18:18:21 ID:bxJJH0Tb]
少なくとも俺はそう思ってる。

113 名前:名前は開発中のものです。 mailto:sage [2008/12/08(月) 19:41:44 ID:8qLAhPDR]
むしろ俺はいかにしてMDXをインストールしてもらうかに悩んでいる。

114 名前:名前は開発中のものです。 mailto:sage [2008/12/08(月) 20:01:13 ID:xkZWgcaE]
>>113
動作要件に書いとくしか無いんじゃね。

*nix系のソフトのインストールマニュアルを見ても、
「○○が既にインストールされている必要があります」みたいなのがずらりと並んでたりするしなあ

115 名前:名前は開発中のものです。 [2008/12/08(月) 20:59:19 ID:9DrHGdXM]
Winで作っているゲームでDirectXを使わない意味がわからん
しょぼゲーしか作れないじゃん

116 名前:名前は開発中のものです。 mailto:sage [2008/12/08(月) 22:03:31 ID:espLlLLx]
>>115
それもそうだね
GDI自作するよりもDirectX使った方が早いし、
MSお墨付きだし

Macは・・・すまん
Javaが盛り上がってきたら作成されるかもしれん

117 名前:名前は開発中のものです。 mailto:sage [2008/12/08(月) 23:05:43 ID:MfS7g7PZ]
もうmacの事は忘れてやれよ



118 名前:名前は開発中のものです。 [2008/12/08(月) 23:14:36 ID:9DrHGdXM]
Macなんてどうでもいいだろ
あんなの情報弱者が買うハードだ

119 名前:名前は開発中のものです。 mailto:sage [2008/12/08(月) 23:35:13 ID:+S7O52E1]
妬まれ慣れしたリア充のマカーとして一言言わせてもらえば
ゲームが好きでマカーやってる人間は用途に応じてハード買い揃える程度の可処分所得があるので
心配してもらわなくても結構ですの。BIOSHOCKとDEADSPACEのためにゲーマー仕様のノートPCくらい持ってますの

コールドスリープから目覚めたてのID:xkZWgcaEは速やかに永眠モードに戻るか速やかに社会復帰に努めなさい。
まずはOpengGL&GLSL&各GPUベンダーの拡張命令セットを使えるようになれ。話はそれからだ

120 名前:名前は開発中のものです。 mailto:sage [2008/12/08(月) 23:36:46 ID:u3e7IEjo]
別にMac嫌いじゃないけどわざわざMac用に作っても
苦労の割に需要が見込めんだろう

121 名前:名前は開発中のものです。 mailto:sage [2008/12/08(月) 23:43:15 ID:+S7O52E1]
MAC持ってるならSDLでサクっと作ればいいと思うよ

122 名前:名前は開発中のものです。 mailto:sage [2008/12/08(月) 23:47:52 ID:xkZWgcaE]
>>119
SDLいいよ、SDL。Windows/Mac/*nix対応だし。

123 名前:名前は開発中のものです。 [2008/12/08(月) 23:51:47 ID:9DrHGdXM]
>>119
ちっとも慣れてないじゃんww

妬んでるんじゃなくて、哀れんでるんだよ

あぁ。マッキントッシュのイメージ戦略に載っちゃったんだね・・・・と。
まじで今のマックは欠片も羨ましくない
昔のフォトショップとかイラストレーターがWinよりも先に出てた時ならまだしも

そういう選民思想みたいなの振りかざして、上から見るのは寒いから辞めた方がいいよ?

124 名前:名前は開発中のものです。 mailto:sage [2008/12/08(月) 23:59:50 ID:QMJ/R6ZH]
Mac(ノート)所有者は増えてるぞ。
Unixユーザ(というか開発者)が買ってるからw


125 名前:名前は開発中のものです。 mailto:sage [2008/12/09(火) 00:03:14 ID:FH6Ed4rz]
まあ、ゲーマーがファミコンやプレステを買う感覚でWindows/DirectX環境を揃えてくれるなら、
それに準拠した製品を作るのが商売としては賢い戦略だろうな。

Flashとかはまた別物かな。

126 名前:名前は開発中のものです。 mailto:sage [2008/12/09(火) 00:09:40 ID:sF7Fv4my]
>>113
落ち着け、普通ならDirectx画はいってる環境なら勝手に入ってる。
別途入れるソフトが必要なのはXNAだ

127 名前:名前は開発中のものです。 mailto:sage [2008/12/09(火) 00:18:42 ID:UUSX3J9x]
>>126
俺の知識が古いのかもしれんが、MDXは標準インストールではなかったはず。



128 名前:名前は開発中のものです。 mailto:sage [2008/12/09(火) 00:25:56 ID:WtrXFULJ]
>>97
たしか窓の世界ではサポート期限が切れたWinMeとWin2kでさえDirectX7相当(だっけ?)標準搭載。
WinXPならDirectX8辺りを標準搭載。
2008年末現在、どんなウンコ窓PCのオンボGPUでも固定機能パイプラインくらい搭載してる。
今更CreateDIBSectionとか(旧WinGに相当する関数群?)に固執するメリットは絶無だろ
あるいは何らかの特殊な緊縛プレイ(demo用のソフトレンダラー組む)とか


129 名前:名前は開発中のものです。 mailto:sage [2008/12/09(火) 00:31:41 ID:FH6Ed4rz]
>>128
つまりDirectX7相当の機能だけ使って作りましょうってこと?

130 名前:名前は開発中のものです。 mailto:sage [2008/12/09(火) 00:42:56 ID:WtrXFULJ]
>>129
DirectXインスコさせたくねーとかいう天邪鬼ユーザーに配慮したいとかいう人がいたから
そこまで言うなら「固定機能パイプライン必須」程度を下限にしとけばいんじゃねって話

131 名前:名前は開発中のものです。 mailto:sage [2008/12/09(火) 00:47:20 ID:RPj0CwyC]
>>129
なんでそうなるんだよ

132 名前:名前は開発中のものです。 mailto:sage [2008/12/09(火) 02:05:46 ID:4JCb9FOv]
Win2kのサポート自体は……サポート自体はまだ打ち切られていないんだよ……うわぁぁぁん!

133 名前:名前は開発中のものです。 mailto:sage [2008/12/09(火) 02:18:31 ID:RPj0CwyC]
まあ現状XPで動けば良いや程度にしか思ってない

134 名前:名前は開発中のものです。 [2008/12/09(火) 10:15:17 ID:S3aTmjvE]
初心者なんですが、弾が連続的に描画されないのですが、どうしたらいいのでしょうか?
参考のページを教えていただけると幸いです
ボタンを押すと発射、while(pos.y>0)でくくると、最初とpos.y=0の時の中間が描かれません。どうすればいいのでしょうか?

135 名前:名前は開発中のものです。 mailto:sage [2008/12/09(火) 10:39:31 ID:wTdUmZMK]
よくわからんが、0でダメなら−1でいいんじゃね?

136 名前:名前は開発中のものです。 mailto:sage [2008/12/09(火) 10:52:00 ID:wTdUmZMK]
あー、よくわからんのに書くもんじゃないな
すまん、無視してくれ

137 名前:名前は開発中のものです。 mailto:sage [2008/12/09(火) 11:05:00 ID:S3aTmjvE]
whileの中は加速度とかの計算式だけで描画関数は入っていません



138 名前:名前は開発中のものです。 [2008/12/09(火) 11:13:10 ID:UXQm+qSa]
>>137
じゃあ表示されないのは当たり前だろ
whileでくくるんじゃなくてボタンを押したときは弾を生成する処理だけをする
メインループで弾が存在したら弾を1コマ進めて表示する処理をし、
画面街に飛び出たら消滅させる処理をする

139 名前:名前は開発中のものです。 mailto:sage [2008/12/09(火) 11:16:34 ID:wTdUmZMK]
とりあえず、ここおススメ
dixq.net/s/

俺もこれ見てシューティング作ってる

140 名前:名前は開発中のものです。 mailto:sage [2008/12/09(火) 11:42:00 ID:8b11EtKt]
>>134
日本語を勉強するか
プログラムを勉強するか
数学を勉強するか
どれかを選べばいいと思う

141 名前:名前は開発中のものです。 [2008/12/09(火) 11:43:28 ID:S3aTmjvE]
ありがとうございます。全然理解できない;;
写っぱなしの弾をボタン一回で継続的に動かしたいだけなのに・・・・;;

142 名前:名前は開発中のものです。 mailto:sage [2008/12/09(火) 12:04:01 ID:LlY86N04]
OpenGLはビデオチップによって速度が違いすぎるのが難点だなー。
RadeonXPress200上で開発して60Fps出てたのがたまたまRadeonHD4850で動かしてみたら一桁まで落ちるので、
何でかと思ったら行列スタックや属性スタックの操作が極端に重かったみたいで、判るのに苦労した。

143 名前:名前は開発中のものです。 mailto:sage [2008/12/09(火) 12:06:37 ID:PL50HxGw]
理解できないのはこっちだw

具合が悪いんですけど、何の病気でしょうか?

と訊かれただけで、あんたは何の病気かわかるのか?

144 名前:名前は開発中のものです。 mailto:sage [2008/12/09(火) 12:13:39 ID:8b11EtKt]
まともに相手しても
さらに質問が返ってくるに25000ガバス

145 名前:名前は開発中のものです。 [2008/12/09(火) 12:43:33 ID:S3aTmjvE]
ここにいる奴って日本語を勉強しろとか煽られて育ってきたかわいそうな奴ばっかなんだねw

146 名前:名前は開発中のものです。 mailto:sage [2008/12/09(火) 12:48:07 ID:wTdUmZMK]
なんだ釣りか

147 名前:名前は開発中のものです。 [2008/12/09(火) 12:49:16 ID:S3aTmjvE]
日本語理解できてないのはお前らだww頭悪すぎだろww



148 名前:名前は開発中のものです。 mailto:sage [2008/12/09(火) 13:18:17 ID:4JCb9FOv]
なんだ、釣りだったのか

149 名前:名前は開発中のものです。 mailto:sage [2008/12/09(火) 13:20:23 ID:FH6Ed4rz]
>>134
whileでくくった中に描画する処理を書けばいいんじゃね。

while ( pos.y > 0 ) {

  === 移動の処理 ===

  === 描画の処理 ===

  ===その他の処理 ===
}

150 名前:名前は開発中のものです。 [2008/12/09(火) 13:29:24 ID:S3aTmjvE]
底辺プログラマーとか自分が先輩からやられたことを必死にやり返してくるからなwww
しかも2ちゃんでwww

151 名前:名前は開発中のものです。 mailto:sage [2008/12/09(火) 14:48:12 ID:PI3BaNiE]



152 名前:名前は開発中のものです。 mailto:sage [2008/12/09(火) 16:52:36 ID:fFSBTS/4]
うわーいおれもまぜてまぜてー

153 名前:名前は開発中のものです。 [2008/12/09(火) 16:57:20 ID:Sb5wMSbY]
なんか1982年頃のBASICでできたインベーダーゲームで
弾を撃つと弾以外のキャラの動きが全て止まるゲームを思い出した

154 名前:名前は開発中のものです。 mailto:sage [2008/12/09(火) 16:59:45 ID:8b11EtKt]
それが分かってて来るのか・・・

155 名前:名前は開発中のものです。 mailto:sage [2008/12/09(火) 17:11:18 ID:M91LEl8M]
2CHの鏡なスレだなw

156 名前:名前は開発中のものです。 mailto:sage [2008/12/09(火) 17:29:23 ID:8b11EtKt]
ああ、釣りだったか・・・

157 名前:名前は開発中のものです。 mailto:sage [2008/12/09(火) 17:37:06 ID:PI3BaNiE]
な釣
あ釣



158 名前:名前は開発中のものです。 mailto:sage [2008/12/09(火) 18:08:52 ID:VNydxNb7]
グラディウスのダブルのようなショットを作ったら、上ばっかり→両方に→下ばっかり→両方→・・・
というような波が出来てしまうんですが、満遍なく発射するにはどうしたらよいんでしょうか。
現状は、ショットの要求があったときに、あいている弾があったら発射するという感じにやっています。

159 名前:名前は開発中のものです。 [2008/12/09(火) 18:16:35 ID:Sb5wMSbY]
>>158
それぐらい自分で考えられないでゲームは完成するのか?w不安だよw
どうとでもできるだろ

160 名前:名前は開発中のものです。 mailto:sage [2008/12/09(火) 18:26:30 ID:IEG5htND]
>>158
>現状は、ショットの要求があったときに、あいている弾があったら発射するという感じにやっています。

それで問題ない気がするけどな。
上と下の両方に同時に要求してるわけじゃないのかな?

ちょっと邪道かもしれないけど、ダブルショットの要求があった時に、
「2つ空き」があるかどうか確かめて、なければ撃たない、
あれば両方撃つ、って形でいけるんじゃない?


161 名前:名前は開発中のものです。 mailto:sage [2008/12/09(火) 18:43:45 ID:VNydxNb7]
>>159
すいません。確かにどうとでもなるんですが、あのシンプルなショットに
そんな面倒な処理があるのか?という思いがありまして。

>>160
要求は同時に出しています。
行順の問題かとも思って、発射するごとに行を入れ替えたりも試したんですが。
2つ空きのほうは、元々画面内の弾数が多くなくて避けたいので、ちょっと煩雑でも自己流で書こうと思います。

ありがとうございました。

162 名前:名前は開発中のものです。 mailto:sage [2008/12/09(火) 19:18:46 ID:IEG5htND]
面倒な処理じゃないと思うし、
やり方が間違ってるんじゃないのなら
単にバグが潜んでるだけかもしれないよ。

163 名前:名前は開発中のものです。 mailto:sage [2008/12/09(火) 19:30:26 ID:8b11EtKt]
嫌味だよ
気づけ

164 名前:名前は開発中のものです。 mailto:sage [2008/12/09(火) 20:34:56 ID:FH6Ed4rz]
>>161
2つ確保するつもりが、ポインタを1つ分しか進めてなくて、弾が次々と上書きされてたりしてな。

165 名前:名前は開発中のものです。 mailto:sage [2008/12/09(火) 23:06:18 ID:lVmIafHS]
知らんが、C#とかjavaなら空いてる弾幕のことなど考えずに
弾丸リスト.add(上向き弾);
弾丸リスト.add(下向き弾);
でやるもんだし、C++でも似たような実装は可能だろ?
とりあえず、Cでやりたいんなら連結リストを実装することから始めてみればいいんじゃないか。



166 名前:名前は開発中のものです。 mailto:sage [2008/12/10(水) 16:37:24 ID:Cps9vI6c]
ゲームの状態(タイトル画面とか、シューティング中とか)でメッセージハンドラを
SetWindowLong関数やSetWindowLongPtr関数で変更するのってありかな?

メッセージハンドラ中にswitch文とか煩雑かなーと思うわけですが

なんか一般的な方法ってあるんですかね?

167 名前:名前は開発中のものです。 [2008/12/11(木) 00:30:52 ID:SwlibDem]
そこでタスクシステムですよ



168 名前:名前は開発中のものです。 mailto:sage [2008/12/11(木) 01:09:07 ID:Tl9RQtTK]
ゲームの状態が変わってもメッセージハンドラの中身を変える必要が無い仕様を考えた方が楽かも

169 名前:名前は開発中のものです。 mailto:sage [2008/12/11(木) 05:41:33 ID:Gzl7Lfi5]
>>165
この板で自分以外にC#をC#系スレ以外でいってる人はじめてみた・・・ちょっと感動だ。


170 名前:名前は開発中のものです。 mailto:sage [2008/12/11(木) 10:13:54 ID:tNsh0a9k]
>>166
単一のウィンドウプロシージャーからディスパッチすればいいと思う

171 名前:名前は開発中のものです。 mailto:sage [2008/12/11(木) 10:17:05 ID:7h0mUefC]
166です

シューティングゲームプログラミング(松浦著)では、タスククラスからシーンクラスを派生させて、
タスクリストの1つとしてシーンを作成していた

その仕様はわかるんだけれど、シューティングゲームに限らずたとえばRPGだった場合、
メニュー画面とか、どうなっているのかなーと思った次第

メニュートップ→魔法→だれの?→どの魔法→魔法対象

みたいに新しいメニューが生まれてくるじゃない
これもタスクリストに1つ1つ書くのかなーって、疑問に思ってる

172 名前:名前は開発中のものです。 mailto:sage [2008/12/11(木) 11:04:32 ID:1D8jgOIG]
>>171
RPGはまだ手を出してないが
俺だったら states などに状態を入れて
switchで分けるかもな

タスクシステムって、マルチスレッドとかでもならない限り
威力発揮しなくね?

173 名前:名前は開発中のものです。 mailto:sage [2008/12/11(木) 16:02:40 ID:1D8jgOIG]
素粒子を処理しようとしてるんだけど
これもタスクシステムでできるかな?

174 名前:名前は開発中のものです。 mailto:sage [2008/12/11(木) 16:07:14 ID:1D8jgOIG]
人工知能を並列処理しながら
X透過線のデータをXLSファイルに出力しつつ
リアルタイムに表示するシステムのライブラリを作ってるんだ

175 名前:名前は開発中のものです。 mailto:sage [2008/12/11(木) 17:05:49 ID:1D8jgOIG]
草薙の剣を手に入れてこれから黒を倒そうとするところで
いつもこける
そしてずっと俺のターンになるバグがでます
製品版だし、DirectXもバージョン合ってるのに
なぜ動作しないんでしょうか?
OSはVistaです

176 名前:名前は開発中のものです。 mailto:sage [2008/12/11(木) 17:07:41 ID:1D8jgOIG]
誤爆

どこの院かバレるじゃねぇかw
誰か消してくれ

177 名前:名前は開発中のものです。 mailto:sage [2008/12/11(木) 17:20:48 ID:e6R1e+p8]
興味ないから問題なす



178 名前:名前は開発中のものです。 [2008/12/11(木) 17:27:02 ID:jeJaub+T]
晒しage

179 名前:名前は開発中のものです。 mailto:sage [2008/12/11(木) 17:52:07 ID:jDESsGSy]
>>171
タスクリストなんて言う名前で呼んでるから見えなくなってるだけで、
実体はアルゴリズムのエントリポイント(一般的には関数ポインタとか)の連結リストを順番に呼び出していく機構でしかないわけだから、
同じようにアルゴリズムのスタックの一番上だけを実行するような機構を用意すれば良いわけだ。

void Menu()
{

}

void MagicSelect()
{

180 名前:名前は開発中のものです。 mailto:sage [2008/12/11(木) 17:56:00 ID:jDESsGSy]
あふん

void Menu()
{
if(hoge)Push(MagicSelect);
}

void MagicSelect()
{
// 同
}

void Who()
{
// 同
}



void SelectTarget()
{
// スタックをクリアして次のキャラとか、戦闘開始とか
}

実際どう実装するのが一般的かはしらんけど私はこうしてるな。
RPGは作ったこと無いけど。

181 名前:名前は開発中のものです。 mailto:sage [2008/12/11(木) 20:11:08 ID:IWquCMNP]
>>166
STGってOSのGUIサービスを使わなくてもへっちゃら平気なことが多いから
そういう場合、OSのメッセージシステムも関心の外にあったりする。↓仮想コード
winmain(){
  try{
    //ゲーム環境構築
    //D3D,SOUND,INPUT,USERDATA,ワーカースレッド生成,etc
    boost::shared_ptr<GAMEENV> gameenv(new GAMEENV(gamemain));
    // メインスレッドはWM_QUITされるまでグルグル回ってろ
    while(1){
      GetMessageとかうんたらかんたら
      …
    }
  }catch(...){;}
}
gamemain(){   // 自由です。HSPerにとっては水を得たお魚状態
  try{
    boost::scoped_ptr<SCENE> logo(new LOGO(gameenv));    //ロゴ画面
    boost::scoped_ptr<SCENE> demo(new DEMO(gameenv));   //デモ画面
    (…後略…)
    pc11.2ch.net/test/read.cgi/gamedev/1226199100/174-
}

STGのシーン遷移は超単純だからコードにベタ書きしたほうが分かりやすかったりする
RPGみたいに複雑なシーン遷移をするならSCENEのツリーとかSCENEのグラフが要るね
こういうのは可視化・エディットできるGUIツールがあると便利だね。ツクール大好き

>>172-176
>どこの院かバレる
(・∀・)病院ダロ。カエレ

182 名前:名前は開発中のものです。 mailto:sage [2008/12/11(木) 20:22:48 ID:1D8jgOIG]
>>181
ほぅほぅほぅ ホーホケキョ
リンク先はオブジェクト指向ですねぇ
しかし、私がSTGの状態遷移に一番ややこしいStrategy Patternを使っていたのは内緒だ

183 名前:名前は開発中のものです。 mailto:sage [2008/12/11(木) 20:32:19 ID:1D8jgOIG]
>>181
しかしですね
結局 switch文使ってるじゃないですか
これが気に入らなくてねストラテジーパターンに走ったんですが、
さらに汎用性のある基本オブジェクトの作成、つまり基本設計ですかね
でつまづき
CGameクラス作ってシングルトンパターンは楽勝だったんですけど
テンプレートメソッドパターンがなかなかのつわものでしてね
そうこうしているうちに、ワケワカメになってしまってね
結局 デザパタ一切使わない ピュアなC/C++になってしまったんですよ
そして、人生でもつまづいてね
あーいたたた

184 名前:名前は開発中のものです。 mailto:sage [2008/12/11(木) 20:46:44 ID:1D8jgOIG]
で、だよ 他のスレからの引用で申し訳ないが
case TITLEOPTIONTYPE_GAMESTART:         //ゲームスタート
        try{ //STAGEEXCEPTIONTYPE_GAMEOVERという例外を投げるまでゲーム続行
          stage1->Run();stage2->Run();stage3->Run();stage4->Run();
          stage5->Run();stage6->Run();stage7->Run();stage8->Run();
          ending->Run();                     //エンディング画面再生
        }
これの
stage1->Run();
stage2->Run();
とあるが
空の処理を回すのが気に入らない

185 名前:名前は開発中のものです。 mailto:sage [2008/12/11(木) 20:48:07 ID:1D8jgOIG]
そんなに空の処理をするのが好きなら
Observerパターンで監視しろっつーの
と俺が言ってみるテスト















まぁ、増えるのは複雑さだけなんですけどねorz

186 名前:名前は開発中のものです。 mailto:sage [2008/12/11(木) 21:02:17 ID:IWquCMNP]
>>181
あ、gamemain中のgameenvだけど、これは適当にgamemainの引数でひっぱってきてね

187 名前:名前は開発中のものです。 mailto:sage [2008/12/11(木) 21:08:33 ID:IWquCMNP]
>>184-185
HSPerのSTGは一面から始まってプレイヤーが生残する限りエンディングまで一本道で進むよ
順次処理を静的に記述してるだけだよ

>>174のコードに空の処理なんか無いよ



188 名前:名前は開発中のものです。 mailto:sage [2008/12/11(木) 21:49:08 ID:jrEtBQbk]
例外を制御に使うのはいかがなものか

189 名前:名前は開発中のものです。 mailto:sage [2008/12/11(木) 21:56:55 ID:1D8jgOIG]
>>187
ん?
タイマーの処理が加わってないからよくわからん
もっと深く

>>188
デバックに便利
配列のアクセス違反とは一発でわかる






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

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

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