📌 Sobre este Documento

   Este documento é uma apresentação técnica de um dos projetos pessoais mais desafiadores que já realizei. Desenvolvido integralmente em C, cheguei a considerar a recriação manual de várias funções da linguagem apenas para tornar o desafio ainda maior — o que, por si só, já adicionou uma camada extra de complexidade.

Embora esteja compartilhando este projeto em meu blog e nas redes sociais, é importante destacar que este material é apenas um resumo dos principais conceitos que estudei e precisei dominar para implementar o sistema de raycasting. Não se trata de um guia completo, mas sim de um registro técnico e reflexivo sobre o processo de desenvolvimento.

1. Introdução

   Pesquisando na internet, encontrei um vídeo que discutia o mau uso do poder computacional no desenvolvimento de jogos modernos. Hoje em dia, tornou-se comum vermos jogos que ocupam **mais de 300 GB** e exigem **hardware extremamente potente**, com tecnologias como **Ray Tracing** e suporte a **resoluções 4K** — mesmo que isso atenda a um público relativamente pequeno.

   A indústria de games frequentemente investe milhões em produções cada vez maiores, buscando impressionar investidores com promessas de alto retorno. No entanto, muitos desses jogos operam no limite do risco financeiro, com altos custos de produção, marketing, distribuição e manutenção, que nem sempre são compensados pelas vendas. A otimização acaba sendo deixada de lado, enquanto o foco permanece em gráficos cada vez mais realistas — mesmo que isso signifique sacrificar desempenho e acessibilidade.

   Não tenho uma solução definitiva para esse problema, mas acredito que é importante refletir sobre essa realidade. Meu objetivo aqui é compartilhar uma visão pessoal sobre como o desenvolvimento de jogos já foi — e ainda pode ser — mais eficiente e engenhoso.

   Foi exatamente essa linha de pensamento que me inspirou a desenvolver este projeto de **Raycasting**. Na época em que os processadores, como o **Pentium II**, operavam entre **233 MHz e 450 MHz** (nem mesmo em GHz), os programadores encontravam soluções criativas para gerar gráficos 3D em tempo real. O **raycasting** surgiu como uma dessas soluções, permitindo criar cenários tridimensionais de forma extremamente otimizada, aproveitando ao máximo o hardware limitado. E é essa mentalidade que tento resgatar com este projeto.

Motivação:

Aplicações Práticas: