お前らRPGツクールでゲーム作れって LAWルート (388レス)
上下前次1-新
286: 2009/05/21(木)15:49 ID:8XIxGH76(1) AAS
pgr
287(17): 2009/05/23(土)10:36 ID:5KbVKXK8(1) AAS
>>268
それ試してみたらSTGが軽快に動くようになった。
もっとはやくに知ればよかった・・・
288: ◆vipRGqvJxg 2009/05/25(月)21:47 ID:KHy9sBsU(1/2) AAS
なんにせよ軽くなってよかった
その軽くなったSTGをプレイしてみたい
新しいPC買ってOSがVistaになったおかげでドラムしか鳴らないmidiを判別できるようになりました
289: 2009/05/25(月)22:42 ID:LvCSnQkd(1/2) AAS
ラベルの検索は、内部的にはどうなっているかと言うと、
外部リンク[cgi]:www.csync.net
↑こうなってる。
図1のように、ラベル1番へ直接ジャンプしてくれるのではなく、
図2のように、イベントの先頭から1行ずつ下へ下へとラベル1番を
地道に検索する。 ということで、ラベル1番がイベントの下の方に
あると、無駄な検索が 増えて重くなる。
検索は高速なので、ラベルを多用しないなら問題は 無いが、
繰り返し処理の中で何度も何度もラベルへ飛ぶような場合は
注意がいる。
省2
290: ◆vipRGqvJxg 2009/05/25(月)23:25 ID:KHy9sBsU(2/2) AAS
しらんかった
アクションゲーでラベルかなり使ってたから早速修正しよう
291: 2009/05/25(月)23:33 ID:LvCSnQkd(2/2) AAS
処理を軽くする「はじめのいっぽ」は、イベント呼び出しを出来るだけ
使わないことなんだが、そのためには、ラベルで代用する必要は無くて、
単純にイベント呼び出しを使わなければいい。
自分がいつもやっているのは、
(1)最初はイベント呼び出しを使いつつ普通に作る。
(2)完成したらバックアップを取る。
(3)イベント呼び出しを無くしてスレ(or祭り)にうp。
というもの。バグが見つかったら、(3)は捨てて、(2)のバックアップした
データの方を修正し、再び(3)を作り直す(正直、面倒くさい)。
292(1): ◆vipRGqvJxg 2009/05/26(火)00:03 ID:2cSCqGOV(1/3) AAS
>>268で毎度毎度コピペする手間が省けたと思っていたけれど
やっぱり軽くするにはそういった面倒な作業もしないといけないんだな
変数番号の変数も場合によっては軽くするために使うの我慢しないといけない
293: 2009/05/26(火)00:41 ID:hdzvQk/N(1/2) AAS
>>292
>変数番号の変数も場合によっては軽くするために使うの我慢しないといけない
いや、これは多用しても全然重くならない。
294: 287 2009/05/26(火)01:11 ID:mnsqY0BS(1) AAS
レベル高いなあ
今まで我流でやってきたからすごく為になる。
295(1): ◆vipRGqvJxg 2009/05/26(火)01:22 ID:2cSCqGOV(2/3) AAS
前までアクションやSTGで当たり判定作る時いちいち敵の数だけ処理作るの面倒だったから
変数番号の変数を使って敵1の当たり判定
→敵全員の処理を終えたなら0代入してウェイト0.0秒
そうでないなら変数番号が代入されている変数に1加算し
処理の最初に戻って次の敵の当たり判定へ
としてたんだけど
普通に敵の数だけ一つ一つ処理作るより明らかにステップ数多いからやめた
296: 2009/05/26(火)02:55 ID:hdzvQk/N(2/2) AAS
あー、そういうことか。それって、
i=1;
while(i<=50){
if(弾[i]の生存フラグがON){当たり判定の処理;}
i++;
}
こういう処理だよね?(上の例は、弾が50発の場合)
自分もかつて、こういう組み方をしてたけど、確かにこの処理だったら、
変数番号の変数は使わないで、敵の数だけ直接処理を書いた方が
ステップ数が節約できる。
省13
297: ◆vipRGqvJxg 2009/05/26(火)21:20 ID:2cSCqGOV(3/3) AAS
まさかツクールでリスト構造がでてくるとは思わなかった
ぐぐってみたけど確かにこれなら配列構造より処理がスムーズになる
しかし自分の技術力ではリスト構造を使いこなすのは骨が折れそうだわ
298(3): 287 2009/05/30(土)11:53 ID:OiZhbye5(1) AAS
俺はリスト構造というのとは違うぽいけど、使用中の弾の番号を更新する順番に並べてた
変数1=2
変数2=50
・
変数48=31
変数49=40
変数50=0
とかなっているのを変数1の番号の弾から順に更新、みたいな感じ
これだと弾を消すときにそれ以降の変数をシフトさせる処理がいるから、無駄だったかもしれない
てか>295と同じだったかもしれない
省2
299(1): ◆vipRGqvJxg 2009/05/31(日)11:37 ID:yBcAGC6O(1) AAS
レス遅くなった
>>298
STGよく出来てると思う
気がついたら10分くらいプレイしてたよ
自分のPCでは敵の弾が多いときに処理落ちした
自分は弾を消す処理はあえて作らないで、
常に画面外の含め全ての弾の更新処理をしてる
弾の発射に関しては1番目の弾から順に発射していく方式で、発射できる弾の検索は無し
これだと、例えば1番目の弾が画面上にいるときに1番目の弾を発射できて、
弾が上書きされて前の弾が途中で消えるという欠点があるけど
省1
300: 287 2009/05/31(日)14:42 ID:WXdAzHNl(1) AAS
おお、ありがとう評価してくれて
そっちの方式のが適してる気がしてきた
処理落ちしたら意味ないし、改善の余地があればなー
301: 2009/06/01(月)22:47 ID:VRSrhryD(1) AAS
>>298
リンクが切れてて見れない…
>俺はリスト構造というのとは違うぽいけど、使用中の弾の番号を更新する順番に並べてた
いや、自分もその方法です。リスト構造をポインタを使わず配列で
表現すると、その方法になる(100%互換性があるわけではなく、
ポインタ使う方が守備範囲が広いようだが)。
>これだと弾を消すときにそれ以降の変数をシフトさせる処理がいるから、無駄だったかもしれない
それ以降というのは、「それ以降全部」ということ?
自分のやり方だと、ある2つの変数を1回交換するだけでよくて、
「それ以降全部」のシフトは要らない。
302(3): 287 2009/06/03(水)20:00 ID:DN3lndS0(1) AAS
そんな賢い方法は全然思いつかなかった。。。
その技を使わせてもらった上でうp
外部リンク:www1.axfc.net
あと、ウェイト0.0を2個から3個に増やした
この調子だと、もっと無駄な処理がありそうだ。
303: ◆vipRGqvJxg 2009/06/03(水)20:47 ID:htRtfSaV(1) AAS
>>302
>>298よりさらに凄くなってて吹いたわ
そんなウェイト多用しなくてもいいと思うけどなあ
重いならまず弾更新処理の命令数を少なくしたらいいと思う
弾の数×命令数だから、一つ減らすだけでも相当軽減できる
304(1): 2009/06/03(水)23:29 ID:gcBfyDz3(1/2) AAS
>>302
見たよ!
まず三角関数に無駄が多すぎる。どうして皆そういう組み方を
するんだろう。
sin,cosには360個ずつの変数を使って大胆にテーブルを作れば、
手間をかけて処理を組まなくて済むし、しかもステップ数も
大幅に抑えられて一石二鳥。変数は、2万個くらいまでなら
ジャブジャブ使っても大丈夫らしいから気にしなくていい(ソース:テク研)。
tanは値域が実数全体なので、近似しにくい。atanがあればtanは必要ないので、
atanを作る(これもテーブルで作る)。しかもatanの方が近似しやすい。
省3
305(1): 2009/06/03(水)23:37 ID:gcBfyDz3(2/2) AAS
ifでの分岐のさせ方は、
if(*){}
if(*){}
:
:
こんなふうに1個ずつ並べて書いてあるけど、これは無駄が多いので、
二分探索で組めるところは二分探索で組む。
角度を0〜359に戻す方法は、条件分岐を使わなくても、
theta=(theta%360+360)%360;(消費ステップ3)と計算すれば、
thetaがどんな値であっても、一発で0〜359に戻る。
省11
上下前次1-新書関写板覧索設栞歴
あと 83 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.017s