miércoles, 26 de septiembre de 2012

Un poco de Java


Vale, lo admito, hablo de Java por que me viene bien ahora que tengo que hacer un repaso para no perder mis habilidades con este lenguaje. Como ya expliqué lo básico sobre variables en ActionScript hace tiempo, puedo entrar en materia y hacerlo todo un poco más rápido y facil, asi que comencemos con…

Los tipos de datos simples en Java

Para definir nuestros variables númericas tenemos:

byte – 8 bits – rango desde -128 hasta 127
short – 16 bits – rango desde -32768 a 32767
int – 32 bits – rango desde -2147483648 a 2147483747 (que es mucho)
long – 64 bits – rango desde -9223372036854775808 a 9223372036854775807 (me he cansado solo de escribirlo).

Para definir variables que almacenarán caracteres tenemos:

char – 16 bits (se escriben entre comillas simples)

Números con coma flotante (decimales):

float de 32 bits (1 bit para el signo, 8 para el exponente y 24 para la mantisa, lo que nos da unas 6 o 7 cifras decimales)
double de 64 bits (unas 15 cifras decimales, es decir 1 bit para el signo, 11 para el exponente y 52 para la mantisa)

Cierto o falso:

boolean que solo puede ser true o false.

¿Entonces como definimos variables?

tipo nombre = valor;

Es decir, por ejemplo:

int entero=0;

En Java no necesitamos inicializar las variables hasta que no vayamos a operar con ellas, por lo que a lo mejor no nos interesa darle valor al principio.

double decimal;

¿y como podemos sacar cosas por pantalla como haciamos con ActionScript?

Pues sin entrar mucho en materia sobre todo esto y de donde viene esta sentencia se haría del siguiente modo:

System.out.print(variable); sin salto de linea o System.out.println(variable); si queremos que salte de linea despues de poner la variable en pantalla. No olvidemos, eso si, que se diferencian mayúsculas y minúsculas, por lo que no vale poner las cosas de cualquier manera.

Hagamos pues un “Hola mundo” con lo que hemos visto hasta ahora (si, que ya se que voy rápido, pero teneis el tutorial de programación en AS3 para ampliar conocimientos).

Hay cosas que se explicarán más adelante pero que uso por que son necesarias.

public class holamundo {
   
    public static void main(String[] args) {
            float miVariable;
            System.out.println("Hola Mundo!!");
            miVariable=18/3;
            System.out.println("La variable miVariable vale: "+miVariable);
    }
}

La salida de este primer programa es la siguiente:

¡Y eso es todo por ahora! Como siempre vayamos poco a poco.

viernes, 21 de septiembre de 2012

Una de videos


Han pasado ya años de la época en la que me movia en el mundillo de la música (especialmente el hip hop). Por aquel entonces en mi grupo teníamos un pequeño local con otros amigos en el que podíamos ensayar o montar fiestas. Allí además, alguien llevó una Dreamcast en la que soliamos echarnos unas partiditas a una gran variedad de títulos. Yo recuerdo especialmente Jet Set Radio, quizás por que en aquellos años dejé de lado la creación de videojuegos y, por la afinidad de este juego con los estilos de música que yo solía escuchar, era de los pocos contactos que tenía con videojuegos. (Raro en mí).

Ayer encontré un pequeño documental (me temo que está en inglés) donde se cuentan cosas sobre el desarrollo de Jet Set Radio y me acordé de todo esto, por eso quería compartir el video en una especie de post especial de “juegos que me influyeron como desarrollador”.



Como añadido también vi en Unseen64 un video de una habitación demo del juego de Nintendo Zelda: Skyward Sword. Lo que me parece interesante en este caso es poder ver que hay habitaciones hechas con texturas de prueba en juegos comerciales (observad como pone por ejemplo Stone_2 indicando que más adelante se sustituirá esa textura por una de piedra). Vemos así que es cierto todo lo que nos cuentan de probar mil y una veces el gameplay y, sobretodo, la forma en que se diseñan prototipos de niveles tal como ya podíamos ver en aquella entrada donde hablaba de worldofleveldesing.com. Primero ajustemos todas las variables y la jugabilidad de nuestro mundo. 

¡Vamos a establecer las reglas! Luego ya lo haremos bonito.

miércoles, 19 de septiembre de 2012

Juegos que me influyeron como desarrollador: Bioshock


Bienvenidos a Rapture, donde comienza la historia de la serie de juegos en primera persona “Bioshock”. A pesar de las quejas que siempre manifiesto sobre el estilo actual de los juegos comerciales y, la saturación que hay en el mercado de juegos en primera persona, este en concreto me aportó mucho desde el primer momento que pude jugarlo y me vi atrapado por su historia y el reto que suponía enfrentarse a enemigos grandes y dificiles de matar, hasta el punto de que podían hacerte huir para replantearte tu estrategia antes de volver a por ellos.



Bioshock ya ha aparecido alguna vez en este Blog por que usa minijuegos para realizar algunas acciones como piratear máquinas (la historia dentro de la historia o, en este caso, el juego dentro del juego), y además, es considerado por mi como ejemplo de juego en primera persona moderno, vistoso y con un gameplay creativo que deja jugar al usuario sin obligarle a seguir el camino que marca la historia. De hecho, una de las cosas interesantes de esta serie de juegos, es que nos permitirán ver varios finales diferentes dependiendo de nuestras acciones con las llamadas Little Sisters y la realización de malas o buenas acciones. Por ejemplo en Bioshock 2, controlamos a uno de los conocidos como Big Daddy y tendremos opción de ayudar a las Little Sisters o “cosecharlas” para obtener más poder gracias a su “eliminación”. De esto dependerá el final de la aventura.

 La trama engancha y es un autentico ejemplo de guión para un juego de estas caracteristicas, además de que el gameplay se adapta perfectamente a todo y nos permite una inmersión que hace que nos sintamos realmente en una ciudad bajo el oceano mientras jugamos. Amenazados constantemente por extraños seres que emiten sonidos que nos pondrán constantemente en alerta, debemos tener cuidado con los grandes enemigos. Estos, son algo así como el equivalente a los boss de final de fase de otros juegos, pero pueden aparecer en casi cualquier sitio.

Tanto el primer juego como su secuela son muy recomendables y tendré que ver si el tercer título “Bioshock Infinite” está a la altura el día que pueda probarlo (Se calcula que para Febrero de 2013 estará a la venta).

domingo, 16 de septiembre de 2012

Avances en proyectos


Terminadas las vacaciones, hay mucho que hacer y empieza la época en la que los proyectos avanzan mucho más lentamente, pero aun así continuan durante el tiempo libre.

Por un lado uno desaparece mi colaboración de mis proyectos en grupo (por desacuerdos otra vez… que ya es la segunda por estos motivos y estoy empezando a pensar que estoy hecho un follonero) y estoy en conversaciones para entrar en otro o dejar ese tiempo para invertirlo en acabar cosas pendientes como cursos, modelos o dibujos que tengo a medias. Por otro lado, lo que nunca falla, es decir, el desarrollo en solitario, avanza muy lentamente, sobretodo por que para practicar un poco más con la ilustración de estilo manga en 2D, decidí aumentar la cantidad de trabajo gráfico que tendría y ahora es lo que más horas requiere (yo y mis ideas brillantes).

Hace ya mucho que, debido a la inspiración que me supuso ver esta serie, me puse a trabajar en un juego que de algún modo hiciera sutil homenaje a la serie anime NHK ni Youkoso (Welcome to the NHK). En ella, el protagonista decide trabajar en el desarrollo de un juego con chicas manga, y fue de ahí de donde surgió la idea de usar chicas como ilustraciones para las cartas de un sencillo juego de encontrar parejas que tenía planeado para practicar mis habilidades como programador. 


Actualmente Memory G-Cards (que así se llama) está aproximadamente al 60% de desarrollo y es completamente jugable (aunque tiene algun fallo), y eso que ha sufrido cambios importantes (he añadido items, más cartas y he cambiado el desarrollo hacia ActionScript para poder jugarlo online).

Respecto a otras cosas, me temo que están esperando, y es que como ya dije una vez, lo mejor es llevar un proyecto grande en equipo (si nuestras obligaciones nos lo permiten) y otro pequeño individual (por si falla el grande seguir trabajando siempre en algo). Por ello, cualquier otro trabajo está esperando que le llegue su turno tras terminar todo lo que me traigo entre manos. Además ahora lo que importa es sacar el curso que estoy haciendo, seguir aprendiendo y por supuesto si puede ser, encontrar trabajo. 


miércoles, 12 de septiembre de 2012

Técnicas de guión aplicadas a videojuegos: “Marcado para morir”


Hablamos de personajes que, después de algún tipo de comentario o comportamiento especial, sabemos que van a morir en nuestra historia. Un ejemplo, puede ser ese personaje secundario que es un policía que comenta: “me quedan solo 2 dias para jubilarme”. ¿A que suena a que morirá en la próxima escena? Bien, pues de eso se trata, de jugar con el espectador para mantenerle pendiente de si su sospecha se cumplirá, ya que, como escritores del guión, aun tenemos la posibilidad de engañarle y mantener con vida a quien pensaba que no duraría mucho.

La “técnica” de “Marcado para morir” realmente aparece mucho en el mundo de los videojuegos, se usaba en los juegos de antes y se seguirá usando en los de ahora. Pensemos por ejemplo en personajes no jugables que se separan de su grupo en juegos de terror, escenas donde esta previsto que no seamos capaces de llegar a tiempo para salvar a la chica de ser atacada por la bestia, etc. Basta con poner alguna frase que haga pensar al usuario que alguién ha vivido demasiado (o demasiado poco si queremos ser crueles), no esta preparado para sobrevivir en un entorno dificil o se cree valiente pero no es mas que un insensato. (“Dejadme esos enemigos a mi…”)

La dificultad de todo viene cuando pretendemos jugar al despiste. El jugador intenta anticipar acontecimientos y, cuando cree que algo es muy obvio, da por hecho que ocurrirá. Llega entonces ese proceso en que juega esperando confirmar sus sospechas y en el que podemos alargar su espera un poco para mantenerle enganchado o incluso darle la vuelta a las cosas y que ocurra algo inesperado. No conviene, sin embargo, hacer esto muchas veces y además hay que saber hacerlo. Por ejemplo: si el usuario recibe esa información que le hace pensar que un secundario va a morir pronto y llega incluso a caerle mal por su comportamiento, se decepcionaría si no se cumplen sus espectativas, por lo que una buena solución, es hacerle cambiar de opinion sobre el personaje demostrando que, aunque a primera impresión parece estupido e inutil para la historia, en el fondo esconde una gran habilidad y personalidad o es muy necesario para el desenlace de la trama.

lunes, 10 de septiembre de 2012

Diseño de videojuegos: Equilibrio Simétrico y Asimétrico.


Llega el momento de hablar un poco de diseño de juegos a modo introductorio, con algunas ideas aceptadas de modo generalizado. De este modo, quiero ir repasando mis conocimientos sobre el tema y anotando los que pueda descurbrir, para ir aprendiendo sobre este rol que podría ser el objetivo final en mi carrera dentro de los videojuegos. Así, empezando por el equilibrio, contaré un poco sobre el equilibrio simétrico y asimétrico.

Son dos tipos básicos de equilibrio cuando hablamos de juegos en los que hay enfrentamiento o competición, teniendo en cuenta que hablamos de equilibrio cuando tratamos de que, por ejemplo, siendo dos jugadores, las reglas del juego consigan que ninguno de los dos tenga ventaja y por tanto las mismas posibilidades de salir victorioso.

Simétrico

Se habla de equilibrio simétrico cuando todo lo que tiene el jugador 1 lo tiene el jugador 2 (o los contrincantes). Un ejemplo puede ser el ajedrez, donde los jugadores tienen las mismas posibilidades por que las piezas blancas y negras son exactamente las mismas y se manejan por las mismas reglas.


Asimétrico

Se habla de equilibrio asimétrico cuando la partida da aproximadamente las mismas posibilidades de victoria a ambos jugadores pero sin tener piezas o unidades iguales. Esto puede conseguirse usando ventajas de terreno, por ejemplo, o también sencillamente con las caracteristicas de las piezas. En el primer caso pensemos por ejemplo en un juego de estrategia en el que el jugador 1 dispone de una unidad capaz de moverse por el fuego que el jugador 2 no tiene, pero este es compensado con otra unidad que le permite moverse por el agua, cosa imposible para el jugador 1. En el segundo caso podríamos tener un tanque muy poderoso pero muy lento contra una moto con poco poder de ataque pero gran capacidad para moverse y atacar rápido. En un enfrentamiento hay un cierto equilibrio por que la rapidez de las motos o la fuerza de los tanques pueden darnos la victoria dependiendo de nuestra habilidad utilizandolo, proporcionando en un principio similares capacidades de victoria seamos el jugador 1 o el 2 (aunque permitiendo que prefiramos uno u otro).


Desequilibrio Deseado

A algunas personas (entre las que me incluyo) nos encanta poder jugar para superar retos. En este caso es mucho mejor si el juego esta desequilibrado.

Si pensamos, por ejemplo, en un juego de carreras, es bastante normal que haya coches mejores y más rápidos que podamos elegir para obtener ventaja. Podríamos equilibrar esto un poco haciendo que dichos coches se manejen peor o sean más dificiles de conseguir, pero si hablaramos de un juego oficial de la Formula 1 (por poner un ejemplo sencillo) donde sabemos que determinadas marcas tienen mejores prestaciones y quisieramos ser fieles a la realidad no podríamos hacerlo. Muchos jugadores, sin embargo, disfrutaran de elegir el peor coche y ganar carreras gracias a su habilidad con los mandos y su práctica partida a partida. Otro ejemplo lo encontramos en los juegos de futbol, donde los equipos y jugadores más famosos suelen tener mejores características y podemos ir a lo sencillo escogiendolos, o ponernos el reto de conseguir títulos con equipos más modestos.


lunes, 3 de septiembre de 2012

Nueva temporada


Estoy de vuelta de unas vacaciones, en teoría relajantes, donde no tenía internet para comunicar mis reflexiones, consejos o avances, así que voy a usar este pequeño parón como pista de lanzamiento para una nueva temporada del Blog y de mis propias metas (que en cierto modo de eso va esta Web).

Las cosas no mejoran mucho y las noticias en general siguen animando muy poco a los que aun creiamos poder alcanzar nuestros sueños. Parece por lo tanto que toca hacer lo que parece la mejor opción para sobrevivir hasta que, de nuevo, podamos volver a elegir. Esto significa que, después de haber escuchado mil veces eso de: “das una patada a una piedra y salen 1000 modeladores 3D”, y de que empiezo pronto el segundo curso en el que estoy aprendiendo a programar, he decidido dedicar la mayor parte de mi tiempo a esta parte del desarrollo, reservando los ratos libres a no olvidar todo lo aprendido en el resto de roles de la industria del videojuego que conocía.

¿Qué tengo pensado poner en la Web?

Me gustaría empezar a tratar el tema del diseño de videojuegos, dedicar algo más de espacio a la programación y comentar cuando pueda, algunos avances en proyectos, sobretodo los que estoy llevando por mi cuenta que son de los que puedo hablar libremente. Seguramente siga con la sección de “juegos que me influyeron como desarrollador”, recomendando algún libro de vez en cuando, mostrando fotos de mis trabajos y (esto sería nuevo) comentando técnicas de animación.

Como se puede observar, los cambios en el Blog deberían ser mínimos, pero los cambios en mi vida profesional pueden afectarle y como ya he dicho, la programación debe ocupar la mayor parte de mi tiempo ahora (por que es lo que puede proporcionarme trabajo e ingresos según parece). Espero tener suerte y también espero seguir siendo el mismo de siempre, por que me sigue apasionando el dibujo, el 3D, el diseño… pero el tiempo es limitado.

Solo tengo una cosa segura, seguiré haciendo juegos, aunque sean pequeños y simples y, sobretodo, seguiré aprendiendo.