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 - Hezz

Páginas: 1
1
Lo que primero que debes hacer es dicidir cómo se va a ajustar la resolución. Hay muchas opciones:
+ Puedes recortar los lados de la view cuando la pantalla es menos ancha (escala no entera)
+ Puedes recortar arriba y abajo de la view cuando la pantalla es más larga (escalar no entera)
+ Mantener la escala 1:1 (en pantallas grandes se ve más area del escenario)
+ Escalar la imagen en valores enteros eligiendo el valor que mejor se ajusta a la pantalla (el área visible depende de la resolución)

2
Yo preferiría no utilizar place_meeting, porque utiliza una hitbox con valores redondeados. Puedes crear tu propio sistema de hitbox o puedes utilizar un sistema como este que va almacenando los residuos no enteros de velocidad y solo verifica colisiones con números enteros
https://marketplace.yoyogames.com/assets/1724/moving-platforms

Lo que falta en tu código es hacer que la plataforma mueva al personaje antes de que el personaje se mueva. Si subes el proyecto sería más fácil probar el código.

3
Preguntas y respuestas / Re:Aplicaciones con el corrimiento de bits
« en: Diciembre 09, 2018, 01:56:51 am »
A mi me dijeron que simplemente era una forma mas económica de hacer operaciones matemáticas con base 2, ya sabes, si le quitas o le pones un bit al numero binario que representa al numero que estas operando, lo que quieras hacer con eso ya depende de tu imaginación, por ejemplo la imaginación de NiuWeb dice que puedes tomar unmonton de variables booleanas (unos y ceros) y componer un numero decimal con esos bits, nadie sabrá de que se trata  ;D

4
Espero que te sirva.   

6
Preguntas y respuestas / Re:mouse
« en: Noviembre 25, 2018, 02:14:22 am »
Hola, gusto en saludarlos.

Los que dice Hezz y Taki-A es correcto  ;).
Hay muchas maneras de lograrlo.

Tu código le está diciendo al sistema que:
Cuando se presione el botón izquierdo del mouse se cambie de room.
Código: [Seleccionar]
if(mouse_check_button_pressed(mb_left)){room_goto(RM_TABLERO)

Puedes decirle:
Cuando se presione el botón izquierdo del mouse y en la posición del mouse se encuentre el objeto se cambie de room.
Código: [Seleccionar]
check=(instance_position(mouse_x, mouse_y,object_index)=id);
if(mouse_check_button_pressed(mb_left) && check){room_goto(RM_TABLERO)}

Tambien puedes decirle:
Cuando se presione el botón izquierdo del mouse y la distancia del mouse al objeto sea mejor que la mitad del ancho de su sprite se cambie de room. (este funciona bien solo si el origen del sprite está en su centro)
Código: [Seleccionar]
sw=sprite_width/2
if(mouse_check_button_pressed(mb_left) && point_distance(x,y,mouse_x,mouse_y)<sw){room_goto(RM_TABLERO)}

7
Hola Hezz
Es bastante enrredado tu código, pero leyendo e interpretando lo que has escrito, me doy cuenta que el error es que estás enviando una información, pero estás leyendo otra diferente.

Antes de intentar dar con una solución, quiero comentarte que no es necesario crear un nuevo buffer cada vez que necesites uno, basta con crear uno y reutilizarlo, o si no quieres reutilizar, lo eliminas cuando ya no es útil. Los buffers son recursos dinámicos tal como los DS LIST, por lo que reservarán una parte de la memoria que tu computador le asigna a Game Maker, si creas muchos corres el riesgo de quedarte sin memoria mientras el juego está funcionando.

Ahora, detecté dos errores críticos, uno es que tu cliente, le manda al server un buffer con 3 datos de tipo "boolean"
Pero el server, lee 4!. Esto es lo que pusiste en el script "scr_received_packet" del server. Primero lees un u8
Código: [Seleccionar]
var pack = buffer_read(buffer, buffer_u8);Y luego lees 3 boolean, pero los booleans los lees dentro de un evento "with" y los asignas como variables locales (las que se borran xD)
Código: [Seleccionar]
var key_left = buffer_read(buffer, buffer_bool);
var key_right = buffer_read(buffer, buffer_bool);
var key_jump = buffer_read(buffer, buffer_bool);

Para solucionarlo, antes que el cliente mande los 3 booleans, hace que escriba un u8 con su socket ID.
Código: [Seleccionar]
buffer_write(package, buffer_u8, global.client_id); //Esto añade mi socket ID
    buffer_write(package, buffer_bool, key_left);
    buffer_write(package, buffer_bool, key_right);
    buffer_write(package, buffer_bool, key_jump);
    network_send_packet(socket_type, package, buffer_tell(package));
    buffer_delete(package) //esto eliminará el buffer que ya ha sido utilizado y no es necesario.
}
Y en el código de lectura del cliente, debes crear las variables como "instance variables" (sin la palabra var adelante) para que se asignen al objeto del with.
Código: [Seleccionar]
key_left = buffer_read(buffer, buffer_bool);
key_right = buffer_read(buffer, buffer_bool);
key_jump = buffer_read(buffer, buffer_bool);
Eso hará que en el lado del server se le asigne las tres variables a la instance que encontró en la DS LIST.

Es complicado de explicar, espero que se haya entendido.
Nos comentas si se soluciona o si el problema persiste.

Saludos

8
Preguntas y respuestas / Re:Movimiento aleatorio de los enemigos
« en: Julio 07, 2018, 08:50:23 pm »
La parte del codigo que activa la alarma en el evento STEP mejor colocala en la ALARMA(en el STEP me parece que esta continuamente reiniciandose), y el mp_potential_step(xr,yr,speed,false); en la alarma es solo se ejecuta una vez no como en STEP que es continuamente y no sirve de nada ahi.
Lo mejor seria hacer una maquina de estados finitos para controlar el comportamiento del enemigo, aqui hay un articulo https://gamedevelopment.tutsplus.com/es/tutorials/finite-state-machines-theory-and-implementation--gamedev-11867,
y asi separar los distintos comportamientos del enemigo.

Páginas: 1