Crear un juego – Parte IV (Anatomía y código)


En la parte II de esta serie de tutoriales les hable de lo que sería la anatomía de un videojuego, hoy vamos a ver esto, pero en la práctica y con SDL.

Como les comenté yo uso un IDE llamado Clion que este a su vez usa Cmake para los proyectos, así que hay que configurarlo, así que vamos por pasos, pero antes de empezar con los pasos quería comentar que también trabajaremos con la librería SDL_image.

Debido a que SDL por si solo trabaja con BMP, pero como sabemos este formato de imagen no cuenta con canales Alpha, haciendo que no tengan transparencias, así que para que una imagen BMP tenga su transparencia hay que especificar un color que omitirá al momento de hacer una rasterización y en caso de SDL seria al momento de hacer Blit o Flip.

Para que quede más claro nuestra imagen es la siguiente.

Como pueden ver hay un color que envuelve a nuestro personaje, si abrimos el Photoshop u otro programa para saber cuál es el color RGB de ese color que envuelve al Hero, seria R: 255 G: 0 B: 255.

Ahora le especificamos a SDL que la superficie que tiene la imagen (Sprite) uno de sus colores será omitido y esto se hace con:

Pueden ver que SDL_SetColorKey tiene 3 parámetros, el primero es la superficie que contiene el Sprite, el segundo es una constante para indicar que se activa y el tercero es un valor Color de SDL que se puede obtener con SDL_MapRGB, pasando también el formato del Sprite, más el color en RGB.

Y con esto ya tenemos un BMP transparente, pero si te quieres quitar la molestia de buscar el color, decirle a SDL que color debe omitir sería mejor cargar un PNG que soporta el canal Alpha mas aparte pesa menos que el BMP, para esto está la librería SDL_image, que su única función es cargar otros formatos.

Ahora si pasemos a los pasos a configurar nuestro entorno.

Lo primero es bajar la librería SDL y SDL_image, pero no solo el binario si no también el paquete de desarrollo (no el código fuente). Una cosa que se me olvido comentarles, ahorita hay 2 versiones de SDL, la 1.2 que ya tiene algunos años y que es laborioso en programarlo y la 2.0 la cual me baso, así que cuando bajemos una librería SDL como (SDL_NET o SDL_mixer) siempre fijos que es para la versión 2.0

Después de descargar las librerías, las descomprimiremos en una ubicación, así que traten que este cerca de la raíz de un Disco Duro, para que al momento de ponerle el Path en la configuración del IDE sea corta. Una vez descargada y puestas las dos librerías, tendrá 2 versiones, es decir, para 32Bits (i686-w64-mingw32) y 64Bits (x86_64-w64-mingw32) según para que sistema queremos configurarlo, pero ahorita solo nos centraremos en la de 32Bits.

Entonces tendremos esta estructura.

Lo segundo es abrir nuestro IDE y crear un proyecto con C++ 11 y esto nos generara un archivo CMakeLists.txt donde configuraremos el SDL y SDL_image para el Cmake, aunque hay Cmakes estandarizados para el SDL y lo pueden ver aquí, me gusta el mío por lo sencillo y también por nos sirve para el propósito de estudio, el cual ahorita se los mostrare.

Cuando abrimos nuestro archivo de configuración del Cmake, veremos que solamente tendremos estas líneas nada más.

Ahora lo que haremos es agregar la configuración estándar del SDL, de hecho, lo pueden usar para futuras proyectos, solo deben especificar la ruta en donde está el SDL y para una muestra aquí está la configuración que yo uso.

En la línea 6 es donde especifico la ruta al SDL y eso es todo lo que hay que cambiar, pero también quiero que recuerden que las líneas 28 y 29 debe ir el nombre del proyecto en este caso Anatomía.

En el siguiente paso (tercero) es copiar las DLL dependientes, aquí lo podemos hacer en la carpeta System32 o en la carpeta del ejecutable del juego, pero como a mí no me gusta contaminar mi System32 manualmente, lo que hago es copiar las DLL a la carpeta del proyecto del ejecutable.

Estos archivos se encuentran en donde pusimos el SDL (ver arriba la estructura de los archivos), más específicamente en la carpeta BIN y los archivos que deben copiar son:

  • libjpeg-9.dll
  • libpng16-16.dll
  • libwebp-4.dll
  • libtiff-5.dll
  • SDL2.dll
  • SDL2_image.dll
  • zlib1.dll

Cuando vayamos a la carpeta de nuestro proyecto veremos que hay una carpeta llamada cmake-build-debug, ahí es donde copiaremos estas librerías. Y con esto queda listo para empezar a programar en SDL.

Ahora pondré un código base que nos ayudará entender la anatomía de un videojuego y a su vez será nuestra base para ir implementando en los demás cursos.

Como verán es algo básico pero lo suficiente para entender la anatomía de un videojuego y más para mostrar una ventana si lo ejecutamos y si recuerdan la anatomía de un videojuego, recordaran lo siguiente:

  • Iniciación
  • GameLoop
    • Entrada
    • Procesamiento
    • Salida
  • Finalización.

Entonces de acuerdo al código anterior, de la línea 5 al 26 correspondería a Iniciación, el GameLoop seria 28 al 56 y la finalización correspondería a 58 al 61. Ahora dentro del GameLoop la entrada seria entre las líneas 30 al 40, el procesamiento seria del 43 al 49 y la salida seria 52 al 54

Y para finalizar, esto es lo que me muestra al momento de compilarlo.

Programador Mexicano con 14 años de experiencia, ha incursionado en diferentes áreas ampliando su experiencia. Aprendí programación por que quería hacer mi propio video juego aun que he tocado otras áreas como servidores, web, aplicaciones móviles, etc., pero la programación de video juegos fue más por hobby, primero con el 2D, aprendiendo usar SDL que es una herramienta que te da muchas libertades y optima, después Engine 3D como ogre o como CryEngine pero me enfoque mucho a Engine Source de valve. Me gusta compartir mi conocimiento y ayudar a la gente cuando puedo y los que me van conociendo saben que es cierto.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *