【非公式】某会社設立記念ゲリラ Advent Calendar 2016 14日目の記事です。
FlashゲームをUE4で再実装するゲリラアドカレです。
今回はバトル画面の実装を一旦置き、ランダムエンカウントの判定ロジックを組みます。
・注意
許可を取ってないので通常業務の空いた時間を利用して作成するため、作成中のゲーム、及びアドカレは完成保証がなければ、ゲーム自体もリリースされる保証も皆無なので、あんまり期待しないでください。
#参考にしたサイト
こちらに書いてある内容をそのまま実装したいと思います。
ちなみにオリジナルのエンカウント判定計算式は知りません。
というかむしろこちらも知りたい
大人の事情ということでご了承ください。
#関数ライブラリを作成
エンカウント判定は関数ライブラリで実装したいと思います。
コンテンツブラウザ右クリックで下のブループリントから、「ブループリント関数ライブラリ」を選択します。
#ランダムエンカウント処理を実装
早速関数ライブラリにランダムエンカウント処理を実装します。
かなり長くなったため、一部グラフを折りたたんでいます。
stageIdと歩数を元に計算していきます。
まずエンカウント指数と歩数しきい値のArrayを作成します。
作成が終了したら、ステージIDから、エンカウント指数としきい値をローカル変数にセットします。
現状では12歩まで指数に除算補正が入るということになります。
続いて地形タイプに応じた歩数によるエンカウント指数の乗算処理を行います。
歩数としきい値を判定し、エンカウント指数に乗算処理による補正を行っています。
最後にエンカウント判定を行います。
最大255のランダム値 < 補正済みのエンカウント指数がtrueの時、エンカウントをしたとみなします。
#関数ライブラリ呼び出し
最後にエンカウント処理を呼び出します。
このようにブループリントの関数検索で先ほど作った関数ライブラリが呼び出せるようになります。
#ランダムエンカウントが出来た!
ランダムエンカウントができるようになりました。
計算式は一つの参考例です。このままだと相性の問題でなかなかエンカウントしないため、あとで修正をかけます。
これでまた一つ、ゲームっぽくなりました! 先人たちは偉大です。
次はちゃんとバトル画面の実装に戻ります。
……つらくなったら気分転換にノベル画面の実装に入るかもしれません。