domingo, 18 de mayo de 2014

Entrevista a Cristóbal Mata , creador de Dungeon Pets.


Buenas, hoy os traigo una entrevista a Cristóbal Mata, creador de Dungeon Pets, el unico juego para android que ha conseguido tenerme horas enganchado al movil.Por aqui os dejo un enlace a la web : http://www.gugames-dev.com/home.php y otro a la appstore: https://play.google.com/store/apps/details?id=com.GuGamesDEV.Pets y tambien por si a caso anoto : el juego es gratuito.
Y bueno, sin darle mas vueltas, comenzamos:

+¿Quien eres?

- Soy Cristóbal Mata, casi Ingeniero Informático (estoy estudiando aún).

+¿De que trata dungeon pets?

- Dungeon Pets es un juego para Android que fusiona el clásico Tamagotchi con juegos RPG de criaturas, tendremos que encontrar nuevos Pets y entrenarlos para que crezcan.

+¿Como surgió la idea de dungeon pets?

- Al comienzo, el juego iba a ser un Tamagotchi de toda la vida, pero se me ocurrió ampliarlo al parecerme pobre hablando de contenido. Al probarlo vi que aburría demasiado, necesitaba algo más.

+¿Que "esquema" llevas a la hora de desarrollar un videojuego?

- Para el desarrollo de Dungeon Pets estaba solo, por lo que primero pensé (diseñé) la base del juego, y una vez hecho esto hice el código sabiendo que tenía que crecer en funcionalidades. De hecho cuando mis cinco amigos que hicieron de betatesters lo probaron, tuve que modificar muchas cosas.

+¿Como organizas el trabajo?

- Primero hago la base del juego, por así decirlo el motor funcionalmente hablando, después apunto las funcionalidades en una lista para desarrollarlas, finalmente repito esto último con los errores encontrados. Durante todo el desarrollo he tenido a los amigos que comente probando el juego, yo solo hubiese sido imposible.

+¿Como entraste en el mundillo del desarrollo de videojuegos?

- Desde pequeño me apasionaban los videojuegos. Cuando mis padres me compraron un ordenador estuve buscando como desarrollar videojuegos.
Así, descubrí Game Maker 6, por 2005, y aprendí haciendo pruebas y con la ayuda de ComunidadGM, una web hispanohablante donde publicaba y sigo publicando mis proyectos y donde se aprende con la ayuda de los demás.
Desde entonces, intento crecer como desarrollador de videojuegos.

lunes, 21 de abril de 2014

Bucles y funciones.

Bucles:
Repiten una y otra vez un código mientras se cumpla una condición.
Los dos mas frecuentes son:

-While: ejecutan constantemente un código mientras se cumpla X condición.

Ejemplo:
Todo videojuego es un gran while , que permite comprobar una y otra vez si tenemos pulsada alguna tecla, si nos ha golpeado un enemigo etc....
 Así que el ejemplo mas claro que se me ocurre es este:

while (vida>0) {
    if (pulsado letra W == true ){
        mover personaje hacia arriba
     }
    if (pulsado espacio == true){
        el personaje ataca
     }
    etc....
}
Mientras nuestra vida sea mayor que 0 se ira comprobando una y otra vez si tenemos pulsada alguna tecla,nos han atacado, si el ataque nos ha golpeado etc...


-For:
Se suele usar para repetir un código cierto número de veces.+
Ejemplo:

for (recuperarHp= 1 ; recuperarHp<10 ; recuperarHp++){
    vida++;
}

En este ejemplo ,seria una manera muy rápida de hacer una poción de regeneración (habría que ponerle una manera de que lo haga durante X tiempo, tal como esta lo procesaría tan rápido que seria lo mismo que sumarle 10 a la vida directamente).

Su funcionamiento es similar al de un while , en el que mientras la variable "recuperarHp" fuese menor a 10 se ejecutase el código "vida++" (suma uno a la variable vida, seria lo mismo que escribir: " vida = vida+1; " ). Pero se diferencia de un while en la sentencia "recuperarHp = 1" en la que da el valor 1 a la variable "recuperarHp" la primera vez que se inicie el bucle for , y en la sentencia "recuperarHP++" que suma 1 a la variable recuperarHp cada vez que se "reinicia" el código que hay dentro del for.

Funciones:

Las funciones nos permiten guardar un código para que no tengamos que repetirlo varias veces.
Ejemplo:

Disparo(){
   Generar bala;
   Darle una velocidad;
   Ejecutar sonido de disparo;
}

Esta función por ejemplo, vendría bien si además de nosotros también pueden disparar varios tipos de enemigos, por lo que en vez de tener que repetir todo, solo tendríamos que poner "Disparo()" para ejecutar todo el código de la función.

Otra característica de las funciones es que pueden "acceder" a variables. Para que lo veáis mejor os pondré el siguiente ejemplo:

Disparo(int velocidadBala){
    Generar bala;
    Dar a la bala la velocidad "velocidadBala" ;
    Ejecutar el sonido de disparo;
}

Aquí, estamos creando la variable "velocidadBala" para esta función , lo cual seria útil si por ejemplo nuestras balas van a distinta velocidad que la de el enemigo,o van a distinta velocidad según sea un tipo de munición u otra.

Ejemplo:
Ahora al escribir:

int  velocidadBalaAliado = 20;
int velocidadBalaEnemigo = 15;

Disparo(velocidadBalaAliado);

(En este primer disparo la variable "velocidadBala" que pusimos antes tomara el valor de la variable "velocidadBalaAliado", por lo que el disparo iría a una velocidad de 20)

Disparo(velocidadBalaEnemigo);

(En cambio ahora en este otro la variable "velocidadBala" tomara el valor de "velocidadBalaEnemigo" por lo que el disparo iría a una velocidad de 15)

Y bueno , hasta aquí llega esta entrada , si tenéis cualquier duda ponedla por los comentarios y os la solucionare en cuanto pueda.
Saludos ;) .

jueves, 17 de abril de 2014

Variables y condicionales

Buenas , en esta entrada entrare mas en profundidad en lo que son las variables y condicionales . Como el objetivo de ejemplos es que los entendáis directamente, sin necesidad de que sepáis de programación, así que los haré a través de una mezcla entre código real, y "pseudo código" escribiendo lo que haría el resto del código , que sera de color rojo.

Variables:

Como ya conté, son "contenedores" de datos. Son de varios tipos según el tipo de dato que almacenen:
-Tipo char: almacenan un solo carácter , osea , una letra , un numero o un signo.
-Tipo int: almacenan un número entero.
-Tipo float: almacenan un número decimal.
-Tipo string: almacenan una cadena de carácteres (texto).
-Tipo boolean: almacenan un -0- o un -1- .El 0 es considerado como "False" y el 1 como "True", mas adelante veremos la aplicación de esto.


Condicionales: 
Ejecutan una vez un código en caso de que se cumpla una condición. 

Los mas usados son:

-If: ejecuta un código si se cumple una condición.

Ejemplo :
Se quiere comprar un objeto:
if ( variable que indica nuestro dinero  > variable que indica el coste del objeto) {
Adquirir el objeto y restar de la variable de nuestro dinero el coste del objeto comprado.
}
Se comprueba si tenemos dinero suficiente para comprarlo y en caso de ser asi, el objeto es comprado.


-Else: va colocado después de una condición -if- , ejecuta un código en caso de que la condición de el anterior -if- no se cumpla.

Ejemplo:
Se quiere comprar un objeto pero no tenemos dinero:
if ( variable que indica nuestro dinero  > variable que indica el coste del objeto) {
Adquirir el objeto y restar de la variable de nuestro dinero el coste del objeto comprado.
}
else{
Escribir "lo siento , no tienes dinero suficiente para comprar eso"
}

Se comprueba si tenemos dinero suficiente para comprarlo y en caso de ser así, el objeto es comprado sin embargo, en caso de no tener dinero, a diferencia del ejemplo anterior, esta vez nos saldrá el mensaje "lo siento , no tienes dinero suficiente para comprar eso" , en vez de no pasar nada.

-Else if: 
Ejecuta un código, en caso de que no se cumpla el anterior if y si se cumpla una condición propia.
Es el resultado de la simplificacion de un else con un if dentro.Basicamente es la conversion de esto:


if (A<B){ 
sucede algo}
else { if (A==0) {
sucede otra cosa
}
}
 En esto:
 if (A<B){ 
sucede algo}
else if (A==0) {
sucede otra cosa
}
De manera que el código queda mas simplificado.

miércoles, 16 de abril de 2014

Introduccion general a la programación: Leguajes de programación

Buenas, entrado en este tema , antes que nada habira que definir que es un un lenguaje de programación.

Un lenguaje de programacíon es un lenguaje creado para "comunicarnos" con la maquina (ordenador) y asi poder llevar a cabo diversos procesos o acciones.

Los lenguajes de programacion se dividen segun su nivel:
Cuanto mas alto sea el nivel de un lenguaje de programación este sera mas sencillo, y cuanto mas bajo sea el nivel de un lenguaje de programación este sera mas complicado.
Por ejemplo:

Escribir "Hola mundo" en BASIC, un lenguaje de alto nivel , seria tan sencillo como:
PRINT "Hola mundo"


Mientras que escribir "Hola mundo" en C , lenguaje de un nivel mas bajo, seria :
#include <stdio.h>

int main()
{
    printf("Hola mundo");
     return 0;
}

Elementos principales de un lenguaje de programación:

Variables: (int,char,string etc....)
Es el espacion donde almacenamos un dato, se diferencian segun el dato que almacenen.Ejemplo : int (almacena un numero entero) char (almacena un caracter) etc...
Condicionales: (if, else if, else...)

Ejecutan una vez un codigo en caso de que se cumpla una condición.

Bucles: (for y while)

Tienen una funcion similar a los condicionales , pero estos repiten una y otra vez el codigo mientras se cumpla esa condición.

Funciones:

Permiten "guardar" un codigo entero, en muchos casos necesitaremos usar un mismo codigo varias veces, entonces  en vez de repetirlo todas la veces , guardamos ese codigo bajo una funcion. Por ejemplo, en vez de crear un menu para cada nivel, guardar el codigo del menu bajo la funcion "menu()" .