CURSO: Engenharia de Software | 42SP
- 1. Sobre
- 2. Planejamento Ágil
- 3. Kanban
- 4. Etapas do desenvolvimento
- 5.Tecnologias e Ferramentas externas utilizadas
- 6. Estrutura do Projeto
- 7. Desenvolvedores
Este projeto consiste em um gráfico 3D “realista” que contem a representação do interior de um labirinto a partir de um perspectiva em primeira pessoa.
O game foi criado usando a técnica de Ray-Casting, que simula a visão de uma câmera 3D em uma projeção 2D, envolve cálculos trigonométricos e vetoriais. Além da técnica de Scanline usada para renderizar polígonos em gráficos 2D. Ele percorre as linhas horizontais da tela e preenche os pixels entre as arestas do polígono, determinando quais pixels devem ser coloridos e a utilização do Algoritmo de Bresenham para desenhar linhas em uma grade de pixels.
Utilizou-se o kaban do GitHub na aba Projects e o Discord para planejar as ideais, organizar as tarefas e facilitar a comunicação durante o desenvolvimento.
Além de aplicar as boas práticas de programação em C, como gerenciamento adequado de memória, modularização do código em funções e documentação adequada, foi necessario aprender sobre otimização de desempenho para garantir que o jogo seja executado suavemente.
O projeto é implementado principalmente em C, uma linguagem de programação de baixo nível, o que significa que os alunos precisam lidar diretamente com a manipulação de memória e outros aspectos de baixo nível da programação.
Utilizamos a MinilibX que é uma biblioteca gráfica simples, projetada especificamente para os projetos da 42. Ela oferece funcionalidades básicas para manipulação de janelas e renderização gráfica. É uma biblioteca que ajuda os Cadetes da 42 a a começarem a entender os princípios básicos de programação gráfica.
O projeto tambem envolve a implementação do algoritmo de raycasting, que é utilizado para renderizar gráficos 3D em tempo real. Este é um conceito fundamental para criar uma sensação de profundidade e perspectiva no jogo.
cub3d/
│
| ├── bonus/ # Código-fonte do jogo, parte bonus
| | ├── assets/ # Recursos do jogo (texturas e mapas)
| | ├── include/ # Arquivos de cabeçalho (.h)
| | │ ├── buttons_bonus.h
| | │ ├── colors_bonus.h
| | │ ├── constants_bonus.h
| | │ ├── cub3d_bonus.h
| | │ ├── errors_bonus.h
| | │ ├── functions_bonus.h
| | │ ├── structs_bonus.h
| | │ └── ...
| | ├── src/ # Código-fonte do jogo
| | │ ├── events/ # Contem código para manipulação de eventos de entrada do usuário
| | │ ├── graphics/ # Contem código para renderização gráfica
| | │ ├── init/ # Contem código de inicialização da janela do jogo, mlx entre outros.
| | │ ├── math/ # Contem código de operações para manipular vetores, realizar transformações e operações geométricas necessárias para renderização
| | │ ├── parse/ # Contem código responsável por analisar e processar os arquivos de configuração do jogo.
| | │ ├── rays/ # Contem código responsavel implementação do algoritmo de ray casting entre outros.
| | │ ├── utils/ # Contem código com funções auxiliares.
| | │ ├── main.c # Arquivo principal
| | | └──
| | └── ...
| ├── lib/ # Bibliotecas e dependências do projeto
| | ├── libft/ # Biblioteca personalizada
| | ├── minilibx-linux/ # Biblioteca gráfica
| | └── ...
| ├── mandatory/ # Código-fonte do jogo, parte obrigatoria
| | ├── assets/ # Recursos do jogo (texturas e mapas)
| | ├── include/ # Arquivos de cabeçalho (.h)
| | │ ├── buttons.h
| | │ ├── colors.h
| | │ ├── constants.h
| | │ ├── cub3d.h
| | │ ├── errors.h
| | │ ├── functions.h
| | │ ├── structs.h
| | │ └── ...
| | ├── src/ # Código-fonte do jogo
| | │ ├── events/ # Contem código para manipulação de eventos de entrada do usuário
| | │ ├── graphics/ # Contem código para renderização gráfica
| | │ ├── init/ # Contem código de inicialização da janela do jogo, mlx entre outros.
| | │ ├── math/ # Contem código de operações para manipular vetores, realizar transformações e operações geométricas necessárias para renderização
| | │ ├── parse/ # Contem código responsável por analisar e processar os arquivos de configuração do jogo.
| | │ ├── rays/ # Contem código responsavel implementação do algoritmo de ray casting entre outros.
| | │ ├── utils/ # Contem código com funções auxiliares.
| | │ ├── main.c # Arquivo principal
| | | └── ...
| | └──
├── Makefile # Arquivo de compilação
├── README.md # Documentação do projeto
│
└──
Luiz Eduardo |
Luciana Pereira |