Skip to content

Stage 7: polish & wrap-up

One last manifest addition, then a tour of what you built.

Suggested Cue→Event mappings the broadcaster gets offered when activating the Pack, instead of wiring every mapping by hand:

[[default_redeem]]
cue = "Moon Gravity"
event = "gravity"
[[default_redeem]]
cue = "Send a Bot"
event = "add_bot"
[[default_redeem]]
cue = "Taunt the Streamer"
event = "say"
EventQueuePolicyEffect
say(message)chatappliedViewer message in game chat
add_bot(count)effectsappliedHostile bots, instantly
gravity(level, seconds)timeddonesv_gravity, serialized, per-reward duration
fast_monsters(seconds)timeddoneFast monsters, serialized, per-reward duration

Plus the data plane in both directions:

KeyDirectionPurpose
effect_countadapter → platformLifetime chaos tally, persist = true
active_effectadapter → platformRunning timed effect, "" when none
deathsadapter → platformSession deaths, parsed from server obituaries
last_effectadapter → platform{name, seq, by?} per applied effect — drives the toast
max_botsbroadcaster → adapterPer-redeem bot cap
chat_prefixbroadcaster → adapterBranding on say messages

Three queues, two policies, four events, four state keys, two config fields, two overlay widgets — and every piece of the Pack surface used: viewer-override params, enum validation, env-based secrets, fail-with-reason, deferred done, persistent state, game-sourced state, latched config, an on-stream overlay, default redeems.

  • Richer effects. Raw console cvars only go so far. Doom engines run ACS scripts from a .pk3 your Pack can ship; trigger them over RCON with puke <script> to spawn specific monsters at the player, rain items, or flash the screen.
  • More overlay. active_effect is declared but unused by the overlay — a persistent “MOON GRAVITY ACTIVE” banner while the effect runs is a natural third widget.
  • Any other game. Nothing here is Doom-specific except the RconClient: if a game exposes a console, a socket, or stdin, the same manifest-queues-handlers shape drives it.