[VB5]を含む記事

[移動範囲取得関数「MoveRange()」実装中] [編集] 移動範囲取得関数「MoveRange()」実装中

SRC_Sample.PNG
現状、関数が動作するところまで完了。
仕様の確認というか、相談なのですが……

実はこの関数、既存の移動範囲取得を使いまわしてコーディング量を減らしているのですが、そこである問題にぶつかってしまいました。
移動範囲の取得のルーチンではユニットの移動力をデータからそのまま引き出していますが、その移動力のデータが読み出し専用で、書き込むことが出来ません。
オプションで移動力の指定も欲しいとのことだったのですが、移動力の操作ができないので、取得ルーチンと似たコードのものをもう1個コーディングするか、ルーチンの引数を増やす必要があります。

そこで考えているのが移動力オプションのカットなのですが、いかがでしょうか?
一応移動力を書き込みもできるように改造すれば全体への影響も少ないまま実装できると考えますが、何かの意図があって読み出し専用にしているとも考えられるので下手に弄っていい部分なのかは少し分からないのが問題ですね。
なお、X,Yの指定はユニット側のX,Yを一時的に操作できるので実装できました。


[「消」属性のレベル指定] [編集] 「消」属性のレベル指定

武器属性「消」のレベル指定を可能にしました。
敵に与える状態異常と同じく、L0を指定すると戦闘中のみ消耗状態になります。
アビリティ側ではL0状態異常を解除する処理が組み込まれていないため、L0による消耗状態は発動しないように処理しました。
また、合体技パートナーも同様です。

[paintPictureコマンドオプション「乗算」「減算」の実装] [編集] paintPictureコマンドオプション「乗算」「減算」の実装

SRCSample3.PNG
PaintPictureコマンドのオプションに「乗算」「減算」を実装しました。
リクエストで上がってた「フィルタ」のオプション扱いには出来ませんでしたが、やりたい事はだいたい出来るものが実装できたと思います。

paintPicture hoge.bmp - - - - 乗算 RGB(255,0,0)
paintPicture hoge.bmp - - - - 減算 RGB(255,0,0)

このように指定します。

スパロボのアイコンってこれを使ってやってるのかなーとか日頃思ってたのでやってみましたが、予想とまったく異なる展開に。
上から乗算、減算、フィルタ50%です。
……だとすると、あれはパレットの入れ替えなのか^ ^;

この機能のテスト中、PaintPictureに不具合があることが分かり、解決策を探しております。

不具合の内容
同じ画像を透過の有無以外同じオプションで連続描画したとき、透過するときにうまく透過されない場合や透過しない場合に背景色への色加工ができない不具合

発生条件

paintPicture hoge.bmp - - - - 暗
Refresh

ClearPicture
paintPicture hoge.bmp - - - - 透過 暗
Refresh

だいたいこんな感じ。
これを逆にするか否かで、透過されなかったり背景色への処理の妨害が発生します。
マップコマンドで描画テストをしてる際に発覚。
一度イベントラベルを抜けると1度目の処理はうまく行くので、同一イベントラベル内で発生すると思われます。
画像にマスクとか使ってないかが気になっておりますが、詳しい原因がわかれば自力修正も検討します。

追記>
透過、不透過の順番を変えた別コマンドを用意して検証した結果、イベントラベル内限定ではなかったようです。
画像キャッシュの処理あたりを探してみるとします。

追記2>
いろいろやってはみましたが、マスク処理のどこかに原因がありそうな匂いまでは分かったものの、それ以上は踏み込めませんでした。
よって、今回は不具合報告という形でお願いすることになりました。
お手数かけてしまい、申し訳ありません。


[その他追加等] [編集] その他追加等

新たに、以下の機能を実装。

・オプション「移動時EN消費無効」
 リクエストから。
 空中や地中、ホバー移動等のEN消費を無効化し、ENが0でも移動可能になります。

・パイロット特殊能力「レベル上限」
 リクエストから。
 パイロットの上限レベルを指定したレベルにします。
 
 パイロットがレベル上限Lv10を持っているなら、上限レベルは10です。
 ただし、本来のレベル制限よりも高く設定してもそれを超えることはありません。

以下2つは個人的に実装。

・パイロット特殊能力「必要経験値」
 パイロットのレベルアップに必要な経験値が、指定したレベルと同値になります。

 パイロットが必要経験値Lv100を持っているなら、経験値が100累積するごとにレベルが上がります。

・パイロット特殊能力「取得経験値下限」「取得経験値上限」
 パイロットが一度に入手できる経験値が、指定したレベルに制限されます。

 パイロットが取得経験値下限Lv20、取得経験値上限Lv100を持っているなら、
 貰える経験値は20〜100の間となります。
 素質等の効果をすべて適用しきった後で適用されます。
 なお、EXPUpコマンドによる経験値取得はこの能力の影響は受けません。

「レベル上限」「必要経験値」に関しては、どんなレベルを指定しても最低1は確保されます。
また、SetSkill等で上限を下げたりして限界を超えた場合の正常動作は保証されません。


[武器属性「吸」「減」「奪」のレベル指定対応] [編集] 武器属性「吸」「減」「奪」のレベル指定対応

リクエストに挙がっていた武器属性「吸」「減」「奪」のレベル指定を可能にしました。
どれもレベル*25%の効果があり、レベル指定を省くともとの効果となります。

追記>
仕様の取り違いをしていました。
「減」「奪」のレベル指定で、EN破壊威力の制御をするようになっていましたので、仕様通り「奪」の吸収割合の変更をできるよう修正。
「減」属性に関しては変更を破棄。

追記2>
マイナスレベルに対応。
HPが減り続けて0になった場合、自殺します。
「失」属性と処理は同じなので、SP「復活」の効果も無視されます。

[NPCタイル実装] [編集] NPCタイル実装

SRCSample2.PNG
NPC陣営のタイルを実装してみました。
実装にあたり、PictureBoxを一つ増やす必要がありました。
あとは出撃時のアニメーション画像を増やしたり。

陣営タイルはPictureBox内に組み込まれているものを使用しているようですが、一部ソースの中にAnimationフォルダから引っ張っている部分あり。
これが何をしている部分なのかはよく分かりませんので、まだ完全に実装しきったとは言えないかもしれません。
テストでは、挙動上の問題は今のところ発見されていません。

追記>
Animationフォルダから引っ張ってる部分は画像の描画を行う処理のところ。
やってる事は、指定された画像ファイルがAnimationフォルダのタイル画像なら、ユニットに使われているタイル画像を引っ張る、という処理っぽいです。

[新機能盛り込み] [編集] 新機能盛り込み

SRCSample.PNG昔にリクエストしてまだ未実装の機能「HP成長」「EN成長」+αを実装。

HP成長
EN成長
装甲成長
運動性成長
移動力成長
(メインパイロット)

ユニットの各能力値を、メインパイロットのLv * 特殊能力レベル * nだけ増加させます。
マイナスのレベルを指定すると、各能力値が減少します。
増加する値nは、各能力値で以下のように定められています。
HP:20
EN:1
装甲:10
運動性:1
移動力:0.1

HPUP(DOWN)
ENUP(DOWN)
装甲UP(DOWN)
運動性UP(DOWN)
移動力UP(DOWN)
(メインパイロット)

ユニットの各能力値を、特殊能力レベル * nだけ増加(減少)させます。
マイナスのレベルを指定すると、各能力値が減少(増加)します。
増加する値nは、各能力値で以下のように定められています。
HP:20
EN:1
装甲:10
運動性:1
移動力:1

これを過去にリクエストした目的は等身大シナリオにおける、HPやENのRPG的な数値表現をやりやすくするためです。
1LvUpごとに固定値成長、というパターンは今まではレベルアップイベントによる強化パーツの付け替えや、オプションによる成長+ユニットの強化系特殊能力マイナスレベルを駆使して表現する必要がありました。
これはパイロットに設定するだけで、煩わしい作業をせずともそういった表現を可能にします。
また、同時に追加したUP(DOWN)系能力を使うことで途中の成長を微妙に変化させたり、FEっぽいランダム成長も簡単に搭載できるようになります。
パイロット能力として扱った理由は、パイロットの6つの数値の成長能力やUP(DOWN)能力とセットで使いやすいようにするためです。

数値とかは一見バラバラっぽいので、統一した方がいいのかな?

[SRC開発環境導入] [編集] SRC開発環境導入

VB5.0を導入しました。
といっても、実行ファイルを作れないControl Creation Editionというバージョンです。
実行ファイルが作れなくとも動作確認はできるので、これでSRCがオープンソースに移行したときに微力ながらお手伝いが出来そうな感じです。

SRC.PNGとりあえずはお約束ということで、桁の増強からやってみました。
もともと想定された大きさではないので、関連するデータ型をすべて弄らなければならず、結構骨が折れました^^;

VB5CCEはMSDNダウンロードセンターを探しても見つからなかったのですが、どうやらファイルへの直リンクだとまだダウンロード出来るようです。
Ultrawide Band TallyHorn Antenna」様で解説されているのを見つけて、無事に導入することができました。
VB5はその古さからほぼ手にすることができないと思っていたので、非常に感謝しております。



公開中のゲーム

オススメ商品