戦うぞ!64xその91(技の取得データ)


実は一箇所難航している部分がある
Dxライブラリの文字入力受付処理部分を使ったテキストエディタだ。
知らない間に正常な動きをしなくなっていた事に気が付いた。
(前々から挙動不審だったような気もしなくない)

文字をクリックすると対象地点に編集カーソルが移動する、という処理なのだが、
特定条件下ではクリック位置と違う場所にカーソルが移動してしまう。

深く調べてみると、カーソル位置設定関数(DXライブラリ関数)あたりが怪しい。
カーソルの位置を設定しても、"文字数"以降の値に設定できないのだ。
上の説明だと一見問題ないように見えるが、仕様が怪しい。

本来、設定単位はbyte単位であって、文字数の単位ではないのだ!
(もしくは逆。文字数単位だけど他がbyte単位になっている)

aaaaaは5byte(半角英数)で5文字
あいうえおは10byte(マルチバイト文字)で5文字

「aaaaa」に対してカーソルの設定を行っても問題ないが、
「あいうえお」の場合5byteから先、`う`から先の位置にカーソルが設定できない。

方向キー入力によるカーソル移動は、この制限を受けない。
末尾にカーソルを移動して位置を取得すると[10]という感じになる。
この取得した[10]の値を、設定関数に突っ込むと制限に引っかかって[5]に強制変換される。


基本的にバグは自分の責任で他を疑う事はしない(半ば神聖不可侵でもある)のだが、
なんというかこれは環境から先の理由で動いていないようなので、公式の掲示板に書き込んだ次第である。
とはいえ自分自身自分が一番信用ならない事を知っているせいで、
非常にやきもきしながら返信を待っているのだ!人間向いてないなあ...
自分側の問題でいいから解決策を知りたいんじゃ~

メモ帳のデフォコードが変わったり、最近はよく文字コード関係で色々困る事が多い。
何とかならないかなあ

...
Dxライブラリは過去にも一度、ライブラリ関数の不具合に遭遇した事があったが
その時は掲示板でも指摘されていて、即差分がアップされたおかげで即解決された。
知らないうちに、DxライブラリはAndroidとかPS4とかSwitch対応とか
色々なプラットフォームに対応していたりと、中々に凄い作者である。
ヘルプミー!



やった事

マスタリに汎用を追加
通常攻撃や移動などの技用のマスタリを0番に作った。
マスタリレベルが存在しているが、レベル依存の技は殆ど無いから無意味。

技にカテゴリ式データに変更
技データN番から
剣術カテゴリのN番
という仕様に変更。

細かく分けた方が技の装備画面で見やすいからね。

技データのセーブでカテゴリ毎にセーブするか、全ぶセーブするか処理分けする
技のライセンスデータの更新がない場合、セーブ処理を省く
出来るだけ処理を減らそうとは努力していますが..



技の習得条件データの実装
現在はマスタリ・スキル・能力値のみ判定可能。

技の習得条件データのエディタの実装
CertificationEditor01.png
こんな感じ。

技のライセンスデータの実装
プレイヤーはライセンスを取得した技であれば、どのコンパニオンにも設定できる。
例えば、習得に剣術Lv100も必要な高位の技でも、技を一度習得してしまえば
仲間のLv1の魔法使いだろうと自由に脱着できる。ここら辺がライセンスデータの役割。

他にも、習得技データにない技であっても
一度覚えた技(最初から覚えていたりした技とか)や
イベントなどでアンロックした技も装着できる。

判定の処理も作ってあるからほぼ完ぺき!


技の装備画面実装
上記ライセンスデータでアンロックされた技を自由に装備できるほか、
習得データに登録されたものの条件確認などが出来る。

BaattleActionSetting01.png

↑技の装備ダイアログ
主要データを表示する。項目が多くて見づらい気もする。


BaattleActionSetting02.png

↑技の装着画面
並び替えたりできるよ

BaattleActionSetting03.png

↑習得条件・状況の確認画面




ここから書きかけ

やる事


モンスターデータも派閥でカテゴリ分けする
呼び出しやすいから...
現状でも派閥分けできているので後回しでかまわない

キャラクター構造体に特殊状態異常を追加
種類分の構造体に経過ターン要素が必要。
反撃の構や防御。必中状態異常など様々な処理の再現に使用する

技の装備画面、取得条件の確認画面をスクロール対応にする。
取得条件データが少なすぎて実装されていないのだ!

コンパニオンフラグの追加
NPCフラグがあるから不要なのでは?

Item,Armor,Weaponの名称バッファの確認
バッファサイズをケチったせいでサイズが統一できているか怪しい

技の効果のラベル(もしくは画像)を用意する
一文字・二文字程度の短いラベル、画像を用意する
不思議なダンジョンやElonaなどの技・装備の印表示的な物

グーグルスプレッドシートを使えば、
???

オブジェクトに乗っかっている時に、若干高く表示する(要検討)
椅子など移動・通過可能オブジェクトに重なった際、
ややめり込んでいるような見た目になってしまう。
オブジェクト側txtに高さを追加して、表示位置を調整するとかで対処できる・・・かも

スキルや能力値を変数に書き込むイベントを追加する
例えば
修理スキル50以上で確実に修理可能
50未満なら値を百分率にして、ランダムで成否を決める

とかの処理で使うかも


プレイヤーメニューの派閥画面を改良する
通常時・デフォルトはプレイヤー派閥→他の状態を表示。
プルダウンなど操作で他派閥同士の関係が見れるように

プレイヤーの名声(LevelとExp)や
カルマ・所持金も見れるようにしてほしい。


コンパニオンの加入・離脱イベントの実装
コンパニオンスロットに空きがあるかの判定処理と、
離脱加入処理、イベントの実装

通常NPCの加入処理

マップ上のNPCを勧誘するなどのパターン
イベント開始元など、マップ上の対象キャラ番号で処理を行う

1.コンパニオン枠の開いている部分を調べる→なければ失敗
2.開いている枠にマップ上のNPC指定番のキャラをコピー
3.コンパニオンの派閥を主人公派閥に
4.マップ上参照NPCのEnableをFalseに(不活性に)


Elona奴隷など、直接加入パターン

1.コンパニオン枠の開いている部分を調べる→なければ失敗
2.対象枠にキャラクターデータを生成




アイテムの重量バランスを取る
見本にしているElonaやSkyrimなどは重量がfloat型(小数点)で管理している。
今作っているゲームは1からなので、それをベースにする必要がある。

一番軽い物を決める
食べ物の重量を決める
ポーションの重量を決める
剣の重量を決める
家具などの重量を決める

ここらへんで相互を基準にしながらバランスを取っていく事。


アイテム入手依頼で、必要ランク以上なら報酬にボーナス
良品以上の要求で、名品などを渡した場合
ささやかな報酬の上乗せを行ってほしい(金銭)少しだけね。
報酬アイテムに対しては上乗せしなくていい。


マップエディタでのマップ読み込みで影の更新を行う
やれなり


マップ情報自体もセーブデータにぶち込む
対象地点のオブジェクト・または地形を変えるイベントを追加する
(要検討)

メリット
壁やチップの破壊・一時的な変更が出来る
隠し通路など色々出来る
技などで物が壊れる様な表現が出来る。


デメリット
ファイル(セーブデータ側の)容量が増える
マップ間移動時のセーブ・ロード量が増大する
任意でキルゾーンが建設できる
一方的に攻撃できる環境をプレイヤーが作れてしまう
地形にハマる可能性がある



キャラ表示を一枚絵から歩行グラフィックに変更する
規格だけでも

マップチップデータもオブジェクトデータと同じようにする(要検討)
・名称
・移動不可
という二種類の構造体で管理する

とは言え現状からさほど改良される訳でもないので保留


ランダムダンジョン生成のオブジェクト生成などで新しい規格に変えておくこと。
ダンジョンテンプレートの各機能を本実装
オブジェクト番号で逆引きする感じで
柱・机・椅子・岩とか


アイテム選択画面で大事な物・汚破損・盗品の表示が出来るようにする
汚破損品や盗品をプレゼントすると喜ばないようにする事
まだ完全反映されていないのでやる事。


SHIFTの高速ターン回しを戦闘にも適応する
主に移動と目標の有無で判定しているので、敵との戦闘時に高速回しが出来ない。
ぶっちゃけ足踏みで代用できるから後回しでおk。


キャラクターの移動目標座標(Target)の未設定値が0になっている。
座標に対しての指定なので、普段使いで0番座標への移動は起こり得る。
今の所別に問題ないけど、-1を未設定値にするべき。

技指定攻撃処理を実装する
後回しでもよい
プレイヤーやコンパニオンの技使用指定。
通常クリックで一回。Shift(またはCtrl)+クリックで無限使用

キャラクター構造体側の技欄に
・技の仕様不能フラグ(自動で使わない為のフラグ)

キャラクター構造体に
優先技設定
優先技仕様先、敵番号
優先技繰り返しフラグ

を追加する
攻撃対象の奴は既存のものがあるかもしれないのでそっちを見てどうぞ


会話に相手の事を知るための項目を追加する

ランダムで
・生い立ちについて
・興味について(ランダム・興味値のboolの開示はされない)

語り口調ではなく説明文で行ってよい

相手は何が好みで何が嫌いかを聞くことが出来るようにする。

>キャラクター構造体に興味値の値だけboolを作る
>会話ミニゲームなどで話題を振った際に、boolをtrueにする
>trueの話題は以降、ある程度の興味値が解るようにする


会話ミニゲーム

簡単な仕組みなら、
指定の興味について会話を試みる
自分の興味値と相手の興味が近ければ良好
同じ興味は続けて二回(再生成を跨いでも)選択できない、とか


武器・防具にアイテムレベルの設定を追加する
要検討
設定していれば細かくレアリティ的な事が出来なくもないが、
剣などと違って斧などは種類が乏しいので項目を作っても無駄な面がある。

プレゼントに装備の変更処理を追加する
渡された装備が今の装備より優秀で、装備タイプやマスタリー通りなら装備を変更するようにする事。
(済みすか?)


ニューゲームの能力選択をちゃんと反映するように
今のところ、はじめからで生成したときの条件と、ゲーム開始時の能力が全然違う!恥を知れ!
ほんとうに?


モンスターデータのアイテムドロップ項目設定が
実際のドロップに反映されるように実装する事。

またエディタ側では数値の手打ち状態なので、
ドロップアイテムデータなどからプルダウンやリスト選択を引っ張ってくるようにする事

・一枚絵データの実装
・モンスターデータ側の一枚絵選択処理の実装


行動の代行の実装
主人公が鍵開けなどの行為をする際、
一定範囲内の味方をリストアップして、代行挑戦させることが出来るようにする

マップ拡張処理をmalocで一時保存先を作成して広げる
実装してみたら、速度が微妙だったので保留。

技(スキル)の名称をどうにかする
現状技の事をSkillとしているが、料理や魔術知識などのカテゴリもSkillと呼べてしまうのだ!
なので技(Skill)をBattleActionと名称を変えてみたが、文字列が長くてかなわない。
どうしたものか...


各項目値をゲーム内変数にコピーするイベントを作る
現在の所持金+N円なら~~という処理など、
何かを挟んで数値の判定をする際に使用する。

アイテムにエンチャントを実装していく
他、腹痛の状態異常を追加してね

ダメージ表示の数字が重なると見えなくなるので何とかする
・案A
キャラクター構造体側にダメージ値・ターンダメージ値の要素を作って
加算させながら表示させるようにしてみる
一定時間表示の更新がなければ全値を消して表示フラグも折れる様な感じに

ダメージの限界突破制限&最小値・レジスト
属性耐性の値が100%を超えると
攻撃や回復の威力が反転する可能性がある
攻撃・ダメージ時に死亡や上限規制の判定を設けるべき
他にもエンチャントもろもろで値のおかしいダメージが想定される。

キャラクターステータスウィンドウなど、
各ウィンドウの最適化
カスタム説明の適応とか色々



アイテム(武器防具は不要)に分解項目をつくる
1.そのアイテムを分解するとどんな資材が手に入るか?
2.そのアイテムを分解したときのアイテム入手量

ネジ・木材などの資材を実装できたら解体も実装する事。
家具など不要になりやすいアイテムも何らかの足しになるといいね!

採掘で取得したアイテムは実体(鉱石として実体・重さを持ってインベントリに追加する)
鉱石を溶かして資材に変換!という感じにしてほしい

キーコンフィグの追加
操作追加
・AWSDでキャラの移動
・方向キーで画面移動
・SHIFT + AWSD で画面の移動
・CTRL + クリックで地形選択しない。HUD対象クリックとか


設定画面を充実させる
色々足りてないので
・フルスクリーン設定とか
・操作、ボタン設定


モンスターデータエディタに派閥分け表示・編集を追加する事
カテゴリ式でいいのでは?


キャラランク(品質)によってドロップアイテムの種類が変わるように
しているはずだが、デバッグしていないので本当に反映されているか見てみること。
宝箱でのアイテム生成はこれを流用して作るんだぞ!

ダイアログの部分で日本語入力が出来ない問題の解決
実は結構大変な問題で、いくら検索を掛けても解決法がみつからない。
Dxライブラリの作者がサンプルとして載せているダイアログコードを、初期状態のプロジェクトに乗せてみても日本語入力が出来ない。
一度どこかにexe上げて他の環境でどう動くのか見てみないと解決できなさそう。

オブジェクトイベントのタイプを追加
通過時イベント発動タイプ:オブジェクトイベントで通過時にダメージが入るようなトラップを作る
アイテム収集地点タイプ:Elonaのマテリアル

アイテムの品質や、残り回数が表示でわかるように
品質の表示が一行表示の際にされていないのでさせる事。色分けでもいいね。7days to dieみたいに。
売買・交換画面でアイテムの表示時にも品質や使用回数がわかるようにする。

自分対象の技を使った際、距離の表示がおかしくなる(変数の初期化がされていない?)
アニメは正常だけど同時に表示される距離値が-~~~になる

犯罪行為の咎め判定
全キャラクターで検索、射線の通りと単純距離の2種類で判定する。
犯罪難易度と対象キャラのレベル+距離補正で成否を判定する。

ポートレートの服装生成はモンスターデータを元に生成されるが、
男性女性での振り分けが無い為、男性でも女性の服などが生成されてしまう。

現在
魔術師(共用)・平民(男性)・平民(女性)
と性別処理が一貫していないが、これを完全に男女別に分ける事!


キャラクターデータの移動AI、攻撃AIをちゃんと実装する事
モンスターデータ側でも項目があるぞ
モンスターデータエディタ側にも項目があるぞ
カテゴリ名や内容の説明などをしっかり作っておいてね!


細かい仕様とか

迷宮のモンスター生成
現在迷宮の登場モンスターは依頼での敵対派閥から引っ張ってきている。
もし派閥が混在するような仕組みを作りたい場合は別の処理を作ってかませること。


自分への細かいバグ報告や注意喚起

迷宮内での移動でもセーブさせてね
迷宮内でセーブした後、ボスを倒す→ロードするという行為を行うと
ボスが倒された状態で再開して詰まる。
ボスを倒した際にセーブするようなElona的処理でなんとかなる。
ロードした後でも、マップの一時データが残り続けるから仕方がないねんな。。。

射線判定の斜め時に片方だけ問題
射線判定(FireLine.cpp)の斜め判定の処理で
一回目では左右調べているのに、二回目は片方しか触っていない
変じゃない?
まあ多分正常に動いているからヨシ!

アイテム生成の強化
宝箱からのドロップやマップ上のアイテム生成の強化。
現状、存在していないカテゴリなどがあるのでまずはそこから埋めていってほしい。
・武器防具
宝箱などで固定指定の装備が生成できるように
・アイテム
まだ実装していないカテゴリがある(道具など)のでそれを実装。
レア宝箱みたいに固定指定アイテムもドロップする処理もたのます。

技のExpタイプが機能していない
多分依存パラメータ側で振り分けを行っている
規格の整備を行っていってね。

技データの読み込みで、csvの行数がデータの最大値より少ない場合
最終行(正確には存在しない空白の行)が滅茶苦茶な読み込まれ方をしてしまう
空白が読み込まれるため数値は0。文字列は初期化していないので文字化けで保存される

NPCの再生成処理が上手く動いていない?
F5のマップ上キャラクターデータで
・NPC_Flag
・ReSpown_Flag
この二つをTrueにしてもマップの再生成時にリスポーンしない!
できればリスポーンしてほしいなあ・・・
マップのデータ側で設定して正常に動くか確認する事。

バグ

警告

・メニューウィンドウに戻るボタンを作ってさしあげろ。
・タイトル画面で×を押すと正常に終了できない
・オブジェクトイベントの削除が正常に行われていない(要検証)
・オブジェクトイベントのロックピックの犯罪判定。鍵(フラグ)の有無での施錠などは今の所未実装。
・イベントの鍵開け処理で、マップのレベル依存(-1)という処理があるのだが
マップに対してのレベル設定項目が無い。後でマップに追加する事(忘れてませんかね...)
マップ間移動とか怪しい。再生成とか含めて正常に動くがデバッグしろ!
・フィールド読み込みに再生成フラグが追加された。
読み込み外で無駄な上書きを行わないように気を付ける事
・オブジェクトイベントからのイベント発生処理が未実装な
・戻り値がある関数なのに戻り値がないとリリースのコンパイルで
エラーが出ずに通る事がある。末端に必ずreturnで値を返すような仕組みにする事。

・ゲーム開始直後など、マップの保存が必要ない場合も呼び出しているので
無名の一時ファイルがセーブ内に作られてしまっている

・BGMデータの保管方法は、最初にハンドルへ全部読み込んでいしまっているが
もしoggやmp3などのファイルを使う場合はいちいち読み込んだほうが良いのでは?
一々読み込む場合は、数値型ではなくファイル名のchar配列型にする事。

・投げるコマンドでのアニメ・エフェクト・ダメージ計算・副次効果は仮実装か未実装。


注意喚起
・後退処理のAIが優秀なので同速度の一対一状態だと確実に逃げられる。
逃げている時は速度が低下するなどの処理が必要。
・移動の押しのけ判定がややガバいので、中立・友好派閥と押しのけあいまくる。
↑様子見。酷いようであれば修正

要注意:経過観察必要事項セーブロード処理をmainを中継せずに行えるようにしているが、信用ならない。

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 0

この記事へのコメント