Appendix

広告

Entries

スクリプトの更新とATB-α

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

レスポンス向上
不具合修正スクリプト

「レスポンス向上」については、実は更新したのは数日前だったり。

中身を見直してたら、擬似トランジションがスイッチ使わないと機能しないような内容だったので、
スイッチ無くても機能するようにしました。

というか、スイッチによる切り替え自体いらない気もしますが、とりあえず残してます。



「不具合修正スクリプト」に関しては、ほとんどの人には関係ない内容です。

内容は「ウィンドウを可視状態にした後、update を実行しないとウィンドウの内容が表示されない不具合」というもの。

実はこの不具合を見つけたのは何年も前だったり。

でも、上にも書いたとおりほとんどの人には関係ないし、
どう対処していいのか分からずに放置してました。

今回、下で紹介するスクリプト製作中にまたこの不具合にぶつかり、
対処法もあっさり思いついたので追加しました。



最近ツクールで何してたかというと、「箱庭の勇者たち」作ってるわけでも「勇者がやらねば俺がやる」の続き作ってたわけでもありませんでした。


完全にスクリプトで遊んでました!


で、とりあえず形にはなったので、テストバージョンとして公開します。

【ATB-α】

141128a.jpg
以前、作らないとか言ってたアクティブタイムバトル作っちゃいました。

「勇者がやらねば俺がやる」の戦闘システム製作でのノウハウを生かして、
コマンド入力中でも敵が攻撃してくるタイプです。

141128b.jpg

モードをアクティブにすれば、スキル選択中にも行動します。

ウィンドウの位置や細かな仕様など、変更が必要なもの以外はデフォルトのままにしてあります。



で、注意点として、今回作ったのはテストバージョンですが完成版を作る予定はありません。

素材としてゲームに使用するのはかまいません。
改変するのも自由です。
その辺は利用規約に準じます。

ですが、不具合に関しては対応が遅れるか、もしくはしないと思います。
競合に関しても、対応できません。

全て自己責任で使ってください。


というのも、私のサイトはツクールで言えば結構後発組なので、戦闘システムとなるともう大手がすごいの作ってます。

その辺を私が真似ても敵わないですし、同じことやっても需要ないわけです。

なので後発組が作れるスクリプトといえば、他の人が作らないようなものか、
他サイトさんと競合が起きないように調整されたスクリプトしかないわけです。

私は基本前者ですが、戦闘システムとなると後者に当てはめなければなりません。


めんどくさいです。


戦闘システムとか複雑すぎて、理解するだけでも時間がかかります。

そんだけ苦労して、やっぱり無理だったとか、今更需要ないとかだと目も当てられません。

そういうめんどうなの無視して、楽しんでスクリプト作りたいだけで作ったので、それ以上のことはしません。


まあ、まだまだ追加したい機能もあるので、また気が向いたらバージョンアップするかも?

スクリプトの更新とテストプレイ用クイックスタート

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

乗り物擬似3D化 for VX

報告のあった競合を起こしやすい部分を修正しました。



【テストプレイ用クイックスタート】

久しぶりのVXAce用新スクリプト素材です。

私が普段から使っているものなのですが、ふとこれって素材として配布できるんじゃないかと思って素材化しました。

テストプレイ開始時に、あらかじめ設定しておいたセーブデータを読み込んだり、ニューゲームで開始したりします。

つまりはタイトル画面を飛ばすことで、テストプレイに使う時間を極力減らそうってことで作ったものです。

特にスクリプト素材は山のようにテストプレイしますからね。
なかなか助かってます。

コメントお返事

> かおばん さん
ご報告助かります。
自分のスクリプト見直してみましたが、「これはひどい」と言わざるを得ない・・・・
競合起きにくくしたつもりが、起きて当たり前の内容になってます。

追記で書かれたスクリプトでも解決は出来ていますが、
無駄な部分もあるので解説がてらに修正案です。


まず、最初の部分は大丈夫です。


for vehicle in $game_map.vehicles
    if @vehicle.type == 2
    else
        sprite = Sprite_Character.new(@viewport1, vehicle)
        @character_sprites.push(sprite)
    end
end
とありますが、乗り物が飛行船タイプしかないようでしたら、これ全部削除してかまいません。

飛行船タイプ以外が存在するようでしたら、
for vehicle in $game_map.vehicles
    if vehicle != @vehicle
        sprite = Sprite_Character.new(@viewport1, vehicle)
        @character_sprites.push(sprite)
    end
end
としないと、他の乗り物が標示されなくなります。


subplayerについてですが、乗り物搭乗中は表示されないと思うので、削除してもらってよいです。


@character_sprites.push(Sprite_Character.new(@viewport1, $game_player))
も同様に、プレイヤーは標示されないため削除して結構です。


@character_sprites.pop.dispose
@character_sprites.delete_at(@vehicle.type - 3).dispose
さて、私のスクリプト部分ですが最悪ですね。

一応、上の行がプレイヤーのスプライトを削除するもので、
下の行が現在乗ってる乗り物のスプライトを削除するものです。

が、これはデフォルトからスプライトの順番が変わっていないことが前提になってます。
今回のように隊列歩行のようなスクリプトいれたら競合起こして当然です。

どちらも既にスプライトの作成手順を削除しているので、これも削除してもらって結構です。


修正は以上ですが、分かりにくければそのままでも良いです。
中途半端に「分かる部分だけ修正」ではおかしなことになるので注意してください。

スクリプトの更新

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

乗り物擬似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
動きがすごいスムーズです。

そのあたりを天秤にかけて決められればよいと思います。

勇者がやらねば俺がやる! バージョン1.3

遅れましたが報告いただいた不具合の修正をしました。
ダウンロードは→のバナーからどうぞ。

またも不具合修正だけです。

追加要素入れたいとは思いつつも、もうアビリティのネタがないんですよねー。

報酬なしなんてやる意味ないし、威力が高いだけのスキルもつまらないし・・・

敵4体も追加できそうも無いので、1体くらいでちょっと考えてます。



さて「乗り物擬似3D化 for VX」ですが、たぶん明日更新します。
とりあえず今日はこれくらいで。

スクリプトの更新

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

乗り物擬似3D化 for VX

報告のあった問題の原因を探っているうちに、楽しくなって色々と改造しちゃいましたw

主な変更点は
・不具合の多かった乗り物を追加する機能を廃止しました。
・上記に伴い、設定項目をいくつか削除しました。
 └通行判定や乗り降りできるタイルの設定、飛行フラグや向きを合わせるフラグなど、
   デフォルトから変更できないようにしてあります。
・フレームレートの制限を無くしました。デフォルトでは60fpsで動作します。

そしてVX版にはないいくつかの機能を試しに入れてみました。
・旋回ボタンを二つ設定できるように変更。同時に押すと旋回速度が1.5倍になります。
・飛空挺のみ乗り物から降りるボタンが設定されていない場合、
 高度が低い状態で降下ボタンを押すと降りられる機能を追加しました。
・上記二つの変更に伴い、デフォルトのキー操作が変更されてます。

いろいろ変わってますが良いことだらけではないので、バージョンアップには注意してください。
一応、旧バージョンも残してあります。

一番の問題は60fps動作にしたことですかねえ。
今までは無理矢理30fpsに下げていたので、無理な制限がなくなったのは良いですが、
重くなってPCのスペックによっては処理落ちとか起こるかもしれません。
フリーズや動作停止は無いと思いますが、こればっかりはプレイする人次第なので様子見です。

11/03 追記:
60fps問題あっさり解決しました。
もう少し動作確認して、近いうちに再び更新します。
ついでにやっぱり陸上を移動する乗り物を作れないのは不便と感じたので、削除したパラメータも一部戻します。



コメントお返事です。

> かおばん さん
そおおおおいうことかあああああ!  と思わず唸ってしまいましたw
解決できてよかったです。

競合でもなんでもなく、「乗り物擬似3D化」が原因でした。
使用する環境によって良くない動作をしていたみたいです。

GC.start って私の環境では効果あるのかさっぱり分からなかったので、
最近は全く使わなくなってました。
でも重いスクリプトではやっとかないとダメですね・・・
よい教訓になりました。


@viewport_light.dispose について。
ビューポートって解放しないとどうなるのか私も良く分かっていないのですが、
たぶんやっておいたほうが良いです。
とはいっても、ただ入れただけではエラー出ると思います。

私が試して見た限り、「プレイヤー追尾明かり」スクリプトの205行目 class Spriteset_Map 以降にある
if !@light_spriteset.nil? はほとんどいらないです。
244行目 update_lightsource if !@light_spriteset.nil? だけ残してそれ以外の if !@light_spriteset.nil? は
削除した上で @viewport_light.dispose を入れれば動作すると思います。

というか、こうしないと「プレイヤー追尾明かり」が機能してないような・・・?
まあ、上手く動かなければ解放しなくてもいいかな?


体験版は見てみたいという気持ちはありますが、あんまり人様のスクリプトに意見言えるものでもないので
私個人で参考にって形になっちゃうと思いますがそれでもよろしければ・・・って感じですね。

ただ、完成版は楽しみにしてますw
私自身、「乗り物擬似3D化」を使うようなゲームを作っていないので、
これを使ったゲームをプレイしたいとずっと思っていました。
完全版待つのも私的にはありです。

コメントお返事

> ガミー さん
またも多くの不具合報告助かります。

こんなにあったんですね・・・(;´Д`)
とりあえず、報告いただいたのは修正してみました。
公開はもう少し確認してからにします。

> ・迷いの森の上限レベルが30となっているが実際には29までしか上げられない
これについてはレベルは目安ということでw
ヨコ草原についても1~10となってますが、雑魚では9までしかあがらないです。
ボスも含めれば上がるんじゃないかな~と思ってちょっと低くてもいいやって感じで書いてます。
(ボスなしで上げられるところが多いですけどw)

> 現在仲間リストを100%にしようとやっているのですが
> どうも実装されてなさそうなキャラがいるっぽいです。
確認してみたところ、実装したけど後から削除したキャラをリストから消し忘れてたみたいです。
433~435はエルフ、553~559は動物でした。リストから消しておきます。
541に関してはご指摘のとおりのキャラです。
確認してみたところ、ちゃんと実装されてました。
しかし、これは見逃すと探すの大変ですね・・・
誰がどこにいるのか分かるようなアイテム実装できないか検討してみます。



> かおばん さん
スクリプト拝見しました。
新規プロジェクトに「プレイヤー追尾明かり」と「乗り物擬似3D化」をいれて起動してみたのですが、
どうもエラーの再現が出来ません。
もしかしたら別のスクリプトの可能性もありますし、PC等の環境によって出るエラーの可能性もあります。

新規プロジェクトに「乗り物擬似3D化」と使用しているスクリプトを順に入れてみて、
エラーが発生する原因となっているものを特定しないと対処は難しいです。


一応私の方で確認してみたことをいくつか。

「プレイヤー追尾明かり」と「乗り物擬似3D化」の併用でエラーが発生しそうな箇所は特に見当たりませんでした。

「プレイヤー追尾明かり」ですが一部ミスがあります。
下の方にある @viewport_light に入っているビューポート(Viewport)が解放されていません。
236行目辺りにある @light_spriteset.dispose の下に @viewport_light.dispose と入れてください。
(if !@light_spriteset.nil? を入れるかどうかはお任せします。
 私が見た限りこれが必要なのは244行目の update_lightsource だけです)
もしかしたら、このビューポートを解放しないことで溜まっていってるのが原因かも?

「乗り物擬似3D化」の1436行目にある Graphics.frame_rate *= 2 の下に、GC.start と入れてみてください。
・・・ただの気休めですけど、もしかしたら効果あるかも?


しかし、メニューを開けば改善されるってのが不思議ですね。
フキダシでもエラーが出るというのがさらに不可解。
環境によって出るエラーの可能性が今のところ一番高いかなあ。

ただ、環境だからって諦めるわけにも行きませんからね。
例えば、製作者にエラー出てなくてもプレイしてくれた方にエラーが出たら意味無いわけですから。
何か進展がありましたら、コメントでもメールでもいただければ出来る限りの対処はしたいと思います。

Appendix

プロフィール

木星ペンギン

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

ゲーム

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

メールフォーム

wood_penguin@yahoo.co.jp

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