← Todos os projetos paralelos
Game2026 · Em andamento

ZumbiPizza — Slice & Survive

Jogo co-op de pizza com zumbis feito em Unity, com multiplayer via FishNet.

ZumbiPizza — Slice & Survive: imagem de capa do projeto
TipoGame
EstadoEm andamento
Ano2026
Stackunity, csharp, fishnet, multiplayer, steamworks

ZumbiPizza é um jogo co-op para dois jogadores feito em Unity 6 (C#) em que os jogadores assam pizzas dentro de um motorhome, entregam nas casas de um bairro e enfrentam a horda de zumbis atraída pelo cheiro, com multiplayer autoritativo no servidor via LAN ou Steam P2P usando FishNet.

Unity 6 · C# · FishNet · Steamworks.NET · FishySteamworks · multiplayer co-op · primeira pessoa · URP · Cinemachine · vertical slice

O que é

Dois jogadores montam pizzas em um motorhome, entregam nas casas de um bairro e sobrevivem à horda de zumbis atraída pelo cheiro. O pitch das notas de design: Overcooked num motorhome de pizza, fugindo de zumbis que querem uma fatia, não cérebros. O projeto é um protótipo de vertical slice de um estúdio pessoal. Ele testa o loop de assar, entregar e jogar pizza nos zumbis, em multiplayer local (LAN) e pela Steam.

Funcionalidades

  • Linha de produção de pizza como estações em rede: caixa de ingredientes (farinha) → batedeira (massa) → mesa de montagem (pizza crua) → forno (pizza assada, criada como um objeto de rede que dá para pegar). Cada estação só muda de estado no servidor.
  • Entregas e pontuação: entregue pizzas nas casas dos clientes e ganhe pontos (DeliveryManager, CustomerHouse, ScoreManager, ScoreHud).
  • Motorhome dirigível com banco do motorista (MotorhomeController, DriverSeat).
  • Horda de zumbis: um spawner que acelera conforme o nível de cheiro do motorhome sobe, com pool limitado e IA de perseguição.
  • Arremesso de pizza: jogue pizzas nos zumbis, com uma prévia de arco pontilhado que fica vermelha quando há colisão, e um efeito de câmera lenta quando um zumbi morde.
  • Sistema de interação e de pegar objetos: interfaces IInteractable / IGrabbable, um gerenciador de interação e dicas no mundo.
  • Cinco modos de jogo no menu principal: 2P local, host/entrar na LAN, host/entrar na Steam.

Stack técnica

Tecnologia Versão Usado para
Unity 6000.5.1f1 Engine (ProjectSettings/ProjectVersion.txt)
FishNet 4.7.2 (embutido) Multiplayer autoritativo no servidor (Packages/com.firstgeargames.fishnet)
Steamworks.NET embutido Binding da API da Steam para o transporte P2P (Packages/manifest.json)
FishySteamworks no repositório, Assets/_Game/Plugins/FishySteamworks Transporte do FishNet via Steam P2P (App ID 480, SpaceWar)
Unity Input System 1.19.0 Input do jogador
Universal Render Pipeline 17.5.0 Pipeline de renderização
Cinemachine 3.1.7 Câmera em primeira pessoa
MCP for Unity (Coplay) cópia local em Packages/com.coplaydev.unity-mcp Automação do editor por um agente de programação com IA (veja MCP_SETUP.md)

Como começar

Requisitos: Unity Hub com a 6000.5.1f1 instalada, e o cliente da Steam aberto para os modos Steam (App ID 480, SpaceWar).

Uma vez por máquina, depois de clonar:

powershell -ExecutionPolicy Bypass -File scripts/setup-git.ps1

Isso registra o Git LFS e o Unity SmartMerge (merge.unityyamlmerge) para reduzir conflitos de merge em arquivos .unity, .prefab e .asset.

Abra o projeto no Unity Hub, espere o Package Manager importar os pacotes embutidos em Packages/ e dê Play a partir de Assets/Scenes/MainMenu.unity (índice 0 no Build Settings).

Atalhos no menu do editor (de FISHNET_SETUP.md):

  1. Zumbipizza → Setup FishNet (prefab + spawn list) cria NetworkPlayer e DefaultPrefabObjects.
  2. Zumbipizza → Setup MVP (Menu + Suburb) gera de novo as cenas com o bootstrap de rede.

Como usar

Modos do menu principal:

Botão O que faz
2P LOCAL Offline, carrega WedScene (roda como host em loopback para o gameplay em rede inicializar mesmo assim)
HOST LAN Host + cliente local, na porta padrão do Tugboat
ENTRAR LAN Cliente, digite o IP do host
HOST STEAM Host P2P, mostra seu SteamID64 na tela
ENTRAR STEAM Cliente, cole o SteamID64 do host

Limitação da Valve: duas instâncias no mesmo PC não conseguem se conectar pela Steam. Use LAN para testar localmente. A Steam precisa de duas máquinas (ou duas contas em máquinas diferentes).

Tecla Ação
WASD Andar / dirigir
Mouse Olhar
E Interagir / segurar
F Pegar / soltar
Q Jogar pizza

Como funciona

NetworkSessionBootstrap (um objeto DontDestroyOnLoad criado em MainMenu) escolhe o transporte: Tugboat para LAN/offline ou FishySteamworks para Steam. Ele sempre troca de cena pelo SceneManager do FishNet, nunca pelo da Unity, para que os clientes remotos recebam a cena e o PlayerSpawner dispare (Assets/Scripts/Network/NetworkSessionBootstrap.cs).

O servidor é autoritativo. Montagem de pizza, arremesso (PizzaThrower, por um ServerRpc com validação de distância) e spawn de zumbis rodam só no host, e os NetworkObjects sincronizam com os clientes (Assets/Scripts/Throw/PizzaThrower.cs). Os jogadores mandam input por ServerRpcs.

GameManager guarda as referências do gameplay (motorhome, entregas, spawner de zumbis, HUD) configuradas no boot da cena (Assets/_Game/Scripts/Core/GameManager.cs). ZombieSpawner usa um timer simples que acelera conforme o nível de cheiro do motorhome sobe, com limite de pool. Um comentário no código marca ele como uma versão simplificada sem ondas programadas (Assets/Scripts/Zombies/ZombieSpawner.cs).

Estrutura do projeto

Assets/
  Scenes/              MainMenu.unity, WedScene.unity
  Scripts/
    Interaction/       IInteractable, IGrabbable, InteractionManager, GrabManager
    Network/           NetworkSessionBootstrap, GameplaySceneBootstrap, settings
    Player/            FirstPersonController, Cinemachine first-person setup
    Throw/             PizzaThrower, PizzaProjectile, ThrowPreview
    UI/                MainMenuController, SlowMoController, FishNet debug menu
    Zombies/           ZombieSpawner, ZombiePool, ZombieChaseAI
  _Game/
    Scripts/           Core, Pizza, Motorhome, World (deliveries), UI, Editor tools
    Plugins/           FishySteamworks transport
Packages/              Embedded FishNet, Steamworks.NET, MCP for Unity
scripts/setup-git.ps1  Git LFS + Unity SmartMerge setup
vault/                 Obsidian vault: game design document (Portuguese) and tasks
FISHNET_SETUP.md       Multiplayer setup notes (Portuguese)
MCP_SETUP.md           MCP for Unity setup notes (Portuguese)

Status

Funcionando: menu principal com os 5 modos (2P local, host/entrar na LAN, host/entrar na Steam), o loop assar → entregar → pontuar, zumbis aparecendo em resposta ao cheiro e arremesso de pizza nos zumbis.

Simplificado de propósito (marcado com ponytail: no código): ZombieSpawner é um timer + pool sem ondas programadas nem dificuldade progressiva. PizzaThrower não tem cone de mira assistida nem sistema de slots de inventário.

Ainda não feito (listado como próximos passos em FISHNET_SETUP.md): lobby nativo da Steam com convite de amigos, sincronização visível do motorhome e dos zumbis no cliente, e testes com “parrel sync” em dois editores.

Documentos de design

O game design document completo (em português) fica no vault do Obsidian em vault/zumbipizza/GDD/. Ele cobre visão geral, loop de jogo, mecânicas, papéis no co-op, mundo, sistemas (montagem de pizza, entregas, horda, eventos aleatórios, economia), UI, arte, áudio, escopo do MVP, roadmap e riscos.

Licença

Todos os direitos reservados.

Outros projetos paralelos