Zumbi Harvest
Jogo de Roblox em Luau com ciclo de dias, economia, upgrades e IA de zumbis.
Zumbi Harvest é um jogo cooperativo de defesa por ondas para Roblox, feito pelo Estúdio Crivy em Luau strict e sincronizado com o Roblox Studio via Rojo, em que até 4 jogadores defendem um pomar cercado contra gnomos de jardim ao longo de uma partida de 15 dias, com economia dentro da partida, upgrades de armas e progressão meta persistente.
Jogo de Roblox · Luau · Rojo · defesa por ondas · estilo tower defense · cooperativo · ciclo de dias · upgrades · IA de NPCs · DataStore
O tema dentro do jogo é “Pomar Invadido”. Uma versão anterior usava cana-de-açúcar e jacarés; o reskin atual trocou isso por árvores frutíferas e gnomos. O nome do repositório continuou “Zumbi Harvest”.
Funcionalidades
- Defesa do pomar com 6 brechas. Uma fazenda com cerca, 6 lanes (
mata,cerca,estrada,horta,curral,plantacao) e 39 árvores frutíferas num grid 13x3. - Dois papéis de gnomo. Cada gnomo sorteia um papel ao nascer: o atacante bate na cerca, o ladrão pega uma fruta de uma árvore e foge com ela. Tipos de gnomo:
gnomo,rapido,pesado,furioso. - Ciclo de dias com chefes. Cada dia é uma noite de ondas seguida de um chefe. Os chefes se alternam: Rei Gnomo nos dias ímpares, Gnomo Jardineiro nos dias pares. Sobreviver ao chefe do dia 15 vence a partida (cerca de 30 minutos).
- Matar ou interceptar. Interceptar um ladrão só devolve a fruta roubada. Matar um gnomo também dropa Essência Mágica, que vale 3 frutas na barraca.
- Árvore de armas com ramificação. A Espingarda vai até o tier 2, e depois o jogador escolhe uma linha para o resto da partida: Rifle ou Lança-chamas (até o tier 4).
- Ajudantes. Um cachorro (4 tiers) coleta e entrega frutas e morde gnomos. Um carpinteiro contratado (4 tiers) conserta a cerca durante a noite.
- Cogumelos mágicos. Quatro bênçãos temporárias (Vigor = velocidade, Colheita = vendas em dobro, Cerca = cerca blindada, Espantalho = espanta os gnomos). Pegar o mesmo de novo reinicia o tempo dele; cogumelos diferentes se acumulam.
- Clientes da barraca de frutas. Compradores NPC andam pela fazenda fora da noite e pagam uma pequena renda extra.
- Eventos noturnos aleatórios, como
surto_coletivoehorda. - Progressão meta. As frutas da partida nunca são salvas. No fim da partida elas viram Sementes Douradas, gastas na Loja da Colheita (frutas iniciais, tier inicial do cachorro, tier inicial do carpinteiro).
- Retenção. Sequência de login diário, missões e um ranking pós-partida.
- Escala no cooperativo. Até 4 jogadores. A ameaça cresce de forma sublinear: 1p = 1.0, 2p = 1.6, 3p = 2.2, 4p = 2.8.
- Um place para lobby e partida. O mesmo place roda como lobby público ou como partida cooperativa reservada (
src/shared/Modo.luau).
Stack técnica
| Tecnologia | Versão | Uso |
|---|---|---|
| Luau | --!strict (nos módulos que declaram) |
Todo o código em src/ |
| Rojo | 7.7.0 (rokit.toml) |
Sincroniza src/ com o Roblox Studio |
| Rokit | Gerencia o toolchain |
Não existe wally.toml, então não há dependências de terceiros declaradas.
Como começar
- Instale a versão do Rojo fixada em
rokit.toml(roderokit installse você tem o Rokit, ou instale o Rojo 7.7.0 manualmente). - Suba o servidor do Rojo a partir do
default.project.json:rojo serve - Conecte o plugin do Rojo no Roblox Studio e aperte Play.
No Studio o modo padrão é a partida, não o lobby. Para testar o lobby, defina o atributo ModoLobby = true no workspace (veja src/shared/Modo.luau).
Como funciona
Ciclo de dias. src/server/CycleManager.server.luau é o núcleo, com autoridade no servidor. Uma máquina de estados (src/shared/StateMachine.luau) roda Waiting -> Countdown -> Night -> BossFight -> NightEnd -> Waiting e transmite fase, tempo, dia e vida da cerca para os clientes. O cliente nunca faz a contagem regressiva do próprio relógio; ele calcula o tempo a partir de phaseStartTime. O script sai cedo no modo lobby, porque o mesmo código roda no place do lobby.
O conteúdo de cada dia é dado, não código. src/config/DaysConfig.luau define à mão as ondas, as lanes e as chances de atacante/ladrão dos primeiros dias. Depois disso, DaysConfig.get(day) deriva os valores por escala. src/config/GameConfig.luau guarda as constantes globais (regeneração da cerca, duração das fases, raio de aggro, dificuldade do cooperativo). Cada valor tem a conta de balanceamento num comentário ao lado, e as regras principais de balanceamento são travadas por assert.
IA dos gnomos. src/server/GnomoAI.luau atribui o papel ao nascer e controla atacantes e ladrões. src/shared/Andar.luau cuida da locomoção sem Humanoid (giro limitado, aceleração e frenagem, galope), reaproveitada pelo cachorro (src/server/DogService.server.luau) e pelos clientes da barraca (src/server/ClientesService.server.luau).
Economia e progressão. As frutas da partida ficam em src/server/PlayerState.luau e nunca são salvas. As Sementes Douradas são salvas num perfil versionado no DataStore (src/server/DataService.luau). O perfil guarda as sementes, a sequência diária, os níveis da Loja da Colheita (src/config/MetaConfig.luau) e o progresso das missões (src/server/MissoesService.luau, src/config/MissoesConfig.luau). Perfis antigos são mesclados com o schema padrão em vez de passar por uma migração destrutiva.
Armas e ajudantes. src/server/WeaponService.server.luau cuida dos tiros e do dano no servidor. src/config/UpgradesConfig.luau define a árvore de armas, os tiers do cachorro e os tiers do carpinteiro. src/server/CarpenterService.server.luau roda o carpinteiro. src/server/RankingService.luau e src/server/EventService.server.luau cuidam do ranking pós-partida e dos eventos noturnos aleatórios.
Ícones. Todos os asset IDs de ícones ficam numa tabela só, src/shared/Icons.luau. Os controllers não podem deixar valores rbxassetid:// fixos no código. As artes de ícones geradas ficam em assets/gerados/ (veja assets/ICONS.md).
Estrutura do projeto
src/
client/ HUD, shop, weapon, VFX, health bars, ranking, mushroom blessings, lighting
config/ GameConfig, DaysConfig, GnomosConfig, UpgradesConfig, MetaConfig, MissoesConfig, CogumelosConfig
server/ CycleManager, GnomoAI, Economy, Weapon, Carpenter, Dog, Clientes, Event,
Lobby, Meta, Missoes, Diario, Ranking, DataService, PlayerState
shared/ Modo, StateMachine, Andar, Easing, Icons
assets/ generated icons and audio, ICONS.md
default.project.json Rojo mapping
rokit.toml toolchain pin
MEGAPROMPT-*.md design prompts for the gnome-thief, lobby-retention and orchard features
default.project.json mapeia src/shared e src/config para ReplicatedStorage.Shared e ReplicatedStorage.Config, src/server para ServerScriptService.Server e src/client para StarterPlayer.StarterPlayerScripts.
Status
Em desenvolvimento. Os três arquivos MEGAPROMPT-*.md na raiz guardam os prompts de design usados nas funcionalidades de gnomo ladrão, retenção no lobby e reskin do pomar; confira o git log para ver o que de fato está implementado. Não há testes automatizados no repositório, nem arquivo de place .rbxl/.rbxlx, então a parte do mapa (por exemplo workspace.Sitio.Lanes) não é versionada aqui.
Licença
Todos os direitos reservados. © Estúdio Crivy.
Outros projetos paralelos

Flood
Battle royale de Roblox em que a água sobe e vence quem constrói a estrutura que aguenta mais tempo.

ZumbiPizza — Slice & Survive
Jogo co-op de pizza com zumbis feito em Unity, com multiplayer via FishNet.

Baixar legendas do YouTube
Script com interface pra baixar as legendas de um canal inteiro de uma vez.
