Jogo #09

Churrasco Premiado

Volatilidade
Grid
RTP

Game Design Document (GDD)

Churrasco Premiado (Jogo #09)

Versão: 1.0 Data: 2026-04-03 Mercado: VLT Paraná / Lottopar Referência: Lucky Larry's Lobstermania (IGT) Tema: Churrasco de Domingo, Samba, Caipirinha e Carnes Nobres


1. Visão Geral

Churrasco Premiado foca em uma mecânica de bônus interativa conhecida como Pick & Win (Escolha e Ganhe). O jogo apela à psicologia do "controle": o jogador acredita que sua habilidade em escolher o espeto certo determina sua sorte.

Este jogo destaca-se por: - Pick Bonus Interativo (Churrasqueira com 12 espetos) - Multiplicadores Ocultos ("Tempero Especial") - Mecânica de Ilusão de Escolha (Decomposição reversa) - Tema Leve e Divertido (Diferencia do portfólio épico) - Frequência de Bônus Moderada (1 em 60-80 giros)


2. Estrutura de Apostas

Parâmetro Valor
Grid 5x3 (15 posições)
Linhas de Pagamento 25 Fixas
Aposta R$ 0,02 a R$ 0,10 por linha
Wild O Churrasqueiro (substitui tudo)
Scatter Saco de Carvão "Brasa Quente" (gatilho bônus)

3. Tabela de Símbolos

3.1 Símbolos Principais

Símbolo Função Prêmio (3x)
Churrasqueiro (Wild) Substitui; Paga máximo 1000x
Picanha no Prato Alto 500x
Coração de Frango Alto 250x
Linguiça Toscana Alto 150x
Pão de Alho Médio 75x
Caipirinha Médio 50x
Vinagrete Médio 25x
A, K, Q, J Baixo (molhos/guardanapos) 10x
Brasa Quente (Scatter) Gatilho: 3 = Bônus

4. Mecânica de Bônus: "Pick & Win"

4.1 Ativação

4.2 Estrutura de Espetos

Tipo de Espeto Probabilidade (RTP 94%) Valor Médio Multiplicador
Queimado 20% 2x-5x Aposta 1x (padrão)
No Ponto 50% 10x-20x Aposta 1x ou 2x
Premium (Picanha) 25% 30x-50x Aposta 2x ou 3x
Espeto de Ouro (King) 5% 100x Aposta 5x ou 10x

4.3 O "King Skewer"

Se o jogador encontra o "Espeto de Ouro": 1. Ele ganha o prêmio daquele espeto 2. Automaticamente ganha TODOS os outros espetos não escolhidos 3. Efeito visual: Todos os 12 espetos se abrem simultaneamente


5. Integração com Pool Finito (Lottopar)

5.1 Algoritmo de Decomposição Reversa

Cenário: Servidor entrega bilhete de R$ 120,00

``` Step 1: Software consulta Tabela de Scripts para R$ 120

Cenários Possíveis:

Script A (Sem Multiplicador): - Espeto 1: R$ 40 - Espeto 2: R$ 40 - Espeto 3: R$ 40 - Total: R$ 120 (3 escolhas de valor igual)

Script B (Com Multiplicador): - Espeto 1: R$ 10 - Espeto 2: R$ 10 - Espeto 3: R$ 10 + Molho Especial (4x) - Cálculo: 10 + 10 + (10 * 4) = R$ 60? Não bate... - Ajuste: Espeto 3 = R$ 50 + Molho (2.4x) = R$ 120

Script C (King Skewer): - Espeto Principal: R$ 120 - Todos outros: R$ 0 ou "Queimado" - Resultado final: R$ 120 ```

5.2 Técnica de "Reveal"

Após escolher 3 espetos, o jogo revela os 9 não escolhidos:

Regra Psicológica: 1. O jogo revela pelo menos UM espeto maior do que os ganhos 2. Exemplo: Jogador ganhou R$ 40, R$ 40, R$ 40 Jogo revela: R$ 100, R$ 150, R$ 80, ... 3. Efeito: "Ah, se tivesse escolhido aquele!" 4. Resultado: Jogador volta para tentar "acertar"


6. Análise Matemática Detalhada (RTP 94%)

6.1 Distribuição de Valores (Pick Weights)

Tipo Visual Valor (Créditos) Peso no "Reveal" (RTP 94%) Função
Linguiça/Pão 2x-5x Aposta 40% Consolação (Fodder)
Coxa Frango 8x-15x Aposta 30% Manutenção saldo
Alcatra 20x-40x Aposta 20% "Bom Churrasco"
Picanha 50x-100x Aposta 8% Alvo do jogador
Espeto de Ouro Win All + Multiplier 2% Jackpot

6.2 Reel Stops para Gatilho

Frequência de entrada no bônus: 1 em 60-80 giros

Rolo Total Stops Scatter (Brasa) Distribuição
Rolo 1 60 4 (6.7%) Uniforme
Rolo 2 60 4 (6.7%) Uniforme
Rolo 3 60 4 (6.7%) Uniforme
Rolo 4 60 0 (Bônus apenas R1-3)
Rolo 5 60 0 (Bônus apenas R1-3)

7. Diferenciação de RTP

7.1 RTP 90% - "Rua"

7.2 RTP 94% - "Padrão"

7.3 RTP 97% - "VIP"


8. Simulação Financeira Mensal

Métrica Valor
Volatilidade Baixa-Média
Hit Frequency 35% (base)
Coin-In Mensal R$ 648.000,00
GGR (6%) R$ 38.880,00
Frequência Bônus 1 em 70 giros

8.1 Características Operacionais


9. Design de Áudio e Atmosfera

9.1 Ambiente Sonoro

Fase Áudio Descrição
Giro Base Som de faca sendo afiada ("Tching!") Tímido
Parada Som de batida em tábua de carne Satisfatório
Entrada Bônus Transição para festa de quintal Animado
Seleção Espeto "Tssss!" (gordura pingando) Interativo
Vitória Alta Pagode animado + "Aí sim, patrão!" Celebrativo

9.2 Elementos Visuais


10. Compliance e Notas Lottopar

10.1 Requisitos Regulatórios

10.2 Complexidade Técnica

Este jogo apresenta desafio regulatório único: dar ao jogador sensação de escolha livre quando o resultado é pré-determinado. A auditoria deve validar que:

  1. Independentemente dos 3 espetos escolhidos, soma é sempre igual ao prêmio
  2. Os 9 não-escolhidos têm distribuição "justa" (não apenas valores baixos)
  3. "King Skewer" é verdadeiramente raro (< 3%)

11. Especificações Técnicas Resumidas

Aspecto Detalhe
Engine Pick & Win + Pool Finito
Grid 5x3 (jogo base)
Linhas 25 (fixas)
Bônus 12 Espetos interativos
Hit Frequency 35% (sem bônus)
RTP Range 90% a 97%
Volatilidade Baixa-Média

Fim do GDD - Churrasco Premiado

Versão 1.0 | Oktop.AI | 2026-04-03

Technical Design Document (TDD)

Churrasco Premiado (Jogo #09)

Versão: 1.0 Data: 2026-04-03 Mercado: VLT Paraná / Lottopar Compliance: GLI-11, SAS 7.03, G2S 1.4


1. Arquitetura Geral

Churrasco Premiado utiliza uma arquitetura de Pick Bonus com Decomposição Reversa e Ilusão de Escolha.

[Servidor Lottopar] ↓ Bilhete: R$ 120 [VLT Client] → Reel Engine (5x3) → Detecta 3+ "Brasa Quente" (Scatter) → Ativa Bonus Screen (Churrasqueira) → Script Builder: Cria 12 valores que somam R$ 120 → Armazena randomicamente em 12 posições → Jogador clica 3 espetos → Qualquer clique revela valor pré-determinado → Ao fim, revela todos os 9 não-escolhidos


2. Pick Bonus Decomposition Engine

2.1 Algoritmo de Decomposição

``` FUNCTION GeneratePickBonusOutcome(prize_amount, rtp_profile): // Step 1: Seleciona script de valores para 12 espetos script_template = SelectScriptByPrize(prize_amount, rtp_profile)

// Step 2: Gera 12 valores que somam exatamente prize_amount
values = []

IF rtp_profile == 90:
    // RTP 90: Sem multiplicadores, valores planos
    values = GenerateFlatValues(prize_amount, count=12,
                                min=5*unit, max=80*unit)
ELSE IF rtp_profile == 94:
    // RTP 94: Alguns multiplicadores (2x, 3x)
    values = GenerateValuesWithMultipliers(prize_amount, count=12,
                                          flat_rate=0.85,
                                          multiplier_rate=0.15)
ELSE:  // RTP 97
    // RTP 97: Multiplicadores frequentes
    values = GenerateValuesWithMultipliers(prize_amount, count=12,
                                          flat_rate=0.70,
                                          multiplier_rate=0.30)

// Step 3: Embaralha valores aleatoriamente
shuffled_values = ShuffleArray(values)

// Step 4: Armazena em 12 posições
FOR i = 1 TO 12:
    pick_slot[i] = {
        position: i,
        value: shuffled_values[i],
        revealed: FALSE
    }

RETURN pick_slot[]

END FUNCTION ```

2.2 Exemplo Prático

``` Input: prize_amount = R$ 120, rtp_profile = 94

Step 1: Script para R$ 120 com 94% RTP Usa template: "3 altos + 9 variados"

Step 2: Gera 12 valores Opção A (sem multiplicador): 40 + 40 + 40 + 0 + 0 + 0 + ... = R$ 120

    Opção B (com multiplicador):
      20 + 20 + 20 + 10 + 10 + (10 * 2x) + 0 + ... = R$ 120

    Seleciona Opção A (mais comum em RTP 94)

Step 3: Embaralha Original: [40, 40, 40, 0, 0, 0, ...] Embaralhado: [0, 40, 0, 0, 40, 0, ..., 40, 0, 0]

Step 4: Armazena em posições Espeto 1: R$ 0 Espeto 2: R$ 40 Espeto 3: R$ 0 Espeto 4: R$ 0 Espeto 5: R$ 40 ... Espeto 11: R$ 40 Espeto 12: R$ 0 ```


3. Reel Strip Configuration

3.1 Estrutura de Fitas (60 Paradas)

Rolos 1, 2, 3 (Têm Scatter)

Índice | Símbolo | Frequência ──────────────────────────────────────────── 00-03 | BRASA_QUENTE (Scatter) | 4 04-09 | Linguiça Toscana | 6 10-14 | Pão de Alho | 5 15-19 | Caipirinha | 5 20-24 | Vinagrete | 5 25-29 | A, K, Q, J | 5 30-34 | Churrasqueiro (Wild) | 5 35-39 | Picanha no Prato | 5 40-44 | Coração de Frango | 5 45-59 | Diversos + Brancos | 15

Rolos 4, 5 (Sem Scatter - Apenas Símbolos Comuns)

Índice | Símbolo | Frequência ──────────────────────────────────────────── 00-09 | A, K, Q, J | 10 10-19 | Vinagrete | 10 20-29 | Pão de Alho | 10 30-39 | Caipirinha | 10 40-49 | Picanha no Prato | 10 50-59 | Diversos + Brancos | 10

3.2 Near Miss Técnico

Para aumentar tensão: - Se jogador consegue Scatter nos Rolos 1 e 2, o Rolo 3 faz "spin longo" (+2 segundos) - Parada do Rolo 3 é ponderada para cair imediatamente ao lado do Scatter em 40% das falhas - Efeito: "Quase acionava o bônus"


4. Pick Slot Reveal System

4.1 Função de Clique

``` FUNCTION PlayerClicksPickSlot(slot_number): // Valida que jogador ainda tem escolhas choices_remaining = COUNT(pick_slot WHERE revealed = FALSE)

IF choices_remaining <= 0:
    RETURN {error: "No more choices"}

// Marca como revelado
pick_slot[slot_number].revealed = TRUE

// Busca valor pré-armazenado
prize = pick_slot[slot_number].value

// Anima revelação
AnimateSlotReveal(slot_number, prize)

// Acumula ganhos
current_bonus_total += prize

// Verifica se ainda há escolhas
remaining = COUNT(pick_slot WHERE revealed = FALSE)

IF remaining == 0:
    TRIGGER RevealUnselectedSlots(prize_amount)

RETURN {
    revealed_value: prize,
    remaining_choices: remaining,
    total_so_far: current_bonus_total
}

END FUNCTION ```

4.2 Reveal de Espetos Não-Escolhidos

``` FUNCTION RevealUnselectedSlots(original_prize): unselected = []

FOR i = 1 TO 12:
    IF pick_slot[i].revealed == FALSE:
        unselected.Add(pick_slot[i])

// REGRA OURO: Ao menos um não-escolhido deve ser maior
max_chosen = MAX(ALL chosen values)

IF NOT ANY(unselected.value > max_chosen):
    // Força um valor alto no reveal
    best_unselected = unselected[0]
    other_sum = SUM(unselected[1..12].values) - best_unselected.value
    best_unselected.value = original_prize - other_sum + (max_chosen * 1.5)

// Anima reveal de todos simultaneamente
AnimateFullReveal(unselected)

// Efeito psicológico: "Se tivesse escolhido..."
PLAY_AUDIO("regret_sound")
DISPLAY message: "Que sorte! Viu que tinha um melhor?"

END FUNCTION ```


5. Multiplicador Oculto ("Molho da Casa")

5.1 Mecânica

``` FUNCTION ApplyMultiplierWhenFound(pick_slot_index): slot = pick_slot[pick_slot_index]

// Slot pode conter pote de molho junto
IF slot.contains_multiplier:
    multiplier = slot.multiplier  // 2x, 3x, 5x

    // Multiplicador se aplica a TODOS os prêmios acumulados até este
    accumulated_so_far = SUM(pick_slot[1..pick_slot_index].values)

    multiplied_total = accumulated_so_far * multiplier
    bonus_credit = multiplied_total - accumulated_so_far

    PLAY_AUDIO("multiplier_found")
    ANIMATE_SAUCE_BOTTLE()

    RETURN {
        multiplier_found: multiplier,
        bonus_credit: bonus_credit,
        new_total: multiplied_total
    }
ELSE:
    RETURN {multiplier_found: FALSE}

END FUNCTION ```

5.2 Distribuição de Multiplicadores (RTP 94%)

``` TABLE Multiplier_Distribution ( multiplier INT, appearance_rate DECIMAL(5,4), behavior STRING )

Data (RTP 94%): (1, 0.8500, 'Sem multiplicador'), (2, 0.1500, 'Molho Vinagrete: 2x'), (3, 0.0500, 'Molho de Alho: 3x'), (5, 0.0100, 'Pimenta Malagueta: 5x'), ```


6. Pool Finito Integration

6.1 Validação de Soma

``` FUNCTION ValidatePickBonusSum(selected_values, original_prize): sum_selected = SUM(selected_values)

IF sum_selected != original_prize:
    // ERROR: Decomposição não bateu
    ALERT "Pick Bonus Sum Validation Failed"
    LOG_EVENT {
        type: "CRITICAL",
        expected: original_prize,
        actual: sum_selected,
        difference: (original_prize - sum_selected)
    }

    // Fallback: Calcula diferença e apresenta como "Surprise Bonus"
    difference = original_prize - sum_selected
    IF difference > 0:
        DISPLAY "BÔNUS MISTERIOSO! +R$ {difference}"
    ELSE:
        // Ajusta nos próximos giros (RTP Ledger)
        ADD_TO_RTP_LEDGER(-difference)

RETURN (sum_selected == original_prize)

END FUNCTION ```


7. RTP Adjustment Mechanism

7.1 RTP Ledger para Over-Pay

Se na tela de bônus o jogador ganhar mais do que o prêmio original:

``` EXAMPLE: Pool Prize: R$ 100 Espetos escolhidos: R$ 30 + R$ 50 + R$ 25 = R$ 105 Diferença: +R$ 5 (Over-pay)

AÇÃO: ADD_TO_RTP_LEDGER(session_id, -5) Nos próximos 100 giros, máquina reduz ligeiramente outros prêmios para compensar o over-pay de R$ 5 ```

7.2 Tabela de Ledger

TABLE RTP_Ledger ( ledger_id INT PRIMARY KEY, session_id INT64, game_id INT (= 09), adjustment_amount DECIMAL(10,2), -- negativo = reduz reason VARCHAR(100), -- "Over-Pay from Pick Bonus" applied_spins INT, compensated_spins INT, timestamp DATETIME )


8. G2S/SAS Integration

8.1 SAS Configuration

SAS_CONFIG: machine_id: 0x0009 denomination: BRL max_bet: 25 (0.10 * 25 linhas * 10) max_win: 1000000 (Pick Bonus pode ser explosivo com King Skewer) game_features: 0x0C // Bonus + Interactive

8.2 Pick Bonus Polling

Poll Meaning Frequency
01 Machine Status (In Bonus?) 5s
86 Bonus Progress (Choices Remaining) 10s
17 Final Payout from Bonus 30s

9. Hardware Requirements

Component Specification
CPU Intel i3 (menos crítico)
RAM 4 GB
GPU GTX 950 (animações pick)
Touch Screen Responsivo (< 100ms)
FPS 30fps (pick não precisa 60fps)

10. Seed Management

10.1 RNG para Pick Slot Allocation

``` FUNCTION GeneratePickBonusSeeds(parent_seed): state = RNG_Initialize(parent_seed)

// Cria 3 seeds: um para cada escolha
FOR choice_num = 1 TO 3:
    choice_seed[choice_num] = state.NextInt(2^32)

// Seed final para reveal dos não-escolhidos
reveal_seed = state.NextInt(2^32)

RETURN {
    choice_seeds: choice_seed[],
    reveal_seed: reveal_seed
}

END FUNCTION ```

10.2 Audit Trail

TABLE Pick_Bonus_Audit ( bonus_id INT PRIMARY KEY, session_id INT64, parent_seed BIGINT, choice_seeds VARCHAR(100), -- [seed1, seed2, seed3] reveal_seed BIGINT, pick_slots_original JSON, -- Estado original de 12 espetos pick_slots_chosen JSON, -- Quais 3 foram escolhidos pick_slots_revealed JSON, -- Estado após reveal total final_payout DECIMAL(10,2), original_prize DECIMAL(10,2), difference DECIMAL(10,2), -- Payout - Original timestamp DATETIME )


11. Error Handling

``` IF player_takes_too_long: // Timeout em Pick Screen (ex: 60 segundos) AUTO_SELECT next random unselected slot CONTINUE

IF touch_screen_malfunction: // Fallback para botões físicos SWITCH_TO_BUTTON_MODE ALERT "Touch Screen Error"

IF reveal_calculation_fails: // Se suma de 12 valores não bater FORCE_PAYOUT = original_prize LOG_CRITICAL_ERROR REQUEST_ADMIN_AUDIT ```


12. Validation Tests

ID Test Expected Status
T001 3 picks Sum = prize
T002 King Skewer found All slots auto-pay
T003 Multiplier found Correct multiplication
T004 Over-pay RTP Ledger updated
T005 Reveal unselected At least 1 > max chosen
T006 Seed tracking Fully auditable

Fim do TDD - Churrasco Premiado

Versão 1.0 | Oktop.AI | 2026-04-03

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, Traditional Brazilian barbecue gathering, ultra-detailed environment, immersive 3D background, lush vegetation and natural elements, festive, rustic, delicious, cinematic lighting with golden hour sun rays, color palette: smoky brown, red meat tones, charcoal gray, 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 "Churrasco Premiado", ornate and elegant typography, bold letters with gold leaf embossing, luxurious gradient background transitioning from smoky brown to red meat tones, intricate decorative borders with barbecue grill 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, barbecue grill creature highly detailed, photorealistic rendering, vibrant colors emphasizing smoky brown, red meat tones, charcoal gray, 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: skewers, ornate design with smoky brown, red meat tones, charcoal gray 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: flames, sparkling crystal or gem-like appearance, smoky brown and red meat tones 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, gaucho culture, animated energy radiating from center, multiple layers of glow effects in charcoal gray, 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 beer glasses imagery, embossed surface detail, reflection and dimension, surrounded by floating particles and light, rich smoky brown, red meat tones, charcoal gray 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, smoky brown, red meat tones, charcoal gray 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, smoky brown, red meat tones, charcoal gray 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 barbecue grill, intense festive, rustic, delicious atmosphere, smoky brown, red meat tones, charcoal gray color palette, volumetric lighting effects, large title text with "Churrasco Premiado", 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