Noticias

Importante: ¡Si quieres publicar tu juego no olvides leer este tema!

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

Páginas: 1 2 3
1
Juegos en desarrollo / Re:DZOR, un proyecto de aventura gráfica
« en: Junio 13, 2019, 06:33:43 pm »
hola, cuando empeze a jugar intente interactuar con la mesa y me dio pequeño error espero que este mensaje pueda ayudar a corregirlo  :-[

hola, gracias por tu feedback. Lo voy a revisar; inexplicablemente a veces da errores que no puedo replicar, si vuelves a intentarlo quizás funcione. Estoy en ello.

2
Juegos en desarrollo / Re:DZOR, un proyecto de aventura gráfica
« en: Mayo 15, 2019, 05:09:25 pm »
Gracias @TuPadre, tienes razón. He subido una versión no instalable (link en el post original)

Saludos!

3
Juegos en desarrollo / Re:DZOR, un proyecto de aventura gráfica
« en: Febrero 18, 2019, 10:39:46 pm »
Resubida la versión actual del proyecto!

4
Juegos en desarrollo / Re:DZOR, un proyecto de aventura gráfica
« en: Febrero 15, 2019, 09:30:33 pm »
Hola Marth!

antes que nada pido disculpas por no haber contestado durante tanto tiempo, pero estos fueron meses en los que estuve alejado del tema por completo (este proyecto es mi primer acercamiento al mundo de la programación y es "solamente" un hobby ;-))

Muchas gracias por haberlo probado y por tus valiosos comentarios, que tendré en cuenta para futuras mejoras.

Ya logre todos los objetivos (con la obvia excepción del suicidio) y lo que veo es un buen diamante en bruto.
Gráficos que cumplen, siendo interesante efectos como los relampagos y el scroll de los fondos en los que a más alejado no se mueve tanto como lo más cercano. Diria que eso no se puede lograr en GM y hay que hacerlo manualmente. :love:

Los relámpagos los hice manualmente, con una capa de color negro al 50%, que desactivo intermitentemente mientras está sonando el trueno (sé que hay una forma mejor de trabajar con capas y transparencias directamente en el código pero por ahora es demasiado complicado para mí).

El "Efecto Paralax" (así se llama la diferencia de velocidades de los fondos) se logra muy fácilmente con dos (o más) fondos y configurando la velocidad de éstos al moverse el personaje. En mi caso, al definir la velocidad y el sprite del personaje al caminar agregué estas líneas de código:

   if (room == room_3_street) {
   background_hspeed[2] = 0.5;
   background_hspeed[3] = 1;
   }

(para el movimiento hacia la izquierda; para el movimiento hacia la derecha es lo mismo pero los valores son negativos, claro)

listo!

Muchas gracias de nuevo y hasta la próxima.

Saludos!

5
Preguntas y respuestas / Re:Profundidad de generador de iluminación
« en: Octubre 13, 2018, 07:11:37 pm »
Por si a alguien le interesa, he dado con el error: estaba seteando la profundidad de mi "obj_lamapara", cuando en realidad debía setear la profundidad del "obj_iluminacion" (aquel primer objeto sin sprite que oscurece la pantalla, como puse en el código de más arriba... lo cual es lógico, ya que este objeto dibuja la sombra en el evento DRAW). Ahora tengo el problema de que el tren aparece sin oscurecer, pero eso puedo solucionarlo fácilmente haciendo el sprite más oscuro y listo. (supongo que una solución más elegante y menos fácil sería usar DRAW para dibujarle al tren una sombra igual de pronunciada de la que lleva la habitación)

Saludos!

6
Preguntas y respuestas / Re:Profundidad de generador de iluminación
« en: Octubre 13, 2018, 06:22:49 pm »
Aquí dejo el código que uso, en principio supongo que debo manipular la profundidad en el evento SURFACE_CREATE, pero no encuentro cómo hacerlo (y quizás sea de una forma diferente, no lo sé)

Primero, creo un objeto "obj_iluminacion" sin sprite que pongo en la room para oscurecer la habitación:

CREATE

globalvar light;
light = surface_create(view_wview,view_hview);

STEP

surface_set_target(light);
draw_set_color(c_ltgray);
draw_rectangle (0,0,view_wview,view_hview,false);
surface_reset_target();

DRAW

draw_set_blend_mode(bm_subtract);
draw_surface(light,view_xview,view_yview);
draw_set_blend_mode(bm_normal);

Y luego, creo un objeto "obj_lamapra", que será la fuente de iluminación

STEP

size=192;
draw_set_blend_mode(bm_subtract);
surface_set_target(light);
draw_ellipse_color(x-size/2-view_xview,y-size/2-view_yview,x+size/2-view_xview,y+size/2-view_yview,c_orange,c_black,false);
surface_reset_target();
draw_set_blend_mode(bm_normal);

7
Hola!

Quiero hacer unas lámparas que iluminen una room, pero necesito que uno de los objetos tenga una profundidad menor a la iluminación. En concreto es una estación de metro, en donde se debería ver al tren por delante de la iluminación, pero no logro realizar esto. La iluminación funciona, pero sobre todos los objetos de la room, sin importar el valor de profundidad que le asigne a cada objeto ("depth"). Creo que en la imagen adjunta puede apreciarse bien lo que quiero decir.

Alguien sabe como solucionar este problema?

Muchas gracias!

8
Muchas gracias, BssString, lo voy a estudiar!

9
Hola,

estoy elaborando un sistema de diálogos que en principio funciona correctamente: el objeto "dialogable" se activa al pasar el jugador delante de él y oprimir [SPACE], y luego el jugador puede paginar hasta llegar al final. El código es simple:

CREATE EVENT

Código: [Seleccionar]
/// Sistema de dialogo
texto[0] = "";
mostrar = false;
pagina = -1;

STEP EVENT

Código: [Seleccionar]
/// activa/desactiva según distancia
if (keyboard_check_pressed(vk_space) and distance_to_object(obj_player)<10) {
    mostrar = true;
    }

if (distance_to_object(obj_player)>10) {
    mostrar = false;
    pagina = -1;
    }

/// Sistema de dialogo, cambio de pagina

if (keyboard_check_pressed(vk_space) and mostrar) {

    if (pagina = -1) {
    global.stop = true; //desactiva modo jugador
    }
       
    if (pagina+1 < array_length_1d(texto)) pagina++;
   
// Termina el diálogo - reinicia variables

    else {
    mostrar = false;
    pagina = -1;
    global.stop = false; //reactiva modo jugador
    }
}

DRAW EVENT

Código: [Seleccionar]
/// Parámetros del texto
if (mostrar) {
...
draw_text(x,y,texto[pagina]);
}

CREATION CODE EVENT

Código: [Seleccionar]
texto[0] = "Linea 1";
texto[1] = "Linea 2";
texto[2] = "Linea 3";
texto[3] = "Linea 4";

Ahora bien, quiero tener la opción de apretar una tecla u otra en un momento determinado y que el dialogo cambie. Es decir, por ejemplo en la línea 2 que ponga por ejemplo "Oprime [SPACE] para L3A o [ENTER] para L3B" y que según se oprima una u otra tecla, cambie el valor de la siguiente línea de texto.

Intenté algo como lo que sigue:

En el STEP del sistema de dialogos:

Código: [Seleccionar]
if (keyboard_check_pressed(vk_space) and mostrar) {

    if (pagina = 2) {
        if (keyboard_check_pressed(vk_enter)) {
        condicion = true;
        keyboard_key_press (vk_space)
        }
        }
       
    if (pagina+1 < array_length_1d(texto)) pagina++;
   
...
}

y en el bloque de diálogos:

Código: [Seleccionar]
texto[0] = "Linea 1";
texto[1] = "Linea 2";
texto[2] = "Oprime [A] para L3A o [B] para L3B";

if (condicion) {
texto[3] = "L3A";
} else {
texto[3] = "L3B";
}

pero no funciona. No me da ningún error, simplemente nada sucede al oprimir [ENTER] en el momento indicado.

Hay alguna forma de hacer esto?

Gracias!

10
Hola jpsaenz

Eso te pasa porque estás asignando el tiempo a la alarma en cada step.
Como cumple la condición, seteas la alarma a 3 segundos. En el próximo step sigues cumpliendo la condición y vuelves a setear la alarma a 3 segundos, entonces jamás llegará a cero....

Ahora entiendo mejor el funcionamiento de las alarmas, muchas gracias por la explicación, ya arreglé el código y funciona perfecto!

Saludos y gracias de nuevo (me salvas la vida por segunda vez en menos de 24hs ;-))

11
Preguntas y respuestas / alarm[x] no funciona dentro de una condición IF
« en: Octubre 10, 2018, 06:40:28 pm »
Hola!

tengo otro problema de la serie "cosas que deberían ser una soberana estupidez y que sin embargo no me funcionan"... (soy un feroz proncipiante, gracias por la paciencia)

Quiero simular una conversación muy básica de whatsapp, cuya mecánica consiste en que el jugador oprima la barra espaciadora y "envíe" una sentencia establecida y luego deba esperar unos segundos para recibir una respuesta. Esto se repite tres veces.

Para ello tengo un obj_whatsapp (con el sprite de un celular corriendo el programa de mensajería) con siete subimagenes, cada una de las cuales representa una línea del diálogo simulado.

En la variable "wpchat" guardo el numeral correspondiente a la acción de oprimir la barra espaciadora y con ello intento controlar el cambio de las subimágenes:

[EVENTO CREATE]

wpchat = 0;

[EVENTO STEP]

/// Conversación de Whatsapp

if (keyboard_check_pressed(vk_space)){
wpchat++
}

//#1
if (wpchat = 1) {
image_index=1;
alarm[0] = room_speed*3;
}

//#3
if (wpchat = 2) {
image_index=3;
alarm[1] = room_speed*3;
}


//#5
if (wpchat = 3) {
image_index=5;
alarm[2] = room_speed*3;
}

[ EVENTO ALARM[n] ]

image_index = n;

Los cambios de sprite directos funcionan, pero las alarmas no (también puse "obj_whatsapp.image_index = x": tampoco funciona)

En qué me estoy equivocando?

Gracias!

12
Preguntas y respuestas / Re:Problema con instance_destroy()
« en: Octubre 10, 2018, 01:56:28 am »
Hola jpsaenz

Es totalmente innecesario crear un objeto sólo para dibujar un signo de exclamación, un objeto ocupa más memoria porque trae consigo parámetros como ser sólido, persistente, hace draw event y se le asigna variables por defecto como "x", "speed", "image_angle", etc. Lo ideal es usar "draw_sprite" y ya.

En ese caso, usa una condición:
Código: [Seleccionar]
if sprite_index != -1 draw_self()
If distance_to_object(obj_player) < 3 {
draw_sprite(sprite_exclamacion,x,y-20)
}

Ese código primero verifica si tu objeto tiene un sprite asociado, si lo tiene, se dibuja a si mismo.
Eso evita el error de "Trying to draw non-existing sprite" y te evitas estar creando-destruyendo un objeto cada vez que lo necesites.

Saludos

Entiendo que esa sea la mejor manera de gestionar los recursos.

No entiendo por qué el chequear si el objeto tiene un spriete (cualquiera!) asociado a sí mismo y en tal caso, dibujarse, elimina el error que se procuce cuando al dibujarse sin chequear esa condición se intenta dibujar el sprite no asociado con ese objeto (tampoco asociado a él en el caso de no producirse el chequeo mencionado), pero quizás seguro tiene una lógica que se me escapa.

Como sea, así funciona: ¡gracias!

13
Preguntas y respuestas / Re:Problema con instance_destroy()
« en: Octubre 10, 2018, 01:24:02 am »
En efecto, el objeto que está corriendo el código (no es "obj_john") no tiene el sprite de "[!]" asignado (está en otro objeto, en principio no activo en la room, por eso mi primera idea fue crear una instancia con dicho objeto al acercarse el jugador)

Cuando quito el "draw_self" como propones, en efecto funciona y el sprite aparece en el lugar correspondiente, pero desaparece el objeto original que corre el código (en realidad nunca aparece al cargar la room, entiendo que porque el objeto jugador se encuentra a más de 3px de distancia al iniciar)

No existe un comando "draw" para dibujar otro objeto? Algo así como "draw_object(obj_star,x,y)" ...?

14
Preguntas y respuestas / Re:Problema con instance_destroy()
« en: Octubre 10, 2018, 01:19:41 am »
Hola jpsaenz

Falló el draw por la función "draw_self()" que dibuja el sprite del objeto que está corriendo el código.
Eso pasó porque tu objeto "obj_john" no tiene ningún sprite asignado en la configuración del objeto.
Simplemente borra el draw_self() y corriges el problema.

Saludos

En efecto, el objeto que está corriendo el código (no es "obj_john") no tiene el sprite de "[!]" asignado (está en otro objeto, en principio no activo en la room, por eso mi primera idea fue crear una instancia con dicho objeto al acercarse el jugador)

Cuando quito el "draw_self" como propones, en efecto funciona y el sprite aparece en el lugar correspondiente, pero desaparece el objeto original que corre el código (en realidad nunca aparece al cargar la room, entiendo que porque el objeto jugador se encuentra a más de 3px de distancia al iniciar)

15
Preguntas y respuestas / Re:Problema con instance_destroy()
« en: Octubre 10, 2018, 01:12:33 am »
Tal vez el error que te da en la línea:

Código: [Seleccionar]
  with (subtexpr) {
Sea por que en ese momento la variable subtexpr no tiene ningún valor. Revisa si tiene algún valor, o dale un valor por defecto tipo:

Código: [Seleccionar]
var subtexpr;
subtexpr = false;

...

Hola, gracias por contestar.

En CREATE le di un valor por defecto

Código: [Seleccionar]
subtexpr="";
también probé con un boleano, pero sin éxito. O no reconoce la variable o me pone "Inavalid comparision" cuando hago el ...&& != "" para destruír la instancia...

Cualquier idea es bienvenida!

Páginas: 1 2 3