Appendix

広告

Entries

スクリプトの更新

下記のスクリプトを更新しました。

乗り物擬似3D化 for VX

更新した内容は主に二つ。


一つはスクリプト動作中のフレームレートを設定できるようにしました。

前までは30フレーム固定で、前回のバージョンアップで60にしたわけですが、
今回10~60の範囲内で好きな数値を設定できます。

以前の30フレームでは、画面の描写を60の半分にして内部処理だけ二回繰り返すことによって、
30フレームだけど60フレームと大差ないようにしていました。

が、これはこれで不具合があったわけです。

二回繰り返すというのはデフォルトのスクリプトの処理を繰り返すだけだったので、
何らかのスクリプトで追加した機能は二回繰り返さないという欠点がありました。

具体的には動きがもっさりしたり、キー入力を受け付けないことがあったり。

それを解消するために60フレームにしたわけですが、やっぱり動作が重いです。

今回からはそのあたりを作り直し、デフォルトと同じ60フレームで動作させるけど
画面の描写だけは設定した数値まで減らすという方式に変えました。

これによって30フレームと60フレームの欠点が一気に解消したわけです。
あとは使う人が気に入った数値に設定してください。
(一応、デフォルトでは40フレームになってます)

まあ、ここで書いてるほど簡単な修正ではありませんでしたけどね。
書くともっと長くなるので省略。


二つ目は地面の描写をちょっと修正しました。

比較画像作ってみました。
141108.jpg
上が旧バージョン、下が新バージョン。
一番の違いは左右の海岸線沿いがきれいになったことだと思います。

旧バージョンでも新バージョン並みにきれいにすることは出来たのですが、
スプライトを大量に使うので抑えてありました。

具体的には4倍の量のスプライトが必要になります。

が、今回の新バージョンでは1.4倍のスプライトで4倍並の描写に成功しました。

・・・いかに無駄なスプライトがあったのか分かりますね。

あと地面の描写に使っている計算式もちょっと修正しました。
比べないと分からないですが、ちょっと視野が広がって動きも違います。


ただ、欠点が一つ。

よーく見ると分かるのですが、旧バージョンでは地平線が真っ直ぐなのに対し、
新バージョンは曲線を描いています。

こういう演出を加えたかったわけではなく、見えては困るものを演出でごまかしただけです。

真っ直ぐにすることも無理ではなかったのですが、
その場合見える距離が旧バージョンよりも狭まるだけでなく、
マップを横に引き伸ばして視野角も狭めなくてはならなかったのでこうなりました。


そのうちVXAceバージョンも修正するつもりですが、
その場合オプションやら簡易マップ標示やらも修正しないといけないので
ちょっと時間がかかりそうです。

最後の欠点を欠点と見なければ、非常に満足のいく出来といって良いんじゃないでしょうか。
自分のレベルアップを感じられて、久々にスクリプト作りが楽しかったです。



コメントのお返事。

> かおばん さん
無理にバージョンアップする必要はないと思いますよ。
メリットだけではないですし、なによりバージョンアップしたことによって他スクリプトと競合を起こすこともありえます。

フレームレートも30だって言わなければ分からない人の方が多いでしょうしね。

ただ、一度比較してしまうと30には戻せないかもしれませんw
動きがすごいスムーズです。

そのあたりを天秤にかけて決められればよいと思います。
スポンサーサイト
この記事にトラックバックする(FC2ブログユーザー)
http://woodpenguin.blog.fc2.com/tb.php/136-fbfe420b

トラックバック

コメント

[C188] 競合の話ですが

なんかこの最新のやつを試してたら 昔のでできなくなってしまったので・・・(RGSS2が停止に;;)
もう都合最新のがぬるぬるだしこっちのほうがいいやって事になったんですけど、

HARTS HORNさんの隊列歩行と、
この3D化のベースとメインをいれている状態で飛ぶと、
乗り物が二つ表示されちゃいまして・・・
多分これさえ解決できたら凄い事できるのに・・と
乗り物のきゃらぐらが飛んでる間だけ消えればいいんですが、
何かアドバイスがあれば教えてくれないでしょうか? 御願いします

あ 参考画像は私のブログの最新記事においておきました


追記:HARTS HORNさんの「隊列歩行」の下に3D化でようやく動いてます

更に追記:今ちょっとやってみたら
def create_characters
#~ super
@character_sprites = []
for i in $game_map.events.keys.sort
sprite = Sprite_Character.new(@viewport1, $game_map.events[i])
@character_sprites.push(sprite)
end
for vehicle in $game_map.vehicles
if @vehicle.type == 2
else
sprite = Sprite_Character.new(@viewport1, vehicle)
@character_sprites.push(sprite)
end
end
@character_sprites.push(Sprite_Character.new(@viewport1, $game_subplayer3))#追加
@character_sprites.push(Sprite_Character.new(@viewport1, $game_subplayer2))#追加
@character_sprites.push(Sprite_Character.new(@viewport1, $game_subplayer1))#追加
@character_sprites.push(Sprite_Character.new(@viewport1, $game_player))
@character_sprites.pop.dispose
@character_sprites.delete_at(@vehicle.type - 3).dispose
end

としたらできました!(飛行船の影スプライトの作成の上の所です)
合理的ですか?というか効率的ですか?
これで完璧な競合対策といえるでしょうか?

ちなみにsubplayerっていうのは、隊列歩行の時の先頭以外の後ろについて来る三人のグラ(?)です

コメントの投稿

コメントの投稿
管理者にだけ表示を許可する

Appendix

プロフィール

木星ペンギン

Author:木星ペンギン
ほぼツクールのことばかり書いてます。
名前は↑から取りました。
木製ですが木星です。
トカゲは関係ありません。

ゲーム

  • 箱庭の勇者たち(体験版)
  • アクイ ト アイ
  • ぼくらの大革命!
  • 勇者がやらねば俺がやる!
  • 3Turn Battle!
  • 3TurnBattle!2nd 体験版

メールフォーム

wood_penguin@yahoo.co.jp

名前:
メール:
件名:
本文: