2018 ソフトウェア設計及び演習用の班Wiki
18::gr12::千葉大輔
進捗状況(敵AIモジュールプロトタイピング)
Monsterクラスの一部作成(仮)
<クラス・メソッドの作成>
敵AIモジュールの中心となるMonsterクラスを作成
Monsterクラスはenchant.jsのSpriteクラスを継承し、以下のメソッドを追加(一部未作成)
敵AIモジュールの中心となるMonsterクラスを作成
Monsterクラスはenchant.jsのSpriteクラスを継承し、以下のメソッドを追加(一部未作成)
- ・setStatus("名前",敵ID,x座標,y座標)
- Monsterクラスのオブジェクト作成後、敵識別用IDとマップ上の座標値を設定するメソッド
- ・moveNormal()
- 主人公未発見状態時の自由移動。100ミリ秒毎にそれぞれの敵に異なる乱数(0~70)を与え、
その乱数に応じて上下左右に移動またはその場にとどまらせる。(↓イメージ)
- ・prevTest()
- オブジェクトのステータス(プロパティ)を一覧表示(デバック用)
急接近AI(仮)の作成 + 調整
<メソッドの作成>
自由移動状態の敵が追跡範囲内に入った瞬間に主人公に急接近するAIを作成。
これは前回までに作ったMonsterクラスのメソッドのひとつ。
自由移動状態の敵が追跡範囲内に入った瞬間に主人公に急接近するAIを作成。
これは前回までに作ったMonsterクラスのメソッドのひとつ。
- ・moveToPlayer("主人公となるオブジェクト")
- 当たり判定作成のために主人公を引数として渡しているが要検討中。
追跡範囲内の主人公をその敵の素早さに応じて 最短距離で追跡する(現段階では斜め移動も含む)ためのメソッド。
この状態で距離が離れる(追跡範囲外)になると再び自由移動状態に戻る。
また、この状態で距離が攻撃射程範囲(未決定)に入ると攻撃AIに移る。
<プログラムの調整>
・前回まではそれぞれの行動を1000ミリ秒置きに実行していたが、それぞれの敵がよりバラバラなタイミングで動いている(自然な動き)ように見せるために100ミリ秒置きに直し、それに伴い乱数の上限個数を7から70に変更した。
・その他、滑らかな動きになるよう所々プログラムを修正したが、今後負荷のことも考えてより効率的なものにしていきたい。(処理の問題なのかmoveToPlayerを使用すると敵の画像の画質が落ちてしまうのでその原因と修正方法も模索中)
進捗状況(敵AIモジュール 中間発表後)
メソッドの追加②
- ・shootAttack(マップ上ID,プレイヤーオブジェクト)
- 遠距離攻撃タイプの敵が主人公に向かってエフェクトを放って攻撃を行う。
- ・useSkill(スキルの番号)
- データとして準備しておいたそれぞれのスキル(現在では周囲に敵を発生させるものや周囲の敵を回復させるスキルを用意)の具体的な動作を記述。
- ・moveWithPlayer(主人公が動く向き(数値))
- 主人公を常に画面中央に置くために主人公が動く(入力)に応じてその方向と逆の方向に動かすためのメソッド。
変更点
- ・setStatus内イベントリスナの登録
- ・敵が画面外に出た場合に処理を軽くするために行動不能状態と無敵状態に設定する。
- ・敵のHPが0以下になったときに、敵がだんだん薄くなり最終的にアイテムのアイコンに変わるまでの処理。
- 全体的な部分
- ・一定時間毎(1000ミリ秒)にスキル発動させる
開発に関する感想
最初の段階でイメージしていた敵の動きをある程度実装することは出来たものの、統合段階で意図していなかった動きをしたり、特に壁の当たり判定の作成にあたっては妥協せざるを得ない点が多々あったことがとても残念だった。
最終敵な作品においても当初予定していたシステムすべてを実装することが出来ず、さらに致命的なバグも残ってしまったことが悔やまれてならないが、目標地点を最後まで下げないようにして開発を続けて来れたことは良かったと思う。
グループ開発では、プログラムの競合など個人開発では起こらないようなたくさんの問題を経験することができ、それらが今後に大いに活かせるようなものばかりであったことが個人的にはこの講義を通して得られた最大の成果だと思う。
最終更新日:2018/08/03 10:09:20