jueves 26 de marzo de 2009

Justo un año

Un año exacto sin actualizar.
Han habido diferentes cambios en mi vida, tanto en el aspecto personal, como profesional y de informático.
Algunos proyectos empiezan a tomar forma en mi mente, dentro de poco, espero poder poner noticias.

miércoles 26 de marzo de 2008

Algunos comportamientos para juegos. Parte 1

Algo mas de un mes sin actualizar, mucho tiempo desde luego. La verdad que he tenido aparcado mis proyectos personales, no estoy haciendo absolutamente nada, solo leer documentacion y teoria, pero nada de practica. Hasta esta tarde, que leyendo un par de tutoriales sobre inteligencia artificial y comportamientos en juegos, he decidido practicar un poco.
Los siguientes comportamientos, los he probado con el juego de Invaders que publiqué en mi anterior entrada, por lo que son realmente simples y solo es movimiento en el eje X (lateralmente).
Los siguientes codigos estan en Java, aunque se entienden bien sin conocer el lenguaje, y hay que tener en cuenta lo siguiente:
x es la posicion del enemigo.
vx la velocidad con la que se movera el enemigo en cada ciclo.
player es el objeto que representa al jugador.

1º Movimiento Lateral Simple
Es el movimiento mas sencillo, el enemigo se mueve como un bobalicon hacia un lado, hasta que choca con el limite de la pantalla y cambia el sentido.

x += vx;
if(x<0 || <Stage.WIDTH)
vx=-vx;

2º Movimiento persecutorio tocapelotas
En este movimiento, el enemigo se movera lateralmente persiguiendonos, en este ejemplo, a 100 pixels por la derecha o izquierda. Lo unico que hay que tener en cuenta, es controlar tambien el sentido de la velocidad , porque puede ocurrir que se quede pillado el enemigo al cumplirse siempre la condicion de que la x este por debajo de los 100pixeles de la x del jugador y este cambiando de sentido cada ciclo.

x += vx;
if((x<=player.getX()-100 && vx<0)||(x>=player.getX()+100 && vx>0))
vx=-vx;

3º Movimiento miedoso
Si habeis jugado al Zelda de super nintendo y habeis visto los enemigos que se movian siempre en sentido contrario al tuyo y cuando coincidiais, os disparaban. Os podreis hacer una idea de este movimiento.

vx=-player.getVx();
if(x<0) x=0;
else if(x>Stage.WIDTH)x=Stage.WIDTH;
x +=vx;
if(x>player.getX()-10 && x<player.getX()+10)
fire();

Esto es todo hasta el proximo mes.

martes 12 de febrero de 2008

Mi primer Invaders

Por fin se acabaron los examenes. Ahora ha disfrutar durante un par de semanas hasta volver a empezar las clases y volver al estress de trabajador-estudiante-puteado. Mientras tanto, he podido tener un poco de tiempo para acabar la primera mini-Alfa del tutorial de Space Invaders en Java. No es gran cosa, solo he añadido 4 niveles, en vez de que sea un juego sin fin hasta que mueras.
Espero que lo disfruteis y me lleneis esto de criticas y cosas para mejorarlo, aunque ya tengo un par de cosas pendientes, entre ellas:
- Corregir el fallo, que al comenzar el juego, el player se este yendo hacia la derecha.
- Añadir un menu inicial.
- Añadir un final digno cuando se acaba el juego.
- Añadir algo entre pantalla y pantalla, que ahora es demasiado cutre.
- Añadir diferentes fondos.
- Añadir una musiquilla molona.
- Añadir nuevos enemigos.
- Mejoras de codigo (ahora el Source es un poco chapucilla)
- Añadir objetos (mejorar escudo, mas puntos, bombas, etc).

Por cierto, la descarga del juego, aqui

miércoles 16 de enero de 2008

Entre estresado y a punto de convertirme en un conejo suicida.

Sí, se que he tenido esto muy abandonado ultimamente. Pero estamos en epocas de examenes, me he tirado las navidades comiendo turron y jugando a la wii, olvidandome de hacer integrales, resolver circuitos y navegar por espacios vectoriales. Pues pasa factura, porque ahora, hay que machacarse a estudiar, que en dos semanitas estan aqui nuestros terribles archienemigos, los examenes de Febrero!!
Asi que me estoy dedicando a estudiar como un condenado y he dejado de lado mis miles de proyectos en mente (photoshop,blender,programar en c, etc).
Puesto que no actualizare hasta que acabe, os dejo un video gracioso, para que reflexionemos.
Un saludo!!

lunes 17 de diciembre de 2007

Tiras Comicas: XDComics

Coincidiendo con el final del salon del comic de Zaragoza, al cual no he tenido oportunidad de ir, para conocer a muchos de los creadores de webcomics a los cuales estoy enganchado. A ver si bajais para el sur , que solo tenga que dar un pequeño salto al charco y no tener que cruzarme la mitad de la peninsula. Quizas en Sevilla...
Bueno, que me desvio del tema, en esta ocasion toca presentar la tira de XDComics, dibujada por Mr.X (No es el de Moran...) y Monroe, un tipo que de chico comia montones de sopas de letras.
Por supuesto, os dejo una de mis tiras favoritas

jueves 13 de diciembre de 2007

Comenzando en la programacion de Videojuegos

A punto de adentrarme en otro proyecto a plazo infinito que nunca acabare. En realidad, llevo intentando meterme en esto desde hace tiempo, pero ahora me dispongo a hacerlo de forma medio-seria,al menos durantes las proximas dos semanas.
Mientras tanto, os voy a dejaros unos cuantos enlaces interesantes, que vienen bien para comenzar por algun sitio en este mundillo.

http://www.micronosis.com - Este blog descubierto de casualidad, tiene una buena cantidad de consejos y enlaces a tutoriales sobre la programacion de juegos.

http://cg.cs.tu-berlin.de/~ki/engines.html - En esta pagina, encontrareis una lista de motores graficos, perfectametne separadas en categorias.

http://www.morcy.org/?p=5
- Un libro digital, sobre Blender, el programa de edicion 3D Open Source.

http://www.stratos-ad.com - Plataforma para desarrolladores de videojuegos, que vienen montones de ofertas de trabajo y algunos tutoriales y consejos.

http://www.3dluvr.com/rogueldr/tutorials/eye/eyes.html
- Un curioso tutorial sobre como hacer ojos.

viernes 30 de noviembre de 2007

Pasar objetos a traves de sesiones en PHP

Como saben aquellos que me conocen en el ambito de la programación, adoro los Objetos. Seguramente sea debido a que mi primer lenguaje de programación fue Java, o a que es mucho mas sencillo la forma de pensar de la POO que de la programacion estructurada.
Bien, el caso, esque desde que php incorporó los objetos a sus recursos, y yo me he visto obligado a programar en este lenguaje, intento hacerlo todo con objetos.
Ahora yendo al grando, si trabajamos con sesiones, quizas nos interese mas pasar como variable de sesion un objeto, que todos los atributos de este en diferentes variables de sesion.
Si hacemos lo siguiente:

$obj=new Object();
$_SESSION['o']=$obj;

Y luego a la hora de recuperarlo, por ejemplo imprimiendo (suponiendo que tenga implementado el metodo __toString()):

$obj=$_SESSION['o'];
echo $obj;

Esto nos lanzara un warning del tipo:
__PHP_Incomplete_Class Object ( [__PHP_Incomplete_Class_Name] =>

Bien, para ahorrarnos esto, y hacernos mas facil la vida, tendremos que usar las funciones serializa(),unserializa(). Los que vengamos de Java, sabremos que a la hora de guardar en un fichero o enviar mediante flujos un objeto, hay que serializarlo (convertirlo a una cadena de bytes representativa del objeto en cuestion),y puesto que las variables de sesion, normalmente van guardadas en cookies o se pasan por cabeceras de html, es necesario serializar los objetos antes de pasarlos a otra pagina. Se haria de la siguiente forma:

// Para serializar y pasarla a la variable de session
$obj=new Object();
$_SESSION['o']=serialize($obj);

// Para deserializar y poderusar el objeto
$obj=unserialize($_SESSION['o']);
echo $obj;

De esta forma, podremos usar objetos a traves de sesiones. Como ultimo apunte, es necesario incluir la definicion de clase en los ficheros donde se vaya a serializar y deserializar.