domingo, 10 de marzo de 2019

Creando videojuegos en Rust lang (Parte 2)

En la parte anterior instalamos Rust. Ahora para crear el videojuego podemos decidir crear nuestro propio motor de juegos o usar alguno existente. De estas opciones la opción más rápida es la segunda.

La página http://arewegameyet.com/ muestra una lista de varios recursos que podemos utilizar para hacer juegos. De esta lista nos limitaremos a crear un juego 2D sin audio como nuestro "hola mundo".

AreWeGameYet muestra una lista algunos motores de juegos existentes. Resalto estos 4 motores de juegos/interfaces por su número de descargas al momento de esta publicación:
  • ggez: Al momento de esta publicación cuenta con 14 mil descargas. Es un framework de peso ligero para crear juegos 2D de forma rápida, puede servir bien para "Game Jams". Esta es una opción reciente y al momento de escribir esta entrada se encuentra en desarrollo activo. Esta opción está inspirada en LÖVE que es un Framework para hacer juegos 2D en Lua. Algunos juegos mostrados en la página de AreWeGameYet son "Llamassacre" y "Zemeroth". Contiene herramientas para dibujos 2D, sonido, cargar recursos y manejar eventos. Estos son algunos videos que usan ggez "Flappy Bird Game in Rust!", "RustFest Zürich 2017 - Create Rust games easily by Lisa" y "Writing a simple game in Rust - Willian Molinari".
  • Amethyst: Al momento de esta publicación cuenta con 15 mil descargas. Esta es una opción  reciente (al tiempo de publicación) y parece estar en constante desarrollo por una compañía sin ánimo de lucro. Encontré el video "Everpuzzle - using the Amethyst Engine with Rust for Games" donde explica un juego desarrollado en Amethyst. También está el vídeo "Amethyst Showcase Q1 2019" donde muestra varios juegos y prototipos hechos en Amethyst. 
  • Piston: Al momento de esta publicación cuenta con 131 mil descargas. Esta opción planea ser un motor de juegos modular. Esta creo que es la opción más vieja, más estable y mejor documentada. Algunos juegos hechos con Piston mostrados en la página de AreWeGameYet son "Vigilant Steel" y "hematite". En la página de Piston vemos también "Piston 2048", "Playform" y "Rustyhex". En la plática de Lisa Passing ella comenta utilizó Piston para su juego 2D pero que tuvo problema al incorporar sonido. Al parecer Pison no incluye framework para manejar sonido. En "Making a Snake Game in Rust" se muestra como crear un juego 2D de snake (sin sonido) utilizando Piston. En "Rust For Game Development" se utiliza Pison como ejemplo para mostrar un demo 2D simple.
  • sdl2: Al momento de esta publicación cuenta con 164 mil descargas. "Chucklefish" (creadores de Starbound) actualmente tienen un proyecto con nombre código "Spellbound" que están desenrollando en Rust y otros idiomas. "Chucklefish" esta usando sdl2 según una publicación en el foro de Rust de Reddit.
Hablando de estudios medianos utilizando Rust tenemos que mencionar que"Chucklefish" está siguiendo la opción de desarrollar su propio motor de juego para manejar la funcionalidad precisa del que van a realizar, usando SDL2 para correrlo en computadoras. También Andrea Pessino de "Ready At Dawn" Studios expresó en Twitter comentarios sobre uso de Rust en lugar de C/C++ para desarrollar juegos.

Antes de hacer un Hola mundo en uno de los motores de juegos de arriba hay que hacer un Hola mundo de Rust para confirmar que podemos compilar Rust correctamente. También necesitamos tener listo el editor de nuestro código de Rust.

Descargaremos y instalaremos "Visual Studio Code" (VSCode) que es el Editor más usado para Rust en este momento según los resultados de una encuesta de "The Rust Blog" en 2018. "Visual Studio Code" tiene la extension "Rust (rls)" que podemos instalar. En esta entrada nos concentraremos en instalar esto siguiendo siguiendo el ejemplo del vídeo "Rust For Game Development" https://www.youtube.com/watch?v=aKLntZcp27M

Resultado al ejecutar el comando 'cargo'
  1. Descargar el instalador de Visual Studio Code correspondiente del vínculo https://code.visualstudio.com/Download. En mi caso sería el vínculo siguiente: https://go.microsoft.com/fwlink/?LinkID=534107
  2. Una vez descargado tenemos que correr el instalador descargado. En este caso al tiempo de escribir esta entrada es "VSCodeUserSetup-x64-1.32.1.exe" que corresponde a Windows 64 bits.
  3. Navegamos las pantallas del instalador siguiendo los pasos que nos indica. Cerramos otras aplicaciones para que no interfieran con la instalación.
  4. Al final estará palomeada la opción de Ejecutar Visual Studio Code, seleccionamos "Finalizar" y ahora se abrirá VSCode.
  5. Damos click a la opción "Extensions" en el menú de la izquierda en VisualStudio Code. 
  6. En la barra de búsqueda buscamos "Rust".
  7. En los resultados debería aparecer la opción "Rust (rls)".
  8. Le damos click en el botón "Install" a la opción "Rust (rls)".
  9. Esperamos un momento mientras se instala.
  10. Una vez instalado el icono en el panel debería decir "Installed". 
  11. Cerramos Visual Studo Code por ahora.
  12. Reiniciamos la computadora, ya que hay variables que se actualizan al reiniciar la computadora.
  13. Abrimos una terminal / línea de comandos / cmd de Windows.
  14. Escribimos el comando "cargo" y presionamos la tecla Enter. Esto nos permitirá ver si Rust y "Cargo" están instalados correctamente. Instalar Rust y "Cargo" fue lo que se hizo en automático con el instalador de la parte anterior. Si está instalado correctamente verán algo como la imagen de arriba.
  15. Creamos una carpeta donde guardaremos nuestro proyecto. Puede ser en un folder llamado  "Rust" dentro de "Mis documentos". Este caso usaré la siguiente estructura "C:\Users\<MiUsuario>\Documents\Rust\HolaMundo", donde <MiUsuario> correponde al nombre de mi usuario en Windows.
  16. Ahora navegamos a un directorio de proyectos usando el comando "cd C:\Users\<MiUsuario>\Documents\Rust\HolaMundo".
  17. Una vez ejecutado el comando ejecutamos el comando "cargo new demo_hello_world_en_rust". Este comando hace que cargo cree la estructura de una nuevo proyecto.
  18. Podemos entrar a esta carpeta con el comando "cd demo_hello_world_en_rust".
  19. Ejecutamos el comando "dir" para ver las carpetas y archivos que generó. En este caso hizo un archivo ".gitignore", un "Cargo.toml" y una carpeta "src".
  20. Abrimos esto en VS Code usando el comando "code ."
  21. Expandimos "src" en el panel derecho y vemos que tiene un archivo "main.rs" que es un archivo simple de Hola Mundo.  
  22. Damos un click en "main.rs" para abrirlo en el panel derecho.
  23. Una vez abierto me salieron algunos errores en el cual mencionan que no se pudo iniciar "RLS". Ignoraré estos errores por ahora ya que creo que es para habilitar "intellisense" (autocompletado) con el código de Rust. Investigaré y arreglaré este problema más adelante si es necesario pero no debería detenernos en nuestro Hola, mundo! 
  24. Intentando ejecutar el comando "cargo run" en la línea de comando (cmd) en la carpeta correspondiente ("demo_hello_world_en_rust") me muestra un error que no encuentra el "link.exe". Buscando un poco en línea encuentro que esto se debe a que se pudo haber instalado incorrectamente el Visual Studio Tools. Puede ser que se haya instalado sin algún SDK o que simplemente no instaló todos los componentes. Entonces intentaré instalar el SDK de Windows 10.
  25. Para instalar Windows 10 SDK hay que ir a la página correspondiente y darle click en "Download the installer" https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk
  26. Se descarga "winsdksetup.exe". Lo ejecutamos y seguimos las indicaciones del instalador. Cerramos todas las ventanas para que no afecten en la instalación. 
  27. Seguía sin funcionar. Así que volví a seguir los pasos de la parte 1 para instalar Visual Studio Tools (https://aka.ms/buildtools). Al ejecutar el exe me da opción de instalar diversos componentes. Esta vez me aseguré de palomear 4 opciones "Windows 10 SDK (10.0.17763.0)", "Herramientas de C++ para CMake", "Características principales de las herramientas d..." y "SDK de Windows 8.1 y SDK de URT". La captura de como se ve esto se muestra en las imágenes de abajo.
  28. Una vez terminada la instalación volvemos a abrir una línea de comandos (cmd) y nos dirigimos a nuestro folder "demo_hello_world_en_rust" y ejecutamos "cargo run". Ahora se ejecuta correctamente.
  29. En mi caso se quedó la ventana abierta, creo que por problemas con el antivirus. Desactivé el antivirus y abrí otra ventana y ahora "cargo run" funcionó correctamente y pude ver mi "Hola mundo". Las capturas de las pantallas principales de muestran abajo.
Captura de pantalla de las líneas ejecutadas para crear los archivos de un nuevo proyecto de Cargo

Como se ven las opciones al instalar nuevamente Visual Studio Build Tools. Estas son las opciones que seleccioné para que funcione bien

"cargo run" mostrando mi "Hola, mundo!" de Rust ("Hello, world!") funcionando. Funcionó bien después de desactivar mi antivirus que estaba detectando el ".exe" como sospechoso.

Si llegan a ver la pantalla de arriba significa que están compilando en Rust en su computadora. También demuestra que Cargo está funcionando. Con esto estamos un paso más cerca a crear nuestro juego en Rust.

Navegación:
Siguiente parte
Parte anterior

Fuentes (inglés):

No hay comentarios.:

Publicar un comentario