RPG制作:そして
うわぁ、雪積もってるし・・・。(苦笑)

「ぬすむ」コマンド選択後の処理を実装しました。
これで、クリーチャーから、通常(倒しても)得られないアイテムを、盗めるようになりました。
それと、倒したクリーチャーからアイテムを得る処理の方に、誤りがあったので修正しました。
うわぁ、雪積もってるし・・・。(苦笑)

「ぬすむ」コマンド選択後の処理を実装しました。
これで、クリーチャーから、通常(倒しても)得られないアイテムを、盗めるようになりました。
それと、倒したクリーチャーからアイテムを得る処理の方に、誤りがあったので修正しました。
2009年1月最後の日。
外は朝から雪が降っております。
風もやや強めかな。
クリーチャー設定ツールを修正しました。
クリーチャーから盗めるアイテムの設定を追加しました。
通常得られるアイテムとは、別のものを設定できるようにしました。
次は、そのデータを「ぬすむ」コマンドと連動させる作業に取り掛かります。
まぁ、それほど大変な作業ではないので、本日中に終わるとは思いますけど。
それと、「敵から盗んで得られるアイテムなら倒しても得られるんじゃ?」という疑問は抱かないで欲しいです。(笑)
まぁ、私自身も不条理に思っています。(笑)
そこで、盗まないと得られないアイテムは、なるべく「倒した衝撃で壊れてしまうようなアイテム」を設定したいと考えています。
それでも説得力に欠いてますけどね。
「ぬすむ」コマンド選択後の処理を組んでいるところです。
「ぬすむ」コマンド用に、通常得られるアイテムとは別に、もう1種類用意しなければならないですね。
その設定も、1月中に終わらせたいところですが、あと1日しか残っていないのか。
■アイテム調合師(仮)
●前ギフト:シーフ(仮)
たたかう
ぬすむ
アイテム
=空欄=
ぼうぎょ
にげる
------------------------------
■シーフ(仮)
●前ギフト:無し
たたかう
ぬすむ
アイテム
=空欄=
ぼうぎょ
にげる
■シーフ(仮)【注意】「ぬすむ」4行目
●前ギフト:戦士か武道家
たたかう
強襲
アイテム
ぬすむ
ぼうぎょ
にげる
■シーフ(仮)
●前ギフト:魔法使いか僧侶
たたかう
ぬすむ
アイテム
まほう
ぼうぎょ
にげる
■シーフ(仮)
●前ギフト:アイテム調合師(仮)
たたかう
ぬすむ
アイテム
=空欄=
ぼうぎょ
にげる
------------------------
■戦士か武道家【注意】「ぬすむ」4行目
●前ギフト:シーフ(仮)
たたかう
強襲
アイテム
ぬすむ
ぼうぎょ
にげる
------------------------
■魔法使いか僧侶【注意】「ぬすむ」4行目
●前ギフト:シーフ(仮)
たたかう
まほう
アイテム
ぬすむ
ぼうぎょ
にげる
3DRPG制作:1月中に解決したいこと3にメモっていた2つのバグの件。
>■ショップ店員と会話した後、商品の売買画面に切り換わらないバグ。
原因が判明しました。
※会話開始後、NPCがマイキャラの方を向き直すと発生する恐れがある。
マイキャラの会話用コリジョンモデルが、NPCのコリジョンモデルとギリギリのところで衝突してる状態だったのに、NPCが向きを変えて、そのコリジョンモデルが回転したせいで、衝突していない(会話可能なNPCがいない)状態に戻ってしまったのが原因。
※ただし、会話そのものが中断される心配は無いので、深刻なバグではない。
会話データが完全に出力された後、アイテム(魔法)売買画面またはギフト変更画面に移行する処理に飛ばずに終了する。宿屋はすべてが会話処理の中に含まれている為、バグは発生しない。
衝突判定を強化することで対処できるが、パフォーマンスを落としてまで対処する必要がないので、このまま進める。
----------------------------
>■フィールド画面に切り換わった際、ステータス異常や戦闘不能のメンバーがいることを伝えるメッセージが消せなくなるバグ。
ショップ店員(ギフトショップ含む)と会話可能な状態(Zキーを押すと会話が始まる)の時に問題が生じる。
他のケースは問題無し。
デバッグ済み。
新たなバトルコマンドを全て組み込みました。
ただし、「ぬすむ」コマンドは、コマンドリストに表示させただけで、まだ選択できません。
関連記事:3DRPG制作:1月中に解決したいこと4
----------------------------
ギフトショップでギフトを変更する際に、現在選択しているギフトを選択し直せなくしました。
今までは、同じギフトを選ぶことで、前回選択していたギフトを消せるようにしていたのですが、過去のギフトが無い状態に戻すメリットが無いので止めました。
新たに追加したバトルコマンドを実装しています。
「ぬすむ」コマンドは、バトルコマンド一覧に表示しているだけで、まだ選択できませんけど。
★アイテム調合師(仮)のバトルコマンドの実装は終わりました。
★シーフ(仮)のバトルコマンドは、前ギフトが戦士か武道家の時に、以下のどちらを採用するか決めかねているところです。
それと同じく、現ギフトが戦士か武道家で、前ギフトがシーフの時のバトルコマンドも、どちらにするか決まっていません。
たたかう
ぬすむ←強襲
アイテム
強襲←ぬすむ
ぼうぎょ
にげる
または・・・
強奪←物理攻撃+ぬすむ
強襲
アイテム
=空欄=
ぼうぎょ
にげる
追記:前者に決めました。
★魔法使いまたは僧侶のバトルコマンドは、前ギフトがシーフ(仮)の場合を除いて、実装済みです。
たたかう
まほう
アイテム
ぬすむ ←この位置では問題が生じるかもしれない
ぼうぎょ
にげる
さらに追記:全てのバトルコマンドを組み込みました。
新たに発覚したバグのメモ。
■ショップ店員と会話した後、商品の売買画面に切り換わらないバグ。
・ギフト屋や宿屋でも同じバグが発生する恐れがある。
・何らかの原因で、会話中に会話用の衝突判定から外れる(会話可能では無くなる)と発生すると思われる。
■フィールド画面に切り換わった際、ステータス異常や戦闘不能のメンバーがいることを伝えるメッセージが消せなくなるバグ。
・メニュー画面や、バトル画面からフィールド画面に戻った時に、NPCと会話可能状態になっていると生じる。
1/30追記:NPCの中でも、ショップ店員(ギフトショップ含む)の時のみ問題が生じる。デバック完了。
・zキーを押しても、異常を伝えるメッセージが繰り返されるので、移動キーが受け付けられない。
・宝箱でも、同様のバグが生じるかもしれない。
これらのバグは、1月中に解決したい。
って、2009年最初の月も、もうすぐ終わりか。
新年の挨拶したばかりなのに、来週には2月かよ。
でも、開発がかなり進んだので良しとするかな。
半透明モデルのレンダリング結果が改善したのは、ちょっぴり嬉しかったし。(笑)
新たに追加したギフトのバトルコマンドに関する処理を実装中です。
今のところ、それらのバトルコマンドは以下のように設定する予定です。
■アイテム調合師(仮)
●前ギフト:無し
たたかう
=空欄=
アイテム
=空欄=
ぼうぎょ
にげる
■アイテム調合師(仮)
●前ギフト:戦士か武道家
たたかう
強襲
アイテム
=空欄=
ぼうぎょ
にげる
■アイテム調合師(仮)
●前ギフト:魔法使いか僧侶
たたかう
=空欄=
アイテム
まほう
ぼうぎょ
にげる
■アイテム調合師(仮)
●前ギフト:シーフ(仮)
たたかう
ぬすむ
アイテム
=空欄=
ぼうぎょ
にげる
------------------------------
■シーフ(仮)
●前ギフト:無し
たたかう
ぬすむ
アイテム
=空欄=
ぼうぎょ
にげる
■シーフ(仮)
●前ギフト:戦士か武道家
たたかう
ぬすむ←強襲
アイテム
強襲←ぬすむ
ぼうぎょ
にげる
または・・・
強奪←物理攻撃+ぬすむ
強襲
アイテム
=空欄=
ぼうぎょ
にげる
■シーフ(仮)
●前ギフト:魔法使いか僧侶
たたかう
ぬすむ
アイテム
まほう
ぼうぎょ
にげる
■シーフ(仮)
●前ギフト:アイテム調合師(仮)
たたかう
ぬすむ
アイテム
=空欄=
ぼうぎょ
にげる
------------------------
■戦士か武道家
●前ギフト:アイテム調合師(仮)
たたかう
強襲
アイテム
=空欄=
ぼうぎょ
にげる
■戦士か武道家
●前ギフト:シーフ(仮)
たたかう
ぬすむ←強襲
アイテム
強襲←ぬすむ
ぼうぎょ
にげる
または・・・
強奪←物理攻撃+ぬすむ
強襲
アイテム
=空欄=
ぼうぎょ
にげる
------------------------
■魔法使いか僧侶
●前ギフト:アイテム調合師(仮)
たたかう
まほう
アイテム
=空欄=
ぼうぎょ
にげる
■魔法使いか僧侶
●前ギフト:シーフ(仮)
たたかう
まほう
アイテム
ぬすむ ←この位置では問題が生じるかもしれない
ぼうぎょ
にげる
バトルコマンドの部分のプログラムが、メインプログラムの中で最も混沌としてる気がします。
先のことをしっかり想定せずに、構築していったのが悪かったんですけどね。
新たに追加した2種類のギフトに関する処理を組んでいます。
・ギフト変更後、LV1に戻った時のステータス初期値の設定。
・レベルアップした時のステータス上昇に関する設定。
アイテム設定ツール上で設定した、武器や防具、アクセサリーと、それを装備できるギフトの関係が、メインプログラム上で正しく反映していなかったので修正しました。

ギフトを新たに2種類追加しました。
アイテムを盗むギフトと、アイテムを調合するギフトです。
今のところ、単に選択できるだけで、それらの特殊な能力は得られません(まだ未実装)。
本日、3Dロールプレイングゲームプレイアブルデモをバージョンアップしました。
Ver.0.74です。
詳細及びダウンロードはこちらです。
Web上のマニュアルも改訂中です。
・メニュー画面の「装備」コマンドで、戦闘不能または神経毒に侵されているメンバーの装備を、外したり変更できなくしました。
・メニュー画面の「ステータス」ウィンドウに、ステータス異常を示すアイコンを表示するようにしました。
ずっと設定し忘れていました。(汗)
・メニュー画面や戦闘画面等で、「戦闘不能」であることをわかりやすくしました(アイコン化)。
------------------
★ギフトに関する処理の実装状況を振り返ってみる・・・
2008年12月 6日 (土):3DRPG制作:Gift
ステータス画面(メニュー→ステータス)に、「Gift(他のRPGにおけるジョブやスキルのようなもの)」を示す画像を追加しました。
2008年12月18日 (木):3DRPG制作:Gift変更画面
今は、味方キャラのGiftの変更画面を作成しているところです。
2008年12月20日 (土):3DRPG制作:Gift変更画面その2
「今現在」選択中のGiftをもっと強調したかったので、その前まで選んでいたGiftのイメージ(右側)を縮小表示に修正しました。
2008年12月22日 (月):3DRPG制作:Giftの変更
Giftは、レベルが10以上あるキャラクターのみ変更可能としました。
2009年1月 2日 (金):3DRPG制作:歩かないNPC、宝箱のアングル
フィールド設定ツール(シーンエディタ)
・ギフトショップを設定できるようにしました。
2009年1月 3日 (土):3DRPG制作:ギフトショップ
メインプログラム
・ギフトショップを設定できるようにしました。
2009年1月 4日 (日):3DRPG制作:ギフトショップその2
ギフトショップは、スタート地点の近く(南西)に立っているNPCに設定しました。
2009年1月 5日 (月):3DRPG制作:武器や防具とギフトの関係
武器や防具に、装備可能なギフトの設定を追加しました。
2009年1月21日 (水):3DRPG制作:「得意技」コマンドの部分
現段階で、バトルコマンドに「得意技」が表示されるギフトは・・・
2009年1月24日 (土):3DRPG制作:細かな部分4
戦闘中、「まほう」コマンドを指している時に、詠唱できる魔法の種類(ギフト)が表示されるようにしました。
戦闘中、「まほう」コマンドを指している時に、詠唱できる魔法の種類(ギフト)が表示されるようにしました。
バトルコマンド上で、FFでいうところの「黒魔法」「白魔法」みたいな区別が無いので、それを補うのと同時に、ギフトの存在をプレイヤーに意識させるのが狙いでもあります。

あれから更に改良を加えました。>半透明ポリゴンの重ね合わせ処理
それで、昨晩アップロードしたプレイアブルデモVer.0.73では、この問題が解決できていなかったことに気が付きました。
よく見ると、半透明オブジェクトと主人公モデルの重ね合わせが狂ったままですね。(苦笑)
どうやら、半透明オブジェクトとフィールド(の半透明部分)の重ね合わせ処理しか、改善できていなかったようです。

・・・で、その辺を修正しました。
それと、戦闘画面の方も改善できました。
以前は、下のスクリーンショットのように、キャラクターと半透明モデル(魔法エフェクト)の重ね合わせがおかしくなることがありました。

・・・が、今回の修正で、それは解消できたと思います。
フィールド画面における、アルファチャンネル有りの3Dモデルの重ね合わせ処理が狂う件が改善できました。
よって、昨日、「どうしようもない」と記した問題点が解決できそうです。(笑)
フィールド(街)モデルの、半透明にした窓にまで悪影響が及んでいたので、スルーできなくなってしまったんですよね。
何とかなりそうで一安心です。
昨日に引き続き、細かな部分を手直ししています。
昨日の日記で述べた・・・
>ステータス異常に陥っているメンバーがいる時は、フィールド上の歩行スピードを低下させようかな・・・。
これを採用しました。
パーティの中に、ステータス異常や戦闘不能に陥っているメンバーがいると、歩行スピードが半減します。
まぁ、この程度のペナルティならあってもいいかな、と思いましたので。
--------------------------------
3DRPG制作:1月中に解決したいことに記載した「得意技」コマンドの件ですが、とりあえず空欄にしました。
いずれは、ある条件によって特殊なコマンドが表示されるようにする予定です。
--------------------------------
あとは、レベルアップしたことを伝える文字の表示方法を変更しました。
些細なことですけどね。
戦闘終了後、メンバーの中に戦闘不能状態や神経毒、出血毒に侵されている者がいる場合は、それを伝えるメッセージを表示するようにしました。
ステータス異常に陥っているメンバーがいる時は、フィールド上の歩行スピードを低下させようかな・・・。

3DRPG制作:1月中に解決したいことに記した、アルファチャンネル有りの3Dモデルの重ね合わせ処理が狂う件ですが、まぁ、これはどうしようもないですね。
※23日追記:解決できそうです。
とりあえず、出口を示す半透明の矢印は、会話メッセージ表示中は非表示にすることにしました。
根本的な解決にはなっていませんけど。(苦笑)
2Dならまだしも、3Dの半透明オブジェクトの重ね合わせは厄介なものです。
それと、先日実装したターンの行動順を示す部分も、戦闘終了時にきちんと非表示にするようにしました。
3DRPG制作:1月中に解決したいことに記載した「得意技」の件ですが、現段階で、バトルコマンドに「得意技」が表示されるギフトは・・・
・戦士、前ギフトは無し→空欄にするか?
・戦士、前ギフトは武道家
・武道家、前ギフトは無し→空欄にするか?
・武道家 前ギフトは戦士
・魔法使い、前ギフトは無し→空欄にするか?
・魔法使い、前ギフトは僧侶
・魔法使い、前ギフトは戦士 →強襲にするか?
・魔法使い、前ギフトは武道家→強襲にするか?
・僧侶、前ギフトは無し→空欄にするか?
・僧侶、前ギフトは魔法使い
・僧侶、前ギフトは戦士 →強襲にするか?
・僧侶、前ギフトは武道家→強襲にするか?
です。
前ギフトが無いうちは、別に空欄でも構わない気もしています。
ギフトそのものの種類も、もっと増やしたいところです。

1月中に解決したいこと2に記載した内容をすぐに実装してしまいました。
キャラクタ名と一緒に顔グラフィックを描写しようかと思いましたが、3Dのバトルシーンの表示スペースを、これ以上狭くしたくなかったので止めました。
もっとも、すでに狭くなっているので、注視点からカメラまでの距離を若干広げて調整しました。

そういえば、戦闘画面のターンの行動順を示す部分が、デバッグ用の仮のモノのままでした。
とりあえず、同じ種類のクリーチャーが複数匹出現した時でも把握できるように、名前の後に、Aから順にアルファベットを付加するようにしました。

そういえば、追加したアクセサリに名前をつけるのを忘れてました。
仮のアクセサリ名をつけ終えてから、プレイアブルデモをアップロードするつもりだったのに、すっかり忘れていました。(笑)
まぁ、別に支障はありませんけどね。

バトルコマンド「得意技」に関する処理・・・まだ全然手をつけていなかったか・・・。
アクセサリに関する処理を実装した段階で、このRPGの基本的なシステムはほぼ仕上げたと思ったのに、これがまだ残っていたか。

αチャンネル有りの3Dモデルの重ね合わせ処理が狂うので、何とかしたいです。

アクセサリを装備することによって得られる特殊効果の種類を増やしました。
睡眠や封印、呪い攻撃に対する耐性を上げたり、無効化する効果と、属性魔法攻撃に対する耐性を上げる効果を追加しました。
ただし、どこまでダメージを軽減するのか、まだ調整中です。
属性魔法攻撃を完全に無効化する効果もまだ実装していません。
装備したアクセサリに、対属性の関係による影響を与えるか考え中です。
たとえば、火属性に耐性効果のあるアクセサリーを装備した状態で、水属性に耐性効果のあるアクセサリーを装備した場合、効果が相殺されてしまう・・・みたいな感じです。
ただし、製作者が思っているほどプレイヤーは面白いと感じない気がするので、多分、採用しないと思いますけどね。
本日、3Dロールプレイングゲームプレイアブルデモをバージョンアップしました。
Ver.0.7です。
アクセサリが装備できるようになりましたが、まだまだ種類や特殊効果が少ないです。
装備しているアクセサリによる特殊効果は、メニュー画面のステータスコマンドで確認できるようにしています。
武器や防具と同様に、Giftによって装備可能なアクセサリが異なります。
実装済みの特殊効果は・・・
・HP maxの増加
・MP maxの増加
・クリーチャーの出血毒攻撃の成功率を1/3に
・クリーチャーの出血毒攻撃を完全に無効化
・クリーチャーの神経毒攻撃の成功率を1/3に
・クリーチャーの神経毒攻撃を完全に無効化
です。
詳細およびダウンロードはこちらです。
備忘録
重大バグ1
いつの間にか、エンカウントの設定が変更されていて、ゲーム開始地点のフィールドで、クリーチャーが出現しなくなっていました。
その影響で、現在公開中のプレイアブルデモでも、フィールドが街の西側に切り換わらないと、クリーチャーが出現しなくなっています。
でも、エンカウントの設定を変更した記憶がまったく無いんですよね。
これ、不思議でならなかったのですが、いろいろ調べた結果、原因はRPGエンジン(メインプログラム)では無くて、開発用のツールの方に潜んでいることが判明しました。
エンカウントの設定は、「フィールド設定ツール(シーンエディタ)」で行うのですが、それがバグっていました。
データファイルを読み込む際に、なぜかエンカウント用の変数の値が破損していたようです。
原因はさっぱりわかりません。(汗)
ていうか、プログラムに問題は無いと思うんですよねぇ・・・。
というのも、これといってプログラムを修正しなくても、単に変数の宣言部分の位置を変える(他の変数の宣言部分と位置を交換する)だけで、正常に動作するようになるんですよね。
たとえば、
int hoge_1;
int hoge_2;
を、
int hoge_2;
int hoge_1;
といった具合に入れ替えるだけで、デバッグできてしまうんです。うーむ。
これでは、なぜバグるのか分からないし、そして、なぜデバッグできるのかも分からない・・・そんな理解不能な状況に陥っています。
まぁ、これで一応、エンカウントの設定は行えるようになったのですが、もしかすると、今度は別の変数の値が破損しているのかもしれません。
もし、そうだとすれば、変数の値を格納するメモリ空間が、何かの原因で破損するんだと思うんですけど・・・そうなったら、ますますお手上げです。
何だか、処理系の不具合としか思えないんですけどねぇ。(苦笑)
でも、どうせ自分の間違いなんだろうなぁ。
このバグのせいで、今年一年分は悩んだ気分ですよ。(苦笑)
とりあえず、これを「重大バグ1」として記録しておこっと。
XNAのコミュニティゲームズの正式名称が「Kodu」に決まったようですね。
http://www.4gamer.net/games/032/G003263/20090108033/
XNA3.0の勉強を始めるにしても、現在制作中のRPG(エンジン)が完成した後の話になるかな。
って、その前に、C#を覚えないといけないのが面倒臭くて・・・。(苦笑)
アクセサリの装備に関する処理を改良中。
武器、防具の装備に関する処理はほぼ仕上がっているのですが、アクセサリの方は、ほとんど手をつけていませんでした。
アクセサリの効果をどのように管理するか、いろいろ考えているところです。
備忘録
【ソース内検索キーワード】
装備による能力値の増減
武器や防具に、装備可能なギフトの設定を追加しました。
これによって、どのキャラでも全ての武器・防具が装備できるのは、プレイアブルデモVer.0.69までとなります。
備忘録
【ソース内検索キーワード】
装備変更
アイテムデータファイル読み込み
ijob
ItemListup2
本日、3Dロールプレイングゲームプレイアブルデモをバージョンアップしました。
Ver.0.69です。
主人公の衝突判定処理を改良しました。
昨日、バージョンアップ(Ver.0.68)したばかりですが、ショップ店員(NPC)とカウンター越しに会話しにくくなってしまったのが、どうしても気に食わなかったので、早々にバージョンアップしました。
Ver.0.67以前の操作感覚に戻しました。
それと、ショップ画面やギフト変更画面に切り換わった直後の、キーレスポンスを改善しました。
[z]キーを連打してもなかなか反応しないのは、ちょっとストレスに感じると思いましたので。
詳細およびダウンロードはこちらです。
■メインプログラム側
・ギフトショップを設定できるようにしました。
フィールド設定ツール(シーンエディタ)側は昨日実装しており、本日、メインプログラム側と連動させました。
これで、NPCをギフトショップ店員に設定できるので、ギフト変更画面への切り換え処理(フィールド画面でスペースキーを押下)は、次のプレイアブルデモ(Ver.0.68)で削除します。
ギフトショップという言い方も変ですね。
「天賦の才」を店で買う・・・・・。
これじゃ、まるで店員が神であるかのようです。
でも、あえて店員を神にして、
「お客様は神様です」
みたいなセリフを吐かせたら面白いかもしれませんが・・・止めておきます。
それと、「ギフトショップ」という呼称だと、御中元・御歳暮等の贈答品専門店みたいな印象が強いですね。(笑)
それも仮称とします。
■フィールド設定ツール(シーンエディタ)
・フィールド上の宝箱の向きを設定できるようにしました。
・ギフトショップを設定できるようにしました。
■メインプログラム
・フィールド上の宝箱の向きを設定できるようにしました。
・歩行しないNPCの向きを設定できるようにしました
(ツール側はすでに設定可能で、今回、メインプログラム側と連動するよう改良しました)。
覚え書き
プレイアブルデモVer.0.67まで、マイキャラが壁と衝突中でも、向き(だけ)を変えることができた。
元日の衝突判定処理の修正以降は、それができない。

(画像)
カーソルキーの上を押したまま(壁と衝突したまま、キーを離さずに)、上と右、または上と左を同時に押して、マイキャラの向きを変えることはできない。
ただし、一旦、カーソルキーの上を離せば、衝突判定が解除されるので、その後、上と右、または上と左の同時押しによる向きの変更は可能である。
追記:
Ver.0.69で改善。
Ver.0.67以前の操作感覚に戻した。
プログラム的には、スッキリしない対応策だけど・・・。
マイキャラ、NPCとフィールド(壁)の衝突判定処理を高速化しました。
でも、ハイスペックのパソコンで実行したら、これといって変化は感じられませんでした。
やたら時間の掛かる面倒臭い作業だったんですけどねぇ。トホホ。(苦笑)
それと、久しぶりにフィールド設定ツール(シーンエディタ)を改良。
フォグの設定やテクスチャーの黒の透過処理等、シーンの描写結果がメインプログラム側と一致するよう合わせました。
フィールド設定ツールも、改善したい部分が山ほど蓄積しているなぁ。(苦笑)
最近のコメント