Recientemente hice un clon básico de Space Invaders, en C ++, usando el marco Allegro 5. Cuando terminé, me di cuenta de que tenía unos 10 sprites y 13 MB de DLL; algunos de los jugadores ni siquiera tenían las DLL mingW, lo que hacía que el juego fuera muy confuso.
¿Cómo empaqueto todos mis recursos de una manera que pueda agregar y eliminar datos fácilmente a mi juego, y reducir el tamaño tomado por el recurso, básicamente colocándolos en un solo lugar? Estoy usando codeblocks.
zziplib
para almacenar todos mis activos habituales en un archivo zip y luego cargarlos en mi juego a través de una tubería de contenido personalizada para el motor. Lo que básicamente buscas al principio es una forma de cargar archivos desde un archivo zip a la memoria para poder usarlos en tu juego. En cuanto a los dlls, es bastante difícil porque generalmente tienen que estar en el mismo directorio que el ejecutable o el directorioWindows
o ¡loSystem32
cual NO se recomienda! ¿Qué tal un archivo SFX para extraerTEMP
y ejecutar desde allí?Respuestas:
Parece que hay dos desafíos que enfrenta aquí: distribución y empaquetado de activos.
Distribución
Empaquete toda su aplicación en directorios como mejor le parezca, luego coloque el directorio de nivel superior en un archivo .zip. Distribuya ese archivo .zip. Cuando los usuarios extraigan el archivo zip, tendrán una carpeta con todo lo que necesitan listo para ejecutar el juego.
¿Cómo colocas tus archivos?
Usualmente hago algo como esto:
Embalaje de activos
Puede usar algún tipo de biblioteca de compresión (zlib, lzo) para comprimir todos los recursos del juego (el directorio res \ anterior) en un solo archivo. Luego, debe usar la misma biblioteca de compresión para extraer el contenido de sus recursos, en tiempo real, para cargar sus activos en su juego.
Entonces, ¿qué sucede cuando quieres parchear tus activos? Luego tiene que: compilar un archivo de activos completamente nuevo y distribuirlo a sus usuarios (para que esencialmente vuelvan a descargar lo que ya tienen, más un puñado de adiciones), o tenga que construir un actualizador (otro programa para mantener ) y lidiar con el hecho de que las cosas pueden salir mal y su archivo de activos se corromperá ...
Honestamente, no es exactamente trivial hacer que funcione y no veo la recompensa en su situación. Un directorio simple debería ser suficiente para encapsular sus 10 sprites y es mucho más fácil agregar y parchear cosas: solo necesita descargarlos en el directorio correcto y listo.
Construyendo un instalador
Esto supone que está apuntando a Windows ... una vez que tenga lo anterior abajo, puede trabajar en la construcción de un instalador para su juego. Evitaría a toda costa los métodos ClickOnce que admite Visual Studio. Es no es el típico programa de instalación de Windows y viene con su propio conjunto de peculiaridades.
Eche un vistazo a esta pregunta de StackOverflow : contiene un conjunto de enlaces útiles a paquetes de instalador que puede usar. A mucha gente en estos días parece gustarle WiX . Nunca lo he usado yo mismo. Además, AdvancedInstaller e InnoSetup son opciones populares.
fuente
Es posible que pueda vincular estáticamente algunas de las bibliotecas en lugar de incluir las dll. Sin embargo, si y cómo es diferente para cada biblioteca.
fuente
Puede usar un software como Enigma para empaquetar sus archivos y guardarlos en un único .dat. Tendría que cambiar la carpeta de su lanzador.
fuente