System reboot é um jogo roguelite survivor / Brotato-like top-down 2D desenvolvido no Unity 6. Os jogadores controlam mechas de combate que devem sobreviver a ondas intensas de inimigos cibernéticos enquanto gerenciam um arsenal de armas orbitais automáticas e atualizações em tempo real.
- Modo Cooperativo Local (Co-op): Suporte para 2 jogadores na mesma tela com câmera dinâmica (Cinemachine Target Group).
- Player 1: Teclado e Mouse.
- Player 2: Controle (Gamepad).
- XP Compartilhado: A coleta de gemas de experiência avança a mesma barra de nível para ambos.
- Level Up Sequencial: A seleção de upgrades ocorre de forma justa (primeiro o Player 1, depois o Player 2).
- Sistema de Armas Orbitais: Armas orbitam ao redor dos mechas e disparam de forma autônoma ou direcionada contra os alvos.
- Inimigos Inteligentes: Ondas progressivas com diferentes tipos de IA (perseguição simples, interceptação preditiva e inimigos kamikazes explosivos).
- Mapa Infinito Procedural: Geração em tempo real com reciclagem dinâmica de blocos de cenário e obstáculos para desempenho otimizado.
- Sistema de Upgrades Gacha-like: Cartas com 4 níveis de raridade (Comum, Raro, Épico e Lendário) que oferecem melhorias e novos equipamentos ao subir de nível.
- Persistência de Recordes: Tabela local de pontuação (High Scores) persistida em formato JSON via
PlayerPrefs.
| Ação | Player 1 (Teclado e Mouse) | Player 2 (Controle / Gamepad) |
|---|---|---|
| Movimentação | Teclas W, A, S, D ou Setas |
Analógico Esquerdo |
| Esquiva (Dash) | Barra de Espaço (Space) |
Botão A (Xbox) / Cross (PlayStation) |
| Mirar | Movimento do Mouse | Analógico Direito |
- Unity Hub instalado.
- Unity 6 (versão recomendada no ProjectVersion.txt).
- Clone este repositório no seu computador:
git clone https://github.com/Gabrielc476/System_Reboot.git
- Abra o Unity Hub e clique em Add > Add project from disk.
- Selecione a pasta onde clonou o projeto (
System reboot). - Selecione a versão recomendada do Unity 6 para abrir o projeto.
- No painel do Unity Project, vá para
Assets/Scenese abra:- MainMenu.unity (Menu Inicial)
- SampleScene.unity (Cena de Gameplay)
O projeto está estruturado de forma modular para fácil manutenção e escalabilidade:
- Assets/Scripts/Player/: Controladores físicos de movimento, vida, interface de barra de vida e injeção do novo Input System.
- Assets/Scripts/weapons/: Lógica abstrata de armas (
WeaponBase), gerenciador orbital (WeaponManager), e comportamento de projéteis e hitboxes. - Assets/Scripts/Enemy/: Inteligência artificial dos inimigos, interceptação preditiva e gerenciamento de waves com pools de objetos reutilizáveis para otimização.
- Assets/Scripts/upgrades/: Sorteio de cartas de upgrades, cálculo de raridades e gerenciador de interface das cartas.
- Assets/Scripts/Game/: Controladores gerais do jogo (
GameManager), HUD, mapa infinito (InfiniteMapManager), som, persistência de recordes (ScoreManager) e XP.
Ao adicionar novas funcionalidades ou corrigir problemas, siga estas boas práticas:
- Imutabilidade de ScriptableObjects: Nunca modifique dados diretamente nos arquivos de
ScriptableObject(comoPlayerData,EnemyDataouWeaponData) em tempo de execução. Sempre copie os valores para a memória da instância noAwake/Start. - Física da Unity 6: Execute toda movimentação e manipulação de colisores e velocidades físicas no
FixedUpdateutilizando a propriedade modernaRigidbody2D.linearVelocity. - Gerenciamento de Instâncias: Evite chamar
FindObjectOfTypeem loops. Registre os GameObjects dinâmicos (como os mechas ativos) noGameManagerem sua inicialização. - Pausa de Jogo: Lembre-se de verificar o estado de pausa
Time.timeScaleem corrotinas de tiro ou timers de movimentação para que congelem adequadamente. - Suporte Co-op: Ao criar lógicas que dependam da posição do jogador, lembre-se de iterar sobre
GameManager.Instance.activePlayersem vez de focar em apenas uma instância única.
- Game Engine: Unity 6
- Linguagem: C#
- Controle de Câmera: Cinemachine (Target Group para Co-op dinâmico)
- Novo Input System: Suporte nativo a múltiplos dispositivos de entrada simultâneos.
- Textura e Fontes: TextMeshPro em World Space para dano e HUD.
- Object Pooling: Biblioteca nativa da Unity (
UnityEngine.Pool) para otimização de inimigos e blocos do mapa.