Olá,
Já tem mais de dois anos que venho desenvolvendo, no meu tempo livre, uma engine para jogos.
Eu poderia ter usado uma pronta, mas código é como massa: é melhor quando é caseiro.
A ideia principal é que o jogo não conhece nenhum detalhe da engine, e vice-versa.
Durante o desenvolvimento da engine, também criei jogos e demos. Um deles está recebendo investimento próprio e será lançado na Steam em breve — dá para jogar no primeiro link.
Recentemente implementei um sistema de partículas usando SoA (Structure of Arrays), técnica que ajuda bastante na vetorização. Em um hardware sem GPU dedicada, consigo manter 120 mil partículas a 60 FPS estáveis. Se quiserem conferir, está no segundo link.
Por fim, o código-fonte: atualmente rodo builds paralelas para Ubuntu, Windows, macOS e WebAssembly.
Para física, uso Box2D, que adicionei recentemente — perfeita para calcular colisões de forma eficiente.
Para binding com Lua, uso Sol2; não é perfeita, mas o binário resultante fica menor, e eu valorizo isso por causa do WebAssembly.
Para gráficos, manipulação de input e janelas, utilizo SDL3.
Para IO, uso PhysFS, uma biblioteca dos mesmos autores da SDL, que permite montar um arquivo compactado como se fosse um diretório. Isso facilita a distribuição dos jogos e acelera um pouco o carregamento, além de reduzir o tamanho final.
Para áudio, OpenAL Soft.
Para JSON (eu poderia usar Lua, mas optei por JSON também porque pode ser útil em jogos multiplayer com WebSocket), utilizo nlohmann/json.
E Boost para alguns containers. Cheguei a usar a R-tree da Boost para AABB, que é muito boa, mas para jogos a Box2Dse mostrou bem mais adequada.
--
http://ccppbrasil.github.io/
https://twitter.com/ccppbrasil
[&] C & C++ Brasil - http://www.ccppbrasil.org/
Para sair dessa lista, envie um e-mail para ccppbrasil-...@googlegroups.com
---
Você recebeu essa mensagem porque está inscrito no grupo "ccppbrasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para ccppbrasil+...@googlegroups.com.
Para ver esta conversa, acesse https://groups.google.com/d/msgid/ccppbrasil/65389162-e3bd-401f-a58f-73db1379db63n%40googlegroups.com.
Para ver esta conversa, acesse https://groups.google.com/d/msgid/ccppbrasil/3a48cf18-cfc4-4333-82ed-6ccaddd97b93n%40googlegroups.com.
Para ver esta conversa, acesse https://groups.google.com/d/msgid/ccppbrasil/0b1d79d5-46cc-4cba-8284-d8eadd83806dn%40googlegroups.com.
Para ver esta conversa, acesse https://groups.google.com/d/msgid/ccppbrasil/215163fa-fa70-4283-8d27-9ed731347123n%40googlegroups.com.