Page 2 of 5

Re: [GAME] KARATEKA

Posted: Sun Jul 07, 2013 2:11 pm
by erkosone
Hola DIV2Lover, las animaciones son algo que no está demasiado explicado en el foro, hay temas sobre ello pero vaya.. que hay muchas formas de hacerlo.

Yo estaba encajonado con el sistema "de mierda por cierto" de hacerlo sin tablas, recuerdo que TYCO y KOZKA me insistieron mucho en su día en que la estaba cagando con los gallumbos sin bajar XD.. y bueno.. aunque suelo ser bastante cabezota y no suelo aceptar demasiado bien los consejos no hice caso y continue con la mia.. con el tiempo me he dado cuenta de que tienen mas razón que un santo.

Yo también te aconsejo que las animaciones las hagas por tablas, luego no tendrás que lamentarte haciendo reajustes tontos que a la mínima necesitarán mas reajustes y así siempre..

Que sistema usas para animar? si quieres/puedes colgar un fragmento de tu código puedo explicarte como hacerlo en el caso de que no lo estés haciendo ya claro ;)

Re: [GAME] KARATEKA

Posted: Sun Jul 07, 2013 2:51 pm
by DIV2lover
Hola Erkos, no sé que es eso de las tablas en las animaciones, como ves en este código me baso en bucles. Me interesa mucho todo lo que puedas decirme sobre ese método que desconozco completamente. ¿Quizás te refieres a usar tablas al estilo animacion[4]=1,2,3,4,5; y luego ciclarlas en un bucle from?. quedo a la espera de saber a que te refieres!!!

[Codebox=gemix file=Untitled.gemix]
process karateka1(spr_ini_x);
private
spr_ini_x;
int reloj_anim=0;
graf_ini=12; graf_fin=15;
// TIEMPO ENTRE FOTOGRAMAS
tiem_ent_ftgramas=4;
velocidad=3; int i; int j;
int retroceso_Var;
byte seguro_katanas=0;
int x_me; int x_old;

begin
scroll.camera=id;
ctype=c_scroll;
//START_SCROLL(numero d scroll,fichero, INT gráfico, INT fondo, INT región, INT flags)
start_scroll(num_scroll,f_contragolpe,grafico_fondo,0,0,1);
scroll[num_scroll].x0=x-170;
graph=graf_ini; x=spr_ini_x; y=Y_sprites;
write_int(0,10,10,0,offset distancia);
write_int(0,180,10,0,offset Energia);


loop
// refresca ID
id_karateka=id;
escape();
// ANIMACIÓN
if(reloj_anim>tiem_ent_ftgramas);
if(graph>=graf_fin);
graph=graf_ini;
else
graph+=1;
end
reloj_anim=0;
end
// CONTROL
if(key(_left)); // LIMITAR el movimiento a la izquierda UNDER CONSTRUCTION
//stop_scroll(0);
//scroll[num_scroll].speed=1;
flags=1;
velocidad=-5;
x+=velocidad;
reloj_anim+=1;
end
/* no funciona de momento
x_old=x;
if(x<tope_izq);
x=x_old;
end */
if(key(_right));
flags=0;
velocidad=5;
reloj_anim+=1;
x+=velocidad;
distancia+=1;
scroll[num_scroll].x0+=velocidad;
end
if(key(_c_ins) and retrocede<1);
velocidad=0;
graph=16;
from i = 0 to anim_patada_T2;
frame;
end
graph=17;
golpea_karateka=1;
from i = 0 to anim_patada_T1;
frame;
end
graph=16;
golpea_karateka=0;
from i = 0 to anim_patada_T2;
frame;
end
graph=12;
end

if(key(_up));
graph=18;
from i = 0 to 8;
frame;
y-=4;
end
from i = 0 to 8;
frame;
y+=4;
end
graph=15;
end
x_me=x;

// Llamada a niveles para externizar el proceso de crianza de enemigos/obj...
niveles(x);

//Caso de ser impactado
if(retrocede==1);
energia-=1;
sound(FX_karateka_golpeado);
if(energia<1);
let_me_alone();
break;
end
if(retroceso>0);
retroceso_Var=-6;
else
retroceso_Var=6;
end
from j = 0 to 10; //Efectua el retroceso
x+=retroceso_Var;
angle+=5000;
frame;
end
angle=0;
retrocede=0;
end
Karateka_flags=flags; //variable global necesaria para saber en todo momento el flags de Karateka
frame;

end
end
[/Codebox]

Re: [GAME] KARATEKA

Posted: Sun Jul 07, 2013 3:15 pm
by erkosone
OMG!
Ese código mezcla todo en todos sitios jeje..
De lo que se trata es de no mezclar los eventos con las acciones, eso es básico para hacer juegos complejos, así claro que te funciona pero cuando quieras ampliarlo vas a sufrir, te lo digo por experiencia.

Haber si puedo prepararte un código de ejemplo y te lo paso.

Re: [GAME] KARATEKA

Posted: Sun Jul 07, 2013 3:33 pm
by erkosone
Te dejo una base "simple" para que veas la idea, creo que te quedará mas claro con este ejemplo ;)
Supongo que compilará.. si te da algún fallo dime y lo miro que es de memoria..

Aprendiendo

Posted: Sun Jul 07, 2013 9:01 pm
by DIV2lover
Código muy interesante e inteligible, gracias Erkos,
Lo voy a estudiar estos días, me interesa poner el código lo más ordenado y sencillo posible.

the dude

Posted: Mon Jul 08, 2013 11:08 am
by DIV2lover
Una pregunta sobre ese código Erkos:
¿donde ejecutas los avances del sprite? veo que andando ejecutas un x++, pero en el salto no pones nada. Si un salto primero sube y después baja. ¿como pones esto de manifiesto y donde?.

Re: [GAME] KARATEKA

Posted: Mon Jul 08, 2013 3:24 pm
by erkosone
Hola DIV2Lover, yo los juegos los programo con física, uso mi propia librería de física para juegos y ahora que va a salir ChipMunk la usaré también, aclarando eso de antemano te comento:

1 - Detectar tecla de salto, aplicar un leve impulso a la entidad, cambiar de estado.
2 - Esperar a que se suelte la tecla de salto, cambiar de estado.
3 - Esperar la colisión con el mundo, vuelta a empezar.

Tengo mucho material preparado para publicar, te pido paciencia ;) , en cuanto aparezca la nueva beta de Gemix te prometo algo que te va a gustar, un templateProject para un juego plataformas.
Casi que te aconsejaría pausar el desarrollo de tu juego, por que tras la salida de ChipMunk en Gemix la cosa va a cambiar mucho y todo lo que tienes, incluso la forma de programar que usas vas a tener que olvidarla o cambiarla, ChipMunk es la librería de física 2D mas rápida que existe, es muy eficiente y aporta ya no solo resolución de movimientos.. tiene muchas funciones que se complementan i/o mejoran las que ya tiene Gemix, incluso un extenso set de funciones para trabajar con vectores.

Así que te aconsejo dejar en pause tu juego y pasar por aquí y ponerte a estudiar: http://chipmunk-physics.net/release/Chi ... test-Docs/
Aunque no entiendas todo da igual, lo importante es saber de que dispones con la librería para poder enfocar las cosas del mejor modo posible.

Re: [GAME] KARATEKA

Posted: Mon Jul 08, 2013 6:56 pm
by DIV2lover
OK, kedo a la espera del chipmunk ese!!

Re: [GAME] KARATEKA

Posted: Fri Jul 19, 2013 8:16 pm
by DIV2lover
Nueva versión!!

Re: [GAME] KARATEKA

Posted: Sun Jul 21, 2013 1:06 am
by OskarG
Hola,lo has mejorado,no cabe duda,ahora es mas adictivo.Me ha gustado mas,aunque tienes que pulir ciertas animaciones,que tenga mas variedad de acciones ,el escenario mas currado ,partes moviles....etc,sigue asi ,vas por buen camino aunque puede dar mucho mas de si.