Noticias

¡Ayuda a la Comunidad GM, haz una donación!

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

Páginas: 1 2 3 ... 17
1
General / Re:Game Maker Fronteras
« en: Junio 21, 2020, 12:19:52 am »
Las publicaciones de dixon siempre son muy divertidas.

Crear un lenguaje de programación único y fusión automática de juegos es imposible.
Pero sí hay cosas en las que han trabajado algunas personas, como entornos de programación fáciles de usar y que funcionen en diferentes dispositivos (normalmente están muy limitados) y generación automática de contenido (texturas, personajes, música, niveles). Pero nada funciona mejor que la experiencia y el trabajo duro.

Los videojuegos perderían importancia si existiera algo para crearlos de manera automática.
Los siguientes usuarios dieron las gracias a este tema: dixon

2
Preguntas y respuestas / Re:destruir instancias (solucionado)
« en: Junio 01, 2020, 05:39:40 am »
Que bueno que te ha servido.

other se utiliza dentro de un ciclo with para indicar la instancia que inició el ciclo.
// el objA tiene este código
foo = 0; // variable en instancia de objA

with (objB) // recorrer todas las instancias de objB
{
    foo = 123; // asignar variable a instancia de objB
    other.foo = 123; //asignar variable a instancia de objA
}

other también se utiliza en el evento colisión para obtener el id de la instancia con la que ocurrió la colisión.
Los siguientes usuarios dieron las gracias a este tema: Ikaro3d

3
Preguntas y respuestas / Re:destruir instancias (solucionado)
« en: Mayo 31, 2020, 05:09:10 pm »
El problema es que al usar with el código se ejecuta en todas las instancias.
Guarda el id de las rocas para leer sus variables directamente
// guardar ids
r1 = instance_create_layer(x + 0, y + 0, "Instances", roca1);
r2 = instance_create_layer(x + 0, y + 1150, "Instances", roca2);

hspeed = -1;
audio_play_sound(sonido_laser, 0, 0);
image_xscale =random_range(1,1.3)

// step
if(r1.image_index == 0 and r2.image_index == 0) {
    instance_destroy();
}
Los siguientes usuarios dieron las gracias a este tema: Ikaro3d

4
Preguntas y respuestas / Re:Varias A.I eligiendo diferentes objetivos
« en: Mayo 31, 2020, 03:05:51 pm »
Pon una variable en el objeto mesa que indique si está ocupada
ocupada = false;

El objeto cliente puede buscar una mesa vacía así
mesaObjetivo = noone; // al principio no hay objetivo

with (objMesa) {// revisar todas las mesas
    if (ocupada == false) {// si una mesa no está ocupada
        other.mesaObjetivo = id; // se convierte en objetivo
        ocupada = true; // ahora está ocupada
        break; // terminar de revisar las mesas
    }
}
Los siguientes usuarios dieron las gracias a este tema: cristopher2545

5
Preguntas y respuestas / Re:Enemigos que apunten
« en: Mayo 29, 2020, 04:33:27 am »
¿Cómo intentaste hacer la función de apuntar?

Usa la función point_direction para conocer el ángulo entre el objeto enemigo y el jugador
angulo = point_direction(x, y, obj_player.x, obj_player.y);
Ese ángulo lo puedes usar para la dirección de movimiento de las balas y para inclinar el sprite del arma.
Los siguientes usuarios dieron las gracias a este tema: Gmes

6
Preguntas y respuestas / Re:Como centrar funciones de dibujo
« en: Mayo 25, 2020, 05:59:10 am »
Usa un script que dibuje un rectángulo centrado. Algo como esto
var xc = argument0;
var yc = argument1;
var w2 = argument2 / 2; //anchura
var wh = argument3 / 2; //altura
draw_rectangle(xc - w2, yc - h2, xc + w2, yc + w2);
Los siguientes usuarios dieron las gracias a este tema: Marth

7
En GMS2 el formato es diferente
https://docs2.yoyogames.com/source/_build/1_overview/3_additional_information/jsdoc.html
Los siguientes usuarios dieron las gracias a este tema: dixon

8
Preguntas y respuestas / Re:Hacer que la view se mueva lentamente
« en: Mayo 23, 2020, 06:23:47 pm »
Para la view debes usar variables que indiquen la posición final y luego desplazar la view poco a poco desde la posición actual hasta la posición final.
Para ello puedes usar la función lerp
https://www.comunidadgm.org/desarrollo-de-scripts/interpolacion-lineal-en-gm8/
view_xview[0] = lerp(x_inicial, x_final, t);
view_yview[0] = lerp(y_inicial, y_final, t);
t += 0.05;
if (t > 1) t = 1;
la variable t va de 0 a 1, incrementando un poco en cada step.

Para hacer el cambio entre rooms lo más fácil es utilizar las transiciones predefinidas. Las transisiciones solo funcionan en GM8, se eliminaron en GMS.
Al cambiar de room, debes guardar en varibles globales la posición en la que debe aparecer el personaje en la siguiente room
if (room == rm0) {//primera room
    if (x > room_width) {//si se sale de la room por la derecha
        transition_kind = 15; //Push from right
        transition_steps = room_speed * 0.5; //duración de la transición
        global.xx = 0; //posición en la que va a aparecer
        global.yy = y;
        room_goto(rm1); //cambiar de room
    }
}
Adjunto un ejemplo.
Los siguientes usuarios dieron las gracias a este tema: OmarMakero

9
Supongo que el archivo está en una carpeta en la que el juego no tiene acceso.
https://docs.yoyogames.com/source/dadiospice/002_reference/file%20handling/file%20system%20limits.html

En Windows puedes navegar a casi cualquier carpeta, pero en otras plataformas el acceso a archivos es más limitado.
Lo mejor sería que agregues el archivo al proyecto (Included file)
https://docs.yoyogames.com/source/dadiospice/001_advanced%20use/002_including%20files.html
Los siguientes usuarios dieron las gracias a este tema: dixon

10
General / Re:Sueños y esperanzas sobre video juegos.
« en: Mayo 13, 2020, 08:30:39 pm »
Interesante la idea.
¿Cuál es el objetivo del salón? ¿Qué beneficios se obtienen?
Tal vez es más fácil cumplir el sueño buscando el apoyo de inversionistas.

El reconocimiento de movimientos corporales se puede hacer con Kinect o con OpenCV. He probado los dos, pero nunca he intentado usarlos como método de entrada para juegos de GameMaker.
Los siguientes usuarios dieron las gracias a este tema: dixon

11
Primero calcula la dirección (o angulo) del personaje al mouse. Luego dibuja los brazos rotados.
draw_sprite_ext(spr_cuerpo, 0, x, y, 1, 1, 0, c_white, 1);

angulo = point_direction(x, y, mouse_x, mouse_y);
draw_sprite_ext(spr_brazo, 0, x-10, y-10, 1, 1, angulo, c_white, 1);
draw_sprite_ext(spr_brazo, 0, x+10, y-10, 1, 1, angulo, c_white, 1);
Los siguientes usuarios dieron las gracias a este tema: Johanterpro

12
Preguntas y respuestas / Re:Imagen de fondo
« en: Mayo 05, 2020, 04:31:26 am »
Posiblemente la imagen es muy grande y no cabe en la página de textura. GameMaker la comprime automáticamente. Las soluciones son:
1. Usar una imagen más pequeña
2. Incrementar el tamaño de la página de textura
3. Dividir la imagen en varias partes.

Al compilar para Android se reduce el número de colores. Creo que se puede desactivar, pero no recuerdo.
Los siguientes usuarios dieron las gracias a este tema: Ikaro3d

13
Usa la función draw_text_ext
El último argumento indica la anchura del párrafo. Cuando el texto sobrepasa esa anchura la función agrega un salto de línea.
Los siguientes usuarios dieron las gracias a este tema: OmarMakero

14
Hola. El problema es que la pantalla no tiene la misma relación aspecto que la room. ¿Qué resolución tiene la pantalla? La forma más fácil de solucionarlo es entrar a Global Game Settings y seleccionar keep aspec ratio, pero van a aparecer barras negras a los lados de la pantalla.

Se puede hacer un ajuste de pantalla más elaborado. El método a usar depende del juego.
Los siguientes usuarios dieron las gracias a este tema: dixon

15
Preguntas y respuestas / Re:Error Iluminacion jugador
« en: Abril 04, 2020, 03:54:33 pm »
Las surfaces se borran por varios motivos. Al parecer el cambio de tamaño de la ventana es lo que causa que se borre.
Puedes hacer esto para solucionarlo. Antes de manipular la surface, comprueba que existe, si no existe crea una nueva.
if not surface_exists(surf)
surf = surface_create(584, 184);

//negro
surface_set_target(surf)
draw_set_color(c_black) // . . .
Los siguientes usuarios dieron las gracias a este tema: PrismaBIT

Páginas: 1 2 3 ... 17