Noticias

Se ha publicado un nuevo servicio, el Portal de Juegos Online

* Sponsor

Comunidad Game Maker

Bienvenid@ a la comunidad hispana de Game Maker. Nuestro objetivo es crear videojuegos y dar soporte en castellano de GM. Para mejorar nuestro servicio hemos implantado, como adicion al reglamento general, algunas normas especificas en los subforos más comunes. ¡No olvides informarte antes de participar!.

Mostrar Mensajes

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


Mensajes - Jeffrey Faper

Páginas: 1 2 3 ... 5
1
Seria algo como esto se puede hacer con arrays o ds_list no se cual sea la mejor opcion algunos dicen que ds_list es mas rapido no lo se, me gustaria saberlo...
EVENTO GRAN LIDER:
//CREATE EVENT
//ARRAY POSICIONES DE NUESTRO OBJETO LIDER
trailIndex=39; //RANGO MAXIMO DE NUESTRO ARRAY
for(var i=trailIndex-1; i>=0;  i--){
    trailx[i]=x;
    traily[i]=y;
}
//EVENTO STEP GRAN LIDER
//almacenar las posiciones de nuestro objeto al array
if(x!=xprevious || y!=yprevious){
    for(var i=trailIndex-1; i>0; i--){
        trailx[i]=trailx[i-1];
        traily[i]=traily[i-1];
        }
    trailx[0]=x;
    traily[0]=y;
    }

EVENTO END STEP DE NUESTRO NPC OPTIONS O COMPAÑERO :
//CREO QUE VA EN UN END STEP EVENT
//ACTUALIZAMOS LA POSICION DE NUESTRA OPTION NPC O COMPAÑERO
x=objGRAN_LIDER.trailx[10];
y=objGRAN_LIDER.traily[10];
Este metodo funciona bien para velocidades estaticas como es el caso del juego Gradius donde solo puedes cambiar de velocidad al coger un poder y upgraderarla para juegos donde el jugador puede cambiar entre diferentes velocidades a su antojo, el npc option o compañero termina alejandose demasiado de el,  jamas pude solucionarlo asi que si alguien tiene alguna solucion favor de compartir le agradeceria mucho

2
Preguntas y respuestas / Re: Optimizar creación de sprites
« en: Mayo 14, 2022, 06:50:18 pm »
Voy a dar un ejemplo. Imaginemos este código:

#macro ancho 640
#macro alto 480

for(var a=0; a<ancho; a++)
    for(var b=0; b<alto; b++){
        alfa[a,b]=random_range(0,1)
        color[a,b]=irandom(c_white)
   }


¿Como sería el código para convertir esta matriz en un sprite usando buffer_set_surface?
La verdad jamas he usado buffers para dibujar o guardar imagenes. pero esto fue lo poco que encontre

Guardar surface en un bufer: https://forum.yoyogames.com/index.php?threads/saving-surface-to-a-buffer.30592/
Convertir bufer a textura,sprite o surface : https://forum.yoyogames.com/index.php?threads/is-there-a-way-to-convert-the-buffer-to-a-texture-or-a-sprite-or-surface.33081/
GM 1.4 WebM Player : https://www.smwcentral.net/?p=viewthread&t=118677&page=1&pid=1585487

3
Preguntas y respuestas / Re: Optimizar creación de sprites
« en: Mayo 14, 2022, 02:41:02 am »
(En game maker 1 no tarda mucho) me retracto si tarda un chingo 6 minutos para una imagen de 4096x4096...
recuerdo que habia mucha informacion sobre estos temas para GM1 pero ya no existen las paginas
eso si todos los post coincidian en algo que GM1 es una mierda y en todos usaba usaban buffers

4
Preguntas y respuestas / Re: Modificar parámetros de una view
« en: Mayo 13, 2022, 12:36:29 am »
Puede echarle un ojo  a estos tutoriales para entender mas o menos como funcionan esas cosas.
Estan en ingles pero puede traducirlos con google.translate, tambien estan los tutoriales de PixelatedPope en Youtube.
la eleccion correcta de sus resoluciones, tambien dependera del tipo de arte que usara para su juego
por ejemplo si su arte es pixel art  lo mejor sera trabajar directamente con la resolucion mas baja de su juego
y de ahi re-escalar su juego x2,x3 o x4,  por ejemplo el juego Hyper Light Drifter fue desarrollado en una resolucion
base de 480x270 y puede escalar sin problemas hasta 1080p sin verse feo.
Supongo que para los graficos en alta resolucion aplicaria lo mismo, eso si, con ese tipo de graficos
no es recomendable hacer down-scale o mejor dicho para que haria down-scale a sus graficos
de alta resolucion simplemente no tiene sentido

PixelArt Tutorial : https://www.gamedeveloper.com/art/pixel-art-tutorial-part-1-basics-tools
escalado de GUI : https://gamemaker.io/en/blog/the-basics-of-scaling-the-gui-layer
escalado de CAMARA O VIEW : https://gamemaker.io/en/blog/the
escalado HTML5 : https://gamemaker.io/en/blog/the-basics-of-scaling-html5

5
Estaba intentando recrear las fisicas de sonic,  para usarlas en enemigos tipo tanque que puedan aderirse al terreno, pero falle rotundamente
me decidi a buscar algun tutorial y la verdad no hay mucho de donde escoger  los pocos que encontre me dieron algunos errores
asi que si alguien sabe como implementar ese tipo de colisiones se le agradece su ayuda.

Solucionado este tutorial me ayudo a entender un poco como funcionan las colisiones en un juego de Sonic
 
sanicPro_Test.gmz : https://drive.google.com/file/d/1IzHJcs9VWH3tcFfbI_7ltnxxSC8FGoTD/view?usp=sharing


Surgio este error que hace que nuestro tanque tenga ganas de hacer piss.


para solucionarlo  solo hay poner estas condiciones en el scrFindAngle
while(k>0){
    if(!done1){
        if(hspd<>0 && collision_point(x1,y1,parSolid,1,1))
        ||(hspd<>0 && collision_point(x1,y1,parOneway,1,1)){
            done1=1;
            }
        if(onGround){
            x1+=asin;
            y1+=acos;
            }
        }
    if(!done2){
        if(hspd<>0 && collision_point(x2,y2,parSolid,1,1))
        ||(hspd<>0 && collision_point(x2,y2,parOneway,1,1)){
            done2=1;
            }
        if(onGround){
            x2+=asin;
            y2+=acos;
            }
        }
    if(done1 && done2){
        break;
        }
    k--;
}
y listo bueno eso creo....



6
Preguntas y respuestas / Re: Problema al Resucir Vida
« en: Mayo 04, 2022, 11:09:37 pm »
por lo que veo no me entiendes lo que quiero intentar hacer, no es un juego de collisiones, solo quiero que cuando el personaje elija un ataque, le redusca vida al enemigo pero no tan rapiamente, y que no me convierta los numeros a decimal, ya que al colocar esto global.vida_enemigo -= 0.17;, la reduce lentamente pero me coloca la vida del enemigo en decimales y no quiero eso...
Bro, lo siento,  pero la culpa es tuya por no poner codigo, sin codigo es dificil entender que esta haciendo y que es lo que realmente quiere hacer.
Simular daño o hacer daño con colisiones, en si es lo mismo, la unica diferencia es que  simulando daño tiene que obtener
el id de la instancia a la que se le aplicara el daño, pero en si las bases son las mismas, si usted no lo entiende creo que esto es lo mas que puedo ayudarle.

DAÑO POR TICKS :

//SIMULAR DAÑO POR TICKS
if(keyboard_check_pressed(vk_enter)){
    //CUANTOS TICKS DE DAÑO RECIBIRA NUESTRO TARGET
    global.ticksCount=30;
    }
//EJECUTAR  DAÑO POR TICKS
if(global.ticksCount>0){
    //TICK TIMER
    global.tickTimer++;
    //APLICAR DAÑO POR TICKS A NUESTRO TARGET CADA 1/2 SEGUNDO..CREO
    if(global.tickTimer%30==0){
        global.vida--;
        global.ticksCount--;
        }
    }else{
        global.tickTimer=0;
    }


7
Preguntas y respuestas / Re: Problema al Resucir Vida
« en: Mayo 02, 2022, 06:12:07 am »
Eso pasa por que no esta condicionando cada cuando su personaje puede recibir daño
si su personaje esta colisionando contra un enemigo y solamente pone esto global.vida_personaje--; 
en su evento de colision, la vida de su personaje disminuira infinitamente hasta que deje de colisionar  contra el enemigo
por eso es que su vida disminuye rapidamente.
lo que usted necesita es una boleana para controlar cada cuando su jugador puede recibir daño la puede llamar invencible
//Si invencible=true salimos del evento de colision
if(invencible){exit}
//En cambio si invencible=false le restamos vida al jugador y activamos la invecibilidad para evitar que su vida descienda rapidamente
else{
global.vida_personaje--;
invencible=true;
alarm[0]=30; //tiempo que durara la invencibilidad
}
//EVENTO ALARMA[0]
invencible=false;
/*
Supongo que usted solo ponia esto global.vida_personaje--;  
esa es la causa de su problema, ya que la vida de su personaje
solo dejara de disminuir cuando deje de colisionar contra el enemigo
*/

8
Preguntas y respuestas / Re: Problema al Resucir Vida
« en: Abril 30, 2022, 09:35:50 pm »
Ya lo probe y estaba equivocado para poder usar floor() tiene que declarar su variable en el evento step de esta manera
aunque puede disminuir su vida asi global.vida_personaje--; y es practicamente lo mismo

//EVENTO STEP JUGADOR
global.vida_personaje=floor(clamp(global.vida_personaje,0,100));

9
Preguntas y respuestas / script_execute ?
« en: Abril 28, 2022, 11:34:36 pm »
En el manual YoYo recomienda no usar script_execute por ser lento y ademas menciona que un uso intensivo puede generar bajo rendimiento
lo probe para controlar los estados del jugador de esta manera.

//EVENTO CREATE PLAYER
//PLAYER ACTIONS
action=nova.stand;
state[nova.stand]=scrStand;
state[nova.move]=scrMoving;
state[nova.fall]=scrFalling;
state[nova.hitting1]=scrHitting1;
state[nova.hitting2]=scrHitting2;
state[nova.hitting3]=scrHitting3;
enum nova{stand,move,fall,hitting1,hitting2,hitting3};

//EVENTO STEP PERSONAJE
//EJECUTAR ESTADOS DEL PERSONAJE
script_execute(state[action]);
mi duda es, recomiendan el uso de esta funcion o es mejor usar switch statement
ya probe con ambas y la verdad no note muchas diferencias tal vez por que solamente lo esta ejecutando una sola instancia.
aqui le dejo el proyecto de prueba por si quiere echarle un vistazo...
Test_script_execute.gmz:  https://drive.google.com/file/d/10ftzbStkZ53BiXey2CvoJ_lnbsFAA6Qy/view?usp=sharing

10
tenia razon, error mio al parecer las surfaces tambien hay que eliminarlas de la memoria.
Deje un tiempo al jugador atascado en una esquina disparando a la nada con un loop de enemigos atacandolo y moviendose por la pantalla
la memoria ya no aumenta mas yupi .

Pero ahora me surgieron otras dudas en un comentario publicado en yoyo.community ingles,
un chico comentaba que al destruir una instancia tambien teniamos que eliminar las variables que creamos en el evento create
por eliminar supongo que se referia a poner cada variable en undefined como por ejemplo sprite_index=undefined; enBehavior=undefined; etc.
Que tan cierto es esto?
Para eso esta el recolector de basura de Game Maker?
pregunto por que nadie le replico su comentario....


11
Preguntas y respuestas / object pooling es necesario implementarlo?
« en: Abril 19, 2022, 08:11:34 am »
en mi juego estoy constantemente creando y destruyendo instancias, como enemigos, balas, explosiones
pensaba que  esa era la manera correcta de hacerlo, pues es lo que te enseñan en los tutoriales de youtube
pero hace poco me tope con esto llamado object pooling,  al parecer crear y destruir instancias genera problemas
de fragmentacion de memoria y en mi juego es evidente ese problema, ya que la memoria de la aplicacion
va aumentando con el tiempo no es algo exagerado pero tal vez en un futuro me podria causar problemas
entonces esta es mi pregunta es necesario implementar object pooling a todos los proyectos o depende del tipo de juego
y de paso como es que se implementa esta tecnica o magia oscura, se que se hace con ds_list pero no se como
gracias por su tiempo!!




12
Preguntas y respuestas / Re: Sistema de ruido
« en: Abril 16, 2022, 01:27:33 am »
En teoria parece algo facil de hacer,  pero no lo creo,
un ejemplo seria que usted pueda saber que tanto esta moviendo el jugador su joystick de movimiento,  como pasa en muchos juegos 3d
donde si el jugador mueve solo un poco su joystick de movimiento y  mantiene ese rango , el personaje comienza a caminar lenta y sensualmente, entonces podria partir desde ahi, pero no se si Game Maker tenga funciones para saber eso.
le dejo este video sobre como manejan esas cosas en los juegos de sigilo


ya mire el video y si no busca algo tan complejo puede usar collision_circle()
que simularia el area en la que su enemigo puede detectar los sonidos, ademas necesitara un medidor de ruido
como hizo anteriormente con su medidor de stamina, este aumentara su valor dependiendo
de si el jugador esta corriendo, caminando o agachado y descendera si este se mantiene quieto
puede dividir su medidor de ruido en tres rangos diferentes
por que si no el jugador se pasara el juego entero empinado y de nada servira su sistema de ruido.

entonces que pasa si el jugador sobrepasa dichos rangos y ademas esta en el rango de audicion de un enemigo
el primer rango solo hara que el enemigo haga algo random,  hable solo o se active que despierte de un sueñito y comience a patrullar.
el segundo rango hara que vaya a checar el terreno. el enemigo se dirigira caminando tranquilamente a la posicion del jugador
el tercer rango hace lo mismo que el segundo, a diferencia que lo hara mas agresivo corriendo y listo para atacar su rango de vision de ataque aumentara.

esto es solo teoria en la practica puede no funcionar u ocasionar muchos mas problemas que no se habian contemplado
como dicen es mas facil decirlo que hacerlo. espero le sea de ayuda






13
Preguntas y respuestas / Re: Problema con la resolucion
« en: Abril 14, 2022, 05:19:59 am »
si es muy raro lo que le pasa , en mi juego no tengo esos problemas puedo escalar a cualquier resolucion sin problemas, asi que si,  puede ser que su problema se deba a que esta trabajando directamente con resoluciones HD en lugar de una resolucion intermedia y al momento de disminuir su resolucion todo se ve mal, no lo se , aqui le dejo esto que encontre relacionado con problemas al trabajar con resoluciones hd, no se si le sirva
Downscaling issues:
https://forum.yoyogames.com/index.php?threads/downscaling-issues.70073/

surface de mi juego escalada a 1920*1080 en un monitor de 1366*768
draw_surface_stretched(application_surface,-620,0,1920,1080):

14
Preguntas y respuestas / Re: Problema con la resolucion
« en: Abril 11, 2022, 04:49:42 am »
Esto tampoco me sirve :(
Con esto tendria que especificar muchas resoluciones para evitar problemas en cualquier pantalla... y lo que yo busco es que se adapte a todos los sitios, algo que deberia hacer por defecto con la opcion Scale que trae Gmae maker... pero no lo hace.

si no planea crear un menu de configuraciones de pantalla, entonces puede usar las funciones
display_get_width(),  display_get_heigth(),  display_get_dpi_x() y display_get_dpi_y() 
pero igualmente tiene que cambiar el tamaño de la surface y ventana al iniciar su juego ya que en Game Maker
usted tiene que adaptar sus juegos a diferentes monitores, Game Maker no lo hace automaticamente


aqui le dejo este tutorial explicacion sobre camaras y resoluciones zoom tal vez le ayude
es para GM2 pero las camaras no han cambiado mucho la verdad,  esta en ingles ya que no logre encontrar la version en español
https://www.yoyogames.com/es/tutorials/cameras-and-views



15
Preguntas y respuestas / Re: Problema con la resolucion
« en: Abril 09, 2022, 11:08:25 pm »
Lo unico que uso son las opciones que vienen por defecto en Game Maker.
La opcion Star in fullscreen mode, interpolate color between pixels, keep aspect ratio y allow switching to fullscreen.
Tengo esas activadas.
Las rooms las tengo todas a 1920x1080.
Entonces su problema se da al ejecutar su juego en pantallas con menor resolucion y ademas menciona que no esta configurando una nueva resolucion para que este funcione correctamente en dichas pantallas, osea que esta corriendo el juego con una resolucion del  mismo tamaño de  los room 1920*1080,  me imagino que tampoco esta usando views ni surfaces. a intentado cambiar el tamaño de la surface y ventana aqui le dejo las funciones que necesita pruebe con diferentes resoluciones para ver que pasa
/*
EVENTO CREATE
ponga esto en su objControlador, puruebe con diferentes resoluciones
*/

surface_resize(application_surface, 1280 , 720);  //sirve para modificar el tamaño de las surfaces es como un lienzo en blanco
window_set_size(1280,720);  //sirve para cambiar el tamaño de ventana de nuestra aplicacion
display_set_gui_size(1280, 720); //este no se para que sirve, me imagino que es para modificar el area de dibujado del evento draw_gui no se

/*
  EJEMPLO: BORRAME
 Hay mas funciones para controlar todos esos aspectos de la pantalla, esta es la manera en que controlo las resoluciones del  juego de arriba
if(os_type==os_windows){
   wscale=3;    //ESCALAR  LA APLICACION multiplica la resolucion minima x1, x2 o x3
   surfW=320; //ANCHO DE LA SURFACE
   surfH=368; //ALTURA DE LA SURFACE
   width=456; //ANCHO DE LA VENTANA
   height=384;//ALTURA DE LAVENTANA
   vsync=0;
   altvsync=1;
   display_reset(0,vsync);
   display_set_windows_alternate_sync(altvsync);
   application_surface_draw_enable(false);
   draw_enable_alphablend(false);
   if(!window_get_fullscreen()){
       window_set_size(width*wscale,height*wscale); //CAMBIAMOS EL TAMAÑO DE LA VENTANA DE LA APLICACION
       window_set_caption("SoldierBladeDX"); //BANNER DEL JUEGO
       }
   }
   /*
  en el evento draw_gui de mi objeto controlador dibujo la surface del juego
  que es un room de 640*736 en la posicion 72 y 8 de la  ventana de la aplicacion
   no uso views, solo para efectos de zoom, el resto de pantalla queda en negro y ahi es donde dibujo el hud del juego
   para que no le sea complicado le recomiendo que no use mas de 3 resoluciones
   */
    draw_surface_stretched(application_surface, 72 ,8, surfW*wscale, surfH*wscale); //dibujamos la surface de nuestro juego


Páginas: 1 2 3 ... 5