domingo, 14 de abril de 2013

INTRODUCCIÓN A ENGINES Y FRAMEWORKS DE DESARROLLO (II)


DESARROLLO DE VIDEOJUEGOS EN WINDOWS 8 (Sesión 2B)

Aquí está la segunda parte de la segunda clase en el taller de creación de videojuegos de w8.

UNITY
Primero empezaremos hablando de UNITY, pero ¿Por qué?, bueno daremos algunos puntos importantes sobre este engine:
  • Es  uno de los engines mas utilizados, ya que en las encuestas realizadas a Developers el 53% contestaron que lo han utilizado en la creación de sus videojuegos.
  • Se tienen como base aproximadamente 1.7 millones de Developers registrados
  • Tiene una serie de plugins o componentes que permiten la exportación a diversas plataformas tanto en windows, windows RT, windows phone, iOS, Xbox 360, Os X, web, wii, play station, android, etc.
Este tipo de plataformas es una de las mas completas desde las perspectivas del manejo de gráficos  inteligencia artificial, los colliders, los colicionadores, el manejo de partículas entre otros. No es una herramienta trivial de entender, está compuesta de diversos tutoriales y comunidades en español.



Construct 2
Construct es un engine un poco menos ambicioso que unity, sin embargo es muy potente y con el se han generado también muchos juegos. En costo hay una diferencia significativa entre estos 2 engines que básicamente se reflejan en las características de los mismos.

Construct está mas orientado a estándares como HTML5 con una interface de desarrollo mas intuitivo con tutoriales mucho mas sencillos de entender y está basado en eventos y comportamientos de los mismos objetos.



Independientemente del engine o framework que utilicemos, tenemos que considerar algunos aspectos claves relacionados con un juego casual.


Tal vez nos estemos preguntando si estas son las únicas dos opciones para el desarrollo de videojuegos y claro que la respuesta es ¡NO!, existen en el mercado mas de 150 engines y framework de desarrollo, sin embargo, estamos seleccionando estos dos dada su facilidad de uso, su soporte en cuestiones de comunidades y tutoriales.

Ahora, para poder desarrollar videojuegos debemos:
  • Tener bases solidas de programación, como por ejemplo una combinación entre XAML/C# o HTML5/JavaScript
  • Desarrollar mas de una habilidad en los roles requeridos ya que necesitamos tener la capacidad de generar la ilustración de un storyboard o trasladar/transmitir tanto al diseñador grafico como al artista alguna escena que queramos que pase en nuestro videojuego.
  •  Al igual, como hemos venido viendo, tenemos que explorar un par de engines o frameworks para darnos cuenta de su funcionamiento y poder buscar el que mejor nos convenga
  • Iniciar el diseño conceptual de un videojuego, esta es una de las tareas mas creativas o mas dificiles por que tenemos que tomar la decisión de cual va a ser la historia de nuestro videojuego
  • Por ultimo, saber que se necesita para publicar un demo y sobre todo conocer el proceso completo de la publicación 

sábado, 13 de abril de 2013

INTRODUCCIÓN A ENGINES Y FRAMEWORKS DE DESARROLLO (I)


DESARROLLO DE VIDEOJUEGOS EN WINDOWS 8 (Sesión 2A)

Segunda clase en el taller de creación de videojuegos en w8. 

Nuestro siguiente paso es obtener conocimientos, herramientas y habilidades necesarias para desarrollar un juego casual, que son los que proliferan en el Windows Store. No es casualidad que mas del 40% de las aplicaciones se que encuentran hoy en día, caigan en está categoría y a su vez en diversas subcategorías de videojuegos.
Para el marketplace adentrarse al desarrollo de un videojuego, por mas pequeño que este sea, es una actividad algo compleja, ya que no solo se habla de simplemente entender una sintaxis de un lenguaje de programación o aprender una herramienta (como alguno de los engines de los que se van a hablar aquí), involucra muchas disciplinas y es por esto que empezaremos tratando de definir un poco de cual es el perfil que necesitamos.


Con esto queremos decir que para desarrollar un videojuego tenemos que desarrollar habilidades que van mas aya de solo conocer un nuevo lenguaje de programación, dominar su sintaxis u obtener la certificación del engine que estemos utilizando.

Un programador de videojuegos tiene que ser capaz de justificar cada uno de los elementos y/o personajes que tiene su videojuego; también debe de tener la capacidad de dirigir en donde irán las cámaras, las perspectivas. las luces que iluminarán las escenas de su videojuego e incluso, poder justificar la historia atrás de cada uno de estos personajes o escenarios dentro del videojuego.


Pero claro que es necesario jugar para conocer que hay en el mercado, incluso, para copiar algunas ideas y mejorarlas o evitar errores que podríamos detectar en los juegos. Sin embargo hay muchas fuentes de inspiración para los diseñadores de los videojuegos, puede ser desde un libro, una película  una escena en especifico o tratar de copiar algún personaje o incluso el guión de alguna novela en concreto. A diferencia de la creación de aplicaciones o software empresarial, al crear un videojuego puede aumentar el numero de roles necesarios o simplemente se puede dejar las responsabilidades a una sola persona.

Si tuvieramos que estar haciendo una serie de reclutamiento podríamos escuchar algunas frases como:

  • Soy artista gráfico
  • Tengo muchas habilidades para codificar
  • Me gusta crear historias
  • Tengo talento para jugar
  • Soy músico
  • Quiero ganar dinero
  • Quiero ayudar
  • Tengo curiosidad de involucrarme en el proyecto
Es por esta razón que debemos de cuidar la forma de invertir nuestro tiempo, el tipo de herramientas que vamos a aprender, que tipo de habilidades vamos a adquirir y cual sería la ruta critica para llegar a este primer objetivo que es: "la creación y publicación de nuestro primer videojuego", para esto vamos a seguir un diagrama muy interesante.


Como podemos ver tenemos tres caminos a seguir, el primero es como "desarrollador independiente de un videojuego" y para esto debemos de tener fundamentos sólidos de programación en lenguajes como C, C++, C#, JavaScript, así como también en estándares como HTML5, para enfocarnos prácticamente en patrones, estructuras y arquitecturas de mismo juego.
Pero como se había comentado anteriormente, la creación de videojuegos es multidisciplinaria y hay personas con habilidades en Marketing y negocios que tienen la idea o el concepto o también personas con experiencia en el Diseño gráfico o artistas plásticos que pueden llegar a utilizar un engine como lo es Construct para la creación de un videojuego sencillo (de una manera simple sin tener mucho conocimiento de codificación o sintaxis de los lenguajes de programación) pero bastante potente y muy bien aceptado.

En este nivel tenemos c# como el lenguaje de programación a utilizar sobre el engine, por otro lado si utilizamos construct podemos desarrollar un videojuego en su versión inicial rápidamente y tenemos que empezar a considerar las cuestiones de música y sonido. Aquí hay que decidir si tomar el concepto 2D y 3D, todo dependiendo del alcance de nuestro videojuego y también de las actividades que tengamos en la manipulación de las herramientas necesarias.
Como podemos ver tenemos un par de caminos, el primero es generar código estrictamente orientado al lenguaje de programación que utilicemos ayudados de frameworks y el segundo que es utilizar un engine de desarrollo de videojuegos (construct o Unity)

Una definición básica de ENGINE sería:
Son sistemas computacionales diseñados para facilitarnos la creación y desarrollo de un videojuego desde la perspectiva de un programador.
Por lo general este tipo de sistemas cuentan con 3 características básicas:

  1.  Motor de física: Que son un conjunto de funciones matemáticas que procesan en tiempo real la posición de nuestros objetos o recursos dentro de una escena en el videojuego, teniendo como finalidad otorgarles atributos como la gravedad, inercia, etc.
  2. Rendering: Esto es la posibilidad de agregar texturas, sombras, animaciones, etc a todos los objetos o personajes del juego
  3. La capacidad de auxiliarnos en el momento de codificar o detectar colisiones, entendiendo como colisión en el ambiente de videojuegos como el momento en que 2 objetos se acercan lo suficiente para provocar una reacción.
Otras características que tienen algunos engines:
  • Manejo de sonido y audio
  • Incorporar aspectos de inteligencia artificial
  • Efectos de animación
  • Complementar con temas de conectividad hacia redes
  • Manejo y optimización de memoria
  • Portabilidad hacia múltiples plataformas.

martes, 9 de abril de 2013

NARRATIVA Y DESARROLLO DE PERSONAJES

DESARROLLO DE VIDEOJUEGOS EN WINDOWS 8 (Sesión 1)


Mi primer clase en el taller de creación de videojuegos en w8.

Primero ¿A qué nos referimos cuando hablamos de narrativa?
El poder organizar los acontecimientos de una historia para que tenga sentido, de manera que el espectador pueda entender con claridad y sobre todo, se pueda identificar con ellos y poder darle seguimiento a la historia, en otras palabras, que la historia tenga un SIGNIFICADO para este público es, tal vez, el objetivo mas importante de la creación de las historias. Ahora, todos sabemos contar historias y esto lo podemos ver por que lo hacemos cuando le platicamos a alguien lo que nos ha pasado en el día o cuando contamos un acontecimiento de gran importancia que nos ha pasado. Sin embargo, a pesar de todo el conocimiento que tenemos para narrar las historias es importante conocer algunas reglas que se han desarrollado, a través de los años, para que tengamos la seguridad de que estamos contando la historia de la mejor manera posible.

Citaremos a Anthony Trollope, eminente novelista ingles:


Muchos nos preguntamos ¿A que viene mencionarlo aquí? si se supone que estamos aprendiendo a contar una historia de la mejor manera posible.
Bueno, la realidad es la siguiente: A los personajes de las historias ¡les ocurre de todo! todo el tiempo, tienen que estar en constante movimiento, no se pueden quedar sin hacer nada sentados en sus casas, tiene que salir, de alguna manera buscar, exponerse a alguna aventura o alguna situación que marque sus vidas. ESTE ES UNO DE LOS ASPECTOS MAS IMPORTANTES DE LA NARRATIVA.

La narrativa no es solo referir una historia que le pasa a un personaje, esta historia debe de tener una trascendencia, debe de marcar un antes y un después en la vida de la persona; entonces, debemos entender que nuestro personaje está viviendo aventuras.

Ahora, ¿Por qué son importantes estas historias?

"Al ver este pastel, podemos imaginar que hay un grupo de personas reunidos para celebrar el regreso de uno de los integrantes del grupo después de haber tenido un largo viaje. Es una noche lluviosa y todos están sentados en la sala de la casa del organizador, que es hermano del que acaba de regresar, con sus sillones de piel en color café, la mesita del centro que es de cristal, en la que por su puesto está el pastel; Todos los invitados están con su vaso de bebidas en la mano, se escucha el sonido de las gotas de agua cayendo en el patio, pero eso no importa por que le da un toque agradable a la reunión".

El hecho es que las historias nos permiten vivir otras experiencias, que en nuestra vida diaria nos sería un tanto difícil acumular todas estas experiencias, por lo tanto, la narrativa es nos ayuda a aprender, a comunicar  y transmitir información y le sumemos el hecho de que nos entretiene.

Citaremos a Karl Iglesias, guionista de Hollywood:


Esta es tal vez la definición mas esencial de historia que podemos encontrar. Con esto podemos decir que los elementos esenciales de la narrativa son: "nuestro personaje quiere conseguir algo y tiene problemas para conseguir ese algo".
Pongamos un ejemplo; de las siguientes narrativas ¿Cual es la mejor contada?, ¿Cual es la que cumple con los elementos antes mencionados?

Analizando:
1. Es una anécdota simpática, ironica, sin embargo falta información y es solo un vistazo a una narrativa tal vez mas extensa
2. Aquí faltan ingredientes en está historia (¿quien es el protagonista?, ¿que intenta conseguir?)
3. En está breve narrativa si muestra claramente los ingredientes. Tenemos un protagonista (el hombre), quiere conseguir algo (dejar de ser feliz) y gracias a los acontecimientos de la historia logra resolverlo (conoció a la mujer y fue feliz). 

Vamos a ver otro ejemplo mas claro, mas ilustrado; este es un cortometraje hecho en blender llamado "big buck bunny" creo que la mayoría ya lo ha visto:


Tenemos un personaje: El conejo
Tenemos unos antagonistas: las ardillas
¿Que es lo que quiere?: Tener un día tranquilo y disfrutar el paisaje
Problema: Las ardillitas empiezan a molestarlo y arruinan su día que parecía perfecto, y el conflicto entre el conejo y las ardillas va creciendo poco a poco. Los acontecimientos deben llegar a un momento de crisis inaguantable para el conejo y a partir de aquí empieza a tomar venganza.
Solución: Cuando termina de darle su merecido a cada una de las ardillas, el conejo, para satisfacción suya, toma como cometa al jefe de las ardillitas y así, vemos como termina divirtiéndose volando su cometa.

RESUMIENDO

Elementos esenciales de una historia:

Estos 4 elementos son fundamentales para determinar que la historia esté bien contada y que le guste al publico.
  • Lo memorable lo proporciona en buena medida su apariencia
  • La única manera en que un personaje puede ser creíble en la historia es, si esta cadena de circunstancias se verifica con toda lógica y claridad, el objetivo del personaje es claro y los problemas para conseguirlos son claros y la manera en que el personaje reacciona ante estos retos es creíble también.
¿COMO CONSTRUIR EL PERSONAJE?

Hay dos puntos importantes que debemos de tratar:

Uno. Tenemos que hacer que el espectador identifique al personaje como alguien a que el o ella conoce y cuya respuesta al problema conoce.
Dos. También debemos hacer que el espectador imagine que lo que le sucede al personaje... podría ocurrir e a el también.

Cuando estamos haciendo la narrativa debemos cuidar las verdades emocionales, no se trata tanto de si me va a ocurrir o no el acontecimiento al que se enfrenta el personaje, se trata mas de los sentimientos que esta experimentando en ese momento, debemos saber dar a demostrar si tiene hambre, miedo, sueño, etc.

Y por ultimo, citamos las palabras de David Mamet, un novelista, ensayista, autor teatral, dramaturgo, guionista y director de cine.

"Toda escena debe de ser dramática  Esto significa que el protagonista debe de tener una necesidad sencilla clara y urgente que lo obliga a aparecer en la escena. Esta necesidad es la razón por la que esta ahí. Es de lo que trata la escena. El intento por satisfacer esa necesidad lo llevará al final de la escena, al fracaso --así es como sabemos que la escena ha terminado--. Y entonces este fracaso, por necesidad nos llevará a la siguiente escena. Juntos todos estos esfuerzos habrán de construir, a lo largo del episodio, la trama"