Skip to content

KriawqZero/mine

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Mine

Um motor baseado em voxels feito do zero.

Este projeto foi um desafio pessoal desenvolvido entre outubro e novembro de 2024. O objetivo não era criar um jogo comercial ou um clone perfeito de Minecraft, mas sim entender na prática como a computação gráfica 3D funciona por debaixo dos panos, sem o auxílio de engines modernas.

Nota: Este repositório utiliza uma abordagem de OpenGL mais legada (focada no aprendizado estrutural). Posteriormente, iniciei uma tentativa de reescrita utilizando OpenGL Moderno (Shaders, VBOs, VAOs), que serviu como mais um experimento de aprendizado, mesmo não tendo sido concluída.

Contexto e Motivação

O projeto serviu como meu laboratório para aprender C++ e me aprofundar na renderização via OpenGL. Construir a estrutura de pastas, configurar a compilação e renderizar as primeiras primitivas me ensinaram muito sobre gerenciamento de memória e arquitetura de software de baixo nível.

A parte mais complexa e recompensadora foi a câmera 3D. Calcular pitch, yaw, sensibilidade de mouse e matrizes de projeção exigiu entender na marra conceitos matemáticos que eu ainda não dominava no ensino médio. Fazer a navegação pelo mundo parecer natural foi um grande quebra-cabeça.

Tecnologias

  • C++ 20: Linguagem base do projeto.
  • OpenGL: API gráfica para renderização.
  • GLFW / GLAD: Gerenciamento do contexto de janela e carregamento das extensões do OpenGL.
  • GLM: Matemática vetorial e matricial essencial para as transformações 3D.
  • Dear ImGui: Interface de depuração em tempo real.
  • CMake: Configuração e orquestração da build.

Estrutura do Código

A base de código foi organizada para separar a lógica de gerenciamento de jogo da parte gráfica e do mundo:

  • src/Game/: Gerencia o loop principal da aplicação.
  • src/GameHelpers/: Concentra a lógica de input, configuração de janela e o sistema de Câmera (movimentação e orientação).
  • src/World/: Responsável por gerar os objetos no espaço (Chunks, Blocos, Terreno, Esferas e Primitivas).
  • src/Texture/: Carregamento e mapeamento das texturas.
  • src/debug/: Integração com o ImGui para exibir métricas e variáveis em tempo real.

Agradecimentos

Este projeto teria sido muito mais difícil sem o excelente conteúdo do Sérgio Silva. A playlist OpenGL C++ - Gráficos 3D (2020) foi uma referência fundamental para que eu entendesse os bastidores da criação de gráficos 3D.

About

Um motor voxel 3D feito do zero com C++ e OpenGL para estudar computação gráfica.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages