Game SDK

↓ Download SDK 0.3.0

Internal VORIVOX development. Preview package: remaining gates are listed under compatibility.

One and two players

For two players VORIVOX supports two clear game models without identifying a weapon for every impact: alternating turns or a left/right split target.

1. Alternating turns

The game clearly shows Player 1 or Player 2. An accepted impact, a shot series or a completed round changes the active player according to game rules. Only the active player is expected to shoot, so target.hit does not need a player_id.

let activePlayer = 0;
sdk.on('target.hit', hit => {
  if (sdk.sessionState !== 'running') return;
  addScore(activePlayer, scoreHit(hit));
  activePlayer = activePlayer === 0 ? 1 : 0;
  showTurn(activePlayer);
});

2. Split target

The physical plate remains one target, while the scene is split vertically. The left half belongs to Player 1 and the right half to Player 2. With normalized coordinates, nx < 0.5 routes to Player 1 and nx ≥ 0.5 routes to Player 2.

function playerForHit(hit) { return hit.nx < 0.5 ? 0 : 1; }
sdk.on('target.hit', hit => {
  if (sdk.sessionState !== 'running') return;
  const player = playerForHit(hit);
  addScore(player, scoreHalfTarget(player, hit));
});
Important. Coordinate routing identifies a side of the target, not a physical gun. Players must shoot only their assigned half. Simultaneous fire into the same area with shooter attribution requires a separate identification channel.

Game state

Keep two scores, per-player hit counters, current turn/round and an obvious visual indication of the active side. The base session.complete remains an aggregate contract unless the platform defines a separate per-player result path.

Testing

For turns: pause during handoff, last shot and duplicate shot_id. For split target: center-line impacts, both edges, mirrored geometry and readability of both halves.