論文の締め切り直前であたふたしております。
あと2週間ほどでフリーになるので、そうしたら本格的に開発を再開したいと思います。
また、最近ではXNA Frameworkにも興味を持っております。
もう少しRGSS2でゲームプログラミングについて勉強した後、XNA Frameworkで3Dゲームに挑戦したいと思ってます。
ミンサガ再現をがんばっております。
とは言っても、RGSS2の勉強も兼ねたプロトタイプみたいなもので、
一通り完成した後に改めて公開できるレベルにして公開するつもりです。


最近ようやくRGSS2の全体像が見えてきたところです。
それで、今までのスクリプトは拙い作り方をしてたなあと思うことがあります。
特に今現在公開しているLPシステムは酷いと気づきました(^^;

HPが0の状態でダメージを受けるとLPが減少するという処理、
これはアクターオブジェクト側の処理だと簡単に思いこんで、無理矢理そう実装しています。
でもそれは設計上まずかったです。
Scene_BattleおよびGame_InterpreterでそれぞれLP減少のメッセージを送るべきでしたね。

しばらくは忙しくなるので、コードもブログも書けませんが、
一息ついたらまた更新していきます。
神の恩寵RGSS2スクリプトを開発しました。
神用のアクターと、恩寵として使用するスキルを用意します。
予め神アクターに恩寵スキルを任意の数だけ習得させておきます。
各神に対する恩寵値はゲーム変数で管理します。
ターン終了後に、設定した条件によって神の恩寵が発動します。
恩寵発動後、その神の恩寵値が減少します。
恩寵値はイベント中に対応するゲーム変数をいじることでも変更できますし、
特定の戦闘行動を取った後に変動させることも出来ます。
またRPG探検隊さんのサイドビュースクリプトにちょっとだけ対応するやっつけパッチもあります。

後ほど公開いたします。
LPシステムのバグフィックスと新機能を追加しました。
スキルのLP消費量として1.0未満を設定すると、その確率でLPを1消費します。
(たとえばLP消費量として0.5を設定すると、1/2の確率でLPを1消費します。)

次回追加しようと思っている機能は、スキルによるLP攻撃・吸収に対する耐性です。
これをどういう形で設定しようか悩んでいるところです。
いくつか候補があるのですが、どれがベストか判断しかねているところです。
たぶん、LP攻撃耐性用の属性IDを1つ用意させて、その属性有効度がD,E,FならLP攻撃無効という形になると思います。
先日公開したLPシステムのバージョンアップをしました。
LPを0にしてエネミーを倒しても、戦闘不能から復活するスキルで復活してしまう不具合を修正しました。
Katty Scriptよりダウンロードできます。
また、このLPシステムはCode Crushさんのところで公開されているサイドビューには問題なく対応していることを確認しました。
さらに、某所で過去に公開されていたサイドビューに対応するパッチを間に合わせで作りましたので、こちらも公開します。
このパッチはいくつものバグがあることを確認しているのですが、修正は行わないと思います。


さて、RPGツクールVXのイベントを実装していてすこし困ったことがありました。
[選択肢の表示]イベントコマンドでの文字数制限です。
選択肢の文章には半角文字で28文字までしか入力することが出来ません。
「頼む。おさらばしたい奴がいるんだ。」という選択肢を作りたいのに、これでは字数オーバーです。
実はこの字数制限を無理矢理破る方法があります。
少しだけスクリプトを使うのですが、大して難しいことはありません。

まず、一時的に使用するためのゲーム変数を1つ確保します。
ゲーム変数はイベントコマンドからは整数の代入と演算しか出来ませんが、スクリプトからならどんな形のオブジェクトでも保持できます。たとえそれが文字列であってもかまいません。
そして、[文章の表示]や[選択肢の表示]イベントコマンドに\V[i]と記述すると、ゲーム変数ID:iの値を表示することが出来ます。(このとき、内部ではゲーム変数の値が文字列に変換されています。)
すなわち、ゲーム変数に選択肢で表示したい文字列を代入し、選択肢では\v[i]によってその文字列を参照すればいいのです。
例えば、一時的に使用するゲーム変数をID:3のゲーム変数とすると、下図のようなイベントフローになります。
$Katty Script Blog-選択肢文字制限解除01

結果、このように文字数制限の限界を超えることが出来ます。
$Katty Script Blog-選択肢文字制限解除02
はじめまして。趣味でプログラミングなどをやっております。
忙しさの合間を縫って、RGSS/RGSS2書いております。

RGSSでは好きなゲームのシステムの再現もやりますし、新しいシステムを開発もやってます。
ゲームはFFとロマサガシリーズが好きで、特にミンサガは未だに周回を重ねているほどです(^^;
なので過去に作ったスクリプトはそれらに影響されたものが多いですね。
現在はミンサガ全体のシステムを機能単位に分離して開発しており、本ブログを通してスクリプトの公開をさせて頂きたく思います。

さて、まず第一弾として公開させて頂くのは、サガシリーズの基本ともいえるLPシステムです。
サラッと探した感じ、LPシステムのRGSS2を公開している方はいないようですね。


下記リンクよりDL可能です。
Katty Script


以下、解説です。

Katty Script Blog-LPシステムSS01Katty Script Blog-LPシステムSS02
基本的にはミンサガのそれを踏襲しています。
戦闘不能になるとLPが減少し、戦闘不能状態で攻撃を受けるとさらにLPが減少します。
また、LPに直接ダメージを与えるスキルも存在します。
LPが0になったアクターはパーティから離脱(作品の設定によっては死亡と扱う)します。
LPはアクターだけではなくエネミーにも設定されています。
エネミーのLPを0にしても倒したことになります。


Katty Script Blog-LPシステムSS03
ミンサガでは主人公のLPが0になるとゲームオーバーです。
しかしミンサガを再現する目的以外の方にも利用して頂けることも多少想定しています。
例えば、ロマサガ2のように主人公が死亡しても次の主人公に交代するとか、誰か一人でも死亡するとゲームオーバーにしたいとか、死亡したときにイベントを発生させたいとか。
本スクリプトでは、死亡時にコモンイベントを起動させることによって、それらを可能にしているつもりです。

例えば上図のようなコモンイベントを用意しておき、スクリプトにこのコモンイベントのIDを記述しておきます。
戦闘時/非戦闘時に関わらずアクターが死亡した際、そのアクターのアクターIDが特定のゲーム変数(上図では変数001:死亡アクターID)に代入されたうえで、このコモンイベントが呼ばれます。
そしてコモンイベント終了後、死亡したアクターは自動的にパーティから離脱します。

つまりこの例では、アクターID:1のアクターが死亡した際にはゲームオーバー扱いとし、それ以外のアクターが死亡した際には対応するスイッチをONにした上でパーティから離脱し、ゲームは続行します。

複数のアクターが同時に死亡した場合は、死亡したアクター毎にゲーム変数にアクターIDが代入され、コモンイベントが実行されます。


以上が本スクリプトのウリであり推したいところです(^^;
他にも、LPを消費するスキルや、特定の条件時にLPの消費量を抑えるなどといった機能を備えております。
どういったことが出来るのか、サンプルゲームを用意しましたので、興味のある方はDLしてみてください。
また、サンプルゲームにはBPシステム(ミンサガのそれです)も入っております。
こちらはプロトタイプ的なものですので、正式なものではありません。
BPシステムは近日中に正式版を公開する予定です。