miércoles, 20 de marzo de 2019

Creando videojuegos en Rust lang (Parte 4)

Para nuestro "Hola mundo" en un motor de juegos usaremos el motor de juegos ggez. Las razones por las cuales escogí ggez en vez de las otras opciones (principalmente Amethyst o Piston) son las siguientes:
  • ggez es relativamente reciente. Por otra parte Piston es más estable y cuenta con más tiempo. Para Piston ya hay varios vídeos de ejemplo disponibles en Youtube. Piston parece ser muy modular y quisiera ver como se manejaría un motor de juegos más reciente, menos modular y más simplificado. 
  • Amethyst cuenta con un "Entity-Component-System" llamado specs. Estos sistemas de entidades-componentes es una forma de programar videojuegos en una forma orientada a datos de forma eficiente. A pesar que esto facilita la escala del juego de vídeo, creo que esto será demasiado para ejemplos simples ("Hola mundo", "Snake", etc.) Puede que mientras empiece a dominar estos juegos simples necesite implementar un modelo ECS y eventualmente utilizar el ECS de Amethyst
  • ggez está enfocado a gráficos 2D, mientras que Amethyst está enfocado a ambos: 2D y 3D.
Seguiremos la guía que proporciona ggez en su página de Github: https://github.com/ggez/ggez/blob/master/docs/guides/HelloGgez.md

La guía anterior nos guía a crear un programa simple que use ggez:
  1. Primero nos pide instalar Rust, estos pasos ya los realizamos. 
  2. Luego Nos pide crear un "crate" para nuestro proyecto en este caso ya sabemos como hacerlo cargo new hello_ggez01 y cd hello_ggez01
  3. Luego nos pide abrir el archivo Cargo.toml y agregamos ggez como una dependencia. En el archivo podemos actualizar nuestros metadatos. Básicamente el archivo Cargo.toml es una archivo TOML ("Tom's Obvious, Minimal Language") que guarda los metadatos de las dependencias y versiones usadas para compilar el proyecto. Este es el Cargo.toml que utilicé, cambié ligeramente la versión: 
    1
    2
    3
    4
    5
    6
    7
    8
    [package]
    name = "hello_ggez01"
    version = "0.1.0"
    authors = ["MiUsuario <micorreo@correo.com>"]
    edition = "2018"
    
    [dependencies]
    ggez = "0.5.0-rc.1"
    
  4. Nos pide luego ejecutar el comando cargo run para que descargue y haga la compilación de ggez. Después de unos momentos debería de salir el "Hello world!" predeterminado como se ve en las captura siguientes.
"cargo run" ejecutándose y descargando todas las dependencias.
Se muestra también el Cargo.toml abierto en Visual Studio Code.
Resultado después de esperar a que se descarguen y se compilen las dependencias.
Como no modificamos el archivo obtenemos el "Hola, mundo!" predeterminado.
Este tiempo de espera que tardó en descargar y copilar se lo ahorra al ejecutar el comando "cargo run" nuevamente. Cargo detecta las versiones ya descargadas y compiladas de las dependencias y usa estas. De la misma forma Cargo puede detectar si cambió algún archivo fuente o podemos forzar a Cargo a hacer las descargas o compilaciones.

Navegación:
Primera parte
Siguiente parte
Parte anterior

Fuentes para ggez (inglés):
Fuentes para Piston (inglés):
Fuentes para Amethyst (inglés):

No hay comentarios.:

Publicar un comentario