9 Game Design
Caio Simioni edited this page 2026-10-12 21:49:34 -03:00
This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Game Design (GDD v0.2)

v0.2 — decisões confirmadas pelo dono do projeto: primeira pessoa (FPS), militares contra forças hostis, mapa com caixas de cobertura. Objetivo estratégico: servir de modelo reutilizável para outros jogos de tiro (Arquitetura, ADR-009).

v0.4 (2026-10-12): o primeiro inimigo implementado é o zumbi (ADR-012), com rounds até o 50; Esc abre opções/pausa (ADR-014). As seções sobre o fuzileiro hostil descrevem um inimigo futuro. Números em vigor: Balanceamento.

1. Visão

Survivors é um jogo de tiro em primeira pessoa, de sobrevivência por rounds. Você é um soldado numa arena militar fechada. A cada round uma porta se abre e forças hostis entram atirando. Abater inimigos rende pontos; pontos compram armas e munição na Armaria. A partida termina quando sua vida chega a zero. A meta é chegar o mais longe possível.

Pilares

  1. Fluido — 60 FPS, resposta imediata, reinício em segundos.
  2. Simples — uma arena, quatro armas, um tipo de inimigo no início. Regras que cabem numa frase.
  3. Cobertura importa — o inimigo atira de volta; caixas e contêineres bloqueiam tiros e são a ferramenta de sobrevivência.
  4. Escolha significativa — o único "upgrade" é o que comprar e quando; economia apertada de propósito.
  5. Reutilizável — regras e números são dados; o núcleo de tiro (movimento, armas, dano, IA, rounds, loja) é separado do conteúdo do jogo.

Fora de escopo (MVP)

Multiplayer, campanha, inventário complexo, ragdoll, destruição, sprint, vários mapas, veículos.

2. Loop central

┌────────────────────────────────────────────────────────┐
│ Intermissão (10 s) ──► Porta abre ──► Round ativo      │
│   ▲  compra na Armaria            hostis entram        │
│   │                               use cobertura/atire  │
│   └──── todos abatidos ◄──────────  ganhe pontos       │
└────────────────────────────────────────────────────────┘
        HP = 0 em qualquer momento ──► Game Over

3. Câmera e controles (ADR-002 — aceita)

  • Câmera: primeira pessoa, altura dos olhos 1,7 m, FOV 70° (ajustável), cursor travado, arma visível na mão (viewmodel).
  • Mira: o centro da tela (retícula). Tiro sai da câmera.
Ação Entrada
Mover W A S D
Olhar Mouse (sensibilidade ajustável)
Atirar / golpear Botão esquerdo (segurar = automático nas armas automáticas)
Recarregar R
Trocar arma 1 2 ou roda do mouse (até duas armas)
Faca toque em V = golpe rápido e volta para a arma · segurar V (0,3 s) = equipa a faca, que fica na mão até escolher uma arma (1/2/scroll)
Pular / agachar Espaço / Ctrl (ou C)
Correr segurar Shift (gasta fôlego)
Interagir / comprar F
Opções / pausa Esc (voltar ao jogo, menu principal ou sair)
Resumo da partida segurar TAB (kills, dinheiro, pontos, tiros, tempo)
Debug FPS F3
Terminal (dev) ' abre/fecha · comandos: help, give <arma>, ammo, money <valor>, kill [n], stats, weapons, round <n>, spawn [n], killall, god, pos, tp <x> <z>, menu, play, quit

Pulo de ~1 m (não sobe nas caixas de 1,2 m) e agachar (olhos a 1,0 m: as caixas baixas passam a cobrir o jogador por inteiro; velocidade × 0,5). Corrida (v0.1.3): segurar Shift andando para a frente dá × 1,5 de velocidade enquanto houver fôlego (4 s); a barra de fôlego fica abaixo da vida no HUD e volta sozinha ao parar de correr.

Inventário (estilo Apex)

O jogador carrega até duas armas e a faca, que não ocupa slot. Pegar uma terceira arma troca a que está na mão. HUD no canto inferior esquerdo: munição pente / reserva, nome da arma atual, os dois slots e a faca.

Opções e atalhos

A tela OPCOES (menu inicial) permite remapear as 12 ações de teclado e ajustar o vídeo: modo de tela (janela / tela cheia), resolução, VSync, FOV (55–100) e sensibilidade do mouse (0,2x–3,0x). As teclas da tabela acima são os padrões. Tudo é salvo em %APPDATA%\Survivors\settings.cfg. Atirar (botão esquerdo) e a tecla do terminal (') são fixos por enquanto.

4. Jogador

Atributo Valor
Vida máxima 100
Regeneração começa após 5 s sem dano; 25 HP/s
Velocidade 5,0 m/s
Colisão cápsula 0,4 m de raio × 1,8 m
Início Faca + Pistola (pente cheio + reserva cheia), 0 pontos

5. Armas

Todas na mesma tabela (data-driven). Números finais em Balanceamento. Todo tiro é um projétil (voa em linha reta e é testado contra os volumes dos inimigos e a geometria do mapa — ADR-015; a faca acerta na hora). Tiro na cabeça: dano × 2.

Slot Arma Tipo Dano Cadência Pente / Reserva Recarga Alcance Preço
1 Faca Melee, cone frontal 55 1,7/s — — 1,9 m grátis
2 Pistola Projétil, semi-auto 25 4/s 12 / 96 1,3 s 60 m grátis
3 Escopeta 8 projéteis por disparo 8 × 14 1,2/s 6 / 42 2,4 s 15 m efetivos 500
4 Fuzil Projétil, automático 20 10/s 30 / 180 2,0 s 80 m 1000

Papéis:

  • Faca — nunca fica sem munição; recompensa risco (pontos maiores). Plano B.
  • Pistola — precisa e barata; carrega o início.
  • Escopeta — dano explosivo de perto; punida à distância.
  • Fuzil — dano contínuo e longo alcance; consome munição rápido e perde precisão em rajada longa.

Regras gerais:

  • Spread: desvio angular; o fuzil acumula (2° → 5°) e recupera em 0,3 s sem atirar. Parado/mirando reduz; recuo visual leve.
  • Recarga: trocar de arma cancela. Munição do pente é mantida.
  • Vazio: clicar recarrega se houver reserva; sem reserva, troca para a faca.
  • Cobertura: tiros param no primeiro obstáculo (parede, caixa, contêiner). Não há penetração no MVP.

6. Inimigos — Forças hostis (ADR-007 — aceita)

Fuzileiro hostil (MVP)

Soldado inimigo com fuzil. Avança até ter linha de visada a uma distância confortável, então para (ou desloca-se de lado) e dispara rajadas.

Atributo Round 1 Escala
Vida 60 × 1,10 por round (tiro na cabeça × 2)
Velocidade 3,0 m/s + 0,1 m/s por round, teto 4,5
Distância preferida 10–16 m fixa
Rajada 3 tiros, 0,15 s entre tiros fixa
Pausa entre rajadas 1,5 s fixa
Dano por tiro 6 fixo
Imprecisão cone de 4° fixa
Colisão cápsula 0,4 m × 1,8 m (cabeça = esfera 0,15 m)

Comportamento:

  • Sem linha de visada → move-se em direção ao jogador (contornando obstáculos).
  • Com linha de visada e dentro da distância → mantém posição, mira com atraso (0,4 s de "telegrafia") e dispara.
  • Muito perto (< 6 m) → recua para a distância preferida.
  • Mantém separação dos demais; os tiros dos inimigos também são bloqueados por cobertura.
  • Feedback ao jogador: traçante visível, som, e indicador de direção de dano no HUD.

Futuros (M3)

Rusher corpo a corpo, Granadeiro (arremesso), Pesado (blindado, lento), Atirador de elite (dano alto, telegrafia longa), Chefe a cada 5 rounds.

7. Rounds

Para o round N (começando em 1):

Parâmetro Fórmula
Inimigos no round 6 + 4·(N−1)
Vivos simultâneos (teto) min(16, 6 + 2·N)
Vida do inimigo 60 · 1,10^(N−1) (arredondar)
Velocidade min(3,0 + 0,1·(N−1), 4,5)
Intervalo entre spawns max(0,8, 2,5 − 0,1·(N−1)) s
Bônus ao limpar 50 + 25·N pontos

Spawn: um inimigo por vez logo à frente da Porta, respeitando o teto de vivos. O round termina quando todos foram gerados e abatidos. Tabela dos 10 primeiros rounds: Balanceamento.

8. Economia

Evento Pontos
Acertar um inimigo +10 (tiro na cabeça +20)
Abater +60
Abater com faca +130
Limpar round 50 + 25·N
Compra Preço
Escopeta 500
Fuzil 1000
Munição (reserva cheia) — Pistola / Escopeta / Fuzil 60 / 100 / 150

Metas de ritmo (validar em playtest): escopeta ao fim do round 1–2; fuzil no round 3–4; necessidade real de munição no round 4+.

9. Mapa

Arena quadrada 40 × 40 m (x, z ∈ [−20, 20]), paredes de 4 m. O jogador nasce no centro (0, 0), de frente para a porta.

                 N  (−Z)
   ┌──────────────[ PORTA ]──────────────┐
   │                 ▼ spawn             │
   │   ▓▓▓▓     ▒▒          ▒▒    ▓▓▓▓   │
   │                                     │
   │       ▒▒                 ▒▒         │
 O │                 ☻                   │ L
   │       ▒▒                 ▒▒         │
   │                                     │
   │   ▓▓▓▓      ▒▒    ▒▒       ▓▓▓▓    │
   │ ┌ARMARIA┐                           │
   └─┴───────┴───────────────────────────┘
                 S  (+Z)
   ▓ = contêiner (alto, 6×2,4×2,4 m)   ▒ = caixa (baixa, 2×1,2×1,2 m)
Elemento Posição (aprox.) Notas
Porta de spawn parede norte, centro (0, −20), 4 m Fecha/abre por round; spawn em (0, −18)
Armaria canto sudoeste, x∈[−19,−9], z∈[10,19] 3 balcões (1 m de altura): Pistola/munição, Escopeta, Fuzil
Contêineres 4, nos cantos internos (±14, ±10) Cobertura total: escondem o jogador por inteiro
Caixas 8, dispostas em ± 7 m e centro-sul Cobertura baixa (1,2 m): protege o corpo, expõe a cabeça; também serve de apoio

Regras de nível:

  • Sempre existe uma cobertura a ≤ 6 m de qualquer ponto da arena.
  • Os inimigos usam as mesmas coberturas para bloquear a linha de tiro; não se escondem (MVP).
  • A Armaria fica longe da porta (~38 m): comprar exige se expor e voltar.

10. Interface

  • Marcador de acerto: um X em volta da retícula — branco ao acertar, amarelo ao matar, vermelho ao matar com tiro na cabeça (o X fica um pouco maior em tiros na cabeça).
  • HUD: retícula central; vida (inferior esquerdo); arma e munição pente / reserva (inferior direito); pontos (superior direito); round (superior central).
  • Indicador de dano direcional (arco vermelho na borda, apontando o atirador) e vinheta ao ficar com pouca vida.
  • Prompt contextual: "[F] Comprar Escopeta — 500".
  • Telas: Menu → Jogo → Game Over (round, abates, pontos, recorde) → reiniciar.

11. Estilo visual e áudio

  • Visual: low-poly facetado, paleta militar (oliva, cáqui, cinza-chumbo); inimigos com acento vermelho/escuro para leitura.
  • Iluminação: luz direcional + ambiente; sombras simples. Prioridade: legibilidade e desempenho.
  • Áudio (M2): tiro por arma, recarga, hit/headshot, passos, morte, compra, porta, tiros inimigos com direção.

12. Condições de fim e métricas

  • Derrota: HP ≤ 0.
  • Sucesso (por partida): round alcançado, abates, pontos. Recorde local salvo.
  • Metas técnicas: 60 FPS com 16 inimigos vivos em GPU integrada; reinício < 2 s; input-to-motion no mesmo frame.