jueves, 6 de junio de 2019

lua, el lenguaje

lua y su sintaxis:

Lo primero que debemos de tomar en cuenta es el lenguaje en el que vamos a programar. He elegido lua (con mucha razón!) por su fácil sintaxis. Tú puedes empezar por otro pero te aconsejo empezar con lo más básico posible.

Bien. Para empezar, utilizaremos la consola, la "ventanita" negra que aparece junto al simulador de Corona SDK. Ésta será nuestra herramienta más útil a la hora de depurar código. Más tarde hablaremos de esto.

Así que, abrimos el simulador, creamos un nuevo proyecto "blank" y abrimos el archivo "main.lua" en nuestro editor de texto favorito.

Hay funciones básicas dentro del lenguaje de lua que nos ayudan a la hora de escribir nuestro código. Por ejemplo, la función "print" sirve para mostrar un mensaje en la consola.

Suponiendo que ya has creado un nuevo proyecto y abierto el archivo "main.lua", procedemos a escribir la siguiente línea de código:

local mensaje = "Hola, mundo!"

print(mensaje)

Si revisas la consola, debería aparecer el mensaje "Hola, mundo!" en ella, si no, vuelve a escribirlo.

miércoles, 4 de abril de 2018

Conociendo el Desarrollo a fondo

Antes de entrar en materia...

Siento necesario que entiendan las cosas, pues liarse con términos puede resultar incómodo al aprendizaje. Teniendo esto en mente, les escribo el siguiente material:

Corona SDK, motores gráficos y más.

Qué es un motor?

Es un software que te permite la creación, modificación y administración de gráficos, sonidos y demás dentro de un videojuego.


Nota: No he mencionado a Gideros Mobile pero es muy bueno si entiendes la OOP.


Hay muchos tipos de engines (motores gráficos) para la creación de videojuegos, nos centraremos en los más conocidos.

Motores gráficos:

Stencyl:
Es estilo Drag & Drop, útil para hacer pequeños prototipos pero cuesta dinero para empezar. 2D, Drag and Drop y pagas cada mes.


Game Maker:
No recomendado para personas que están empezando en la creación de videojuegos. 2D, ¨Drag and Drop¨, los módulos de exportación ($$$) te golpean en la cara.

ClickTeam Fusion:
No recomendado, muy difícil interfaz. 2D, Drag and Drop y pagas una sola vez.

Construct 2:
Recomendado para personas con absolutamente nada de experiencia en programación. 2D, Drag and Drop, y pagas una sola vez. No hay exportación nativa oficial. Lento en móviles.

RPG Maker:
Fácil, pero no recomendado almenos que quieras crear solamente RPG´s. 2D, Drag and Drop, fácil de aprender y usar. Tendrás prototipos en menos de 5 minutos.

CryEngine:
Como su nombre indica en inglés, te hará llorar de lo difícil que es tan sólo entenderlo. 3D, Código puro, Difícil de aprender y usar. Requiere una gran curva de aprendizaje aun usando Lua.

Unreal Engine:
anterior, pero con Blue Prints. Si no entiendes el concepto ¨Blue Print¨, entonces puede no ser recomendado. 3D, Un motor muy potente que gracias a BluePrint, es posible crear un juego hasta sin mucho código.

Unity:
Recomendado para personas con alta experiencia en programación. 2D y 3D, código, Es el estándar de los videojuegos de hoy. Cobra por módulos de exportación.

Godot:
Alternativa gratuita y un poco más fácil a Unity. 2D y 3D, código, Es Unity pero grátis. El código GDScript es legible si entiendes Python.

G Develop:
Alternativa gratuita a Construct 2, no recomendado debido a inestabilidad. 2D, Drag and Drop, es Open Source y no requiere muchos conocimientos. Aún está en desarrollo.

Metas que me han funcionado:


1.Aprender a programar estilo Drag and Drop (Construct 2)

2.Entender conceptos básicos de programación (Lua, Javascript o Python son recomendados para comenzar esto)

3.Aprender a usar Corona SDK (Es recomendado debido al rendimiento ante todos los otros, en especial HTML5 de Construct 2. Que por cierto, tiene un performance horrible en teléfonos incluso alta gama)

4.Saber generar una keystore con Java Runtime Enviroment (JRE)

5.Aprender a crear una cuenta de desarrollador en Google Play para subir apps (Conlleva obtener tarjeta de crédito internacional activada)

Por que recomiendo Corona SDK?


  • Porque puedes crear lo que se te antoje, sólo imaginalo y créalo en código.



  • Porque tiene el mayor rendimiento. De los 3 mejores engines 2D, Game Maker, Construct, etc, es el más rápido.



  • Porque no necesitas nada más que un PC con JRE instalado para exportar tus aplicaciones. Funciona con la web.



  • Porque no sólo exportas Android, sino también IOS, Mac, Windows, Kindle, Android TV, Apple TV, etc.



  • Porque es el más fácil para programar código, funciona con Lua.



  • Porque tiene todo tipo de plugins(incluso no oficiales) y una gran comunidad que extiende a Corona.



  • Porque su versión gratuita te deja lucrarte sin pagar y además vienen la mayoría de funciones que requieres.



  • Porque tiene buena documentación y servicios de soporte.



  • Porque apesar de tener que exportar con internet, ves todo funcionando en directo desde tu PC y sin internet.



  • Porque trae descenas de ejemplos para empezar, desde físicas y sonido, hasta animaciones y efectos. (Creo que son más de 80 code samples)



Te he dado 10 razones escenciales por el momento. Puede que hayan más.

Me gusta dividir los diferentes modos de hacer un videojuego:
Existen tres formas de hacer los videojuegos. El modo fácil, el modo arduo y el difícil.

El modo fácil abarca todo lo que sea Drag & Drop, NO entender los conceptos del código (sólo escribirlo o copiarlo), No tener ningún tipo de experiencia o pagar para que el juego "se haga".
Esta primera forma implica poco o casi nulo esfuerzo y sólo requiere de dinero y tu idea.

El modo difícil, propone ser una propuesta interesante pues requiere mucho esfuerzo en escribir y entender
de manera abismal el código. Esta forma de trabajar no te permite llegar muy lejos debido a que es muy
complicado tener altos conocimientos técnicos de un lenguaje. Obvia esto si eres de ese 1% de la gente que
es muy inteligente, para nosotros, el resto de la humanidad es completamente innecesario. Sólo se puede actuar en equipo y de manera obligatoriamente dependiente y aún si es tu idea, podría cambiar en el proceso.

Aún así, tener altos conocimientos de un lenguaje te permite obtener una profesión adecuada para tu caso.

El modo arduo, propone mucho esfuerzo, dedicación y especialización en diferentes áreas de la creación de
videojuegos. Es parecido al anterior pero necesitarás hacerlo por tí mismo. Cuesta dinero, mucho tiempo y paciencia. Para este método indie, necesitarás aprender a utilizar herramientas como editores de imágenes, de texto. Habilidad para utilizarlos correctamente (de manera mínimamente profesional;con calidad).

Cosas que necesariamente debes saber si estás sacrificando tiempo por calidad es que existe el Pixel Art!
Es fácil, caricaturesco, muy llamativo y retro. Todos ese aspecto ochentero es valorado en la actualidad. Flappy Bird es claro ejemplo. Por otro lado, no es tan necesario saber lenguajes de programación enormemente
complicados como C++ pues éste sacrifica mucho tiempo.

Java es una opción más viable pero para empezar siempre recomiendo Python pues no sólo te ayudará a entender mejor Lua, sino que si te crees lo suficientemente adaptado al entorno, puedes entrar de lleno a Godot con su GDScript, pues su sintaxis es muy similar a la de Python. Como ves, tienes muchas ventajas.

Además de la programación y los gráficos, lo probable es que tu juego lleve música de algún tipo u efectos de sonido. Debes aprender a tocar el piano (esto por motivos de tiempo por supuesto), debido a que a la larga te ayudará a comprender mejor la teoría musical. Dedicate a escribir, componer y estudiar notas y acordes.
Hasta que puedas sacar a realidad lo que tienes en la cabeza. Busca, informate de los DAW´s y VSTs. Aprende (si quieres) a equalizar y ajustar sonidos a tu antojo.

Requiere mucho tiempo cada una de estas áreas, sin mencionar que hay sub-áreas como:

La del pixel-art: animación, fondos (backgrounds), tiles y json, Spritesheets.

Del sonido como: Composición, reconocimiento mínimo de escalas mayores y menores, oído musical, reconocimiento y manipulación de frecuencias con EQ (Low, Mid y High).

Pero no se queda la programación: Programación orientada a objetos, manejo de recursos de memoria, diseño de interfaces, módulos, librerías, etc.

El modo arduo puede ser peligroso para una persona que no se dedica a esforzarse por un objetivo, pues puede perder el interés y con ello tiempo. La realidad es que es tan simple como: Quieres hacer un juego realidad pero no tienes tiempo o te da flojera? pues no es para tí.

Espero que este resumen te haya servido de algo.





Hasta la próxima...



Nota Final: NO te alteres si ves mucha palabras en la introducción, pues no escribiré tanto cuando se trate de lecciones. Almenos no en código.




martes, 3 de abril de 2018

Qué rayos es Corona SDK?


Para los más novatos esto suene a chino: Corona SDK, que según wikipedia (ya les digo que sí es un poco aburrido leer de manera muy técnica):

"Es un Kit de Desarrollo de Software
desarollado por Corona Labs Inc."

Y bueno qué es ese Kit? bueno, de forma resumida, es la forma en la que se complican la vida y se parten la cabeza para hacernos la vida más sencilla. Crean diferentes módulos, librerías... En fín que hacen mucho código reutilizable y lo unen a un lenguaje para acortar el tiempo de creación de prototipos e incluso juegos completos.

Nosotros utilizaremos el lenguaje Lua que viene dentro del "paquete o kit o como se te ocurra llamarlo", dibujaremos sprites básicos, aprenderemos a buscar efectos de sonido gratuitos y a componer música, etc. Haremos TODO el proyecto desde cero y con mi ayuda.

Puede parecer una locura pero ser independiente, ultimamente trae más beneficios que trabajar en grupos de 3 o 4, en especial si tienes poco presupuesto. Continuemos.

Teniendo claro qué es un Kit, aún hacen falta cosas para aclarar: primero, Lua es un lenguaje de programación; eso con lo que "chateas" con la pc para que haga lo que quieras y no literal, ok? 
Un lenguaje de programación (junto a un editor de texto) te permite crear, ejecutar y probar diferentes comandos (código) para un uso particular. Éste uso en nuestro caso es la programación de videojuegos.

Y para dar un ejemplo básico: comenzaremos con algo simple:

local = 1

"local" significa que creamos una variable local, "=" se entiende como es igual a en cualquier idioma y el número... Ya entendieron? ok, ok.

Pues algo más difícil:

local = "Hola Mundo!"
Si adivinaste, Ponlo en los comentarios!

Para los que andan todavía un poco confusos: la diferencia es que para las palabras (cadenas en término informático), se ponen entre comillas, ya sean simples (' ') o dobles (" ").

Espero les haya gustado esta primera parte de la serie.



Hasta la próxima!


 Bienvenidos todos,

A éste su humilde blog-tutorial de Corona SDK en español y gratuito



No hay nada mejor para un desarrollador de videojuegos indie que...bueno, desarrollar "videojuegos", y es que para nosotros, crear y ver nuestra creación en favor de los demás es una experiencia única. No entraré en muchos detalles, pues cada uno sabe lo conveniente para sí.

Pues dejando a lado toda introducción y llegando al punto: He decidido hacer una serie de tutoriales paso a paso de cómo desarrollar videojuegos al puro estilo del código. Sip, cero Drag and Drop de los clásicos Construct2 y Game Maker, y mucho más de "Que si function o print". Pero antes de que lancen el computador a no sé donde (seguramente por que detestan el código a muerte), debo de advertirles.

Ya he pasado cientos de veces por el mismo lugar, y he decidido cambiar por lo siguiente:

  • Más libertad para hacer lo que quieras
  • Menos dependencia de una empresa
  • Piensas como los genios piensan
  • Facilidad para entender otros lenguajes de programación
  • Más diversión que sólo arrastrar y soltar
Éstas son sólo unas pocas de las razones que me llegan. Puedes escribir más en los comentarios...



La verdad es que, la competencia crece y los noobs usan lo básico para ir a lo intermedio o lo avanzado. No para quedarse estancado en un programa de una empresa en concreto y refugiarse en un escondite que depende de otras personas. Pero, apesar de mi ideal de promover el software libre (vaya que salgo del tema), usarémos uno que apesar de no darte permiso para cambiar el código fuente de su motor, cosa que dudasomente nos duela, almenos a los menos experimentados, es completamente gratis.

Sus funciones más útiles son más que suficientes para desarrollar apps y juegos móviles capáces de no sólo funcionar excepcionalmente rápido y fluido, sino que también permite que su exportación sea capaz de funcionar en Google Play y mejor aún, con sólo tener el Java JDK instalado. (y por supuesto que el internet hace la magia).






Sabiendo todo esto... A qué vas a esperar para hacer tu videojuego (2D) una realidad?


Click aquí para la primera parte: Qué rayos es Corona SDK y Lua?