Appearance
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 item | Required content |
|---|---|
| Identity | Game type, archive version, and supported scenario schema. |
| Presentation configuration | Symbol or item assets, dimensions, rules, paytable, and feature labels. |
| Scenario schema | Every field, its type, units, optionality, and display meaning. |
| Input | Required initial selections and any supported additionalData. |
| Flow | Single result, stored scenario sequence, feature continuation, player choice, or collection. |
| Money | Original base stake, purchase cost, win units, caps, and settlement behavior. |
| Recovery | Fields sufficient to restore an interrupted presentation and pending decision. |
| Compliance | Approved 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.