Skip to content

Blank and imported game outcomes

The creator's Blank mode imports or edits a custom outcome format. It is not a predefined game with one universal scenario type.

An imported archive preserves its gameType. A Blank game without an imported type can use blank. The engine's fixed-odds path can also serve custom presentations such as instant wins or scratch cards.

Required frontend contract

Define these items with the archive author before implementing the renderer:

Contract itemRequired content
IdentityGame type, archive version, and supported scenario schema.
Presentation configurationSymbol or item assets, dimensions, rules, paytable, and feature labels.
Scenario schemaEvery field, its type, units, optionality, and display meaning.
InputRequired initial selections and any supported additionalData.
FlowSingle result, stored scenario sequence, feature continuation, player choice, or collection.
MoneyOriginal base stake, purchase cost, win units, caps, and settlement behavior.
RecoveryFields sufficient to restore an interrupted presentation and pending decision.
ComplianceApproved classification, messages, timing, probabilities, and certificate information.

Include this contract in the game's versioned frontend assets or documentation. Do not infer it from a filename or sample image.

Fixed-odds request flow

Call placeBet with the selected stake to open the round. Pass the loaded config. Render the returned scenario according to the agreed schema.

A custom visual choice does not alter a server outcome unless the engine defines an input for it. An arbitrary additionalData field does not create new game logic.

An array supplied to the generator becomes a sequence of scenario results. Use engineData.scenarioInfo and the current action state. Nested arrays within one scenario remain local presentation data.

For a scratch-card presentation, reveal the committed result. Do not choose a new win when the player scratches another region. Implement reveal-all only where the approved product rules permit it.

Reject unsupported contracts

If gameType or a required scenario field is unknown, keep new play disabled. Display a configuration error. Do not fall back to a slot renderer or generate a local result.

A custom contract still requires every shared frontend function: launch, settings, stakes, loading, operator events, recovery, errors, and jurisdiction behavior.