Jogo de Automação de Fábricas

Sistema de simulação e gerenciamento de produção logística em grid bidimensional com processamento de grafos direcionados para itens.

Nível
Intermediário
Categoria
Programação
Tecnologias
Engine Agnostic, OOP, Estruturas de Dados, Game Loop

Objetivo do Projeto

O projeto consiste no desenvolvimento do núcleo lógico de um jogo de automação de fábrica baseado em uma malha bidimensional. O sistema gerencia a extração de matérias-primas, o transporte sequencial via esteiras e a transformação em produtos complexos por meio de máquinas com receitas predefinidas.

A aplicação simula redes logísticas em tempo real e processa a concorrência de movimentação de itens. O produto final é um protótipo funcional contendo game loop, inventário, construção modular e persistência de dados.

Características e Regras de Negócio

  • Sistema de Malha: O mapa opera como uma matriz bidimensional onde cada célula possui coordenada única e comporta apenas uma estrutura construtiva.
  • Rede de Transporte: Esteiras direcionais movem itens de uma célula para a adjacente em intervalos de tempo específicos, chamados ticks. O movimento é interrompido se a célula de destino estiver bloqueada ou cheia.
  • Processamento e Receitas: Máquinas consomem itens de entrada, aguardam um tempo de processamento estrito e geram itens de saída. As receitas exigem proporções exatas de insumos no inventário interno do bloco.
  • Construção e Destruição: O jogador instancia novas estruturas em células vazias mediante gasto de recursos. A demolição devolve os materiais ao inventário global.
  • Condição de Vitória: A simulação avalia métricas de produção por minuto. A meta é estabilizar a fabricação de um item de alta complexidade em uma taxa de fluxo contínuo predeterminada.
  • Persistência de Dados: O estado da fábrica, posições de estruturas, itens em trânsito e inventários internos são serializados em JSON para salvar e carregar o mapa.

Stack e Arquitetura

  • Modelagem de Dados: Entidades como Grid, Structure, Item e Recipe delimitam o escopo de dados. O padrão Flyweight gerencia metadados de itens para reduzir consumo de memória.
  • Lógica e Serviços: A classe SimulationTickMaster coordena a atualização de componentes de toda a malha. O padrão Command encapsula as ações do jogador facilitando rotinas de undo e manipulação do State.
  • Interface e Interação: O game loop capta eventos de clique na matriz, traduz as coordenadas de tela para posições espaciais e delega as ações ao controlador central.

Passo a Passo de Desenvolvimento

  • 1. Setup e Modelagem: Inicialização da matriz bidimensional, hierarquia de classes base para as estruturas de fábrica e mapeamento serializável do estado do jogo.
  • 2. Lógica Central: Desacoplamento do game loop e rotinas de renderização. Implementação dos ticks de física, mecânicas de empurrar itens pelas esteiras e regras de crafting.
  • 3. Interface e Interações: Sincronização do cursor do mouse com o mapa, feedback visual interativo de células válidas ou inválidas para construção e renderização da posição dos componentes.
  • 4. Validações e Testes: Verificação de congestionamento nas esteiras, travamento seguro de máquinas sem insumos e testes de estresse computacional em arquivos de save pesados.

Critérios de Conclusão

  • Matriz operando estritamente com detecção precisa de ocupação celular.
  • Esteiras transportando itens com fluidez e detectando engarrafamentos locais no transporte.
  • Máquinas processando insumos secundários estritamente baseadas no sistema de Recipe.
  • Rotina de serialização convertendo e recarregando blocos exatamente no estado posicional original.
  • Interface capturando inputs para anexar ou suprimir estruturas no sistema principal.

Desafios Extras (Opcional)

  • Implementar particionamento espacial em chunks para otimizar processamento focado apenas nas áreas ativas da matriz.
  • Criar insersores robóticos capazes de coletar componentes e alimentar receptores em ângulos perpendiculares na geometria da malha.

Comentários

0

Participe da conversa

Faça login com sua conta para deixar dúvidas, sugestões e trocar ideias com outros estudantes.

  • Nenhum comentário ainda. Seja o primeiro a participar da discussão!