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

106
Cita de: mijailbellum en Enero 17, 2014, 08:11:58 PM
Por ejemplo eso de poner los movimientos en "Step" si que recomiendan no hacerlo, porque dicho evento se ejecuta en cada "paso" del juego y es un gasto innecesario de uso del procesador, yo creo también que deberías hacer caso a lo que te han dicho no te preocupes de eso ahora mismo y ve probando, tú mismo te darás cuenta de lo que es mejor o peor a la hora de programar.

Pues mira...me viene bien tu ejemplo:

He pasado todo el código que tenía en el evento Step (los cuatro movimientos direcciones) y ahora al dividirlo cada uno de ellos en cada evento Keyboard, ya no funciona.

Este es el código que antes me funcionaba en el evento Step:

if place_snapped(32,32) then
    speed = 0;

if place_snapped(32,32) then
    begin
        if keyboard_check(vk_left) then
            begin
                sprite_index = spr_heroe_left
                direction = 180;
                speed = 4;
            end;
    end;
   
if place_snapped(32,32) then
    begin
        if keyboard_check(vk_right) then
            begin
                sprite_index = spr_heroe_right
                direction = 0;
                speed = 4;
            end;
    end;

if place_snapped(32,32) then
    begin
        if keyboard_check(vk_up) then
            begin
                sprite_index = spr_heroe_up
                direction = 90;
                speed = 4;
            end;
    end;
   
if place_snapped(32,32) then
    begin
        if keyboard_check(vk_down) then
            begin
                sprite_index = spr_heroe_down
                direction = 270;
                speed = 4;
            end;
    end;




Al dividir este código entre cuatro (cada dirección del personaje en su evento Keyboard) ya no funciona. Bueno...funciona pero mal. Osea, que el personaje o no se para o bien no se mueve. Cuando estaba en el evento Step se movía al pulsar la tecla y se paraba al alinearse con el grid.

Y ahora en el evento Keyboard left pongo este código (pero no funciona bien):

if place_snapped(32,32) then
    begin
        sprite_index := spr_heroe_left;
        direction := 180;
        speed := 4;
    end;
     


¿Alguna idea...?  :-[
107
Cita de: penumbra
¿A qué código te refieres? Digo, hay mucho código, cada uno hace cosas distintas. Un código de colisiones no tiene mucha lógica meterlo en DRAW, aunque se puede. ¿Como qué código es el que no tienes claro dónde poner?

Gracias por tus consejos. Sobre lo que dices en tu cita, es sobre los eventos. Por ejemplo, en el event step he puesto todos los movimientos de mi personaje. Osea, que se alineé con el grid y los cuatro movimientos básicos. Pero esto mismo lo podría haber puesto en los eventos de teclas. A eso me refiero, que hubiera una guía que clarificara que cosas se pueden poner y no poner en los events de forma genérica.
108
Me han surgido unas dudas...

Me gustaría saber cual es la metodología correcta para programar los eventos y acciones (GML) en GM. Por ejemplo, cuando ponemos el evento de colisión con el enemigo. Se puede poner event colisión en el enemigo contra nosotros. O bien, poner el event colisión en nuestro personaje pero que colisiona contra el enemigo. A la postre, es lo mismo ¿Pero cual es la forma correcta?

Otra duda, es, donde poner el control de vidas, puntos, energía ¿En el objeto personaje? ¿O crear otro objeto controlador? Por que hay gente que pone este control en el personaje. Pero luego tiene un lío de narices cuando cambia de room y tal (Como le paso a un servidor). Por eso, me gustaría saber si hay un patrón donde es mejor ubicar estas cosas.

Por que según lee uno, mucha gente pone el código en un step, otros en un draw o en un create. Y uno no sabe donde poner el suyo.

Saludos!
109
Cita de: elviskelley en Enero 07, 2014, 05:29:40 PM
Este articulo tiene lo que buscas.
http://www.comunidadgm.org/articulos/pathfinding-(programaci243n)/
yo aprendi de ello y claro lo modifique luego para adactarlo a mi juego, pero igual
es una buena base para aprender.

Muchas gracias Elvis. Le echaré un vistazo. Saludos!
110
Estudiando el GML, se puede caer en el error de crear código que ya existe como función. Normalmente, dependiendo del vídeo juego que vayamos a crear se necesitaran unas u otras. La cosa está, que sí, me leo las funciones pero no me imagino como se pueden implantar en un juego. La mayoría de ellas vienen con una descripción de una línea y se me hace complicado.

Me gustaría saber, cuales son las que mas se utilizan. Supongo, que muchos de vosotros, algunas de ellas ni las habréis utilizado.

Ya sé, que cuando se hace una pregunta de estas en el foro se suele responder: 'Todo esta en el manual'. Y es cierto. Pero no vendría mal, tener un apartado en el foro sobre funciones. Para mí, importantisimas. Y con algunos ejemplos prácticos en la utilización de un vídeo juego.

Esta claro, que hay muchas que son muy fáciles o evidentes. Pero otras, cuesta ver la aplicación práctica si no es con ejemplos.

Cada uno podría poner una función y explicarla de la mejor manera posible con un ejemplo con código. Como titulo al post, se podría poner el nombre de esa función y entre corchetes su clasificación (Teclado, movimiento, rooms, etc...).

Dentro de la sección de Funciones.Se podría crear 5 o 6 subforos para dividir dichas funciones.

No sé, yo creo que es buena idea.

111
A ver...

El código de persecución del enemigo al personaje lo tengo en un event step.
Y el código de que el enemigo choca con el muro con un event collision.

Pues bien, comienza el nivel y los enemigos persiguen al personaje. Pero cuando estos, chocan con la pared, ya dejan de perseguirlo. El problema es que no se como configurar el event alarm. Osea, ¿El código que esta en el event step debería ponerlo en el event alarm?

También me gustaría poder aplicar la primera función que puse. Es decir, no me gusta que el enemigo nos siga copiando nuestras coordenadas. Bueno, me refiero utilizando tantos if.
112
Muchas gracias knd144 y a Daz. A veces se ven ejemplos con for pero con operaciones que poco o nada tienen que ver con GM. Esta claro, que la aplicación es la misma. Pero viendo este bucle operando con un ejemplo en GM se pilla antes su uso. Se relaciona mas con su aplicación en un juego.

Por cierto knd144, muy bueno tu blog y el comic Sky Doll. Saludos!
113
Gracias por la ayuda. Lo he estado probando y se le acerca lo que busco. Aunque luego he añadido que al colisionar con los muros, el enemigo, escoja otra dirección con la función choose(dir,speed). Aunque al hacer esto, deja de perseguir al enemigo.

En todo caso, me gustaría saber utilizar la primera función que he puesto al principio del tema. Para ahorrar código y eso.

Ah, Maze significa laberinto... ;)
114
Cita de: ivn_eze en Enero 04, 2014, 07:20:41 PM
que tal si pones en el evento step la accion aling to the grid en 32x32?

Pues no me funciona. Ya comento que el personaje principal ya me va bien. El problema es el enemigo que nos persigue. He puesto este code en el step del perseguidor: if place_snapped(32,32) then
    action_potential_step(obj_heroe.x,obj_heroe.y,1,0);


pero se queda inmóvil.

Y el move_snap(32,32); tampoco me funciona para el enemigo.
115
Estoy haciendo un maze. Utilizo los eventos predefinidos y las acciones con códigos GML. Pues bien, gracias al usuario Black_Cat ya conseguí que el personaje se moviera por la cuadricula. Pero ahora, he creado a un enemigo que le pongo como acción que nos siga. Para eso utilizo en el event step:

action_potential_step(obj_heroe.x,obj_heroe.y,1,0);

Y bueno...nos sigue de una forma un poco errática. Osea, evitando los muros y tal. Pero no lo hace de 32x32. Si no, de forma mas "libre".

Cuando nosotros nos metemos entre los pasillos (ya que el maze hay espacios sin muros) al enemigo le cuesta entrar. Supongo, por no estar alineado en el grid como nosotros.

He ido probando cosas con el if y el place_snapped(32,32) pero no consigo frutos. Intentaba meter un código parecido de nuestro personaje principal al enemigo. Pero veo que no cuela... :'(
116
Me gustaría ver como se aplica (o en que es bueno aplicarlo) un ciclo for en GM. Osea, para que se suelen utilizar en un vídeojuego. Gracias!
117
Yo, en vez de corchetes, suelo encerrar mas de una sentencia en:

begin
...
...
...
end;

Suelo utilizar el Pascal  :-[
118
Estoy estudiando el event draw. Y por lo que veo, hay cosas que solo funcionan si van dentro de el.
Osea, si en un objeto en su event step o collision hacemos: draw_text no funcionara.

Para que lo haga, hemos de meter esa condición o código en un event draw de ese objeto.

Entonces como se haría (en GML) para que al colisionar un objeto A y uno B, mostrara un mensaje en pantalla (con draw_text).

Yo había pensado poner este código en un event draw del objeto A (No os riais...!!!  :-[):

if (obj_A) ev_collision with (obj_B) then
    draw_text ('lo que sea...');


Que en mi surrealista lógica sería:

Si el objeto A colisiona con el objeto B entonces escribe en pantalla 'lo que sea...'

Pero el editor de Game Maker ni se lo cree...


Es que todavía no le cojo el truco a lo que se puede y no se puede con este lenguaje. Yo tiendo a scriptear con Pascal. Pero bueno, es lo menos. El problema, creo, que no me permite ejecutar ese código.
119
Pues empiezo a tener mis dudas. Por que declaro variables locales en el personaje, y luego, si creo un objeto controlador (donde van vidas, scores, energia, draws, etc...) no me reconoce ni una.

O como otra opción, colocar los controles de vida de personaje (puntuaciones y demas) en él.

No entiendo que mucha gente crea un nuevo objeto controlador para llevar marcadores ¿No es mejor crearlo todo dentro de nuestro objeto personaje jugador? Así, las variables si pueden ser locales.

Si se empieza a crear objetos para cada cosa del juego, entonces, deberemos por norma crear todas las variables globales ¿No es así?.
120
Estoy con el GML y entre estos dos eventos me surgen dudas. Me gustaría saber que acciones son las correctas que deben ir a esos eventos.

Con el Create lo normal es definir variables. Y en Step los movimientos del personaje y acciones que se repiten durante la ejecución del juego. Por lo tanto, en Create pocas acciones pueden ir no ¿No?

Ademas, si es un enemigo en Create van los movimientos. Pero si es el personaje principal, los movimientos van en Step.

Dependiendo el objeto me surgen dudas en que evento colocar el código o acciones ¿Hay alguna regla fija?

También hay usuarios que meten todo en Step. Osea, colisiones, movimientos, IA, etc...¿Es aconsejable?

Saludos!