Volt é um motor de jogos que surgiu primariamente para atender a dois propósitos:
- Base para pesquisas
- Base para ensino
Pesquisa e inovação: o motor é usado para desenvolver pesquisas, testar implementações, conceitos, ideias, etc. Para isso, ele deve possuir uma implementação representativa do que seria um motor de jogos típico para os padrões atuais. Obviamente não há pretenção em concorrer com motores profissionais a nível de otimização, facilidade de uso ou disponibilidade de ferramentas.
Ensino: ele deve ser suficientemente simples para que possa ser usado como exemplo de um motor em um curso de programação de jogos. Isso não quer dizer que o desempenho será deixado de lado, mas em lugares em que o desempenho conflitar com a didática ou simplicidade do código, a facilidade de compreensão virá em primeiro lugar. O público alvo são alunos que acabaram de ver programação orientada a objetos e não tem muita experiência. Então o uso de recursos avançados da linguagem C++ é mantido ao menor nível possível.
A versão do motor disponibilizada aqui no repositório consiste na versão final do motor que é ativamente utilizada no curso de Programação de Jogos, disponível em www.youtube.com/JudSan. Ele consiste de um motor 2D completo e acompanhado de vários exemplos de jogos (listados abaixo). A maior parte dos jogos não estão completos porque as implementações funcionam como exercícios para os alunos. Fica a cargo deles completar as implementações para ter jogos completos. Os exemplos fornecidos juntos com o motor são:
- Asteroids
- Ballons
- Breakout
- Frogger
- Galaga
- Geometry Wars
- Gravity Guy
- Pacman
- Top Gear
O objetivo de trazer o motor aqui para este repositório é ter uma versão do motor desacoplada da disciplina de Programação de Jogos e que possa evoluir com mais liberdade. A intensão é trazer mudanças primeiro aqui. Se elas forem mudanças que não impactam negativamente com os objetivos da disciplina, levá-las para lá também. Caso contrário, elas ficam apenas aqui e vão contribuir com a evolução do motor de forma independente. Isso permitirá que outras pessoas possam contribuir com o desenvolvimento. Sugestões e melhorias para o código serão bem-vindas.