Programación - U-tad

Fundamentos en la programación de videojuegos

La programación es el único medio que te permite comunicarte con tu PC para desarrollar un videojuego. ¿Quieres asomarte a los fundamentos? ¡Acompáñanos!

, , , , , , , , ,

Entornos de creación de videojuegos: Unity

Dentro del mundo amateur siempre han existido entornos que simplifican la creación de videojuegos. Algunos casos conocidos son el AMOS en Amiga, Div Games Studio en MS-DOS, o GameMaker en Windows. Estas soluciones pretenden simplificar el desarrollo de un juego, minimizando la necesidad de programar y ofreciendo un entorno visual desde el que diseñar y editar todos los elementos (gráficos, sonido, interacción, etc.).

GameMaker - programación

GameMaker es uno de los entornos de desarrollo para aficionados más conocidos. Lo tienes en Steam, pero tampoco te libra de tener que programar.

 

NFS Most Wanted Mobile

Los juegos para móviles –como NFS Most Wanted– son cada vez más realistas gracias a la evolución de los lenguajes y las herramientas de desarrollo.

En el ámbito profesional, este tipo de entornos de desarrollo han existido dentro del concepto de motores gráficos, que pese a permitir su uso con versiones de aprendizaje limitan su explotación comercial requiriendo el pago de costosas licencias. El motor de Quake es uno de los ejemplos más conocidos, pero más recientemente, los UDK (Unreal) y Cryengine también están siendo muy utilizados.

 Breach & Clear - programación

El entorno Unity permite usar las mismas herramientas y lenguajes para juegos en diversas plataformas. Breach & Clear es de lo más espectacular para Android e iOS.

Otro hito importante ha sido la llegada de Unity, un motor multiplataforma que ofrece una versión comercial de bajo coste. Gracias a que ofrece soporte para un gran número de plataformas móviles, muchos estudios independientes han recurrido a Unity para dar vida a sus creaciones. Otras compañías, como Havok, se han unido al carro con casos como Project Anarchy, una herramienta de creación de juegos similar a Unity. En definitiva, nunca antes los desarrolladores han dispuesto de tantas herramientas ni tan potentes para desarrollar videojuegos. Además, si te decides en este campo, puedes partir de muchos programas gratuitos con los que practicar y adentrarse en el aprendizaje de la programación. ¡Es un gran momento para animarse a desarrollar juegos!

 

 

ESTRUCTURA DE PROGRAMACIÓN

En el paradigma de programación actual, el flujo de ejecución del programa es controlado mediante tres tipos de estructura: de iteración, de selección y de secuencia. La iteración permite pasar por una serie de instrucciones varias veces, mientras se cumpla una determinada condición. La selección permite ejecutar un bloque de instrucciones bajo tal condición. La secuencia implica que un bloque de instrucciones debe ser ejecutado en orden.

Estructura de programación

Las estructuras de iteración, selección y secuencia controlan todas las funciones que se ejecutan en un juego programado en lenguaje C.

Este paradigma permitió eliminar el uso de “GOTO”, que se consideraba peligroso, ya que permitía realizar saltos de un punto cualquiera del programa a otro. La programación estructurada impone una jerarquía en la definición de estructuras. Si dentro de una estructura se abre otra, ésta última debe ser “cerrada” antes de que se cierre la estructura que la contiene. Cuando saltamos de un punto a otro del programa, siempre se respetará esta jerarquía de estructuras. Por ejemplo, al invocar a una función, saltaremos al bloque de código de la misma, se ejecutará respetando estos principios de iteración, selección, y secuencia, y volverá exactamente al punto donde se invocó.

Diablo III - programación Mark of the Ninja - programación Juegos actuales tan diferentes como Diablo III o el plataformas Mark of the Ninja comparten un mismo tipo de programación estructurada en “iteración, selección y secuencia”. Mismos ingredientes, pero distinta fórmula.

PROGRAMACIÓN ORIENTADA A OBJETOS

La programación orientada a objetos se caracteriza por tres propiedades: encapsulación, polimorfismo y herencia.

  1. La encapsulación se refiere a que cada objeto encapsula o contiene todos sus datos y las operaciones que puede realizar.
  2. El polimorfismo es un concepto más abstracto y encierra una mayor dificultad de comprensión. Básicamente se refiere a que cuando realizamos una operación sobre un objeto, el resultado de dicha operación dependerá de la clase a la que pertenezca dicho objeto.
  3. La herencia determina una jerarquía y el modo en que los objetos interactúan entre sí, en función de su clase. Al definir una clase previamente, se determina el comportamiento de uno o varios objetos. La herencia indica que los objetos de una clase pueden heredar la funcionalidad de otra. Esto está relacionado con el polimorfismo, ya que es posible que una clase redefina operaciones de la clase heredada (en la que se basa) y, en tiempo de ejecución, se decidirá qué versión de la operación se utilizará.
The Division - programación

La programación orientada a objetos permite la elaboración de los sofisticados juegos actuales sujetos a múltiples factores de interacción, física, gráficos, IA, etc.

Castlevania LoSII - programaciónLos enemigos a los que te enfrentas en un juego pueden compartir gran parte del código que rige su comportamiento (clase) y diferenciarse cuando entran en juego diversos factores como el poliformismo, o la herencia. Todos los objetos que puedes ver en un juego –y muchos más que no ves– están sujetos a unas normas de composición definidas en el código. Contienen otros y son contenidos en otros.

 

EL ENTORNO UNITY

Unity es un entorno de creación de videojuegos desarrollado por Unity Technologies, una compañía afincada en Dinamarca. Inicialmente estaba orientado al desarrollo de juegos en 3D, aunque desde la versión 4.3 soporta también la creación de juegos en 2D.

Entorno Unity 3D - programación

Como Unity permite trabajar sobre un entorno visual, podemos ver siempre el aspecto del juego y todos sus elementos en tiempo real.

Editor de Unity - programaciónContiene un entorno visual desde el cual, arrastrando objetos con el ratón, podemos definir el escenario de juego. Las propiedades visuales, de colisiones y físicas de los elementos se editan desde el propio entorno, y la lógica de cada uno de ellos se puede programar utilizando los lenguajes C#, un lenguaje basado  en C++ creado por Microsoft; JavaScript, un sencillo lenguaje muy utilizado en la web hoy en día; o Boo, que es un lenguaje orientado a objetos inspirado, a su vez, en la sintaxis del lenguaje Python.

 

 

Javier San Juan Cervera - U-tadEl Experto

Javier San Juan Cervera

Codirector Máster en Programación de videojuegos U-tad

  1. Javier San Juan Cervera ha trabajado como programador de videojuegos en los estudios Digital Jokers y Future World Games, así como desarrollador freelance de aplicaciones para plataformas iOS. También fue investigador en materia de Inteligencia Artificial en la Universidad Politécnica de Madrid.
  1. En la actualidad es profesor en U-tad, y Codirector del Máster en Programación de videojuegos en ese mismo centro junto a Jon Beltrán de Heredia, Fundador y CEO de Mouin.
  • Tienes más detalles en su web de perfil en U-tad.

 

REFERENCIAS

  1. Felicia, Patrick, Getting Started with Unity. Packt Publishing, 2013
  2. Friendman, Daniel P., Wand, Mitchell, and Haynes, Christopher T., Essentials of Programming Languages, Second Edition, MIT Press, 2001
  3. Wexelblat, Richard L., History of Programming Languages, Vol. 1. Acad. Press, 1981
Getting Started with Unity Essentials of Programming Languages History of Programming Languages