進捗: 壺アイテム実装中
保存の壺
入れたり出したりできるようになりました。
残りタスクはこんな感じ。
- 容量による最大数の実装
- 容量の増減と、減った時のアイテム消滅
- 壁とかに投げ当てて割れた時の実装
- モンスターに投げ当てたら中身が全部衝突する
- 複数選択
実装小話
↑の機能も愚直に実装できないのが悩ましいところで、というのもこのシステムは何かしらの状態の更新(パラメータの増減やアイテム取得など)が基本的にコマンドキューを使った非同期処理で実行されます。
モンスターにアイテムを投げ当てるときも、まず相手に「あなたに衝突してもいいですか?」みたいなお伺いを立てるコマンドを投げて、OKだったらさらにダメージ計算などの効果発動コマンドを投げて、プレイヤーは結果(経験値など)を受け取ります。いわゆるハンドシェイクみたいな仕組みです。
なんでこんなことしてるのかというと、モンスター側の特殊能力の都合で効果発動がリジェクトされる可能性があるためです。マゼルン系モンスターは投げ当てられたアイテム食べるし、火炎入道は燃やして消滅させます。カッパはきっと投げ返してきます。
もし投げる側(プレイヤー)が相手の性質をすべて把握していればハンドシェイクなんて面倒なことしなくて済むのですが、そうするとプレイヤー側のプログラムがとんでもなく多くなりますし、システムを拡張するのが難しくなります。
なので LRIKI さんははこの複雑さと戦ってください。お前が始めた物語だろう。