Skip to main content

Crate vera_effects

Crate vera_effects 

Source
Expand description

§VERA — Verified Effect-Rule Architecture

Generic infrastructure for effect-verified game loops.

VERA’s core idea: pure rule functions return effect enums, a mechanical apply function mutates state, and a trace records everything that happened for verification.

This crate provides the generic types. Your game crate defines the concrete Effect and Presentation enums and uses these types parameterized over them.

§Example

use vera_effects::{Trace, TraceEntry, TraceSource, RuleOutput};

// Your game defines concrete effect types
#[derive(Debug, Clone, PartialEq)]
enum Effect {
    Heal { amount: i32 },
    SpendAp { amount: i32 },
}

#[derive(Debug, Clone)]
enum Presentation {
    LogMessage(String),
}

// Rule functions return RuleOutput<Effect, Presentation>
fn rule_heal(amount: i32) -> RuleOutput<Effect, Presentation> {
    RuleOutput {
        effects: vec![Effect::Heal { amount }],
        presentation: vec![Presentation::LogMessage(format!("+{} HP", amount))],
    }
}

// Trace records what happened
let mut trace = Trace::<Effect>::default();
trace.enabled = true;
let output = rule_heal(25);
for effect in &output.effects {
    trace.record(effect, TraceSource::Rule { name: "rule_heal" }, 1);
}
assert!(trace.contains(&Effect::Heal { amount: 25 }));

Structs§

RuleOutput
The output of a rule function: game effects to apply + presentation effects.
Trace
Ordered record of all effects. Only populated when enabled is true. Ephemeral — not serialized, not saved.
TraceEntry
A single entry in the trace log.

Enums§

TraceSource
Where an effect came from.