Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mensajes - the_blade

271
Preguntas y respuestas / efecto de playa
Junio 06, 2012, 07:36:35 PM
Hola comunidad tengo una dudad haber si alguien me la puede solucionar en mi juego le inclui alguna partes en las cuales hay agua, mi idea es hacer una especie de playa, ahora el problemas es el siguiente logre un buen resultado en el ejemplo que dejo para descargar (con una textura diferente), ahora como el escenario es muy grande cuando le aplico el agua al engine se realentiza el juego y si quito el objeto que crea el agua anda bien. estos son basicamente los codigos que utilizo con un solo objeto:
evento create:
AlphaAgua=0.80//Transparencia Del Agua
Mov=0//Movimento Del agua

evento Draw:
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//VELOCIDAD DE MOVIMIENTO DEL AGUA
Mov-=0.20
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//FONDO DEL AGUA
draw_background_tiled_ext(suelo,0,0,1,1,c_white,1)
//AGUA
draw_background_tiled_ext(agua,0+Mov,0+Mov,0.50,0.50,c_white,AlphaAgua)
//AGUA "2"
//Efecto De Brillo
draw_set_blend_mode(bm_add);
draw_background_tiled_ext(agua,0-Mov,0-Mov,1,1,c_white,AlphaAgua)
draw_set_blend_mode(bm_normal);
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

igualmente esta el ejemplo para que lo vean y me comenten.-

en pocas palabras mi idea seria conseguir el mismo efecto o mejor pero mejorar el rendimiento del juego, quizas el error esta en que utilizo fondos, no se lo que quiero es que solo en ciertas partes del juego halla agua y en el ejemplo que adjunto crea agua en todo el escenario aunque solo se vea en algunas partes del mismo porque lo demas es tapado por texturas de tierra y arena. bueno espero sus respuestas y gracias.-
272
Hola consulta deseo desarrollar un videojuego isometrico al mejor estilo del diablo 2, utilizo sprites para el personaje principal de cuerpo completo, y creado para utilizar 8 direcciones, ahora el tema es que me interesaria que la jubalidad sea igual a la de este juego  (diablo 2), osea el personaje se maneja integramente con el mouse, uno hace click en alguna direccion y el personaje se mueve hacia ahy y si pulsa con el otro boton sobre un enemigo lo hira a atackar, necesito alguna idea de como implementarlo.- gracias.-
273
Muchas gracias elviskeley y Ferhand, le agradesco su colaboracion, le comento que si realmente me parece interesante el tema de utilizar un estilo de juego similar al diablo, utilizando el mouse, aunq el lo propuesto por ferhand es mas q interesante, ahora consulta seria util utilizar un sistema de path para el movimiento o simplemente el jugador se tendria q encargar de ir clickeando hacia donde se quieri dirigir y si ahy algun objeto solido en el medio tendria q cliqueak en otro lado para moverse, si tienen algun ejemplo de codigo o idea de como implementar la jubailidad se agradece, no pido sprites ni nada solor el modo de juego, o al menos alguna idea de como implementarlo. muchas gracias.-
274
Hola amigos estoy desarrollando un videojuego en vista isometrica, al estilo del Diablo II, y me interesa saber el modo de juego que puedo utilizar osea deseo que propongan ideas de un modo de juego rapido y adictivo, teniendo en cuenta lo siguiente:
los graficos del juego son en perspectiva isometrica.-
los personajes estan diseñados en perspectiva isometrica y a cuerpo completo (osea no se puede dividir el torso de las piernas).-
partiendo de esa base quiero que me propongan como seria mas comodo la jugabilidad, por ejemplo utilizando el mouse para todo ya se movimientos y disparo, o taclado y mouse, etc. porque la verdad se me complico un poco porq quiero que se pueda jugar de manera rapida y comoda pero como el personaje no tiene dividido el torso de las piernas no podia hacer que el personaje manejara la vista y la direccion del personaje con el mouse y el movimiento con el teclado dado que pulso la tecla por ejemplo para arriba y muevo el mouse para otro lado hace cualquier cosa porq el cuerpo esta unido. asi que agradesco sugerencias.-
275
Ok. voy a seguir probando y decime texic tenes alguna idea de como podria hacer para que se mueva de manera aleatoria, pero sin alejarse demasiado?
276
Hola Texic te comento que solo unos minutos despues de responderte me puse a pensar un poco y lo solucione, lo unico que hice fue crear dos variables, una que guarde el valor inicial de x y otra el de y del enemigo ni bien arranca el juego y luego compruebo que si el jugador se aleja lo suficiente utilizo este codigo:
if Regresar=1 {
if mp_grid_path(grilla,ruta,x,y,PosicionX,PosicionY,1)=1 {path_start(ruta,6,0,1)}
}

donde Regresar unicamente comprueba cuando debe regresar en este caso si es 1 (esta lejos) regresa a la posicion inicial.-
lo probe y funciona perfecto lo unico que me queda implementar ahora q si se te ocurre alguna idea te agradeceria es el tema de que cuando vuelva a su posicion inicial haga un pequeño patrullaje. gracias.-
277
Ok. Texic igual mil gracias si tenes algo avisame igual yo voy seguir probando si. de nuevo muchas gracias.- a y te agregue al mesenger un abrazo.
278
Hola texic veo q aun no me has respondido decime has tenido algun problema con el codigo o con el archivo que subi. por favor avisame es importante. gracias.-
279
ACA TE PASO EL CODIGO. SI LO SOLUCIONAS JOYA. GRACIAS.-
280
muchas gracias por la respuesta. te comento como funciona en codigo del enemigo:
en el evento create uso esto:

//VARIABLES PRINCIPALES
image_speed=0.50
Creado="No"//Permite Realizar Cambios Sin Modificar Todo Los Objetos De Misma Clase
Accion="Parado"//Accion Que Esta Realizando
Herir="No"//Permite Que Se Lo Dañe Con Amnimacion De Ves En Cuando
Z=y//Posicion De Profundidad Y Altura
//Pocicion De Ataque
XPos=0
YPos=0
Jugador="COM"//Se Puede Establecer El Jugador O La PC
SaludMax=100//Salud Maxima
Salud=SaludMax//Salud
Escudo=SaludMax//Escudo
//Animación
AnimIni=0//Saltea Al Frame Inicial De La Animación
AnimFrame=0//Frame De La Animacion En El Que Esta
AnimFin=0//Saltea Al Frame Final De La Animación
Frames=15//La cantidad De Frames Que Saltea En Cada Animacion
Multi=0//Miltiplica La Cantidad De Frames Que Saltea
//Datos Arma
Arma="Metralla"
CadenciaMax=50//Velocidad De Disparo Maxima
Cadencia=0//Velocidad De Disparo
CapacidadMax=30//Capacidad De Municion Maxima
Capacidad=0//Capacidad De Municion
Municion=100//Municion Total Maxima
CargaMax=20//Velocidad De Carga Maxima
Carga=CargaMax//Velocidad De Carga
//Inteligencia Artificial
IA="Ninguna"


var size;

size=16

grilla=mp_grid_create(0,0,room_width/size,room_height/size,size,size)

mp_grid_add_instances(grilla,Caja,0)

ruta=path_add()

en el evento step:

if vidas<1
{show_message("You Winner"); game_restart();}
//si no tiene vidas el objPersonaje osea tu ganas.

if instance_exists(Personaje)
{
direction=point_direction(x,y,Personaje.x,Personaje.y)
//Profundidad Del Objeto
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
depth=-Z;Z=y
Scr_MovEnemigo();
Scr_AtaqueEnemigo();
}
//solo si existe el objPersonaje el ejecuta los script.
//se compara si existe ya que al destruirlo podria dar algun error.



//Scr_MovEnemigo
if distance_to_point(Personaje.x,Personaje.y)<400 and distance_to_point(Personaje.x,Personaje.y)>150{
path_end()
Accion="Parado"
if mp_grid_path(grilla,ruta,x,y,Personaje.x,Personaje.y,1)=1 path_start(ruta,6,0,1)
Accion="Correr"
}
else {
speed=0;
path_end();
if distance_to_point(Personaje.x,Personaje.y)>400 and Accion="Disparar" {
Accion="Parado";
}else { Accion="Disparar"; }
}

//////////////////////////////////////////////////////////////
//Se Destruye La Instancia Y Crea La Sangre
if Salud<=0{
repeat(3+random(3))instance_create(x-20+random(40),y-20+random(40),Sangre)
repeat(1+random(2))instance_create(x-20+random(40),y-20+random(40),Sangre)
instance_destroy()}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//HERIDO
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Accion Que Recibe Cuando Es Dañado...
if Accion="Herido"{speed=0
//Se Queda Parado Si Termina La Animación
if image_index>=AnimFin+Frames*Multi{Accion="Parado"}
}
//////////




////Scr_AtaqueEnemigo()
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Recargar
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Recarga Si Se Quedo Sin Balas
if Carga>=CargaMax and Capacidad<=0{Carga=0
if Arma="Metralla"{sound_play(S_Recarga)}
if Arma="Lanza Misiles"{sound_play(S_Recarga2)}
}
//Cargando...
if Carga<CargaMax{Carga+=1}
//Ya Esta Cargada La Municion
if Carga>=CargaMax and Capacidad<=0{Carga=CargaMax;Capacidad=CapacidadMax;Municion-=Capacidad}
//DISPARAR
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if Accion="Disparar"{
//Cadencia De Disparo
if Cadencia<CadenciaMax and Capacidad>0{Cadencia+=1}
//Dispara Solo Cuando Es Determenido Frame
if image_index=AnimIni+Frames*Multi+4{speed=0
if Cadencia>=CadenciaMax{Cadencia=0;Capacidad-=1
//Metralla_________________________________________________________________________________________________________
if Arma="Metralla"{
instance_create(x+60*cos(degtorad(direction)),y-90-30*sin(degtorad(direction)),Bala)
with(Bala){if Creado="No"{x=Personaje.x;y=Personaje.y;depth=Personaje.depth-10;Creado="Si"}}
}
//Lanza Misiles____________________________________________________________________________________________________
//if Arma="Lanza Misiles"{
//instance_create(x+60*cos(degtorad(direction)),y-90-30*sin(degtorad(direction)),Misil)
//with(Misil){if Creado="No"{XPos=other.XPos;YPos=other.YPos;depth=other.depth-10;ID=other.id;Creado="Si"}}}
}}
//Se Queda Parado Si Termina La Animación
if image_index>=AnimFin+Frames*Multi{Accion="Parado"}
}



y por ultimo en el evento end step ejecuta este script:
Scr_EndStepEnemigo();

el cual lo unico q hace es verificar y asignar la animacion y sprites acordes a cada accion y la direccion, los cuales son:
//aca va el codigo de cada direccion, pero no lo puse porq es muy largo.-

if Accion="Parado"{AnimIni=0;AnimFin=14.25;Frames=15}
if Accion="Recargar"{AnimIni=0;AnimFin=14.25;Frames=15}
if Accion="Correr"{AnimIni=120;AnimFin=134.25;Frames=15}
if Accion="Disparar"{AnimIni=240;AnimFin=248.25;Frames=9}
if Accion="Herido"{AnimIni=312;AnimFin=324.25;Frames=13}


bueno y eso es todo de ahy en mas no se me ocurre como implementar lo que consulte. gracias
281
Hola estoy programando la IA de un enemigo, en la cual el mismo utiliza un sistema de path con el cual me sigue y esquiva los objetos solidos, dispara al jugador y cuando este se alejo un poco este deja de seguirlo, ahora lo que quiero hacer pero no se me ocurre como es que cuando el enemigo ya no este dentro se regresa a la posicion en donde estaba inicialmente y que de ser posible haga un pequeño patrullaje por la zona. desde ya mil gracias.-
282
Bueno amigos despues de tanto probar y buscar pude solucionar el problema ahora el enemigo del juego te sigue te dispara esquiva objetos solidos y todo asi q funciona barbaro. muchas gracias.-
283
Hola mi problema es el siguiente estoy desarrollando un shooter isometrico en el cual tengo un grupo de enemigos, mi problema es el siguiente para la inteligencia utilizo el sistema de path, en el cual quiero q el enemigo me siga y esquive los objetos, utilizo este codigo en el evento step:

if distance_to_point(ObjX,ObjY)>Alcance{
mp_potential_path(Camino,ObjX,ObjY,20,1,0);//Crea El Camino
path_start(Camino,Velocidad,0,true);//Sigue El Camino
}else{path_end()}

y defino en el evento create el path:
Camino=path_add();

el problema es que me siguen pero se quedan trabados con cualquier objeto, como puedo hacer para solucionarlo?. desde ya muchas gracias.-
284
Preguntas y respuestas / SOLUCIONADO
Marzo 03, 2012, 09:54:25 PM
POR FIN DESPUES DE PROBAR CONSEGUI SOLUCIONAR MI PROBLEMA, UTILIZE LOS CODIGOS QUE DESCRIBI ANTERIORMENTE, OSEA VIEW_XVIEW[0]+100, POR EJEMPLO Y LO QUE HICE FUE CREAR PRIMERO UNA ROOM VACIA O QUE CONTENGA ALGUNA PRESENTACION ANTES DE ARRANCAR EL MENU, Y DESDE EL CODIGO DE ESTE ROOM DEFINO EL ANCHO Y ALTO DEL ROOM DEL MENU PRINCIPAL CAPTURANDO EL VALOR DE Display_get_Height() y Display_get_Widht() Y AHY FUNCIONA PERFECTO, LO PROBE EN OTROS ORDENADORES CON DIFERENTES RESOLUCIONES Y VA PERFECTO.- GRACIAS
285
Gracias J-Dex ahora el problema es el siguiente probe poner tal cual me digiste o por ejemplo para centra el texto o spirte por ancho y alto utilize este codigo:

para el text:
draw_text((view_xview[0]+view_wview[0])/2,(view_yview[0]+view_hview[0])-20,"CopyRight by I-Soft. All Rights Reserved 2.011-2012. Sebastian, Andres y Claudio Salvatico")

y para el sprite:
draw_sprite(sprite1,0,view_wview[0]/2,view_yview[0]+150);

ahora pasa que el menu lo hice en una resolucion de 1280x800 por lo tanto el room y la vista hice poseen el valor de la resolucion actual osea ese ancho y alto entonces anda perfecto, ahora cuando lo pruebo en una pc con una resolucion de 800x600 o mayor a la mia se cambia todo de lugar, osea o todo queda grande o ahy graficos que no se ven y eso, hago como acotacion que en el evento game start tengo este codigo:

/// Here is the simple script that auto adjusts the view variables to the desktop resolution
/// !IMPORTANT! The room and view sizes have to be larger than users desktop resolution, so to be safe the room and view sizes are 4000
global.resolution_w = display_get_width()
global.resolution_h = display_get_height()
view_wview[0] = global.resolution_w
view_hview[0] = global.resolution_h
view_wport[0] = global.resolution_w
view_hport[0] = global.resolution_h
window_set_region_size(global.resolution_w,global.resolution_h,true)

y en el evento de codigo del room esto:

instance_create(x,y,objMenuPrincipal);
view_enabled=true
view_visible[0]=true
view_wview[0]=global.videowidth;
view_hview[0]=global.videoheight;
view_xview[0] = 0;
view_yview[0] = 0;
view_xport[0] = 0;
view_yport[0] = 0;
view_hport[0]=global.videoheight;
view_wport[0]=global.videowidth;
display_set_size(global.videowidth,global.videoheight);

espero puedan ayudarme.-