miércoles, 29 de febrero de 2012

Programando: ActionScript 3.0 (1. introducción - variables)

Ahora que estoy aprendiendo a programar he decidido incorporar mis nuevos conocimientos al Blog, por un lado para tener una documentación a la que recurrir cuando olvide algo que necesite a la hora de crear mis proyectos y, por otro, para explicar nuevas cosas importantes en el desarrollo de juegos que les puedan servir a los lectores.

Empezando por ActionScript, que es el lenguaje que se usa con Flash para el desarrollo Web y de videojuegos, voy a meterme de lleno en materia y a olvidar todo el tema de historia de lenguajes de programación, versiones, metodología y demás. Para aquel que necesite más información sobre esto hay bastante en la Red, pero aun así, si alguien tiene dudas sobre el tema, tarde o temprano acabare explicando cosas más generales como algoritmos, métodos de programación de géneros concretos de juegos y otras cosas que vaya aprendiendo.

Comenzando:

La primera parte importante del lenguaje de programación son las llamadas variables, que son algo así (en lenguaje de la calle) como un nombre que sustituirá un valor durante todo el programa y que variará con todas las operaciones que ocurran.

Por ejemplo: La variable numero, podría tomar el valor 5 y cambiar durante el programa al sumarle otros números. Bien, pués en vez de usar el 5, que como ya hemos dicho irá cambiado, usaremos numero, para referirnos a este valor.

En ActionScript 3 las variables se declaran (o se preparan para ser usadas) con la siguiente sintaxis (forma de escribirlas):

var nombreVariable:Tipo = valor;

Por ejemplo: var valor1:Number =17;

Es importante saber que en ActionScript se distinguen entre mayúsculas y minúsculas (No es lo mismo valor1 que VALOR1 ni las anteriores que Valor1) y que después de cada sentencia se pone punto y coma.

Para saber más sobre variables debemos conocer los tipos de datos que se pueden manejar, ya que como vimos antes, se puede especificar el tipo de valores que van a contener.

De momento hay que quedarse con que algunos tipos de datos simples en AS3 son:

- String (cadenas de caracteres)
- Numerico -> Number
- Booleano (Que solo puede tomar valor verdadero o falso).

Y algunos tipos de datos complejos:

- MovieClip
- TextField
- SimpleButton

Aunque estos últimos aun no tengo pensado usarlos en mis explicaciones. :P

El caso es que, ahora que sabemos que podemos tener valores debemos conocer como relacionarlos para hacer operaciones con ellos, así, para manejar un poco de matemáticas y comparar valores tenemos los típicos operadores:

+ (sumar) (restar) * (multiplicar) y / (dividir)

Por ejemplo, para declarar una variable que tendrá el valor de la suma de dos, escribimos:

var sum:Number = 23+32;

Y sum tomará el valor 55.

Para muestra un hola mundo, que viene a ser el clásico programa que todo el mundo hace cuando empieza, pero para ello, debemos introducir una sentencia que saque por pantalla lo que le pidamos, trace.

La sentencia trace encerrará entre parentesis lo que queramos sacar por pantalla y que llevará comillas dobles si es un texto o nada si es una variable. (Ya usaremos esto a un nivel más avanzado).


El programa que mencionaba quedaría como sigue:

var miVariable:Number;
trace("Hola Mundo!!");
miVariable=18/3;
trace("La variable miVariable vale: "+miVariable);


Y la salida de dicho programa:


De momento lo voy a dejar aquí aunque no hayamos entrado realmente en materia ni hayamos hecho ningún programa medio decente. Digamos que es una introducción para reflexionar un poco. ¿Cómo se haría una calculadora por ejemplo? Viendo que podemos realizar operaciones matemáticas y actualizar valores dandoles un nombre os imaginais como va la programación si soys novatos en esto. (Para usuarios más experimentados quedaros en como se declara una variable en ActionScript 3).

Pronto más.

PD: Por cierto que, para los que ya esten pensando que se necesita ser un poco pirata para hacer cosas en AS, en esta página de cristalab vereis que se puede compilar código de este lenguaje totalmente gratis usando SDKs de Adobe y el editor opensource FlashDevelop.

domingo, 26 de febrero de 2012

Fin del Curso: Modelado de entornos 3D para videojuegos.

A falta de los dos proyectos finales que se me han pedido para obtener mi título como modelador de entornos 3D para videojuegos, he conseguido por fin terminar todos los tutoriales y prácticas que me proponían en las clases.

He podido aprender bastante sobre modelar plantas, terrenos, edificios, etc. Y sobretodo partir de la base y llegar hacia todo el detalle que se me pueda pedir cuando este trabajando para alguna compañía de juegos, eso si, siempre controlando el número de polígonos que se manejarán en la escena. Además, en el curso se diferencian varias formas de crear los escenarios: Al completo o usando “trozos” para, de forma modular, acabar creando el mapeado completo.



Resulta basante interesante aprender a componer usando pequeños objetos que se repiten pero que, con pequeñas modificaciones, crean la ilusión de que todo en pantalla es diferente. Por otro lado, cuando se nos exige más realismo, recurrir a las nuevas técnicas como shaders complejos, ayuda a mantener el conteo de polígonos bajo, y a llegar a pequeños detalles como el aspecto rugoso de una piedra.


Con todo esto, unido a un buen manejo en la creación de texturas, llegamos a conseguir entornos que, en manos de un buen diseñador de niveles, nos proporcionaran la jugabilidad necesaria para hacer nuestro juego verdaderamente divertido si lo diseñamos bien.

Otra forma de ahorrar calculo de polígonos al motor que usemos para mover los entornos creados, será desacernos de aquellas caras que siempre quedarían ocultas y que, por tanto son innecesarias.

Asi que, junto con materiales que usen canales Alpha (Transparencias para crear hojas de arboles, por ejemplo), mapas de normales y otros shaders, un buen diseño artístico, las técnicas y habilidades aprendidas durante este curso y mucha práctica, espero ser capaz de desempeñar el rol de modelador de entornos cuando sea necesario.

jueves, 23 de febrero de 2012

PS Vita ya está en España

Desde hace unos días, ya tenemos a la venta en España la nueva portatil de Sony con unos cuantos juegos de lanzamiento, su pantalla multitactil y el nombre final de PS Vita.


De nuevo, esta compañía apuesta por la potencia gráfica, pero como ya ha aprendido cosas de su PlayStation 3, ha añadido algunas funcionalidades que permitan aportar alguna novedad en el terreno de la jugabilidad, aunque, de hecho, dichas funcionalidades se basan en sensores de movimiento y pantalla tactil (Como la 3DS de Nintendo), pero con añadidos, como un panel trasero multitactil que ha dado lugar a algunas ideas interesantes por parte de las desarrolladoras.

Con las portatiles de Sony y Nintendo en el mercado ya podemos empezar a pensar en una especie de anuncio de la próxima generación de consolas, ya que uno o dos años después de salir estas, las sobremesa empiezan a aparecer (y de hecho ya se anunció Wii U y hay rumores de estar apunto una nueva PlayStation y también una X-box).

Esto, como aspirantes a creadores de juegos, nos afecta en el sentido de tener que estar actualizados: Los grafistas 3D que pretendan publicar en una consola portatil ya podemos estar preparados para los shaders complejos que manejan ambas marcas, los grafistas 2D para las resoluciones de pantalla mejoradas y los programadores para las nuevas herramientas de desarrollo.

Para haceros una idea de la potencia de esta nueva máquina, aquí van sus últimas capacidades técnicas conocidas, sacadas de la web vidaextra.com:

Nombre de la plataforma: PlayStation Vita.
Número de modelo: serie PCH-1000.
CPU: ARM Cortex™-A9 (4 núcleos).
GPU: SGX543MP4+.
Dimensiones: Aprox. 182.0 × 18.6 × 83.5mm.
Pantalla: 5 pulgadas (16:9), 960 × 544, aprox. 16 millones de colores, OLED multitáctil capacitativa.
Memoria principal: 512MB
VRAM: 128MB
Panel multitáctil trasero de tipo capacitativo.
Cámaras: Frontal y trasera.
Frame rate: 120fps@320×240(QVGA), 60fps@640×480(VGA).
Resolución: Hasta 640×480(VGA).
Audio: Altavoces estéreo integrados, micrófono integrado.
Sensores: Sistema de detección de movimiento de seis ejes (Sixaxis) (giroscopio de tres ejes, acelerómetro de tres ejes), brújula.
Localización: GPS integrado (solo el modelo con 3G/Wi-Fi), soporte para servicio de localización Wi-Fi por triangulación.
- Comunicaciones inalámbricas:
Conectividad a redes móviles (solo el modelo 3G/Wi-Fi).
IEEE 802.11b/g/n (n = 1×1)(Wi-Fi) (Modo infraestructura/Modo Ad-hoc).
Bluetooth® 2.1+EDR (A2DP/AVRCP/HSP).
- Ranuras/puertos:
Ranura para tarjetas PlayStation Vita.
Ranura para tarjeta de memoria.
Ranura para tarjeta SIM (solo el modelo 3G/Wi-Fi).
Puerto multiusos (USB, DC IN, Audio (Stereo Out /Mono In), Serial data).
Puesto jack para auricular (Stereo mini jack).
Puerto para accesorios.
Batería: Batería de ion litio integrada, adaptador AC.
Música soportada: MP3 MPEG-1/2 Audio Layer 3, MP4 (MPEG-4 AAC).
Contenido AV: WAVE (Linear PCM).
Vídeos: MPEG-4 Simple Profile (AAC), H.264/MPEG-4 AVC, High/Main/Baseline Profile (AAC).
Fotos: JPEG (Exif 2.2.1), TIFF, BMP, GIF, PNG.

Y para abrir boca, un video de funcionalidades y de uno de sus juegos estrella para el lanzamiento: Uncharted: Golden Abbys.

domingo, 19 de febrero de 2012

Técnicas de guión aplicadas a videojuegos V: El Flashback

Flashback, además de un videojuego (videojuego Flashback), es una técnica narrativa que consiste en saltar a diferentes momentos temporales de la trama. Además, es una de las más dificiles de usar acertadamente, ya que si no explicamos bien lo que esta pasando existe la posibilidad de que el espectador se pierda.

Seguro que habeis visto multitud de peliculas que “empiezan por el final” y de pronto saltan en su historia para contar como se ha llegado a esta situación. En videojuegos, así de primeras, me viene a la mente un título para Wiiware de producción española que me pasé hace poco: ANIMA: Ark of Sinners, donde empezamos a jugar justo antes del enfrentamiento final y pronto se nos cuenta que pasos hemos tenido que seguir para llegar hasta donde estamos.

¿Qué diferencia normalmente el Flashback en un juego al de otra historia lineal?

Que debería ser interactivo y jugable, es decir, hagamos saltos en la narración de la historia. Todos los que sean necesarios, pero lo ideal sería que dejemos que el jugador los disfrute: Si en nuestro proyecto hemos decidido que el prota es un tipo de 30 años apunto de enfrentarse a su destino y luego explicamos el trauma que vivió de niño, habrá que modelar al personaje de adulto y de niño y será más trabajo, cierto, pero el usuario agradecerá poder jugar ese nivel en el que manejá al niño y descubre lo que ocurrió en el pasado.

De todas formas, el Flashback es una técnica orientada sobretodo a la parte narrativa, pero podemos usarla como elemento interactivo y que nuestra aventura se bifurque en diferentes caminos y salte más atrás o adelante en el tiempo dependiendo de las decisiones que tomemos: Si nuestro prota mata a un malo en el nivel actual el flashback volverá a su niñez y contará una cosa, pero si lo deja vivir volverá a su adolescencia y contará otra diferente. Solo hay que tener la idea feliz y no perderse a la hora de contar la historia.

Uno se puede servir de los recuerdos, poderes del personaje o simplemente dejar claró que el salto temporal lo cuenta el narrador de la historia. Como queramos, pero usar adecuadamente esta técnica puede enriquecer notablemente el argumento de nuestro videojuego.

miércoles, 15 de febrero de 2012

150 entradas en el Blog

Cuando empecé a escribir en este Blog, hace ya unos dos años, pensé que debía celebrar si llegaba a la entrada número 50, pero se me pasó y lo pospuse hasta la 100, que también se me pasó. Al fin, he tenido más cuidado con la entrada número 150, en la que me puedo parar a hacer un repaso de lo conseguido hasta ahora.

Visitas: Para empezar, la evolución del Blog en visitas de usuarios desde que empecé ha sido bastante buena. Tan buena ha sido que llegué a obsesionarme con tener cada vez más y olvidé el verdadero proposito por el que comencé: Aprender, avanzar y compartirlo con quien quiera, sean 0 o 3000 personas y además, poder venir aquí, y observar todo el camino recorrido hasta mi objetivo.

Me gusta tener muchas visitas y me encantaria que la publicidad del sitio me pudiera aportar algo de pasta y esto fuera rentable, pero no debo apartarme de mi objetivo inicial y sobretodo, si tengo examenes o mucho trabajo y no puedo escribir algun dia… pues no escribo.

Avances: He mejorado bastante a nivel programación (Ya casi entiendo la Programación Orientada a Objetos) e incluso voy asumiendo las bases de datos, que son mi perdición, gracias a los estudios que curso actualmente. También sigo con el 3D y mejorando cada día, pero sobretodo tratando de no olvidar lo aprendido. Sin embargo, formarse requiere tiempo y mis proyectos van más despacio o se han convertido en ideas más pequeñas y cortas. Lo importante, eso si, es terminar todo.


Videojuegos: Voy aceptando como esta el mercado y que ahora lo que se va a llevar son los “megaultragigagraficazosdelalechequesetardanenhacermesesporquetienenmildetalles” a pesar de ser un amante de los clásicos y de la interactividad que tenían los títulos de la vieja escuela. Sin embargo, creo que hay mercado para todo tipo de productos y seguramente la cosa se vaya separando en varios estilos de jugadores cada vez más. Aun así, como grafista me conviene saber hacer “megaultragigagraficazosdelalechequesetardanenhacermesesporquetienenmildetalles”.

Trabajo: Tengo asumido que tal y como estan las cosas si me sale trabajo va a ser de suerte o dentro de mucho, pero seguiré intentandolo. Quizá tenga que revisar mi sistema, venderme mejor, mejorar mi portfolio o mi curriculum y, al mismo tiempo, mostrar aquí aquellas técnicas que tengan mejores resultados.

Dibujo: No debería soltar el lapiz durante tanto tiempo seguido. La mano pierde práctica y me gusta pensar que si en el futuro diseño juegos sabré expresar mis ideas en forma de dibujos un poco decentes y además, podré participar activamente en el diseño de personajes o escenarios.

Guión: Continuaré con las técnicas de guión que conozco y que creo que pueden ayudar a la gente a escribir mejor sus historias. Aun me quedan unas cuantas y me viene bien recopilarlas también para mi mismo. Proximamente: Insinuaciones, Flashback, Deus ex Machina, etc.

Concurso de Blogs de 20minutos: Quedé el 27, si no recuerdo mal, en la categoría videojuegos, lo cual es interesante y me ayudó a aumentar mis visitas a la página, pero aumentó mi obsesión de tener más lectores y alejarme de mis otros objetivos, así que… aunque no se si volveré a participar en cosas similares, mejor me lo tomo de otra manera para la próxima.


Flash: Pretendo hacer más juegos para que se puedan jugar online y mejorar bastante con el lenguaje ActionScript, ya que creo que, pequeños proyectos que tengo en mente, quedarían genial para ser jugados desde cualquier parte. Mejoraría como programador, como grafista y como diseñador de juegos, teniendo pequeños títulos acabados y que se puedan probar. Además ayudarían a mi portfolio.

Proyectos finales y libros:
Tengo pendientes algunos proyectos finales en algún curso y terminar ejercicios de libros de los que suelo recomendar. Los mostraré cuando esten acabados. Poco a poco.

miércoles, 8 de febrero de 2012

Webs Recomendadas: Stratos-ad.com

Hace ya mucho tiempo que debería haber hablado de esta página, recomendada tanto para gente que este iniciada, piense en iniciarse o sea ya un autentico profesional en el desarrollo de videojuegos. Además está en español, ya que de hecho se trata de un “punto de encuentro para desarrolladores” en este idioma.

Hace muchos años que empezó a funcionar como Asociacion de Desarrolladores y ayudó a mucha gente a publicar sus proyectos o formarse, e incluso llegó a tener un juego creandose (el Proyecto Utopia) con los usuarios que más sabían. Pero la cosa no salió bien y actualmente la AD de Stratos ha pasado de “Asociación de Desarrolladores” a “Actualidad del desarrrollo”.

La página tiene por un lado secciones importantisimas como las de busqueda de colaboraciones u ofertas de trabajo, un foro donde resolver tus dudas sobre diversos temas (diseño, programación, modelado, creación de empresas, noticias, etc.) Por otro lado, y como promoción, también hay bastante para compositores, grafistas y demás con posibilidad de dar a conocer tu web o subir imágenes para que aparezcan en la portada.

En los últimos tiempos además, hay una parte de la Web muy interesante: Las entrevistas. Ahora que empiezan a salir pequeñas empresas que se van metiendo en el desarrollo de sus primeros juegos para plataformas que permiten la descarga digital y alguna más grande que hace juegos de gran presupuesto, es interesante leer como han llegado hasta donde están y en que cosas han tenido éxito o han encontrado más dificultades. Además uno se va apuntando los nombres de estos emprendedores para hacer contactos en el futuro o “inflarles a curriculums”

Los usuarios siempre fueron lo más importante de Stratos. En los foros hay discusiones a todos los niveles y de todos los temas y se pueden encontrar personas que trabajan en empresas importantes de desarrollo videojuegos u otro software, compartiendo conocimientos con desarrolladores indie o amateur. A veces, incluso te puedes permitir el lujo de recibir consejos o criticas sobre tu actual trabajo en proceso de gente con muchisima experiencia.

Gratis, completa, en español, para aprender mucho, promocionarse y para compartir y relacionarse con personas que merecen la pena. Altamente recomendable.

sábado, 4 de febrero de 2012

Eventos y Scripts

No voy a meterme a explicar cosas complejas sobre programación por que no soy la persona más adecuada para hacerlo ni mi Blog va destinado a esos temas, pero hoy me apetecía hablar de eventos y Scripts, por que creo que es algo muy de moda en los videojuegos actuales. Así, de paso puedo reflexionar para, en el futuro, hacer un poco de autocritica sobre si tengo razón en quejarme del estilo de los productos que se estan publicando actualmente.

¿Qué es un script? Sencillamente un fragmento de código. Suelen estar escritos en lenguajes muy diversos y generalmente se asocian a eventos o acciones para hacer la programación más sencilla y rápida. Si habeís podido probar algun motor gráfico de videojuegos ya habreis comprobado lo mucho que se usa actualmente.

¿Qué es un evento? Pulsar una tecla, llegar a un punto X del mapa con nuestro protagonista, usar un item, saltar, agacharse, chocarse con algo… Cada acción ocurrida en el juego puede “disparar” ese interruptor que alguien programó al que le asociaremos ese fragmento de código que va a indicar que ocurrirá como consecuencia de evento. Tan simple como eso (En la superficie, eso si, por que programar no es nada facil).

El caso es que esta forma de hacer las cosas ha dado lugar a una serie de críticas dentro de la industria que provienen de los jugadores más experimentados que ya vivieron épocas más prosperas.



¿Qué pasa con los juegos actuales? En muchos casos se estan conviertiendo en autenticas películas practicamente lineales y se esta suprimiendo la interactividad, que para muchos era lo grande de los videojuegos, a favor de la espectacularidad y los gráficos de última generación. Por el método de los eventos y, usando motores de última generación como Unreal, se diseñan juegos donde el personaje se ve en un gigantesco mapa lleno de detalles que no es más que una ilusión, ya que a la hora de la verdad todas las puertas estarán cerradas o bloqueadas, excepto la única por la que podemos avanzar (Y en realidad es el único camino que existe). Nos limitaremos a ir hacia delante y cuando uno de los eventos clave para sacar espectaculares imágenes se dispare, se nos quitará el control de las cámaras o personajes para que ocurra lo que estaba programado sin dejarnos opciones (excepto a veces que nos dejaran pulsar un boton rapidamente: Ya sabeis, los Quick time events).

Para hacer este tipo de cosas en, por ejemplo, el ya mencionado motor Unreal, tenemos editores como Matinee para crear escenas intermedias en nuestro juego y Kismet para controlar los interruptores de eventos y los scripts que ejecutan, pero claro, depende de cada desarrollador el abusar de esto para contar su historía o dejar que el jugador viva la que el desea.



Os muestro una imagen crítica que el otro día me enseñó a través de social un familiar mio que sabe bastante de juegos y que explica claramente lo que se hace hoy en día en comparación a como era el entretenimiento interactivo hace solo unos años.


Por mi parte, voy a reflexionar si es bueno ser crítico como jugador experimentado o unirme a las modas como desarrollador que pretende entrar en el negocio y vivir de ello. Quizás se trata de hacer lo que el público pide aunque no sea lo que más me gusta.

miércoles, 1 de febrero de 2012

Juegos que me influyeron como desarrollador X: Blast Corps.

Durante muchisimo tiempo, RARE fue la compañía de videojuegos en la que la mayoría de aspirantes a la industria soñabamos llegar algún día, algo así como el Pixar del sector. Con el tiempo, al ser comprada por Microsoft se fue estropeando y bueno… ahora es una buena compañía, pero no tiene nada que ver con lo que fue para muchos de nosotros grandes seguidores de sus títulos.

Uno de los juegos que me impresionaron de esta compañía, por lo creativo de la idea y lo sencillo del gamplay que lo hacía divertidisimo, fue Blast Corps. En este cartucho de Nintendo 64 controlabamos una seríe de vehiculos de todo tipo, desde camiones, coches, robots, la furgoneta del equipo A o escabadoras, para despejar el camino a un camión de transporte de misiles nucleares. Lo genial era lanzarse contra edificios haciendo que se derrumbaran para dejar libre el paso evitando una “explosiva colisión”. Absolutamente divertidisimo gracias a la variedad de vehiculos a controlar y al tipo tan variado y simpático de los mismos.





Fue desde que jugué a Blast Corps que me entró el gusanillo del modelado 3D de coches y similares y pronto empecé a ver la dificultad del asunto. Aunque en low poly y en aquella epoca era mucho más sencillo que si modelas en High, al detalle, unas veces intentaba crear algo de estilo realista y otras algo más “cartoon”. En ambos casos resulta un trabajo laborioso que se facilita bastante si tienes unos buenos bocetos de las vistas del automovil: desde arriba, una vista izquierda, una trasera, etc.



En cuanto a modelar otros vehiculos… como no, ¡naves espaciales! Que siempre me encantaron y practico constantemente su modelado, aunque sea en ratillos en los que me aburro y hago algo rápido sin boceto de base, extrullendo y cortando polígonos a lo loco.


El tema de texturas las trabajé más en alguno de los cursos que hice. De hecho, en el curso de texturas para videojuegos uno de los ejercicios consistió en darle el aspecto final a un vehiculo del que ya me proporcionaban un modelo, después, eso si, de mapearlo. Un ejercicio que me enseñó muchisimos trucos a la hora de pintar una textura y ayudarme de trozos de fotografías.


Y en lo que se refiere a libros con los que aprender (y se que la imagen del camión la he puesto mil veces aquí) el volumen “3DS Max Modelling for Games” me enseñó muchisimo sobre todo esto.


Como ya se ha visto con el juego de RARE que comento que un vehiculo puede ser protagonista de un juego, queda claro que se pueden crear cosas interesantes con habilidades de modelado básicas y un poco de creatividad. :P