You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
|`agent:frozen`| Whether agent is frozen or not. Frozen agents cannot act | agents ||
110
-
|`episode_completion_pct`| Portion of the episode completed, from 0 (start) to 255 (end). Not a percentage | self ||
111
-
|`last_action`| Last action taken by the agent | self ||
112
-
|`last_reward`| Last reward received by the agent | self ||
113
-
|`vibe`| Agent's current vibe | any object | Values can be found in `vibes.VIBES`|
114
-
|`agent:compass`| Compass direction toward assembler | self ||
115
-
|`tag`| Tags associated with an object (e.g., "wall", "oxygen_extractor", "blue") | any object | Values can be found in `IdMap.tag_names()`. Multiple tags emit multiple tokens. |
116
-
|`cooldown_remaining`| Remaining cooldown time for objects | assembler, extractors | Value capped at 255 |
117
-
|`clipped`| Whether an assembler is clipped or not | extractors ||
118
-
|`remaining_uses`| Remaining uses for objects with use limits | extractors | Value capped at 255. Only emitted if `max_uses > 0`|
119
-
|`inv:{resource_name}`| Base inventory amount (amount % token_value_max) | agents, chests | One feature per resource. See [Inventory Encoding](#inventory-encoding) below.|
120
-
|`inv:{resource_name}:p1`| Power 1 component ((amount / B) % B) | agents, chests | Only emitted if amount >= B. See [Inventory Encoding](#inventory-encoding).|
121
-
|`inv:{resource_name}:p2`| Power 2 component ((amount / B²) % B) | agents, chests | Only emitted if amount >= B². See [Inventory Encoding](#inventory-encoding).|
122
-
|`protocol_input:{resource_name}`| Required input resource amount for current protocol | assembler, extractors | One feature per resource|
123
-
|`protocol_output:{resource_name}`| Output resource amount for current protocol | assembler, extractors | One feature per resource|
106
+
| Feature Name | Description | Objects with this Feature | Notes |
|`agent:frozen`| Whether agent is frozen or not. Frozen agents cannot act | agents ||
110
+
|`episode_completion_pct`| Portion of the episode completed, from 0 (start) to 255 (end). Not a percentage | self ||
111
+
|`last_action`| Last action taken by the agent | self ||
112
+
|`last_reward`| Last reward received by the agent | self ||
113
+
|`vibe`| Agent's current vibe | any object | Values can be found in `vibes.VIBES`|
114
+
|`agent:compass`| Compass direction toward assembler | self ||
115
+
|`tag`| Tags associated with an object (e.g., "wall", "oxygen_extractor", "blue") | any object | Values can be found in `IdMap.tag_names()`. Multiple tags emit multiple tokens. |
116
+
|`cooldown_remaining`| Remaining cooldown time for objects | assembler, extractors | Value capped at 255 |
117
+
|`clipped`| Whether an assembler is clipped or not | extractors ||
118
+
|`remaining_uses`| Remaining uses for objects with use limits | extractors | Value capped at 255. Only emitted if `max_uses > 0`|
119
+
|`inv:{resource_name}`| Base inventory amount (amount % token_value_max) | agents, chests | One feature per resource. See [Inventory Encoding](#inventory-encoding) below. |
120
+
|`inv:{resource_name}:p1`| Power 1 component ((amount / B) % B) | agents, chests | Only emitted if amount >= B. See [Inventory Encoding](#inventory-encoding). |
121
+
|`inv:{resource_name}:p2`| Power 2 component ((amount / B²) % B) | agents, chests | Only emitted if amount >= B². See [Inventory Encoding](#inventory-encoding). |
122
+
|`protocol_input:{resource_name}`| Required input resource amount for current protocol | assembler, extractors | One feature per resource |
123
+
|`protocol_output:{resource_name}`| Output resource amount for current protocol | assembler, extractors | One feature per resource |
124
124
125
125
### Inventory Encoding
126
126
127
-
Inventory values are encoded using a multi-token scheme with a configurable base (`ObsConfig.token_value_max`, default
128
-
255). This allows representing large amounts while keeping individual token values bounded. The number of tokens is
129
-
dynamically computed based on the maximum inventory value (uint16_t max = 65535).
127
+
Inventory values are encoded using a multi-token scheme with a configurable base
128
+
(`ObsConfig.token_value_max`, default 255). This allows representing large amounts while keeping individual token values
129
+
bounded. The number of tokens is dynamically computed based on the maximum inventory value (uint16_t max = 65535).
130
130
131
131
-**`inv:{resource}`**: Base value = `amount % B` (always emitted if amount > 0)
132
132
-**`inv:{resource}:p1`**: Power 1 = `(amount / B) % B` (only emitted if amount >= B)
0 commit comments