Skip to content

Final Technical Decision Summary ​

DecisionResult
Core languageRust
Controller / WebRust + Axum
WorkerRust + Tokio
SupervisorRust
Cross-process contractProtobuf
KBEngine accessPython Bridge + Rust Supervisor
Native bot reuseFirst-class Execution Backend
ContainersOptional deployment method
Native RuntimeWavemaker's own Actor Runtime
Behavior in v1Internal Rust Behavior
LuaNot implemented in v1
PythonRequired for the KBEngine Bridge; general SDK later
C++Native SDK / separate process / isolated shim
GoNot core; SDK possible in the future
Server-side monitoringBasin
Generator monitoringGenerator Observability
Plan generationController as the only generator, plan-as-data
DistributionShardPlan freezing, leases, generation
ReportsPlanned load, actual load, generator, server, and data quality presented together

Final principle: Wavemaker unifies load test management, plans, control protocols, observability, and reporting — it does not force every game engine to use the same bot implementation.

Engines can keep using their own native bots, network stacks, and scripting systems; Wavemaker brings them into unified experiment management through Backend + Supervisor + Bridge. At the same time, Wavemaker keeps its own high-performance Rust Native Runtime for engines without mature native bots or those needing precise control.

That is the compatibility boundary a cross-engine load testing framework should have.