Estou pensando em criar um mecanismo de jogo em estilo 2D de código aberto de plataforma cruzada para o ChaiScript .
Quero poder fazer todos os gráficos com SVG e precisar de entrada de joystick. Também preciso que as bibliotecas usadas sejam de código aberto e compatíveis com a licença BSD.
Estou familiarizado com allegro , ClanLib e SDL . Até onde eu sei, nenhuma dessas bibliotecas foi incorporada ou óbvia integração para o SVG. Além disso, estou ciente das conversas anteriores neste site sobre Qt para desenvolvimento de jogos SVG.
Espero evitar o Qt por causa do tamanho e da complexidade de torná-lo um requisito. Além disso, o Qt parece não ter suporte à entrada do joystick, o que exigiria que o SDL ou alguma outra biblioteca também fosse usada.
Portanto, minha pergunta pode ser resumida da seguinte forma:
- Qual é a melhor maneira de obter suporte a SVG e joystick em uma biblioteca 2D C ++, minimizando ao máximo as dependências (de preferência evitando o Qt por completo)?
Respostas:
Não vejo nenhuma razão para que você não possa usar o SDL ou outra biblioteca de entrada com uma biblioteca de gráficos 2D como o libcairo .
Quanto ao ChaiScript, você já ouviu falar de Lua ?
fonte
Já lhe ocorreu perguntar ... por que isso?
Certamente, SVG é uma especificação complicada para implementar em um nível básico de "obtenção do XML na memória e validação". Mas não acho que você aprecie completamente o simples fato de a renderização SVG não ser rápida .
Os navegadores da Web são rápidos se renderizam uma página da Web em menos de 500 ms. As imagens SVG podem demorar mais de 20 ms para renderizar, e são pequenas e simples. Algo que você pode encontrar em um jogo, um jogo não-graficamente trivial, vai levar muito, muito mais tempo. A renderização de imagem SVG não se destina à animação rápida.
Mesmo algo de nível inferior como o libCairo não é exatamente um renderizador de alto desempenho. Certamente, é rápido o suficiente para um navegador, mas não é exatamente o seu desempenho na renderização de software.
Em resumo, eu abandonaria o SVG inteiramente e veria se o libCairo pode atender às suas necessidades. Isso é apenas para fins de avaliação, para verificar se o desempenho é rápido o suficiente em circunstâncias que se aproximam do objetivo que você pretende para eles. Uma vez determinado, você pode decidir o que fazer em termos de tecnologia (Qt, SDL, qualquer que seja).
fonte
No que diz respeito a este SVG, não é o melhor para gerar conteúdo on-the-fly e renderização em tempo real, mesmo em 2D, no entanto ....
Se você usar os arquivos SVG para criar seu conteúdo original, poderá ter uma fase de geração de pré-nível / área com tela de carregamento / cena em que você usaria o conteúdo SVG para renderizar imagens padrão da resolução necessária, isso permitiria que você codificasse simplesmente com imagens normais, mantendo a flexibilidade do SVG para o direcionamento de várias resoluções. Não é uma idéia, mas dessa maneira você pode aproveitar o hardware para reproduzir as imagens pré-renderizadas da maneira como foi projetado, em vez de tentar gerar conteúdo rapidamente a partir de arquivos SVG. Como o computador exibia apenas a tela de carregamento / cena de corte, você poderia dedicar uma grande proporção de recursos disponíveis para gerar as imagens padrão do SVG e, portanto, fazê-lo de maneira rápida e eficiente.
fonte
Irrlicht tem suporte a SVG e joystick
fonte