Open5
[旧] Declarative AI
新スクラップに移行 👉 https://zenn.dev/mitsuyoshi/scraps/39c3e27a4663b6
コンセプト
- 手続きではなく状態を指定する
- (no interface is the best interface
- = Declarationの組み合わせで抽象的なDeclarationを表現できる
- 手続き=Process
- 適切なProcessを起動するのがDeclaration
仕様
Thoughts
- Declarativeは互いに独立しているため、異なる思想で実装されていてもワークする
- Process化されないもの
- os
- Screeps APIのwrapper
- event handler
- room resource
インターフェース
親→子
- 親をkillした際に子もkillするためにretainCountが必要
子→親
- 子がfailした際に親に通知する方法が必要
- 子が状態を達成した場合は親が通知を受け取る
- 親は子の状態達成が通知されれば良いので、event handler→子→親の順で情報が届けば良い
- 子→親はどうするか
- Notification経由
Process→Declaration
- 失敗理由を通知する必要がある
- Notification経由
その他
- 子Declaration/Process起動時にその機能が起動済みだった場合は既存をとってくる
- maker経由で取得する or 起動リクエストを発行する
- Notification Observingに指定するIDが返却される
- maker経由で取得する or 起動リクエストを発行する
Notification
- osの機能
- Process/Declarationが発行/購読する
- 発行/購読指定情報
- イベントID required
- フィルタ文字列 optional
- 発行/購読指定情報
Memo
- 事象が機械に観察可能である場合、エラーから学習ができる
- 失敗を記憶する
- 失敗したこと→失敗した内容→失敗した時点での状態
- 原因を探す
- まず敵対的なプレイヤーの関与を疑う
- 失敗を記憶する