Jogo #01

Tesouros da Amazônia

Volatilidade
Média-Alta
Grid
5x3 Reels (5 Colunas, 3 Linhas)
RTP
90% / 94% / 97%

Game Design Document (GDD) - Tesouros da Amazônia

Projeto: 01 - Tesouros da Amazônia Versão: 1.0 Data: 2026-04-03 Mercado: Brasil (Paraná / Lottopar) Referência: Buffalo Gold Status: Documentação Completa


1. Visão Geral do Jogo

1.1 Identificação

1.2 Propósito Narrativo

O jogo transporta o jogador para uma expedição pela Amazônia brasileira, onde coletam cristais mágicos para transformar animais em símbolos de maior valor. A progressão do bônus simula uma "evolução" onde quanto mais cristais são coletados, mais poderosos os símbolos se tornam.


2. Configuração Técnica

2.1 Layout e Estrutura

2.2 Velocidade de Jogo


3. Tabela de Símbolos e Paytable

3.1 Símbolos Base (Aposta de 100 créditos em 1024 Caminhos)

Símbolo 5x Combo 4x 3x 2x Descrição
Onça-Pintada (Wild) 300 100 50 10 Símbolo de topo; Substitui todos.
Arara / Jacaré 150 75 20 Símbolos temáticos de valor alto.
Mico-Leão (Médio) 120 50 15 Símbolo de média valor.
A / K 100 30 10 Cartas altas de consolação.
Q / J / 10 / 9 80 20 5 Cartas baixas.
Scatter (Moeda de Cristal) 2.000 (20x aposta) 1.000 200 Gatilho de bônus; Coleta progressiva.

3.2 Tabela de Valores Expandida (Exemplos de Giros)


4. Identidade Visual e Design

4.1 Paleta de Cores

4.2 Ambiente Visual

4.3 Tipografia e UI


5. Mecânicas de Jogo

5.1 Jogo Base

O jogo base funciona com 1024 Ways em 5 rolos, focando em: - Hit Frequency: 28,4% (aproximadamente 1 ganho a cada 3,5 giros) - Prêmios Típicos: Entre 2x e 25x a aposta - Dinâmica: Spins rápidos com ganhos pequenos para manter o fluxo

5.2 Símbolos Especiais

Scatter (Moeda de Cristal)

Wild (Onça-Pintada)


6. Bônus: Coleta de Cristais + Free Spins

6.1 Gatilho e Entrada

6.2 Mecânica de Progressão (Cadeia de Markov)

O bônus começa com 10 Giros Grátis. Durante os giros, o jogador coleta Cristais (somados visualmente no "Medidor"):

Estado Cristais Coletados Transformação Efeito Matemático
Estado 0 0 Sem transformação Todos os símbolos premium ativos
Estado 1 4 Mico-Leão → Onça-Pintada Aumenta valor de 1 símbolo
Estado 2 8 Jacaré → Onça-Pintada Aumenta valor de 2 símbolos
Estado 3 12 Arara → Onça-Pintada Aumenta valor de 3 símbolos
Estado 4 15 Tela Completa em Ouro Ganho Máximo de 5.000x

6.3 Multiplicadores Wild no Bônus

6.4 Free Spins e Retriggers


7. Engenharia de RTP

7.1 Distribuição de Retorno (RTP 94% - Configuração Padrão)

Componente Porcentagem Descrição
Jogo Base 58% Prêmios pequenos e médios para manter fluxo
Bônus Free Spins 36% Prêmios acima de 50x a aposta
Overhead de Software 6% House Edge para operador

7.2 Configurações de RTP (90% - 94% - 97%)

Configuração 90% (Rua - Maior GGR para Operador) - Frequência de Retrigger: 1/25 - Multiplicadores Wilds: 2x (máximo) - Frequência de Bônus: 1/125 spins - Densidade de Scatters: Reduzida - Hit Frequency: 25%

Configuração 94% (Padrão - Equilíbrio) - Frequência de Retrigger: 1/18 - Multiplicadores Wilds: Até 3x - Frequência de Bônus: 1/118 spins - Hit Frequency: 28,4% - Recomendado para maioria dos locais

Configuração 97% (VIP - Maior Retenção) - Frequência de Retrigger: 1/12 - Multiplicadores Wilds: Até 3x com +1x bonus - Frequência de Bônus: 1/110 spins - Densidade de Scatters: Aumentada em 20% - Hit Frequency: 31%


8. Simulação Financeira Mensal

8.1 Parâmetros da Simulação

8.2 Cálculos de Volume

Métrica Cálculo Resultado
Giros por Hora 14h × 3.600s / 4s 12.600 giros teóricos
Giros Reais (60%) 12.600 × 0,60 7.560 giros/dia
Coin-In Diário 7.560 × R$ 2,00 R$ 15.120,00
Coin-In Mensal R$ 15.120 × 30 R$ 453.600,00

8.3 Balanço Financeiro Mensal

Item Cálculo Valor (R$)
Volume Total (Coin-In) Total movimentado R$ 453.600,00
Prêmios Pagos (Payout) 94% do Coin-In R$ 426.384,00
Lucro Bruto (GGR) 6% do Coin-In R$ 27.216,00

8.4 Distribuição de Lucro (Estimativa)

Item Porcentagem Valor Estimado
Impostos Lottopar/Estado 15-20% do GGR ~R$ 5.443,00
Taxa de Monitoramento Fixa ~R$ 1.200,00
Manutenção e Internet Mensal ~R$ 300,00
Lucro Líquido (Operador) Residual R$ 16.000 - R$ 18.000

8.5 Análise de Convergência


9. Classificação de Volatilidade

9.1 Perfil Matemático

9.2 Perfil do Jogador Alvo


10. Design de Áudio

10.1 Sons Ambientes

10.2 Efeitos de Ganho

10.3 Efeitos de Bônus

10.4 Antecipação


11. Jackpot e Progressivos

11.1 Estrutura Clássica

Tesouros da Amazônia utiliza um sistema de Jackpot Acumulado Fixo ao invés de progressivos, pois está integrado ao Pool Finito da Lottopar.

11.2 Ativação


12. Compliance Lottopar

12.1 Requisitos Atendidos

12.2 Documentação Técnica


13. Especificações Visuais e Gabinete

13.1 Resolução Recomendada

13.2 Gabinete Físico (VLT)


14. Próximos Passos e Considerações

14.1 Teste de Balanceamento

14.2 Aprovação Regulatória

14.3 Localização Comercial


Documento Assinado Digitalmente por: Gerado em: 2026-04-03 Versão: 1.0 Status: Pronto para Desenvolvedor

Technical Design Document (TDD) - Tesouros da Amazônia

Projeto: 01 - Tesouros da Amazônia Versão: 1.0 Data: 2026-04-03 Mercado: Brasil (Paraná / Lottopar) Plataforma: VLT Cloud-based + Local Client


1. Arquitetura de Sistema

1.1 Visão Geral da Integração

┌─────────────────────────────────────────────────┐ │ SERVIDOR CENTRAL (Lottopar) │ │ PoolFinito + Outcome Determination │ └────────────────────┬────────────────────────────┘ │ TCP/IP + HTTPS │ (G2S Protocol) ┌───────────┴────────────┐ │ │ ┌────▼─────┐ ┌─────▼────┐ │ VLT │ │ VLT │ │Terminal1 │ │Terminal2 │ │VltCore │ │VltCore │ └────────────┘ └─────────────┘

1.2 Componentes Principais

  1. Pool Finito Server (Lottopar): Determina prêmios
  2. Outcome Builder: Reverses o prêmio em combinações de símbolos
  3. Reel Engine: Controla paradas dos rolos virtuais
  4. Game Logic: Máquina de estados (Free Spins, Coleta de Cristais)
  5. RNG (Seeded): RNG local para posições de parada (post-seed baseado em Pool)

2. Integração com Pool Finito

2.1 Fluxo de Pagamento

``` 1. Jogador aperta GIRAR └─> Envia aposta (R$ 2,00) + ID da máquina

  1. Servidor Lottopar: ├─> Verifica saldo da máquina ├─> Sorteia prêmio (ex: R$ 40,00 = 20x aposta) ├─> Envia código criptografado com prêmio └─> Registra em log de auditoria

  2. Cliente VLT: ├─> Recebe resposta do servidor ├─> Decodifica prêmio ├─> Passa para Outcome Builder └─> Outcome Builder gera combinação de símbolos

  3. Reel Engine: ├─> Para rolos de forma a exibir símbolos ├─> Toca animações de ganho └─> Atualiza saldo do jogador ```

2.2 Exemplo Prático: Fluxo de Prêmio R$ 40

Input do Servidor: OUTCOME_ID: 0x7F2E, PRIZE: 4000 (em centavos), BONUS_TRIGGER: NO

Outcome Builder Logic: ``` OUTCOME_BUILDER CLASS: INPUT: prize = 4000 (centavos) INPUT: rtp_mode = "94" INPUT: reel_strips = [virtualReels1, ..., virtualReels5]

ALGORITHM: possible_combinations = findAllCombinations(reel_strips) // Retorna todas as combinações que pagam 4000 // Exemplo: [WildWildOnçaJacaré, WildArara...]

IF possible_combinations.isEmpty():
  // Fallback: Decomposição com Scatters + Bônus
  TRIGGER_BONUS = TRUE
  additional_prize_from_bonus = 4000 - base_win
ELSE:
  selected = possible_combinations[random(0, length)]
    // Seleciona uma combinação válida
  RETURN selected  // Ex: [2, 12, 18, 5, 8] = índices de paradas

```


3. Reel Strip Configuration

3.1 Layout Geral (1024 Ways)

3.2 Distribuição Detalhada (Configuração RTP 94%)

Rolo 1 (Iniciador - 40 Paradas)

Índice Símbolo Função
00-08 Scatter (Moeda) Gatilho de bônus
09-18 Símbolos Baixos (9-A) Preenchimento
19-28 Jacaré/Arara Símbolos médios
29-39 Blanks Espaços vazios

Rolo 2 (Coração - 50 Paradas)

Índice Símbolo Quantidade
00-03 Wild (Onça) 4 paradas
04-05 Wild Duplo (Stacked) 2 paradas
06-15 Scatter (Moeda) 10 paradas
16-35 Símbolos de Valor 20 paradas
36-49 Blanks 14 paradas

Rolo 3 (Coração - 50 Paradas)

Idêntico ao Rolo 2 (simetria para equilíbrio)

Rolo 4 (Coração - 50 Paradas)

Idêntico ao Rolo 2 (densidade máxima de Wilds)

Rolo 5 (Finalizador - 40 Paradas)

Índice Símbolo Quantidade
00-02 Onça (Top) 3 paradas
03-05 Scatter (Moeda) 3 paradas
06-25 Símbolos Médios 20 paradas
26-39 Símbolos Baixos 14 paradas

3.3 Near Miss Engineering

Para implementar "quase-ganho" psicologicamente efetivo: - Rolo 5: Onça é colocada nos índices 00, 18, 35. Então, brancos são colocados em 01, 19, 36. - Resultado: Jogador vê Onça passando frequentemente "quase" na linha de pagamento. - Efeito: Aumenta antecipação de bônus sem alterar RTP.


4. RTP Adjustment Mechanism

4.1 Alteração de Reel Strips por RTP

Configuração 90%: json { "reel_density": { "wild_count": [4, 4, 4, 4, 3], // Wilds reduzidos "scatter_count": [8, 10, 10, 10, 3], // Scatters reduzidos "top_symbol_count": [0, 0, 0, 0, 1], // Onça rara no rolo 5 "retrigger_frequency": "1/25" }, "multiplier_weights": { "wild_multiplier_2x": 0.80, // 80% chance de 2x "wild_multiplier_3x": 0.20 // 20% chance de 3x } }

Configuração 94% (Padrão): json { "reel_density": { "wild_count": [4, 5, 5, 5, 3], // Wilds balanceados "scatter_count": [8, 12, 12, 12, 3], // Scatters equilibrados "top_symbol_count": [0, 0, 0, 0, 2], // Onça mais frequente "retrigger_frequency": "1/18" }, "multiplier_weights": { "wild_multiplier_2x": 0.60, "wild_multiplier_3x": 0.40 } }

Configuração 97%: json { "reel_density": { "wild_count": [4, 6, 6, 6, 3], // Wilds aumentados "scatter_count": [10, 14, 14, 14, 4], // Scatters abundantes "top_symbol_count": [0, 0, 0, 0, 3], // Onça comum "retrigger_frequency": "1/12" }, "multiplier_weights": { "wild_multiplier_2x": 0.40, "wild_multiplier_3x": 0.60 } }

4.2 Hot-swap de Configuração

```csharp public class RTPConfig { public enum RTPlevel { Mode90, Mode94, Mode97 }

public static void LoadRTPMode(RTPlevel mode) { ReelStrips reels = LoadReelsFromFile($"reel_strips_{mode}.bin"); PoolEngine.SetMultiplierWeights(mode); OutcomeBuilder.SetDensity(reels); Logger.Info($"RTP Mode changed to {mode}"); } } ```


5. Máquina de Estados (Game State Machine)

5.1 Estados Principais

┌──────────────┐ │ IDLE │ (Aguardando aposta) └──────┬───────┘ │ Jogador clica GIRAR ▼ ┌──────────────┐ │ SPINNING │ (Rolos girando) └──────┬───────┘ │ Resultado recebido ▼ ┌──────────────┐ │ SHOWWIN │ (Exibindo ganho) └──────┬───────┘ │ ├─────────────────────┐ │ │ ▼ ▼ IDLE ┌───────────────────┐ (Sem bônus) │ FREE_SPINS │ (Bônus ativado) └─────┬─────────────┘ │ ┌───┴────────────────┐ │ │ ▼ ▼ COLLECT_CRYSTAL RETRIGGER_CHECK (Acumular Cristais) (Verificar 3+ Scatters) │ │ └───────┬────────────┘ │ ┌──────┴──────┐ │ │ ▼ ▼ BONUS_END MORE_SPINS (Encerrar) (Adicionar 5 giros)

5.2 Transições de Estado (Pseudo-código)

```csharp enum GameState { Idle, Spinning, ShowWin, FreeSpins, CollectCrystal }

public class GameStateMachine { private GameState currentState = GameState.Idle; private int crystalCount = 0; private int freeSpinsRemaining = 0;

public void OnSpinClicked(decimal bet) {
    if (currentState != GameState.Idle) return;
    currentState = GameState.Spinning;

    // Requisita outcome do servidor
    Outcome outcome = PoolEngine.FetchOutcome(bet);

    // Passa para Outcome Builder
    int[] reelStops = OutcomeBuilder.GetReelStops(outcome.Prize, outcome.RTPMode);

    // Simula giro
    SimulateReels(reelStops);

    // Verifica ganho e bônus
    int winAmount = CalculateWin(reelStops);
    if (outcome.BonusTriggered) {
        currentState = GameState.FreeSpins;
        freeSpinsRemaining = 10;
        crystalCount = 0;
        MessageBox.Show("AMAZÔNIA DESPERTOU!");
    } else {
        currentState = GameState.Idle;
    }
}

public void OnFreeSpinComplete(int[] reelStops) {
    // Verifica Scatters para coleta de cristal
    int scatterCount = CountScatters(reelStops);
    if (scatterCount > 0) {
        crystalCount += scatterCount;
        UpdateCrystalUI(crystalCount);
        CheckSymbolTransformation(crystalCount);
    }

    freeSpinsRemaining--;

    if (freeSpinsRemaining == 0) {
        currentState = GameState.Idle;
        ShowBonusComplete();
    }
    // Se ainda há giros ou retrigger, permanece em FreeSpins
}

private void CheckSymbolTransformation(int crystals) {
    if (crystals >= 4 && crystals < 8) {
        // Estado 1: Mico-Leão → Onça-Pintada
        SymbolMap["MicoLeao"] = SymbolID.Onca;
    } else if (crystals >= 8 && crystals < 12) {
        // Estado 2: Jacaré → Onça-Pintada
        SymbolMap["Jacare"] = SymbolID.Onca;
    }
    // ... etc
}

} ```


6. Outcome Builder Logic (Reverse Scripting)

6.1 Algoritmo de Decomposição

```csharp public class OutcomeBuilder {

public int[] GetReelStops(int prizeInCents, string rtpMode) {
    // Carrega reel strips da configuração RTP
    VirtualReels reels = ReelManager.GetReels(rtpMode);

    // Lista todas as combinações que resultam no prêmio
    List<int[]> validCombinations = new List<int[]>();

    for (int r1 = 0; r1 < reels[0].Count; r1++) {
        for (int r2 = 0; r2 < reels[1].Count; r2++) {
            for (int r3 = 0; r3 < reels[2].Count; r3++) {
                for (int r4 = 0; r4 < reels[3].Count; r4++) {
                    for (int r5 = 0; r5 < reels[4].Count; r5++) {
                        int payResult = CalculatePay(
                            reels[0][r1], reels[1][r2], reels[2][r3],
                            reels[3][r4], reels[4][r5]
                        );

                        if (payResult == prizeInCents) {
                            validCombinations.Add(new int[] { r1, r2, r3, r4, r5 });
                        }
                    }
                }
            }
        }
    }

    // Se nenhuma combinação exata, tenta com bonus
    if (validCombinations.Count == 0) {
        return FallbackBonusDecomposition(prizeInCents);
    }

    // Seleciona aleatoriamente uma das combinações válidas
    Random rand = new Random();
    return validCombinations[rand.Next(validCombinations.Count)];
}

private int CalculatePay(Symbol s1, Symbol s2, Symbol s3,
                         Symbol s4, Symbol s5) {
    // Implementa a tabela de pagamento
    // Verifica 1024 Ways
    int totalWin = 0;

    for (int way = 0; way < 1024; way++) {
        int[] linePositions = GetWayPositions(way);
        if (IsWinningLine(s1, s2, s3, s4, s5, linePositions)) {
            int lineWin = GetLinePayment(s1, s2, s3, s4, s5);
            totalWin += lineWin;
        }
    }

    return totalWin;
}

} ```


7. G2S/SAS Protocol Integration

7.1 Handshake Inicial

``` VLT Terminal → Lottopar Server: CONNECT_REQ { terminal_id: "000001", equipment_name: "Tesouros_da_Amazonia_01", firmware_version: "1.0.0", last_session_id: "2026040312X01" }

Lottopar Server → VLT Terminal: CONNECT_ACK { session_id: "2026040312Y01", config_version: "94", // RTP mode time_sync: 1749120000 } ```

7.2 Transmissão de Resultado

``` VLT Terminal → Lottopar: SPIN_REQUEST { session_id: "2026040312Y01", terminal_id: "000001", wager: 200, // em centavos (R$ 2,00) denomination: 1, // R$ 0,01 game_id: "01_TESOUROS_AMAZONIA", timestamp: 1749120500 }

Lottopar → VLT Terminal: SPIN_RESULT { spin_id: "SPL_20260403_000001_001", prize: 4000, // em centavos (R$ 40,00) bonus_triggered: false, crc: 0x7F2E3A1C, // Checksum de segurança timestamp: 1749120502 } ```

7.3 Auditoria e Logs

VLT → Lottopar (Diáriamente): AUDIT_REPORT { report_date: "2026-04-03", terminal_id: "000001", total_spins: 7560, coin_in: 1512000, // R$ 15.120,00 coin_out: 1422576, // R$ 14.225,76 (94% payout) ggr: 89424, // R$ 894,24 sessions: [ { session_id: "...", spins: 150, result: "balanced" }, ... ] }


8. Hardware Specifications

8.1 Requisitos Mínimos

Componente Especificação
CPU Intel Core i5 ou AMD Ryzen 5 (2.4 GHz+)
RAM 4 GB mínimo, 8 GB recomendado
Storage SSD 256 GB (para cache de reel strips + logs)
Conexão Ethernet 10 Mbps; Fallback WiFi 5GHz
Tela 24" Full HD (1920x1080) ou 4K LCD touch
Audio Speakers stereo 40W com subwoofer
PSU 500W redundante com UPS integrado

8.2 Periféricos Obrigatórios


9. Markov Chain para Bonus Progression

9.1 Matriz de Transição de Estados (Free Spins)

``` Estados: [Estado_0, Estado_1, Estado_2, Estado_3, Estado_4]

Matriz de Transição (RTP 94%): E0 E1 E2 E3 E4 E0 [0.90 0.08 0.015 0.005 0.000] E1 [0.00 0.88 0.10 0.01 0.005] E2 [0.00 0.00 0.85 0.13 0.020] E3 [0.00 0.00 0.00 0.80 0.200] E4 [0.00 0.00 0.00 0.00 1.000] (Absorvente)

Interpretação: - De E0: 90% chance de permanecer (sem coleta), 8% chance de ir para E1 - De E3: 20% chance de atingir o Estado Final (Grande Win) ```

9.2 Simulação de Ciclo

```csharp public class MarkovBonusEngine { private double[][] transitionMatrix = LoadTransitionMatrix(rtpMode); private int currentState = 0; // Começa no Estado 0

public int GetNextState() {
    Random rand = new Random();
    double roll = rand.NextDouble();  // 0.0 to 1.0

    double cumulative = 0.0;
    for (int nextState = 0; nextState < 5; nextState++) {
        cumulative += transitionMatrix[currentState][nextState];
        if (roll <= cumulative) {
            currentState = nextState;
            return nextState;
        }
    }
    return currentState;  // Fallback
}

public void SimulateFreeSpin() {
    int nextState = GetNextState();
    if (nextState >= 1) {
        crystalCollected++;
        ApplySymbolTransformation(nextState);
    }
    // Atualiza UI
}

} ```


10. Near-Miss Engineering

10.1 Estratégia de Visualização

Para aumentar a retenção sem alterar RTP, implementamos "near misses" psicologicamente efetivos:

Scatter (Moeda) Near Miss: ``` Rolo 5 Stops: 00: Onça (Top) 01: Blank 02: Blank 03: Moeda (Scatter) ← Colocado estrategicamente 04: Blank ...

RTP 97%: Moeda é visível em ~40% dos giros (logo acima/abaixo da linha) RTP 90%: Moeda é visível em ~15% dos giros (mais "oculta") ```

Wild Near Miss: Rolo 2-4: Wilds aparecem frequentemente logo após a linha de pagamento Visual: Jogador vê "Wild passou perto" Efeito: Aumenta sensação de "quase vitória" sem alterar prêmios reais

10.2 Frequência de Near Miss


11. C# Code Architecture References

11.1 DLL Principal: VltCore.dll

```csharp namespace Oktop.VLT.Core { public class VltEngine { private PoolFiniteClient poolClient; private ReelEngine reelEngine; private OutcomeBuilder outcomeBuilder; private GameStateMachine stateMachine;

    public void InitializeGame(string gameId, string rtpMode) {
        poolClient = new PoolFiniteClient("https://lottopar.api");
        reelEngine = new ReelEngine(gameId);
        outcomeBuilder = new OutcomeBuilder(rtpMode);
        stateMachine = new GameStateMachine();
    }

    public void OnSpinClicked(decimal bet) {
        if (!stateMachine.CanSpin()) return;

        // 1. Requisita outcome
        Outcome outcome = poolClient.RequestSpin(bet);

        // 2. Constrói combinação visual
        int[] reelStops = outcomeBuilder.GetReelStops(outcome);

        // 3. Executa transição visual
        reelEngine.SpinReels(reelStops);

        // 4. Processa result
        stateMachine.ProcessOutcome(outcome);
    }
}

} ```

11.2 PoolEngine.dll

```csharp public class PoolFiniteClient { private HttpClient client; private string apiUrl;

public Outcome RequestSpin(decimal bet) {
    SpinRequest req = new SpinRequest {
        TerminalId = GetTerminalId(),
        Bet = (int)(bet * 100),  // Converte para centavos
        Timestamp = DateTime.UtcNow
    };

    HttpResponse response = client.Post($"{apiUrl}/spin", req);
    Outcome outcome = Outcome.FromJson(response.Body);

    // Verifica integridade
    if (!ValidateCRC(outcome)) {
        throw new SecurityException("Invalid CRC");
    }

    return outcome;
}

} ```

11.3 OutcomeBuilder.dll

```csharp public class OutcomeBuilder { private VirtualReels reels;

public int[] GetReelStops(Outcome outcome) {
    // Implementação conforme descrito na Seção 6
    List<int[]> validStops = FindAllValidStops(outcome.PrizeInCents);
    return validStops[new Random().Next(validStops.Count)];
}

private List<int[]> FindAllValidStops(int targetPrize) {
    // Busca exaustiva de todas as combinações
    List<int[]> result = new List<int[]>();

    for (int r1 = 0; r1 < reels[0].Length; r1++) {
        for (int r2 = 0; r2 < reels[1].Length; r2++) {
            for (int r3 = 0; r3 < reels[2].Length; r3++) {
                for (int r4 = 0; r4 < reels[3].Length; r4++) {
                    for (int r5 = 0; r5 < reels[4].Length; r5++) {
                        if (CalculatePay(r1, r2, r3, r4, r5) == targetPrize) {
                            result.Add(new int[] { r1, r2, r3, r4, r5 });
                        }
                    }
                }
            }
        }
    }

    return result;
}

} ```


12. Segurança e Integridade

12.1 Proteção de Dados

12.2 Proteção de Código


13. Testes e Validação

13.1 Plano de Testes

  1. Testes de RTP: 500.000 spins em 90%, 94%, 97%
  2. Testes de Bônus: Frequência de Free Spins dentro de margem de ±2%
  3. Testes de Near Miss: Validar visibilidade de símbolos
  4. Testes de Segurança: Tentar manipular outcomes via socket sniffing

13.2 Metricas de Convergência


14. Deployment Checklist


Documento Assinado Digitalmente por: Gerado em: 2026-04-03 Versão: 1.0 Status: Pronto para Testes de QA

Prompts de Geração de Arte IA

Clique em qualquer prompt para copiar. Os prompts abaixo são otimizados para Midjourney v6, DALL-E 3, e Stable Diffusion.

🎨 Cenário Principal
Proporção: 16:9
Professional slot game art, Amazon rainforest at dusk, ultra-detailed environment, immersive 3D background, lush vegetation and natural elements, mysterious, lush, adventurous, cinematic lighting with golden hour sun rays, color palette: emerald green, gold, bronze, depth of field creating focal point on game area, hyper-realistic textures, trending on ArtStation, Unreal Engine 5 quality, vibrant and saturated colors, --ar 21:9 --quality 2 --style raw
Dica: Use --no 'text, watermark, logo' para melhor resultado
🏷️ Logo/Título
Proporção: 16:9
Logo design for "Tesouros da Amazônia", ornate and elegant typography, bold letters with gold leaf embossing, luxurious gradient background transitioning from emerald green to gold, intricate decorative borders with jaguar motifs, 3D dimensional effect with shadow depth, cinematic lighting, professional branding, high contrast, designed for high-visibility gaming cabinet, --ar 16:9 --quality 2 --style raw
Dica: Use --no 'text, watermark, logo' para melhor resultado
🎰 Símbolo 1
Proporção: 1:1
Premium game symbol for slot machine, jaguar creature highly detailed, photorealistic rendering, vibrant colors emphasizing emerald green, gold, bronze, centered composition with transparent background, dramatic lighting with golden highlights, intricate feather/fur textures, 3D depth, game-ready asset, --ar 1:1 --quality 2 --style raw
Dica: Use --no 'text, watermark, logo' para melhor resultado
🎰 Símbolo 2
Proporção: 1:1
Game symbol: rainforest, ornate design with emerald green, gold, bronze color scheme, highly detailed intricate patterns, luxurious appearance, centered on clean background, dimensional shadow effect, professional slot machine graphics, golden accents, --ar 1:1 --quality 2 --style raw
Dica: Use --no 'text, watermark, logo' para melhor resultado
🎰 Símbolo 3
Proporção: 1:1
Collectible symbol: crystal, sparkling crystal or gem-like appearance, emerald green and gold dominant colors, glowing effect with light rays, highly detailed with reflective surfaces, centered composition, professional gaming asset quality, --ar 1:1 --quality 2 --style raw
Dica: Use --no 'text, watermark, logo' para melhor resultado
🎰 Símbolo 4
Proporção: 1:1
Bonus trigger symbol, vines, animated energy radiating from center, multiple layers of glow effects in bronze, ornate frame decoration, detailed fine art illustration, professional casino game quality, shimmering and ethereal, --ar 1:1 --quality 2 --style raw
Dica: Use --no 'text, watermark, logo' para melhor resultado
🎰 Símbolo 5
Proporção: 1:1
Premium scatter symbol, luxurious golden coin with exotic birds imagery, embossed surface detail, reflection and dimension, surrounded by floating particles and light, rich emerald green, gold, bronze palette, high-end game graphics, professional quality, --ar 1:1 --quality 2 --style raw
Dica: Use --no 'text, watermark, logo' para melhor resultado
🎁 Tela de Bônus
Proporção: 16:9
Bonus round screen for slot game, explosive energy and celebration theme, multiple layers of special effects, emerald green, gold, bronze dominant colors, dramatic lighting with particle effects, progress bars and multiplier counters visible, luxurious animation frames, cinematic composition, game-ready quality, professional casino graphics, --ar 16:9 --quality 2 --style raw
Dica: Use --no 'text, watermark, logo' para melhor resultado
🖥️ Mockup UI
Proporção: 16:9
Complete game UI mockup for slot machine cabinet, professional layout with reels center stage, emerald green, gold, bronze theme throughout, game statistics visible (RTP, lines, bet), ornate frame decoration, luxury gaming interface, clear typography, buttons and controls well-positioned, premium aesthetic, high contrast readability, arcade cabinet quality, --ar 16:9 --quality 2 --style raw
Dica: Use --no 'text, watermark, logo' para melhor resultado
Tela de Carregamento
Proporção: 21:9
Splash art loading screen for slot game, dramatic cinematic scene featuring jaguar, intense mysterious, lush, adventurous atmosphere, emerald green, gold, bronze color palette, volumetric lighting effects, large title text with "Tesouros da Amazônia", game studio logo placement, trending on gaming platforms, highly detailed and professionally rendered, advertisement-quality, --ar 21:9 --quality 2 --style raw
Dica: Use --no 'text, watermark, logo' para melhor resultado