やることを思いついても忘れてしまうので、まとめておきます。
- ジャンプ、キャンセル、Tween Menuを整理したい
- ジョブチェンジの仕組みを作りたい
- 抜刀時にカメラが一瞬左右にブレる
- 邪魔な死体を消したい
- 学園ものにしたい
- 食料の鮮度管理
- Limit Breakのバランス調整
- 敵を倒したあとの挙動がおかしい
- 直前防御を連続で成功させたら恩恵
- zEditでパッチを作る
- 敵のヘルスの上昇幅を調整したい
- 装備品はGetContainerFormsで回すよりPO3_SKSEfunctions.AddAllEquippedItemsToArrayを使う方が速そう
- 関数1つで全部まとめているところは、状況に応じて関数を用意しておいて使い分ける方が速そう
- 街や制覇済みのダンジョンでは増援が来ないので敵が来るようにしたい
- 武器の種類で直前防御に差が出るようにしたい
ジャンプ、キャンセル、Tween Menuを整理したい
キャンセルキーが普段はTween Menu、メニューを開いている間はキャンセルというのが使いにくい。
メニューを開いている間はジャンプキーでキャンセルしたい。そしてTween Menuは緊急性が低いのでどこかに追いやる。
メニューを開いている間のキー設定は独立したものだったので、ジャンプキーとTween Menuキーを入れ替えるだけで、それ以外に何もする必要はなかった。キー設定に詳しく書いてある。
ジョブチェンジの仕組みを作りたい
FF14でいうところのアーマリーシステムを作りたい。
設計はできているのでPlayer Managerを改修して実装するだけ。
Skill Managerに実装してみた。概ねイメージ通り。細かい調整を続けていく。
満足のいく形になりました。
抜刀時にカメラが一瞬左右にブレる
Camera Tweaksは抜刀イベントを受けてから装備を調べてカメラモードを切り替えています。この処理をしている間にも、現在のカメラモードの設定に基づいてカメラが先に動いてしまうので、カメラモードが切り替わった後でさらにカメラが動いてしまいます。
要するに納刀と抜刀でカメラが動かなければいいので、設定の反映の仕方を工夫してみました。
数か月経過したけどブレることは一度もなし。
邪魔な死体を消したい
以前よりHome Pointで死体消しスペルを作って消していたけど、リスポーンがうまくいかない場合があって困っていた。
良さそうな実装を思いついたので試験中。
ベストではなかったものの、いままで実装してきた中では一番いいかも。
問題がまったく起こらなくなりました。長いこと悩んでいた死体処理に決着が付きました。
学園ものにしたい
世界観に合わない装備Modが結構あって、使えないのはもったいないので、いっそのことそういった装備だけで構成したら逆に面白いんじゃないかと思った。
問題がひとつあって、Enemy Equipmentは対応Modが多くなりすぎていてMCMのステート数上限に達してしまったくらいなので、装備を追加するのが非常に面倒になってしまっている。pexファイルもコンパイルは通るが実際にゲームを起動するとデカすぎるためか動かなくなったので急遽分割したこともあった。
食料の鮮度管理
食料はどうしてもある程度ため込んでしまうので、狩りをしてその日の食料を調達するモチベーションがわかない。ずっと作ってみたかった要素だけど実装が難しそうで、いつも設計段階で止まっていた。
Equipment Managerで実装してみた。今のところいい感じ。その日の晩御飯をどうするか考えるようになった。
鮮度管理はできるようになったけど、食事とバフのバランスが難しい。序盤はよくても中盤以降がダメだったり、その逆もしかり。
Limit Breakのバランス調整
ヒーラーLBのヘルス全快とタンクLBの被ダメージ大幅低下があまりにも便利すぎて、近接とキャスターの出番がまったくないので、てこ入れしたい。
Equipment Managerで武器劣化を実装してバランスを取っている最中なので、近接LBで劣化無しにしてみた。選択肢に加わるかもしれない。
キャスターLBは安易にスペル威力が上がったりマジカを増やす調整をするとつまらないので難しい。飛び道具が飛んで来たら時間減速でかわせる、クイックリフレックスの遠隔版というのを作ってみる予定。
敵を倒したあとの挙動がおかしい
Home Pointで不死化している敵を倒すと死なずに足踏みしたりする。
デバッグの末、ステートの移行タイミングに問題があった。書き直したら改善しました。
まだおかしい部分がある。Papyrusのステートは強力だけど排他制御が難しい。
エリア移動後に戻ってくると敵が結構な確率で死んでいます。原因がどうにもつかめず困っています。Home Pointの不死化解除とOreno Dynamic Difficultyのヘルスブーストを解除する処理が絡んで、ヘルスがおかしくなって死んでいるのだと予想しています。
その後、まったく問題が起こらなくなりました。解決といっていいでしょう。
直前防御を連続で成功させたら恩恵
2連続で成功したあとの最初の攻撃にダメージ上昇効果を付けてみました。
存在を忘れます。
zEditでパッチを作る
スペルを動的に配布する仕組みは運用がお手軽なのがメリットです。それと引き換えに、配布処理で負荷が多少なりとも発生するのと、配布するスクリプトの処理内容によっては他Modと競合したり、Actorのデータが狂うかもしれないというデメリットがあります。
zEditでespレコードにてActorにスクリプトを持たせるパッチを用意すれば、ゲーム内での配布という作業がなくなり、さらにスペルの維持管理という手間から解放されるので、安定した環境を構築するにはいいかもしれません。そのかわり、Modを足したり引いたりするたびにzEditを動かして、パッチを環境に追従させないといけないのが難点です。
KYEとYASHのPerkに乗っかるのが楽です。これでやりたいことはほぼ実現できました。
敵のヘルスの上昇幅を調整したい
正比例の増え方だとレベルが低い敵はたいした変化を感じられず、レベルが高い敵は滅茶苦茶な量になってしまう。上昇値を低レベル帯は大きく、高レベル帯は小さくしたい。
Oreno Dynamic Difficultyで実装してみました。ゲームバランスがかなり変わりました。
装備品はGetContainerFormsで回すよりPO3_SKSEfunctions.AddAllEquippedItemsToArrayを使う方が速そう
Equipment Managerはすでにそうなっていました。(いつの間に?)
他でも置き換えられそうなので要確認。
関数1つで全部まとめているところは、状況に応じて関数を用意しておいて使い分ける方が速そう
Equipment ManagerのOnHit周りを改修しました。気持ち速くなったかも?
街や制覇済みのダンジョンでは増援が来ないので敵が来るようにしたい
Additional Encountersで実装してみました。
街に入って来るのは入り口の門番が、宿に来るのは街中をどうやって抜けてきたのかという違和感はあるけど、アクセントにはなるかも。
敵が来てはまずいところの制御が面倒です。ソウルケルンとか、いちいち拒否リストを作るのも面倒。
武器の種類で直前防御に差が出るようにしたい
ダガーで両手棍をあっさり防御できるのはおかしい、ということで調整したい。
Timed Blockで調整してみました。