アクセスカウンタ

プロフィール

ブログ名
Unkooooo
ブログ紹介
zoom RSS

戦うぞ!64xその52(マップ仕様変更)

2019/05/25 23:40
画像



マップの根本的仕様の変更で、大規模な改修が行われました。

・マップの座標取得系すべて
対象座標の右のマスの値取得とか、細かい部分のやつとか大量に。
・マップの座標比較系すべて
以前より計算は楽だから細かい修正で助かった。
・マップ回転時の座標あれこれを四方向分追加。
正面はx,yそのまま。90度回転するとxがyにyがxになったりと色々大変だった。
・マップへの描画位置系あれこれ
対象座標に描画とか、対象座標が画面外にあるかの判定とか。
ミニマップ色々
表示・描画・位置算出・クリック処理・四方向対応・画面枠表示...色々大変だった。

細かい部分は新しい規格の方が簡単なのですぐ移行できましたが、
新しい機能、マップの四方向回転に依存する処理が大変でした。


他にやった事。


動いていなかったキャラクターの配置位置選定処理を直した
主人公の周囲に仲間を再配置するなどの処理で使用される関数が
正常に動いていなかったので直しておいた。
このために新しい規格で作り直したといっても過言ではないが、処理内容は旧規格のままでも問題なかったりする。あほくさ「。

この処理には欠点がある。
対象地点から渦巻き状に判定していく都合上、対象地点〜比較地点のアクセスが無い場合も処理されてしまうのだった。
つまり、離島にポップして閉じ込められる可能性がある。
壁の上や崖の下など復帰不可能な場所が選ばれる。怖い!


移動経路処理を応用した選定システムであれば復帰可能な場所を選べるのだが、
こちらは広範囲処理と非常に相性が悪い。
指定範囲内を滅茶苦茶に舐めまわすような処理なので、
まず範囲の指定がなく、近い順に行ってほしい配置処理とは対極の処理とも呼べる。

Elonaのような2Dゲームなら、離島にポップしてスタックする事はあっても、高低差でスタックする事が無いから問題ないんだろうなあ。と愚痴が出てしまう。悩ましい。
この処理は住民の再配置やら、マップの出入り時に主人公の移動先地点に住民がいた際の座標のずれとか
色々な部分で使うことになるから軽くてちゃんとした処理で作りたい。

キャラクター構造体にX座標・Y座標追加
キャラクター同士の位置比べ合いでかならず全体座標からx,yを求めていた(x=point%map_size_x;y=point/map_size_x)ので、
いちいち計算しないようにX,Y座標を保持するようにした。
全体座標が更新される際にX,Y座標も計算されて保持される。
結局移動するたびに全体座標から計算するわけだが、頻度で言えば圧倒的に距離の比べ合いの方が多いので軽くなるはず。
割り算とか余り計算は地味に処理が重たいから積極的に減らさないとね。


マップ間移動処理用のグローバル関数を作る。
現状はループ処理から一旦出てマップを読み込みなおす必要がある。
これをループの途中で行えるような作りにする事。
一部実装
マップ移動先の再生成とかそこらへんの具合がまだわからないから気を付ける事。


やる事



マップ間移動の判定の作り直し
規格が変わったので。マップ端に行ったら移動の処理ね。


商人の商品再生成
再生成処理はできているが、トリガー部分がまだできていないので作る事。

マップの一時ファイルにドロップデータも含める
容量が増えるだろうが、ドロップデータも含める事。

ステータスの反映処理の実装
素のステータス+装備+バフデバフの計算処理を実装し、
対象キャラのターンや、非エフェクト、装備の変更時に再計算を行うようにすること。
仮実装しているけどタイミングがまだ完全じゃない(装備の変更とか)かもしれない。
引き続き、様子を見ていく事。


イベントに"コンパニオンを周囲に呼び出す"を追加(Elonaの紐)

自動回復の実装
移動中に自動回復をするようにすること。効果値は・・・


各種スキルの実装(後回しでok)
武器適正などの細かいスキルの実装

背景画像の設定・フラグの設定を追加する事。
Elonaの幕間のような感じでイベントとかメニュー背景に使う。(ずっとばくまだと思っていたのは内緒だぞ)

・MapSkin規格をオブジェクトと同じように128x128にする
キャラレイヤー以下の移動可能オブジェクトがスキン。
移動不可をオブジェクトとする。
なんかやばそうなので保留

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

バグ
・キャラクターの座標がマップへの登録座標とずれている事がある(要検証)
イベントの保存時に拡張子が二重になって保存されてしまう。
ダイアログの部分で日本語入力が出来ない


警告
・扉・宝箱の設定は移動不可のみになっているので遠隔攻撃が通る。
・影のレイヤーがキャラクターやオブジェクトイベントより後になっている
・メニューウィンドウに戻るボタンを作ってさしあげろ。
・タイトル画面で×を押すと正常に終了できない
・オブジェクトイベントの削除が正常に行われていない(要検証)
・オブジェクトイベントのロックピックの犯罪判定。鍵(フラグ)の有無での施錠などは今の所未実装。
・イベントの鍵開け処理で、マップのレベル依存(-1)という処理があるのだが
マップに対してのレベル設定項目が無い。後でマップに追加する事
・開閉条件にイベントのフラグが指定されていても
まだフラグ基礎が出来ていないのでなにもできない。後で追加する事
・イベント実行対象の番号は、キャラ・オブジェクトイベント番号兼用
今のところオブジェクトイベントもキャラ番号扱いなので、変なキャラが話しだしたりする
マップ間移動とか怪しい。再生成とか含めて正常に動くがデバッグしろ!
注意喚起

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

記事へブログ気持玉 / トラックバック / コメント


戦うぞ!64xその52(マップ表示の仕様とか)

2019/05/10 23:15
非常に重大な仕様の調整を行っていました。

画像



上は今作っているゲームのマップ表示。
奇数だー偶数だーと、処理がひねくれています。
隣のマスの座標を算出するのに一々奇数偶数で足し引きが発生するのが難点。
常に何かしらの計算を挟む必要はあるけど、内容はわりと分かりやすい(矩形じゃないからね)

これを

画像



よくあるクオータービュー形式に変えてみました。
隣のマスは単純にx,yが+したり-するだけで算出できるのが強み。
マスとマス同士の計算がシンプルでウレシイ...ウレシイ..
マップの90度回転表示とかも簡単にできる!.

表示も簡単!内部処理も簡単!だけど、少し複雑な部分がある。
マップ表示の形が菱形なのにたいして、画面がただの四角形な事だ。


画像


ここに6x6のマップがあるとする。
基本的に0始まりなのがややこしい以外はシンプルな一時配列。
緑の四角形は画面の表示領域になる。

菱形のせいで大分ややこしい感じなのをわかってほしい。
画面サイズは3・3と書いてあるが、マップチップの数で算出すると6・6が正しい。
このようにただの四角画面と違って、表示領域の計算がやや判りづらい。



画像


緑色の画面内に表示するのは24マスだけ。
6x6サイズのマップの36番すべてを描画する必要はないのだ!
もちろん一番シンプルなのは画面外でも表示してしまう事なのだが、
「菱形を矩形で囲むと、菱形の倍のサイズが必要になる」わけなので、
画面内と同じ程度、画面外にも表示する羽目になるのだ。非効率だな!


色々作って試して考えた結果・・・


最終的に「仕組みは簡単だけどやや非効率」な仕様に落ち着いた。

最初は「表示対象のマスを算出してそこだけ処理する」という内容だったが、計算処理が複雑になったため没に。
結局、画面外は「処理するけど表示しない」みたいな感じで実装する事になった。
物理的にウィンドウサイズの中に描画位置があるかを判定するため、地味に処理が重たい(気がする)
とは言え、シンプルな構造なおかげでその後の作業(マップの反転表示とか)では、捻った処理は必要なくかなり楽に実装できたのだった。
シンプルが一番。はっきりわかんだね。



現時点でやべー部分
ミニマップの表示・座標処理を新仕様に
ダメージ表示の位置を修正
遠隔攻撃の表示位置がおかしい
ボルト経路もおかしい。何故だ
マップの反転表示を適応させるしかも四方向回転に進化した!
距離算出と経路計算がおかしかったから修正した



このゲームの前身を作る際、菱形表示の複雑さに嫌気がさした結果、四角形の表示に落ち着いた経緯があります。
まあ、その気持ちはよくわかりますね。げっそりします。
記事へなるほど(納得、参考になった、ヘー) ブログ気持玉 1 / トラックバック 0 / コメント 0


戦うぞ!64xその51(オブジェクトイベント調整)

2019/05/04 16:32
画像



・イベントにマップ間移動を追加
マップをまたぐと正常に処理されていない。

・イベントに扉の開閉処理を追加
移動可不可が管理が簡略化され、開けた扉は消滅するように。
閉めることはできない。今のところは。


画像


・オブジェクトイベント周りを大幅修正
酷い有様だったので。仕様の変更諸々行った。
多様性や拡張性は失われたが、単純な容量や処理の負担は減ったはず。
細かい処理は実行されるイベント側で頑張ってもらおう!という方針。


・オブジェクトイベントの表示仕様を変更する
オブジェクトイベントの表示が少し複雑だったので、
ただのオブジェクトと統合した。

機能していなかったモンスターデータ項目をを一部修正
技項目がずれていたのを修正。
派閥を設定して敵対関係が清浄機能するように。
使っていない項目が相変わらず多くて悲しい。


・オブジェクト画像のサイズを64x64から、128x64に
木のような表示にも対応するように滅茶苦茶大きくした。
ただし真横に広いと次のマップチップに表示を上書きされてしまう可能性がある。


やる事


マップ間移動処理用のグローバル関数を作る。
現状はループ処理から一旦出てマップを読み込みなおす必要がある。
これをループの途中で行えるような作りにする事。
バックアップ不可避。

イベントの保存時に拡張子が二重になって保存されてしまう。




商人の商品再生成
再生成処理はできているが、トリガー部分がまだできていないので作る事。

マップの一時ファイルにドロップデータも含める
容量が増えるだろうが、ドロップデータも含める事。

ステータスの反映処理の実装
素のステータス+装備+バフデバフの計算処理を実装し、
対象キャラのターンや、非エフェクト、装備の変更時に再計算を行うようにすること。
仮実装しているけどタイミングがまだ完全じゃない(装備の変更とか)かもしれない。
引き続き、様子を見ていく事。



自動回復の実装
移動中に自動回復をするようにすること。効果値は・・・


各種スキルの実装(後回しでok)
武器適正などの細かいスキルの実装



・MapSkin規格をオブジェクトと同じように128x128にする
キャラレイヤー以下の移動可能オブジェクトがスキン。
移動不可をオブジェクトとする。

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

・扉・宝箱の設定は移動不可のみになっているので遠隔攻撃が通る。
・影のレイヤーがキャラクターやオブジェクトイベントより後になっている
・メニューウィンドウに戻るボタンを作ってさしあげろ。
・タイトル画面で×を押すと正常に終了できない
・オブジェクトイベントの削除が正常に行われていない(要検証)
・オブジェクトイベント。観音開き的な配置を行うと、表示レイヤー的に主人公が扉で隠れるor扉が主人公で隠れる。表示レイヤーがもう一枚欲しいが・・・中々むずかしいねんな。
対処済み
・後退処理のAIが優秀なので同速度の一対一状態だと確実に逃げられる。
逃げている時は速度が低下するなどの処理が必要。
・マップ間移動の判定部分が仮実装になっている。作り直せ
・オブジェクトをエディタから配置・撤去したときに移動判定が反映されていない
済み
・オブジェクトイベントのロックピックの犯罪判定。鍵(フラグ)の有無での施錠などは今の所未実装。
・移動の押しのけ判定がややガバいので、中立・友好派閥と押しのけあいまくる。
↑様子見。酷いようであれば修正


・オブジェクト画像規格を横に大きくして樹木などに対応できるように。
済み
・背景画像の設定・フラグの設定を追加する事。
Elonaの幕間のような感じでイベントとかメニュー背景に使う。(ずっとばくまだと思っていたのは内緒だぞ)

・イベントの鍵開け処理で、マップのレベル依存(-1)という処理があるのだが
マップに対してのレベル設定項目が無い。後でマップに追加する事

・開閉条件にイベントのフラグが指定されていても
まだフラグ基礎が出来ていないのでなにもできない。後で追加する事

・イベントの扉開閉時、ロックピック失敗時の処理がまだできていない。

・マップ間移動時、移動先座標に他キャラクターがいる場合上書きしてポップしているので
重なっていたらずれて登場するようにしてほしい。


・開扉後のフラグ処理仕様があやふやなので現状のものを記載
・扉が開くと、open=true、flag=falseになっている。
flagがfalseだと、キャラクターコマンド(移動命令処理)でイベントへの判定を行わなくなる
・Dxライブラリ文字列の処理は繰り返し行うと重たい
・画像の縮小拡大処理はあんまり負担が無い
・ヘッダ内にヘッダを読み込むのはおk(配列用定数やら構造体内のstringとか使うときに)




記事へブログ気持玉 / トラックバック / コメント


− タイトルなし −

2019/04/29 23:59
画像


体調不良で寝たきりになるGWなのだった。
少しだけチップを追加中。一個辺り30分前後で追加できる!ただし品質は悪いものとする。
壁の縦ループ感覚が短いからRPGツクールみたいな綺麗な壁にならないっすね。
昔の壁仕様の方がよかったかな?とか思案中。
壁ってのは定期的に梁のような横棒が無いとそれっぽく見えないから困る。

床タイルは光沢。壁は影を中心に書けば適当でもそれっぽく見える・・・はず




やれ
テンプレートのセーブロード
イベントにオブジェクト状態を変邑できる項目を追加しろ。
開閉・施錠・解錠ミニゲーム・画像の変更・マップオブジェクトから画像登録解除とか
記事へブログ気持玉 / トラックバック / コメント


戦うぞ!64xその50(派閥を再実装)

2019/04/25 23:58
出口が見えてきた感じっすね・・・うれしくてモチベが上がりますねえ!!
しかし、エディタや根本部分が出来ただけなのでゲームが完成するわけではないのだ。
素材もあるからね。

('A`)




画像


・キャラクターのイベント項目を数値から文字列に
ファイルパスをそのまま保持するようにした。
前回行った、マップの移動対象の選択とほぼ同じで、ダイアログでファイルを選択して読み込ませることが出来る。
容量がかなり膨れてしまった(4バイトだったのが400バイトになった。これがキャラクター分(100体なので...頭おかしなるで))が、その分管理しやすくなった。

・キャラクターエディタにイベント欄追加
上記画像のような形になっている。
読み込んでいるファイルが判然としているのがいいね(自画自賛)
テスト実行付き。


画像



適当に実装されていた派閥データを再実装
あまりにも適当で正常に読み込まれてすらいなかった派閥データを正常に読み込ませた。
メニュー画面から仮でデータを見る事が出来る。
表データは0で通常。1で敵対。-1で友好状態となっている。
二次元データで、相手は友好だけどこっちは敵対みたいな事が出来る。
問題としては単純に入力ミスでそうなりやすい事。管理しにくいねんな。


・攻撃回復、移動など様々な判定を派閥依存に
Belong項目の敵対・友好・コンパニオンという大まかなくくりだけで判定してた部分に、派閥間の状態も追加した。
これで派閥間の違う敵同士が攻撃しあったりするようになった。
主人公派閥のキャラクターは派閥の好感度や一時敵対項目で戦ったり戦わなかったりするぞ。
見えないバグがありそう。


・回復処理の威力がとんでもないことになっていたので修正
攻撃と違い、防御力の計算が無いため回復量がぶっ飛んでいた。
やや強引な処理だが、定数で割る事で数値を抑えるように。
(/30で理論上ダメージと同値になるので、30にしておいたぞ)


キャラクターエディタの微調整
項目を変更。追加やら移動やらいろいろとやっている。
毎回何かしら調整しているわけだが...今回はキャラクター能力再生成で武器も再生成させるようにした。



やる事


モンスターデータで派閥を設定させること。
スキル項目がずれているので修正して、派閥も再設定させること。


商人の商品再生成
再生成処理はできているが、トリガー部分がまだできていないので作る事。

マップの一時ファイルにドロップデータも含める
容量が増えるだろうが、ドロップデータも含める事。

ステータスの反映処理の実装
素のステータス+装備+バフデバフの計算処理を実装し、
対象キャラのターンや、非エフェクト、装備の変更時に再計算を行うようにすること。
仮実装しているけどタイミングがまだ完全じゃない(装備の変更とか)かもしれない。
引き続き、様子を見ていく事。



自動回復の実装
移動中に自動回復をするようにすること。効果値は・・・


各種スキルの実装(後回しでok)
武器適正などの細かいスキルの実装

・オブジェクトイベントの表示仕様を変更する
表示は無し。代わりにオブジェクトを表示として扱ってほしい。
マップcppとオブジェクトイベントcppで分けている情報を、オブジェクトイベント側に統合。
情報量を減らして、実行内容はイベントからひぱって来るようにするといいぞ。


・MapSkin規格をオブジェクトと同じように64x128にする
キャラレイヤー以下の移動可能オブジェクトがスキン。
移動不可をオブジェクトとする。

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

・扉・宝箱の設定は移動不可のみになっているので遠隔攻撃が通る。
・影のレイヤーがキャラクターやオブジェクトイベントより後になっている
・メニューウィンドウに戻るボタンを作ってさしあげろ。
・タイトル画面で×を押すと正常に終了できない
・オブジェクトイベントの削除が正常に行われていない(要検証)
・オブジェクトイベント。観音開き的な配置を行うと、表示レイヤー的に主人公が扉で隠れるor扉が主人公で隠れる。表示レイヤーがもう一枚欲しいが・・・中々むずかしいねんな。
・後退処理のAIが優秀なので同速度の一対一状態だと確実に逃げられる。
逃げている時は速度が低下するなどの処理が必要。
・マップ間移動の判定部分が仮実装になっている。作り直せ
・オブジェクトをエディタから配置・撤去したときに移動判定が反映されていない
・オブジェクトイベントのロックピックの犯罪判定。鍵(フラグ)の有無での施錠などは今の所未実装。
・移動の押しのけ判定がややガバいので、中立・友好派閥と押しのけあいまくる。
↑様子見。酷いようであれば修正


済み・・敵対情報の(Belong)を廃止して、Hostileで派閥間友好度などから算出する事。
・オブジェクト画像規格を横に大きくして樹木などに対応できるように。
・背景画像の設定・フラグの設定を追加する事。
Elonaの幕間のような感じでイベントとかメニュー背景に使う。(ずっとばくまだと思っていたのは内緒だぞ)


・Dxライブラリ文字列の処理は繰り返し行うと重たい
・画像の縮小拡大処理はあんまり負担が無い
・ヘッダ内にヘッダを読み込むのはおk(配列用定数やら構造体内のstringとか使うときに)
記事へブログ気持玉 / トラックバック / コメント


戦うぞ!64xその49(マップ読み込みの再調整)

2019/04/21 04:45
画像



やった事

・マップの移動先を数値から文字列に
今まで数値で管理していたマップ移動を文字列にした。
ファイル名(サブフォルダ含む)で管理できるので、今後マップを作る時にわかりやすなるはず。

・マップファイルがデータフォルダのサブフォルダに入れても機能するように
今まではMapDataフォルダ内の001〜999番までのファイルのみ対応だったが、
今回の文字列管理への仕様変更で、処理フォルダ内であればサブフォルダでも機能するようになった。
複数階層でも可能。長すぎる文字列などで機能しない可能性はある。

Save\\プレイヤー名\\MapTempでも同じように機能する。
MapTempは生成済みのマップ情報を保持するフォルダで、
好感度が変動した住民の情報や、敵対情報が記録されている。
フォルダが存在しない場合は自動的に作成するから安心!少し重いかもしれないけど。


・マップエディタのオプション画面を再設計
微妙な不具合修正とか。
移動関係はほぼ実装。


やる事


商人の商品再生成
再生成処理はできているが、トリガー部分がまだできていないので作る事。

マップの一時ファイルにドロップデータも含める
容量が増えるだろうが、ドロップデータも含める事。

ステータスの反映処理の実装
素のステータス+装備+バフデバフの計算処理を実装し、
対象キャラのターンや、非エフェクト、装備の変更時に再計算を行うようにすること。
仮実装しているけどタイミングがまだ完全じゃない(装備の変更とか)かもしれない。
引き続き、様子を見ていく事。



自動回復の実装
移動中に自動回復をするようにすること。効果値は・・・


各種スキルの実装(後回しでok)
武器適正などの細かいスキルの実装

・オブジェクトイベントの表示仕様を変更する
表示は無し。代わりにオブジェクトを表示として扱ってほしい。

・MapSkin規格をオブジェクトと同じように64x128にする
キャラレイヤー以下の移動可能オブジェクトがスキン。
移動不可をオブジェクトとする。

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

・扉・宝箱の設定は移動不可のみになっているので遠隔攻撃が通る。
・影のレイヤーがキャラクターやオブジェクトイベントより後になっている

・タイトル画面で×を押すと正常に終了できない
・オブジェクトイベントの削除が正常に行われていない(要検証)
・オブジェクトイベント。観音開き的な配置を行うと、表示レイヤー的に主人公が扉で隠れるor扉が主人公で隠れる。表示レイヤーがもう一枚欲しいが・・・中々むずかしいねんな。
・敵対情報の(Belong)を廃止して、Hostileで派閥間友好度などから算出する事。
・後退処理のAIが優秀なので同速度の一対一状態だと確実に逃げられる。
逃げている時は速度が低下するなどの処理が必要。
・マップ間移動の判定部分が仮実装になっている。作り直せ



済み・回復処理がまだできていない
済み・マップのファイルネーム・マップ名部分が更新されないのでさせる事。
セーブした際にファイル名を貰ってくるとか
済み・マップ間移動の際、キャラクター目標がリセットされていない
済み・マップの上書き保存時に正しいファイルへ保存されていない
済み・死亡処理の際、被ヘイト対象の情報が消されているか怪しいので調べる事



・オブジェクトをエディタから配置・撤去したときに移動判定が反映されていない

・オブジェクトイベントのロックピックの犯罪判定。鍵(フラグ)の有無での施錠などは今の所未実装。

・Dxライブラリ文字列の処理は繰り返し行うと重たい
・画像の縮小拡大処理はあんまり負担が無い
・ヘッダ内にヘッダを読み込むのはおk(配列用定数やら構造体内のstringとか使うときに)
記事へブログ気持玉 / トラックバック / コメント


戦うぞ!64xその48(ダメージ計算処理)

2019/04/19 00:50
画像


やった事


ダメージ処理・標的決定処理を新しく
一新!というわけではなく一部作り直した。
過去のやや非効率な部分とのちぐはぐ設計なのが悲しい所。
一般公開して処理が重たいならここらへんを弄るべき。

キャラクターエディタにスキル画面追加
スキルLvや種類。優先度を設定できる。
威力や範囲は種類によって値固定だぞ。


ダメージ計算の変更
破壊力(200) = 武器(100)+スキル威力(100)
ダメージ(6) = (破壊力(200) - 防御力(100))/15(調整)
という感じに。
調整15は同レベル相手を何発で倒せるかの閾値。
HP100へ6ダメージなら15発必要になる。

スキル威力はスキルデータの威力と、キャラのスキルLvで算出される。
全然使っていないスキルはまるでダメージ出ない感じっすね。

魔法はMag*9が武器攻撃力の代わりになる。
武器の攻撃力が100の時、Magは平均10になる調整なので十分代用できる。
Mag上げて魔法で攻撃すると武器の品質に依存しなくなり過ぎるので、武器よりもやや弱めの調整にしているが
それでもMag特化すると目に見えてダメージが増えてしまう。困った。


経験値加算処理とレベルアップ処理実装
武器攻撃はStrやDexが。魔法ならMagが。
攻撃を受けるとHpやVitが上がる。
相手とのレベル差があるほうが沢山経験値が入る。上下Lv20まで値変動。

ヘイトの遷移と自然減退
大きいダメージを受ける相手をヘイトにする。
ターン開始時にヘイト対象からのダメージポイント(ヘイトポイント)を減算し、
一定値以下になるとヘイトを解除する。


キャラクター行動の見直し
スキルとして移動を登録可能に。


やる事

商人の商品再生成
再生成処理はできているが、トリガー部分がまだできていないので作る事。

マップの一時ファイルにドロップデータも含める
容量が増えるだろうが、ドロップデータも含める事。

ステータスの反映処理の実装
素のステータス+装備+バフデバフの計算処理を実装し、
対象キャラのターンや、非エフェクト、装備の変更時に再計算を行うようにすること。
仮実装しているけどタイミングがまだ完全じゃない(装備の変更とか)かもしれない。
引き続き、様子を見ていく事。



自動回復の実装
移動中に自動回復をするようにすること。効果値は・・・


各種スキルの実装(後回しでok)
武器適正などの細かいスキルの実装





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

・扉・宝箱の設定は移動不可のみになっているので遠隔攻撃が通る。
・影のレイヤーがキャラクターやオブジェクトイベントより後になっている

・タイトル画面で×を押すと正常に終了できない
・オブジェクトイベントの削除が正常に行われていない(要検証)
・オブジェクトイベント。観音開き的な配置を行うと、表示レイヤー的に主人公が扉で隠れるor扉が主人公で隠れる。表示レイヤーがもう一枚欲しいが・・・中々むずかしいねんな。
・死亡処理の際、被ヘイト対象の情報が消されているか怪しいので調べる事
・敵対情報の(Belong)を廃止して、Hostileで派閥間友好度などから算出する事。
・後退処理のAIが優秀なので同速度の一対一状態だと確実に逃げられる。
逃げている時は速度が低下するなどの処理が必要。
・回復処理がまだできていない

・オブジェクトをエディタかっら配置・撤去したときに移動判定が反映されていない

・オブジェクトイベントのロックピックの犯罪判定。鍵(フラグ)の有無での施錠などは今の所未実装。

・Dxライブラリ文字列の処理は繰り返し行うと重たい
・画像の縮小拡大処理はあんまり負担が無い
・ヘッダ内にヘッダを読み込むのはおk(配列用定数やら構造体内のstringとか使うときに)








記事へブログ気持玉 / トラックバック / コメント


戦うぞ!64xその47(戦闘処理の再構築)

2019/04/11 20:13
戦闘の流れを作り直しています。

仕様を
1.ヘイトへの攻撃(技ループ)
2.ヘイトへの移動
3.全敵への攻撃(技ループ)
4,最近敵への移動

から
1.技ループ
2.ヘイトへの判定
3.全敵への判定

というものに変えた。
どう変わるかというと、
以前:ヘイトへの攻撃・移動優先
今回:技の優先度を優先

1番の技がヘイト対象に当たらなくても、適当な敵へ攻撃できる場合はそれを使用するようになる。
以前、ヘイト対象への攻撃や接近を優先していた事からすると、かなりの方向転換である。
前に比べると若干処理が減るはず。
他、前進・後進を技として使用するための前準備的な意味合いもあるぞ!(深く考えていないが)
動きが微妙なら仕様を元に戻すぞ。


やった事
・色々と最適化
範囲攻撃・単体攻撃などの共通部分を別関数に纏めたりしまくっている。
戦闘のアレコレ処理は仮実装のつもりで作ったせいもあって酷い有様だった。

回復・攻撃・範囲の再実装
出来た。前に比べて範囲回復が使えるようになっているぞ。

攻撃Ai実装
項目自体はあったが、実態が無かった攻撃AIを実装。
・低HP優先
・距離優先(技優先が先になっからあんまり実感ないと思う)
が使えるように。

修正予定

キャラクターエディタのイベント欄設定時に
設定した名称があるか、無いかわかるようにする


通常攻撃で何故か二回攻撃する
ダメージ調整がすこぶる悪い


記事へブログ気持玉 / トラックバック / コメント


戦うぞ!64xその46(メニュー画面や装備画面とか)

2019/04/04 23:24
画像


・メニュー画面の一部を作った
現在は装備画面のみ機能している。


画像


・装備・比較画面の一部を作った
現在装備中のものと簡単な比較を行う画面を作成中。



やる事

商人の商品再生成
再生成処理はできているが、トリガー部分がまだできていないので作る事。

マップの一時ファイルにドロップデータも含める
容量が増えるだろうが、ドロップデータも含める事。

キャラクター行動の見直し
完全ガンビット制にする事。
現状中途半端で通常攻撃や移動が別処理になっているので、
移動も通常攻撃もスキル扱いにして処理する事。

ダメージ計算と経験値加算処理の実装

ステータスの反映処理の実装
素のステータス+装備+バフデバフの計算処理を実装し、
対象キャラのターンや、非エフェクト、装備の変更時に再計算を行うようにすること。

自動回復の実装
移動中に自動回復をするようにすること。効果値は・・・


各種スキルの実装(後回しでok)
武器適正などの細かいスキルの実装


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

・扉・宝箱の設定は移動不可のみになっているので遠隔攻撃が通る。
・影のレイヤーがキャラクターやオブジェクトイベントより後になっている

・タイトル画面で×を押すと正常に終了できない
・オブジェクトイベントの削除が正常に行われていない(要検証)
・オブジェクトイベント。観音開き的な配置を行うと、表示レイヤー的に主人公が扉で隠れるor扉が主人公で隠れる。表示レイヤーがもう一枚欲しいが・・・中々むずかしいねんな。
・死亡処理の際、被ヘイト対象の情報が消されているか怪しいので調べる事
・敵対情報の(Belong)を廃止して、Hostileで派閥間友好度などから算出する事。


・経験値加算と能力値上昇は仮実装。
・ダメージを受けると受けた側、与えた側に経験値が固定で入るから範囲攻撃だとめっちゃ稼げる・・・はず。
・オブジェクトをエディタかっら配置・撤去したときに移動判定が反映されていない

・オブジェクトイベントのロックピックの犯罪判定。鍵(フラグ)の有無での施錠などは今の所未実装。

・Dxライブラリ文字列の処理は繰り返し行うと重たい
・画像の縮小拡大処理はあんまり負担が無い
・ヘッダ内にヘッダを読み込むのはおk(配列用定数やら構造体内のstringとか使うときに)
記事へブログ気持玉 0 / トラックバック 1 / コメント 0


戦うぞ!64xその45(装備エディタ再調整)

2019/03/31 12:37
画像



装備エディタ作った
面倒という理由で今まで放置されていた装備のエディタを完成(ほぼ)させた。
今後ダメージ計算や戦闘処理の調整を行うために頑張ったぞ。

やる事

メニュー画面を作る
所持品、装備変更などへ飛ぶためのプレイヤーメニュー画面を作る。
構想がまとまっていないため難航するはず。

装備画面を作る
装備の変更。そして能力値の比較画面を作る。
こちらも構想なし。ぱっと考えてみてもうまい事比較や、数値の強弱がわかる画面が思いつかない。


細々とした話は前回記事に。以上
記事へブログ気持玉 / トラックバック / コメント


戦うぞ!64xその44(イベントデータの外部ファイル化)

2019/03/28 10:30
やった事

画像


色定数早見表を作った。
定数名&色合いが把握できなくてデザインを決める度にどたばたする事が多かったので、
色とか諸々が見えるようにhtmlで纏めておいた。


画像


選択ウィンドウの刷新
刷新!というわけで新しく作ってみたが、以前に使用していたものと処理がほぼ同じだった。
選択項目の追加処理がやりやすくなった程度。
内部デザインの微調整で使用される変数定数が多すぎて、後で修正する際に悩みそうな作りになっている。
(以前からあふれかえる微調整変数定数に困っていたので改悪ではない)

イベントデータの実装
イベントの中身をGameData内Eventフォルダに外部ファイル(txt)として保持して、
適時読み込んで実行するような仕様に変えた。
これで作者以外コードを書けない人間もイベントを追加編集できる。

イベントエディタの実装
イベントの規格が決まりつつあるので並行してエディタを実装。
内部処理自体は難しい事をしていないのだが、デザインの調整にとても時間が掛かっているため、一部のイベントのみ編集可能。
ぶっちゃけ本処理とかよりデザインの微調整の方が時間が掛かって辛味。


やる事

商人の商品再生成
再生成処理はできているが、トリガー部分がまだできていないので作る事。

マップの一時ファイルにドロップデータも含める
容量が増えるだろうが、ドロップデータも含める事。

キャラクター行動の見直し
完全ガンビット制にする事。
現状中途半端で通常攻撃や移動が別処理になっているので、
移動も通常攻撃もスキル扱いにして処理する事。


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

・扉・宝箱の設定は移動不可のみになっているので遠隔攻撃が通る。
・影のレイヤーがキャラクターやオブジェクトイベントより後になっている

・タイトル画面で×を押すと正常に終了できない
・オブジェクトイベントの削除が正常に行われていない(要検証)
・オブジェクトイベント。観音開き的な配置を行うと、表示レイヤー的に主人公が扉で隠れるor扉が主人公で隠れる。表示レイヤーがもう一枚欲しいが・・・中々むずかしいねんな。
・死亡処理の際、被ヘイト対象の情報が消されているか怪しいので調べる事
・敵対情報の(Belong)を廃止して、Hostileで派閥間友好度などから算出する事。


・経験値加算と能力値上昇は仮実装。
・ダメージを受けると受けた側、与えた側に経験値が固定で入るから範囲攻撃だとめっちゃ稼げる・・・はず。
・オブジェクトをエディタかっら配置・撤去したときに移動判定が反映されていない

・オブジェクトイベントのロックピックの犯罪判定。鍵(フラグ)の有無での施錠などは今の所未実装。

・Dxライブラリ文字列の処理は繰り返し行うと重たい
・画像の縮小拡大処理はあんまり負担が無い
・ヘッダ内にヘッダを読み込むのはおk(配列用定数やら構造体内のstringとか使うときに)
記事へブログ気持玉 / トラックバック / コメント


戦うぞ!64xその43(離脱時にマップ状態保存マ&時間でマップ再生成)

2019/03/18 14:32
画像



やった事

時間の概念の追加
ターンを回す際に時間の加算を追加した
前回訪問より2日以上経っている場合、再生成を行う
通常、対象マップのキャラクター情報はキャラクターのセーブデータに保存され引き継がれ続ける。
死亡した場合は死亡したままになる。

二日経過してから訪れると、固定キャラが再生成される。
死亡していた場合は復活(再復活フラグがoffなら復活しない)し、座標諸々が初期化される、
他情報(Lvや好感度、能力値)は引き継がれたままになる。

商人の商品再生成はまだだからあとでやる事

商人タイプ実装
武器商は武器を生成。食べ物屋は肉や水などをラインナップとして生成するように。


キー入力(数値・文字)と確認画面の修正
小窓を移動できるようにしたり、操作しやすくした。

やる事

商人の商品再生成
再生成処理はできているが、トリガー部分がまだできていないので作る事。

マップの一時ファイルにドロップデータも含める
容量が増えるだろうが、ドロップデータも含める事。


イベントを外部データから読み込む
テキストファイルか何かから読み込んだ後実行する。
以下案

event.txt(キャラクターのeventパラからファイル名を算出する)

1行目
0//イベントページ番号。見やすくするためのデバッグ用
2行目
1//イベントの実行タイプ、1は会話、2で選択肢,3で売買など
3行目
"メッセージ"//会話などで使用されるメッセージとか
イベントタイプによっては内容の詳細とかが入っている。
4行目
"選択肢1"移動するイベントページ
イベントタイプによって格納されているものが違う。
会話なら選択肢
5行目
""選択肢2イベントページ

みたいな感じ。イベントエディタ作らなきゃ・・・



キャラクター行動の見直し
完全ガンビット制にする事。
現状中途半端で通常攻撃や移動が別処理になっているので、
移動も通常攻撃もスキル扱いにして処理する事。


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

済み

・NPCやイベントへの衝突判定で高低差の判定がされていない
・マップの反転表示でオブジェクトが反転されていない<
・商人番号や商人アイテムの更新処理はまだ出来ていない。ゲーム内時間の実装時に纏めてやる事。
・TurnActivityで処理中のキャラを構造体ポインタで保持すれば軽くなりそう。
・同じくターゲットもポインタでやってみる事


・扉・宝箱の設定は移動不可のみになっているので遠隔攻撃が通る。
・影のレイヤーがキャラクターやオブジェクトイベントより後になっている

・タイトル画面で×を押すと正常に終了できない
・オブジェクトイベントの削除が正常に行われていない(要検証)
・オブジェクトイベント。観音開き的な配置を行うと、表示レイヤー的に主人公が扉で隠れるor扉が主人公で隠れる。表示レイヤーがもう一枚欲しいが・・・中々むずかしいねんな。
・影の判定が重たいので、map_data式に影情報を保存してみる
・死亡処理の際、被ヘイト対象の情報が消されているか怪しいので調べる事
・敵対情報の(Belong)を廃止して、Hostileで派閥間友好度などから算出する事。


・経験値加算と能力値上昇は仮実装。
・ダメージを受けると受けた側、与えた側に経験値が固定で入るから範囲攻撃だとめっちゃ稼げる・・・はず。
・オブジェクトをエディタかっら配置・撤去したときに移動判定が反映されていない

・オブジェクトイベントのロックピックの犯罪判定。鍵(フラグ)の有無での施錠などは今の所未実装。

・Dxライブラリ文字列の処理は繰り返し行うと重たい
・画像の縮小拡大処理はあんまり負担が無い
・ヘッダ内にヘッダを読み込むのはおk(配列用定数やら構造体内のstringとか使うときに)


記事へブログ気持玉 / トラックバック / コメント


戦うぞ!64xその42(拡張命令)

2019/03/16 20:53
まるまる一週間ルフランの迷宮に籠っていたので、まったく作業が進んでいませんでした。


やった事


トレード処理
倉庫的なものを実装。
ただし今のところ下の拾い上げにしか使用されていない。
アイテムの拾い上げ
自分の足元のアイテムを倉庫化して落としたり拾ったりできるように
主人公への命令を強化
会話相手にはちゃんと高低差含めて隣接判定をだすように。
主人公以外はオブジェクトや会話の判定をしなくなった。


やること

装備画面から装備を追加できるように
装備する際に現状装備との比較をする画面を作る

キャラクターに前回話しかけた日時と好感度要素。NPC番号を追加
下記時間の概念の為に。

・時間の概念を追加する
ターンアクティビティで時間が経過する処理を追加。
マップに訪問時の日時を記録。
キャラクターに話しかけた日時を記録。
上記の日時から二日後にマップ・キャラクターの再生成
キャラクターは会話回数や商品ラインナップを再生成させる。

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

・扉・宝箱の設定は移動不可のみになっているので遠隔攻撃が通る。
・影のレイヤーがキャラクターやオブジェクトイベントより後になっている
・NPCやイベントへの衝突判定で高低差の判定がされていない
・マップの反転表示でオブジェクトが反転されていない
・タイトル画面で×を押すと正常に終了できない
・オブジェクトイベントの削除が正常に行われていない(要検証)
・オブジェクトイベント。観音開き的な配置を行うと、表示レイヤー的に主人公が扉で隠れるor扉が主人公で隠れる。表示レイヤーがもう一枚欲しいが・・・中々むずかしいねんな。
・商人番号や商人アイテムの更新処理はまだ出来ていない。ゲーム内時間の実装時に纏めてやる事。
・影の判定が重たいので、map_data式に影情報を保存してみる
・死亡処理の際、被ヘイト対象の情報が消されているか怪しいので調べる事
・敵対情報の(Belong)を廃止して、Hostileで派閥間友好度などから算出する事。


・経験値加算と能力値上昇は仮実装。
・ダメージを受けると受けた側、与えた側に経験値が固定で入るから範囲攻撃だとめっちゃ稼げる・・・はず。
・オブジェクトをエディタかっら配置・撤去したときに移動判定が反映されていない

・TurnActivityで処理中のキャラを構造体ポインタで保持すれば軽くなりそう。
・同じくターゲットもポインタでやってみる事
・オブジェクトイベントのロックピックの犯罪判定。鍵(フラグ)の有無での施錠などは今の所未実装。

・Dxライブラリ文字列の処理は繰り返し行うと重たい
・画像の縮小拡大処理はあんまり負担が無い
・ヘッダ内にヘッダを読み込むのはおk(配列用定数やら構造体内のstringとか使うときに)
記事へブログ気持玉 / トラックバック / コメント


戦うぞ!64xその41(売買画面その2)

2019/03/02 06:29
画像


前回に引き続いてアイテム関係。
カテゴリ表示とか追加したり改良した。
時間をかけて作り直したかいあって大分コードが纏まった(効率的ではないが)
アイテム周りは可変引数のVecterをボンガボンガ使っていて、非常にC++らしくない。気に入らない。

防具は部位ごとにソートして追加されるため、頭・胴体・腕など部位ごとにならんで管理されている。
商品データのセーブロードも実装完了

悲しい事に一個作業を終えるともっとやる事が増えるのであった。
次はトレード処理だ。

やること

トレード画面作る。
総重量とか反映したりしなかったり。
金銭の伴わない取引や、アイテムの拾い上げ。倉庫の管理に使う。

マップからアイテムを拾う処理を作る
同じ座標のアイテムを一時的にトレード画面に突っ込んでみる事。
データの管理がややややこしい。時間をかける事。

装備画面から装備を追加できるように
装備する際に現状装備との比較をする画面を作る


キャラクターに前回話しかけた日時と好感度要素。NPC番号を追加
下記時間の概念の為に。


・時間の概念を追加する
ターンアクティビティで時間が経過する処理を追加。
マップに訪問時の日時を記録。
キャラクターに話しかけた日時を記録。
上記の日時から二日後にマップ・キャラクターの再生成
キャラクターは会話回数や商品ラインナップを再生成させる。

・主人公に対しての行動予約
現在、移動目標は座標でのみ保持している。
そのためNPCなどに対してターゲットする事は出来ない。NPCが移動してしまうと追従せず話しかけられない。
そこで主人公のみ

「対象タイプ」
「対象番号」
「行動番号」

の三つの要素を持ち対処する事。
「対象タイプ」は座標なのかキャラ番号なのかイベントオブジェクト番号なのかの振り分け。
「対象番号」は上の対象の番号。キャラクターならキャラ番号。
「行動番号」は到着時に行う行動。この要素は不要かも。

主人公のターンになった際、対象タイプ・対象番号に合わせて従来のターゲット(座標)変数に目標を代入する事で追尾が可能になるはず。


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

・扉・宝箱の設定は移動不可のみになっているので遠隔攻撃が通る。
・影のレイヤーがキャラクターやオブジェクトイベントより後になっている
・NPCやイベントへの衝突判定で高低差の判定がされていない
・マップの反転表示でオブジェクトが反転されていない
・タイトル画面で×を押すと正常に終了できない
・オブジェクトイベントの削除が正常に行われていない(要検証)
・オブジェクトイベント。観音開き的な配置を行うと、表示レイヤー的に主人公が扉で隠れるor扉が主人公で隠れる。表示レイヤーがもう一枚欲しいが・・・中々むずかしいねんな。
・商人番号や商人アイテムの更新処理はまだ出来ていない。ゲーム内時間の実装時に纏めてやる事。
・影の判定が重たいので、map_data式に影情報を保存してみる
・死亡処理の際、被ヘイト対象の情報が消されているか怪しいので調べる事
・敵対情報の(Belong)を廃止して、Hostileで派閥間友好度などから算出する事。


・経験値加算と能力値上昇は仮実装。
・ダメージを受けると受けた側、与えた側に経験値が固定で入るから範囲攻撃だとめっちゃ稼げる・・・はず。
・オブジェクトをエディタかっら配置・撤去したときに移動判定が反映されていない

・TurnActivityで処理中のキャラを構造体ポインタで保持すれば軽くなりそう。
・同じくターゲットもポインタでやってみる事
・オブジェクトイベントのロックピックの犯罪判定。鍵(フラグ)の有無での施錠などは今の所未実装。

・Dxライブラリ文字列の処理は繰り返し行うと重たい
・画像の縮小拡大処理はあんまり負担が無い
・ヘッダ内にヘッダを読み込むのはおk(配列用定数やら構造体内のstringとか使うときに)
記事へブログ気持玉 / トラックバック / コメント


戦うぞ!64xその41(売買画面)

2019/02/22 23:43
画像



・売買画面実装
スクロール・売買処理・売買音も完成。
・商人商品ファイル実装
商人の持っているアイテムをファイルに保存。読み込みできるように。
Elonaや他ゲームの商人同様、商品更新のタイミングまで商品リストを保持する。
更新の処理。商人タイプによる商品の生成などは未実装。
商人タイプ諸々はそもそも変数の保存箇所も決まっていない。character構造体に前回話しかけた時間や商人タイプなどを追加した方がよさげ?


やること


・種類別ソートの処理を作る。
その他アイテム(食べ物・飲み物・道具)でソート。
武器防具は部位ごとにソートするような処理を追加する事。
※追加時にソートして追加するように作ればソートは不要
現状、食べ物や飲み物などが完全に追加順で並ぶため選択しにくくて仕方がない。
最悪「アイテム」で括っているカテゴリを「食べ物・飲み物・道具・その他」に分けてしまってもいいと思う。

画像

済み
アイテム追加時に挿入を行うようにした。



・インベントリと売買画面で種類別タブの実装
「すべて・武器・防具・その他」の四種類のタブを追加する事。
一部済み
スクロールバーやボタンは追加済み。
残りは上タブでカテゴリ表示する処理のみ。

・時間の概念を追加する
ターンアクティビティで時間が経過する処理を追加。
マップに訪問時の日時を記録。
キャラクターに話しかけた日時を記録。
上記の日時から二日後にマップ・キャラクターの再生成
キャラクターは会話回数や商品ラインナップを再生成させる。

・主人公に対しての行動予約
現在、移動目標は座標でのみ保持している。
そのためNPCなどに対してターゲットする事は出来ない。NPCが移動してしまうと追従せず話しかけられない。
そこで主人公のみ

「対象タイプ」
「対象番号」
「行動番号」

の三つの要素を持ち対処する事。
「対象タイプ」は座標なのかキャラ番号なのかイベントオブジェクト番号なのかの振り分け。
「対象番号」は上の対象の番号。キャラクターならキャラ番号。
「行動番号」は到着時に行う行動。この要素は不要かも。

主人公のターンになった際、対象タイプ・対象番号に合わせて従来のターゲット(座標)変数に目標を代入する事で追尾が可能になるはず。


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

・扉・宝箱の設定は移動不可のみになっているので遠隔攻撃が通る。
・影のレイヤーがキャラクターやオブジェクトイベントより後になっている
・NPCやイベントへの衝突判定で高低差の判定がされていない
・マップの反転表示でオブジェクトが反転されていない
・タイトル画面で×を押すと正常に終了できない
・オブジェクトイベントの削除が正常に行われていない(要検証)
・オブジェクトイベント。観音開き的な配置を行うと、表示レイヤー的に主人公が扉で隠れるor扉が主人公で隠れる。表示レイヤーがもう一枚欲しいが・・・中々むずかしいねんな。
・商人番号や商人アイテムの更新処理はまだ出来ていない。ゲーム内時間の実装時に纏めてやる事。

・経験値加算と能力値上昇は仮実装。
・ダメージを受けると受けた側、与えた側に経験値が固定で入るから範囲攻撃だとめっちゃ稼げる・・・はず。
・オブジェクトをエディタかっら配置・撤去したときに移動判定が反映されていない

・TurnActivityで処理中のキャラを構造体ポインタで保持すれば軽くなりそう。
・同じくターゲットもポインタでやってみる事
・オブジェクトイベントのロックピックの犯罪判定。鍵(フラグ)の有無での施錠などは今の所未実装。

・Dxライブラリ文字列の処理は繰り返し行うと重たい
・画像の縮小拡大処理はあんまり負担が無い
・ヘッダ内にヘッダを読み込むのはおk(配列用定数やら構造体内のstringとか使うときに)
記事へブログ気持玉 / トラックバック / コメント


戦うぞ!64xその40(アイテム・所持品の実装その3)

2019/02/17 21:37
画像


インベントリ画面完成

画像


アイテム詳細画面完成



細かい部分は前回記事に。
インベントリはプレイヤーのみの仕様なのでコンパニオンなどに適用できない。
もし使いまわしできる様な仕様なら、流用して商人との取引処理が楽に作れるはず。


というわけで頑張って流用できるような仕様にしてね(投げやり)
記事へブログ気持玉 / トラックバック / コメント


戦うぞ!64xその40(アイテム・所持品の実装その2)

2019/02/14 17:41




アイテムをマップに置けるようにした
処理はごり押しでやや非効率ではある。
ニコニコのローグ好き兄ちゃんの助言通り影も実装している。
アイコン画像を黒塗りにして半透明にして影にしている。そこまで重くない。

アイテムデータにアイコン属性追加
ドロップ時や一覧時に使用する。

アイコンデータ追加
32x32のアイコンデータ追加。
64x64だとマップに配置した際、隣接マスに表示が上書きされやすかったので小さめの32x32にしている。

移動をジグザグ優先に
ジグザグしながら対象に近づくようになった。
真っ直ぐな経路が最短の場合は真っ直ぐ。
予測経路が正しく働くようになった。仕組みはシンプル。詳しくは前回記事に。



やる事

・主人公に対しての行動予約
現在、移動目標は座標でのみ保持している。
そのためNPCなどに対してターゲットする事は出来ない。NPCが移動してしまうと追従せず話しかけられない。
そこで主人公のみ

「対象タイプ」
「対象番号」
「行動番号」

の三つの要素を持ち対処する事。
「対象タイプ」は座標なのかキャラ番号なのかイベントオブジェクト番号なのかの振り分け。
「対象番号」は上の対象の番号。キャラクターならキャラ番号。
「行動番号」は到着時に行う行動。この要素は不要かも。

主人公のターンになった際、対象タイプ・対象番号に合わせて従来のターゲット(座標)変数に目標を代入する事で追尾が可能になるはず。



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

・扉・宝箱の設定は移動不可のみになっているので遠隔攻撃が通る。
・影のレイヤーがキャラクターやオブジェクトイベントより後になっている
・NPCやイベントへの衝突判定で高低差の判定がされていない
・マップの反転表示でオブジェクトが反転されていない
・タイトル画面で×を押すと正常に終了できない
・オブジェクトイベントの削除が正常に行われていない(要検証)
・オブジェクトイベント。観音開き的な配置を行うと、表示レイヤー的に主人公が扉で隠れるor扉が主人公で隠れる。表示レイヤーがもう一枚欲しいが・・・中々むずかしいねんな。

・経験値加算と能力値上昇は仮実装。
・ダメージを受けると受けた側、与えた側に経験値が固定で入るから範囲攻撃だとめっちゃ稼げる・・・はず。
・オブジェクトをエディタかっら配置・撤去したときに移動判定が反映されていない

・TurnActivityで処理中のキャラを構造体ポインタで保持すれば軽くなりそう。
・同じくターゲットもポインタでやってみる事
・オブジェクトイベントのロックピックの犯罪判定。鍵(フラグ)の有無での施錠などは今の所未実装。

・Dxライブラリ文字列の処理は繰り返し行うと重たい
・画像の縮小拡大処理はあんまり負担が無い
・ヘッダ内にヘッダを読み込むのはおk(配列用定数やら構造体内のstringとか使うときに)
記事へブログ気持玉 / トラックバック / コメント


戦うぞ!64xその40(アイテム・所持品の実装その1)

2019/02/07 22:06
前回の記事のようにイベント・ストーリー関係の更新をしようと思っていたが、
アイテムがイベント処理に深く関わってきそうなので先にアイテムを実装した。

また、get,setをポインタで行い高速化を試みてみたが
正直に言ってしまって・・・あんまり早くならなかった。残念。
という事で高速化は諦めて先に進めていく。

視聴者ニキに薦められて今まで頑なにchar配列で行っていた文字処理を一部Stringで行った。
読み込む文字数が不確定のものは確かにStringの方が安全だけど、領域が可変だからアドレスが飛び飛びになって遅くなるのでは?と個人的に思っている(膨大な数で無ければ心配無用だが)
宣言時に予めStringの領域を使用可能領域まで大きく割り当ててしまおうかな、とか文字処理に関しては色々検討中。
地味にchar配列のコピー処理が問題(領域、要素外とか)だし、コピー処理楽だし、問題ないならstring一択だよなあ。



画像



アイテムの実装と主人公の所持品(インベントリ)実装。
アイテムの使用諸々はまだ未着手。


アイテムは
・名前
・説明
・タイプ(食べ物・飲み物・道具・その他)
・強度(Elonaの+値)
・効果1.2.3
・効力1.2.3
・価値
・重さ

で構成されている。タイプは使用方法。
Elonaの食べる・飲む・使うのアレをそのまま仕様にしている感じ。

効力効果は例えば「回復ポーション」を使用した際、

効果:体力回復
効力:+100ポイント

という具合に参照される。
他にも単純に食べ物を食べた際の満腹度回復などの基本的な部分にも使用する予定。
効果・効力スロットは現在3つとしている。もしかしたら増やしたりするかも。


所持品については
・武器
・防具
・アイテム
の三種類を保持して表示している。
三つも種類があるせいで、所持品一覧を表示するだけでもちょっと計算処理が挟まって気持ちが悪い。


//引数番のインベントリに入っているアイテムの種類・番号を引数へ返す
void getInventoryItemNo(int no,int *type,int *item_no) {
if (no >= inventory_weapon_count) {
no -= inventory_weapon_count;
}
else {
*type = INVENTORY_TYPE_WEAPON;
*item_no = no;
return;//武器番号を返す
}
if (no >= inventory_armor_count) {
no -= inventory_armor_count;

}
else {
*type = INVENTORY_TYPE_ARMOR;
*item_no = no;
return;//防具番号を返す
}
if (no >= inventory_item_count) {
*type = INVENTORY_TYPE_ERROR;
*item_no = 0;

return;//!エラー。インベントリの数を超えている!
}
*type = INVENTORY_TYPE_ITEM;
*item_no = no;
return;
}


なんて具合に一々所持品no番が武器か防具かアイテムか計算した上、対象の種類番号まで返さなきゃいけないのがやや不満点。
何かいい解決方法がない物か・・・


やる事

・マップ上にアイテムを置けるようにする。
主人公の所持品のような感じでマップにアイテムを登録する。
表示に関してはかなり大雑把で非効率なやり方しか思いつかないので頑張る事(投げやり)


・索敵処理の仕様変更
キャラクターにflagを持たせて、trrueなら上下左右。falseなら左右・上下と索敵させる。
一歩移動したらフラグを逆にして、ジグザグと移動させる。
この仕様なら、直角アプローチ(↑↑↑→→→)をジグザグ接近(↑→↑→↑)にできるうえ、移動予測経路から外れる事もない。はず

・主人公に対しての行動予約
現在、移動目標は座標でのみ保持している。
そのためNPCなどに対してターゲットする事は出来ない。NPCが移動してしまうと追従せず話しかけられない。
そこで主人公のみ

「対象タイプ」
「対象番号」
「行動番号」

の三つの要素を持ち対処する事。
「対象タイプ」は座標なのかキャラ番号なのかイベントオブジェクト番号なのかの振り分け。
「対象番号」は上の対象の番号。キャラクターならキャラ番号。
「行動番号」は到着時に行う行動。この要素は不要かも。

主人公のターンになった際、対象タイプ・対象番号に合わせて従来のターゲット(座標)変数に目標を代入する事で追尾が可能になるはず。



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

・扉・宝箱の設定は移動不可のみになっているので遠隔攻撃が通る。
・影のレイヤーがキャラクターやオブジェクトイベントより後になっている
・NPCやイベントへの衝突判定で高低差の判定がされていない
・マップの反転表示でオブジェクトが反転されていない
・タイトル画面で×を押すと正常に終了できない
・オブジェクトイベントの削除が正常に行われていない(要検証)
・オブジェクトイベント。観音開き的な配置を行うと、表示レイヤー的に主人公が扉で隠れるor扉が主人公で隠れる。表示レイヤーがもう一枚欲しいが・・・中々むずかしいねんな。

・経験値加算と能力値上昇は仮実装。
・ダメージを受けると受けた側、与えた側に経験値が固定で入るから範囲攻撃だとめっちゃ稼げる・・・はず。
・オブジェクトをエディタかっら配置・撤去したときに移動判定が反映されていない

・TurnActivityで処理中のキャラを構造体ポインタで保持すれば軽くなりそう。
・同じくターゲットもポインタでやってみる事
・オブジェクトイベントのロックピックの犯罪判定。鍵(フラグ)の有無での施錠などは今の所未実装。

・Dxライブラリ文字列の処理は繰り返し行うと重たい
・画像の縮小拡大処理はあんまり負担が無い
・ヘッダ内にヘッダを読み込むのはおk(配列用定数やら構造体内のstringとか使うときに)
記事へブログ気持玉 / トラックバック / コメント


戦うぞ!64xその39(オブジェクトイベント実装)

2019/01/12 01:47
画像


開閉する扉を実装
扉を実装。閉まっている状態の扉は移動不可能。
扉を目標に移動する事で隣接時に開扉できる。
施錠状態の扉は、少し前に息抜きで作った鍵開けミニゲームを行う必要がある。
ロックピックの犯罪判定。鍵(フラグ)の有無での施錠などは今の所未実装。

マップデータに保存・読み込みにも対応。
問題があるとするなら観音開き的な配置を行うと、表示レイヤー的に主人公が扉で隠れるor扉が主人公で隠れる。
表示レイヤーがもう一枚欲しいが・・・中々むずかしいねんな。
あと多分バグある。

画像


オブジェクトイベント(扉・宝箱)の配置エディター実装
マップエディタに内包。やや操作が独特(オブジェクトエディターもオブジェクトイベントエディターも癖がある)
汎用扉はデフォルトで用意してあるテンプレートから簡単に配置できる。
また現在存在しているオブジェクトイベントを指定し、テンプレートとしてtxtに保存できるようにもなっているので
手の込んだ設定の物も出来る限り楽に・・・設置・・・できると思う(恐らくそれでも地味に面倒)


画像


オブジェクトエディター改良
前回簡素に実装したエディターを少し改良。
Elonaのように画面下部に選択窓を作って表示させるように。
一覧表示もあるよ!




次やる事
エディターの細かい部分を改良しつつ、
メインループ(経路・攻撃回復・移動諸々)の処理で、get,setを行わずキャラクターの構造体からのアクセスを追加する事(要バックアップ)
この方が絶対早い


ここら辺終わったら、簡単にストーリーやシナリオイベントを追加していく。
(イベント関係はかなり放置されてずさんなのでここで大きな改良を行う羽目になるはず)


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

・扉・宝箱の設定は移動不可のみになっているので遠隔攻撃が通る。
・影のレイヤーがキャラクターやオブジェクトイベントより後になっている
・NPCやイベントへの衝突判定で高低差の判定がされていない
・マップの反転表示でオブジェクトが反転されていない
・タイトル画面で×を押すと正常に終了できない
・オブジェクトイベントの削除が正常に行われていない(要検証)
・オブジェクトイベント。観音開き的な配置を行うと、表示レイヤー的に主人公が扉で隠れるor扉が主人公で隠れる。表示レイヤーがもう一枚欲しいが・・・中々むずかしいねんな。

・経験値加算と能力値上昇は仮実装。
・ダメージを受けると受けた側、与えた側に経験値が固定で入るから範囲攻撃だとめっちゃ稼げる・・・はず。
・オブジェクトをエディタかっら配置・撤去したときに移動判定が反映されていない

・TurnActivityで処理中のキャラを構造体ポインタで保持すれば軽くなりそう。
・同じくターゲットもポインタでやってみる事
・オブジェクトイベントのロックピックの犯罪判定。鍵(フラグ)の有無での施錠などは今の所未実装。

・Dxライブラリ文字列の処理は繰り返し行うと重たい
・画像の縮小拡大処理はあんまり負担が無い
・ヘッダ内にヘッダを読み込むのはおk(配列用定数やら構造体内のstringとか使うときに)







ジャイアンツ東京:逃げ球
横浜:クイック
愛知:流し打ち・重い球・守備職人
兵庫:奪三振・代打・怪我しにくさ
千葉:緩急・初球
記事へブログ気持玉 / トラックバック / コメント


戦うぞ!64xその38(オブジェクトイベント実装)

2018/12/30 07:16
画像



以下の要素を実装。そしてエディタから配置できるように。

・オブジェクト(箪笥など移動不可領域)
・オブジェクトイベント(扉や宝箱などイベントが発生するもの)

扉への衝突処理と解錠・解放処理は実装完了。やったね。



それぞれエディタが仮のまま(オブジェクトに関しては選択すらできないし、そもそも画像自体なくて作れない)なので、
最優先でくみ上げる事。いいね?

なお、オブジェクトイベントの管理は構造体listで行っている。
初心者にはまったくもって厳しいもので、実装できてはいるが
増減処理が楽でメモリ的には省スペース(コード的には・・・駄目みたいですね)

現時点でメモリ250M。CPU8%(奇数算出を余り(%)ではなく二進数(&)で調べるようになってかなり軽くなった)
がつがつメモリを占有できると言えば出来るのだが・・・悩みどころである。
当社調べながら、Elonaはメモリ70M・現環境CPU3%程度という結果になっている。
かなり今更だが3Dで作り直したり、表示方法を菱形にするなどの根本的な改善も考えている。処理の重さは単純に...困る。

3Dは一見処理が重たそうでも、レイヤーの上下関係を気にすることなく処理できるおかげで軽くなる可能性があっる。むむむ。





やるべきこと


固定NPCへの武器エディタを作る。
やっぱり固定NPCは独自の武器を持っていてほしいじゃない?

経路がややおかしいので修正する。
敵への移動経路が変なときがあるので。
見た目が変になる仕様も含めて再検討してね。

新規でゲームを始める処理を作る。
一時ファイルが何もない状態から開始しても不具合が出ないようにする事。
現状一時ファイルが欠けていると色々問題が起こる。
無から始めた際に
プレイヤー名を決めさせて、どのマップのどの座標で始めてるかを設定させるように。

枠組みは完成。多分windowsじゃないと正常に動かない。


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

扉・宝箱の設定は移動不可のみになっているので遠隔攻撃が通る。
影のレイヤーがキャラクターやオブジェクトイベントより後になっている
NPCやイベントへの衝突判定で高低差の判定がされていない

経験値加算と能力値上昇は仮実装。
ダメージを受けると受けた側、与えた側に経験値が固定で入るから範囲攻撃だとめっちゃ稼げる・・・はず。


記事へブログ気持玉 / トラックバック / コメント


続きを見る

トップへ

月別リンク

Unkooooo/BIGLOBEウェブリブログ
文字サイズ:       閉じる