プロフィール

Na-7

Author:Na-7
SE(システムエンジニア)として約15年間システム系ソフト会社を勤めあげ、2008年3月退社。現在、ゲーム制作会社設立を目指して活動中。


アクセスカウンター


最新記事


最新コメント


最新トラックバック


月別アーカイブ


カテゴリ


DATE: CATEGORY:スポンサー広告
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
DATE: CATEGORY:三国志軍記開発
小隊毎の被害判定実装04
開発中のメイン画面
プログラムの大幅改修に伴い、大量のバグが発生。一時は起動しないほど酷い状態であったが、最近はマシになったらしい。



◎被害判定の懸案

部隊戦の被害判定は部隊単位で算出してきましたが、「どの小隊がダメージを負うか?」という点が懸案でした。

A案:全小隊が均等にダメージを負う
  →小隊数がなかなか減らず、
   最後に全小隊が一度に消失する(却下)

B案:最後の小隊がダメージを負う
  →通常は、先頭から騎兵系/歩兵系/弓兵系の順に
   編成するので、弓兵小隊から順に壊滅することになる

C案:(旗手を除く)先頭の小隊がダメージを負う
  →騎兵小隊から順に壊滅することになる

D案:攻撃を受けた小隊がダメージを負う

現在はB案です。B案よりC案の方がマシかもしれませんが、しかしゲーム後半にどの部隊も弓兵ばかりになってしまうのは、好ましくないですね。

いずれ改善すべき懸案の一つだったわけですが、先の改修によりモデルの個別移動を実装したので、被害判定も小隊単位で行うよう改修します(D案)。



◎改修

改修すると、壊滅する小隊の順番が不定になります。いろいろと不具合が出そうな気がしますが、とにかく試してみましょう。

小隊毎の被害判定実装01   小隊毎の被害判定実装02

予想以上に、問題出まくりです(ーー;

・戦闘中の小隊を見捨てて、旗手が移動してしまう(左図)

・敵味方部隊の位置とネームプレートが
 完全に重なることがある(右図)

・重なったまま攻撃も移動もされないことがある
 →旗手とネームプレートの位置が連動しないことがある

・敵の旗手以外を全て倒した後、一度すれ違って互いの
 位置を入れ替えてから、再び接近して戦闘することがある

・最短経路探索で例外エラー発生し落ちることがある

最初は、これらの問題を見付ける度に原因を調べて直そうとしたのですが、原因もよくわからないうちに他の問題が見付かって、またそれを調べるうちに次の問題が…

いっそのこと、全てがおかしい方がデバッグしやすいのですが、概ねまともに動くので、原因以前に再現条件すらなかなか特定できません。



◎既存プログラムの現状

大量のバグを収拾するにはどうしたら良いのか?
そもそも、被害判定を個別化するだけの改修で、何故ここまで混乱するのか?

最大の要因は恐らく‘既存プログラムが複雑すぎる’ためと思われます。

部隊クラス関連図

ユニット(モデルの集合体)は戦闘系と非戦闘系(森、柵など)に分けてクラスを作成し、

・ユニットクラスを基底とした戦闘部隊クラス
・マップオブジェクトクラスを基底とした小隊クラス

で管理しています。今回は戦闘部隊クラスの攻撃/被害判定機能の一部を小隊クラスに移したわけですが、実際には攻撃と移動が複雑に絡むので、4つのクラスで連携を取らねばなりません。

移動目標/経路/攻撃目標等は、部隊と小隊で異なります。また、攻撃目標との距離(索敵/射程範囲)や、陣形のバトルスタイル、モデル特性等によって、移動や攻撃のロジックは影響を受けます。さらに、(高速描画を実現するために)各コードはそれぞれ複雑化してます。



◎クラス設計見直し

移動や攻撃は今回で全て完成、というわけではありません。ゲームシステムや武将の思考ロジックなど、今後も拡張することを考えると、設計の見直しが必要と思われます。

というわけで、戦闘系と非戦闘系で分けるのではなく、移動&戦闘系と、非移動系に分けることにします。


ただ、設計見直しや大幅改修を「今、やるのか?」と考えると、かなり気後れします。中距離戦や攻城戦など、大幅な機能追加をするために必要ならばともかく、「小隊毎の被害判定」のために、そこまでやる必要があるのか?
(言葉だけ聞くと凄く簡単そうなのに(ーー;)

そんなわけで、やる気が出ずに現実逃避してました。しかし他に良案は浮かばず、やむなく大幅改修に踏み切ったものの、まともに起動すら出来なくなって気力萎えまくり。

バックアップに戻して大幅改修前の状態から何とかしようとしましたが、こちらも上手くいかずゲンナリ。

そんな感じで、結局2カ月進捗無しという最悪の結果に
>_<



◎デバッグ

とりあえず設計見直しの方向で進める(バックアップに戻さない)ことに決めて、起動する状態まで回復させたのですが、以前より問題が増えました。
例えば、部隊が拠点に入城せず溜まりまくるとか(汗)

小隊毎の被害判定実装03


このバグは最初「表示フラグ」管理の問題かと思いましたが、そちらは正常でした。部隊はマップ上とマップ下に1フレーム毎に交互に描画されるので、何が悪いのかあれこれ悩んだのですが、結局これは

「入城→出城→入城→出城→…」

のループになってました。

あれ?昔同じ現象でデバッグした記憶が…(^_^;

とにかく、バグを1つ1つ地道に潰していくしかないですね。



◎次回予告

実はまだデバッグ中です。8割方潰したと思いますが、まだ一部不具合が残ってます。
というわけで、次回は今回の続きです。

スポンサーサイト

テーマ : ゲーム製作 関連 - ジャンル : ゲーム

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック


この記事にトラックバックする(FC2ブログユーザー)



copyright © ゲーム制作の舞台裏 all rights reserved.Powered by FC2ブログ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。