Skip to content

Repository files navigation

System reboot 🤖💥

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.


🎮 Funcionalidades Principais

  • 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.

🕹️ Controles

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

🛠️ Instalação e Execução

Pré-requisitos

  • Unity Hub instalado.
  • Unity 6 (versão recomendada no ProjectVersion.txt).

Como Executar o Projeto

  1. Clone este repositório no seu computador:
    git clone https://github.com/Gabrielc476/System_Reboot.git
  2. Abra o Unity Hub e clique em Add > Add project from disk.
  3. Selecione a pasta onde clonou o projeto (System reboot).
  4. Selecione a versão recomendada do Unity 6 para abrir o projeto.
  5. No painel do Unity Project, vá para Assets/Scenes e abra:
    • MainMenu.unity (Menu Inicial)
    • SampleScene.unity (Cena de Gameplay)

🏗️ Arquitetura do Código

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.

📋 Diretrizes de Desenvolvimento

Ao adicionar novas funcionalidades ou corrigir problemas, siga estas boas práticas:

  1. Imutabilidade de ScriptableObjects: Nunca modifique dados diretamente nos arquivos de ScriptableObject (como PlayerData, EnemyData ou WeaponData) em tempo de execução. Sempre copie os valores para a memória da instância no Awake/Start.
  2. Física da Unity 6: Execute toda movimentação e manipulação de colisores e velocidades físicas no FixedUpdate utilizando a propriedade moderna Rigidbody2D.linearVelocity.
  3. Gerenciamento de Instâncias: Evite chamar FindObjectOfType em loops. Registre os GameObjects dinâmicos (como os mechas ativos) no GameManager em sua inicialização.
  4. Pausa de Jogo: Lembre-se de verificar o estado de pausa Time.timeScale em corrotinas de tiro ou timers de movimentação para que congelem adequadamente.
  5. Suporte Co-op: Ao criar lógicas que dependam da posição do jogador, lembre-se de iterar sobre GameManager.Instance.activePlayers em vez de focar em apenas uma instância única.

🚀 Tecnologias Utilizadas

  • 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.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages