戦うぞ!64xその96(行動指定と吹き出し)



やった事

CharacterSpeech001.png

吹き出しの実装
キャラクターが敵を倒した時などに吹き出しで喋るように。
喋る内容はSpeechフォルダ内のファイルを参照する。
口調と改行が適応される。
死亡時は仕様の都合で喋る事が出来ない。


ヒットアニメと移動アニメの変数を纏めた
マップへのアニメ表示は後付けの繰り返しで色々汚いので
一部変数を纏めて管理するようにした。
表示がおかしかったらここら辺が原因。
移動アニメも変だったので修正した。

敵を倒した時の好感度変動を追加
敵を倒した際に好感度が低下するように。
倒した敵が狙っているキャラクターは好感度が上がるように(コンパニオンよりNPCの方が上昇しやすい)


SkillTargetCoice001.png

技の使用指示を出せるように
コンパニオンに対して技の使用を指示できるように。
敵対NPC以外にも使用可能。警告も出る。攻撃を当てると敵対する。

対象選択画面(投擲対象選択画面と併用)では
射程のmin,max範囲や遮蔽が表示されるようになっている。

射程や遮蔽物の問題で使用できない場合は予約をスキップをして通常行動を行う。
数回スキップされると予約が取り消される。
特定ボタンと同時にクリックをすると連続使用する。

派閥に攻撃時の一斉敵対フラグを追加する
NPCキャラクターを倒した時、社会的な第三者に見られてしまうと
倒した派閥との戦闘フラグがONになる。

犯罪の発見処理を追加
前回の派閥とのマップ内敵対の段階で実装できていましたが、一応記載。
プレイヤーがNPCの殺害や鍵開けなどの犯罪行為を犯した際に、
近くの第三者キャラクター(社会的な派閥)がいると犯罪がばれる感じ。
上の一時的敵対フラグの判定部分などに使用中。
ずばり、第三者が居ないとバレないのでやりたいほうだい。
殺害すると対象キャラの好感度は下がる。まあだからどうしたっていう感じではある。

死亡時にマップ内の一時敵対を解消するように
後々に実装する遺品の回収を楽にするために、本格的に敵対していない派閥との一時的な敵対を解消するように。
罰は私刑で償う感じっすね。


ポートレートの服服カテゴリを男女分けした
一部供用だったのを完全に男女分けした。


やる事


Belongの廃止
性別のラベルなどを含めて全てBelong.cppを廃止する

汎用会話で好感度が上がる処理を追加
再生成後(会話開始時の判定の時とか)に好感度を増やす
固定値で1
乱数(会話実行者の魅力) > 相手の魅力/2 以上で+1
乱数(会話実行者の魅力) > 相手の魅力 以上で+1
最高で一度に+3上がるようにする。

食事効果の判定を作る
満腹度上下ぐらいしか処理していないので作る。
ダメージの算出諸々まだ出来ていない。

他、食物の満腹度回復値の設定もやる事。
現状の値だと小さすぎてすぐに空腹になってしまう。

イベントに以下を追加
派閥の一時敵対
キャラクターのAnger操作
犯罪処理実行


経験値の調整
仲間に攻撃しても普通に経験値が入るので、
冒険するより町で訓練していた方が経験値が入るという部分を何とかする事。


依頼ベースデータの読み込み形式が怪しい
ファイル番号99まで対応しているが番号が抜けている時の処理などが
正直把握しきれていないので確認しておくこと

マップエディタのモブポップ画面の改良
作りがかなり雑なので


キャラクターの選択中は画面に何か表示するように
移動先選択中などの状態が分かりづらい。
・プレイヤーではないキャラの移動選択は一々解除されるのでわかりづらい
・選択中に足元から地点を表示しないので選択中かわかりづらい
スキップ中のような画面全体に何か表示してもいいかも


範囲に以下を追加する
縦一列
横一列
十字
自分中心



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

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


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

通常NPCの加入処理

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

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


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

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




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

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

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


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


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


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


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

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


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

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

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

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

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


会話ミニゲーム

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


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

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


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

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

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


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


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

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

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



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

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

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

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


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


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



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

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

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

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


要検討


光源について考え中
オブジェクト自体に光源を描いたり、対象に光の画像を描画しても
以降のマスの描画に食われるので色々だめ。

カタクリズムとかのマス単位の光量設定で実装するならできる。

料理のレシピとか考えてみる
テイルズ式のレシピ解禁とか色々仕様を考えてみる。
サブイベントでアンロックした方が楽しいと思うけど、セーブデータ量が増える。

武器に以下の要素を追加するか検討する
・長柄判定bool
薙ぎ払いなどの技を使用できるか
・近接可能bool
弓などを主武装にした際に、通常攻撃などが出来るか

必須ではないのでよく考えてから導入する事


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



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

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


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



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

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


マップチップデータに場データを実装する(要検討)
水や火などの状態データを実装する。
処理の負担になったりと色々懸念があるので保留中。


細かい仕様とか


死亡時の吹き出し処理は現在無効中
死亡後すると配置が解除される仕様なので吹き出しが表示できない

範囲攻撃を受けた際はヒットアニメが表示されない
ターゲットキャラのみ被弾(ぶるぶる)アニメが表示される。

武具に耐熱・耐寒の値を追加する
属性耐性を流用してええんやで?

リテラルの置き換え
'l'や'u'などの方向リテラルを数値に置き換える事。
終了、エラーで-1
大変そうなので保留

犯罪の発覚判定(Witness)の詳細を書く
犯罪実行者の能力値で発覚を免れる様な処理を作る事。
現状視界内だと強制的に発覚する

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

アニメーションつき画像ハンドルの読み込み方法が危険
本来一時配列に読み込む用の"LoadDivGraph"で
二次元配列に読み込んでいる。アブナイ!
ちなみに対象が構造体内の二次元配列だとちゃんとエラーが出て許されない。

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

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

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

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

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

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


バグ



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


テキストエディタでクリック地点にカーソルが移動しない問題
以前正常に動いていた部分が動かなくなってしまった!
「半角英数が1バイト・日本語は2バイト」というDxライブラリの仕様上、
"あああ"は6バイト・3文字になる。

カーソル位置のget・setはバイトの数値で扱うのだが、
6バイト位置に設定すると、謎の制限が発生して3バイトの位置に再設定される。
つまり文字数の値のバイト位置に再設定されてしまうのだ!

フォーラムで相談中(レス0)
バグやろwwwとほぼ決めつけて書き込んだけどもしかしておま環・・・?


警告

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

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

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

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


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

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

ブログ気持玉

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

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

→ログインへ

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

気持玉数 : 0

この記事へのコメント