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
JSONpara salvar e carregar o mapa.
Stack e Arquitetura
- Modelagem de Dados: Entidades como
Grid,Structure,ItemeRecipedelimitam o escopo de dados. O padrãoFlyweightgerencia metadados de itens para reduzir consumo de memória. - Lógica e Serviços: A classe
SimulationTickMastercoordena a atualização de componentes de toda a malha. O padrãoCommandencapsula as ações do jogador facilitando rotinas de undo e manipulação doState. - Interface e Interação: O
game loopcapta 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 loope 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
chunkspara 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
0Participe 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!