戦うぞ!64xその93(モンスター撃破数カウント)

CharacterEditor01.png


やった事


待機時の移動処理の実装
待機なのに移動という頭の悪い言い回しは置いておいて、
非戦闘中の移動設定をキャラクター情報に追加した。

ランダム移動(頻度三段階)
上下・左右の移動(ぶつかったら方向転換)
直進(ぶつかったら方向転換)

が実装されている。
戦闘状態ではこれらの移動は行われない。


メインステータスの保持方法を変更
構造体に直で.strや.vitなどと書いていたのを、
mainstatus[10]という配列に形が変わった。
for文だったりと色々アクセスしやすくなった。
配列にアクセスするという行為はやや速度が落ちるらしい...

状態異常項目実装
防御やきあいだめなど、抵抗力要素が不要な状態異常を追加した。
形だけ。

状態異常項目実装
防御やきあいだめなど、抵抗力要素が不要な状態異常を追加した。
形だけ。

モンスター撃破データの完全実装
モンスターを倒したカウントデータの実装。
セーブデータに保存される。

イベントから参照したり、変数と比べる事が出来るので
特定モンスターをN体倒してこい!みたいな処理が出来る。


イベント:ゲーム変数同士の比較演算の実装
色々な部分で使用するための変数比較を実装
今の所は同値判定はない。

イベント:変数値の規制処理の実装
レベル・ステータス・撃破数など項目毎に最小・最大値が違うので
範囲外の値を戻す処理を追加しておいた。

ChoiceListWindowActiivityの処理追加

const char *get(int)の引数に限定している処理を
const char *get(int,int)に対応させた。

規格修正
モンスターデータに派閥要素が追加されたので色々修正した。
イベントのモンスター指定の際に対象派閥の値も必要になった。


モンスターの選択画面を作る
派閥・詳細番を入力するための画面を生成する
済み(short,short)か(cs)で呼び出せる


マップやマップキャラクターエディタの即時反映を行えるように
ベースのデータを弄っても、時間経過の再生成を待たないと反映されない。
即反映させるためのボタンなどを用意してほしい
Elonaの再生成ボタン的な奴

場の初期化を行える様な奴を作る
・マップ上のNPCをリセット・データから再生成
・マップ上のオブジェクトをリセット・データから再生成

F3に作った
済み

各エディタに項目追加
特殊状態異常
状態・耐性とか
AI
初期化されないイベントフラグ

などなど新しく追加した要素の為に色々書き足した。



やる事


イベントに一時フラグの操作・判定を実装
再生成しないキャラクター内イベントフラグを対象にした処理を作って、どうぞ

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

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

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

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

技の条件設定画面の初期値がおかしい
獣技の爪を指定→初期値にすると技が「後退」に指定されてしまう!


キャラクターの選択中は画面に何か表示するように
移動先選択中などの状態が分かりづらい。スキップ中のような画面全体に何か表示してほしい


乱数によるイベントを実装
例えば
修理スキル50以上で確実に修理可能
50未満なら値を百分率にして、ランダムで成否を決める
とかの処理を出来るように。



範囲に以下を追加する

縦一列
横一列
十字
自分中心

状態異常と属性にダミーを追加する
今は未使用でも後で使うかもしれないので、2つほど追加しておく



モンスターを倒した数データの実装
!モンスター数分データを生成する必要がある
9999体が上限
判定する際の上限も9999にすれば進行不能にはならないはず
モンスターデータを派閥分けしてから作業してね


ゲーム変数への代入で、キャラはキャラと処理分けする
今はゲーム変数への代入処理で変数→変数など一緒くたにされているのを分ける。
キャラ能力はキャラ能力で分離する。
**キャラクター番号を変数で指定する処理は今の所不要**
以下のキャラ選択処理などでやってどうぞ


メインステータスを配列にする
character.Strではなく
chracter.main_status[STR]で管理するように(振り分けやすいから)


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

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

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

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

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

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

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

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




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

プレイヤーの名声(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

この記事へのコメント