Estoy buscando construir un motor de juegos de estilo 2D RPG de código abierto multiplataforma para ChaiScript .
Quiero poder hacer todos los gráficos con SVG y necesito la entrada del joystick. También necesito que las bibliotecas que utilizo sean de código abierto y compatibles con la licencia BSD.
Estoy familiarizado con allegro , ClanLib y SDL . Por lo que puedo decir, ninguna de estas bibliotecas tiene una integración integrada o obvia para SVG. Además, estoy al tanto de las conversaciones anteriores en este sitio sobre Qt para el desarrollo de juegos SVG.
Espero evitar Qt debido al tamaño y la complejidad de hacer que sea un requisito. Además, Qt no parece tener soporte de entrada de joystick, lo que requeriría que también se use SDL o alguna otra biblioteca.
Entonces mi pregunta se puede resumir así:
- ¿Cuál es la mejor manera de obtener compatibilidad con SVG y joystick en una biblioteca 2D C ++ mientras se minimizan las dependencias tanto como sea posible (preferiblemente evitando Qt por completo)?
Respuestas:
No veo ninguna razón por la que no pueda usar SDL u otra biblioteca de entrada con una biblioteca de gráficos 2D como libcairo .
En cuanto a ChaiScript, ¿has oído hablar de Lua ?
fuente
¿Alguna vez se te ha ocurrido preguntar ... por qué?
Claro, SVG es una especificación complicada para implementar en un nivel básico de "llevar el XML a la memoria y validarlo". Pero no creo que aprecies completamente el simple hecho de que el renderizado SVG no es rápido .
Los navegadores web son rápidos si representan una página web en menos de 500 ms. Las imágenes SVG pueden tardar más de 20 ms en renderizarse, y eso es para las pequeñas y simples. Algo que puedas encontrar en un juego, un juego no gráficamente trivial, llevará mucho, mucho más tiempo. La representación de imágenes SVG no está pensada para una animación rápida.
Incluso algo de nivel inferior como libCairo no es exactamente un procesador de alto rendimiento. Claro, es lo suficientemente rápido para un navegador, pero no es exactamente sorprendente en su rendimiento de representación de software.
En resumen, abandonaría SVG por completo y vería si libCairo puede satisfacer sus necesidades. Eso es solo para fines de evaluación, para ver si funciona lo suficientemente rápido en circunstancias que se aproximan al propósito que tiene previsto para ellos. Una vez que se determina, puede decidir qué hacer a continuación en términos de tecnología (Qt, SDL, lo que sea).
fuente
Sin embargo, en lo que respecta a este SVG no es el mejor para generar contenido sobre la marcha y para la representación en tiempo real, incluso en 2d ...
Si usara los archivos SVG para crear su contenido original, entonces podría tener una fase de generación de nivel / área previa con una pantalla de carga / escena de corte apropiada donde usaría el contenido SVG para representar imágenes estándar de la resolución que necesita, esto le permitiría codificar simplemente con imágenes normales, al tiempo que conserva la flexibilidad del SVG para la orientación de resolución múltiple. No es una idea, pero de esta manera puede aprovechar el hardware para jugar con las imágenes prerrepresentadas de la manera en que fue diseñado, en lugar de tratar de generar contenido sobre la marcha a partir de archivos SVG. Como la computadora solo mostraría la pantalla de carga / escena de corte, podría dedicar una gran proporción de los recursos disponibles a generar las imágenes estándar desde SVG y, por lo tanto, hacerlo de manera rápida y eficiente.
fuente
Irrlicht tiene soporte SVG y joystick
fuente