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

画像



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

・マップの座標取得系すべて
対象座標の右のマスの値取得とか、細かい部分のやつとか大量に。
・マップの座標比較系すべて
以前より計算は楽だから細かい修正で助かった。
・マップ回転時の座標あれこれを四方向分追加。
正面は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が優秀なので同速度の一対一状態だと確実に逃げられる。
逃げている時は速度が低下するなどの処理が必要。
・移動の押しのけ判定がややガバいので、中立・友好派閥と押しのけあいまくる。
↑様子見。酷いようであれば修正

この記事へのコメント

この記事へのトラックバック