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.

Temas - Jangse

1
Bueno, el titulo me ha quedao un poco largo...pero bueno  :-[

Cuando plantee hacer todo el mapa en una room,  era,  por que de esa forma,  los enemigos u obstaculos seguian la animacion cuando abandonabamos dicha zona.

Si hacemos el mapa divido en rooms (por ejemplo 40 pantallas) y visitamos la room del enemigo, este, tiene una secuencia. Es decir, va caminando. Si salimos rapido de esa room y volvemos a entrar ¿Es posible que dicho enemigo siga caminando respetando la trayectoria? Vamos, que de la sensacion de realidad. Me refiero que si volvemos a entrar a esa room el enemigo ya este en otro punto. No que congele su movimiento de caminar si salimos de esa room.

Lo curioso que viendo juegos antiguos (8 bits), a veces el enemigo nos perseguia entre pantallas (rooms). Me explico:

Estabamos en nuestro room y no pasaba nada. Pero al pasar a la otra habitacion el enemigo nos veia y nos perseguia entre las rooms (Y no me refiero con mapeado en scroll) .

¿Se puede programar que los enemigos nos persigan entre las rooms si salimos de donde estan ellos?
2
He buscado por el foro si es posible importar un mapa con un programa externo. Algunas consultas eran del GM 8 y por lo que respondia gente que dominaba el tema lo veian complicado. Pensaba si con la nueva version la GMS esto se habia solucionado o era mas facil. Ya, que es comun, hacer los mapas con otros programas para luego pulirlos con el motor que trabajemos. Queria separar este tema de otro que ya hice parecido. Ya que son dos consultas, creo, distintas.

Se supone que si importamos un mapa a GMS, luego hemos de crear instancias de objetos invisibles (que no se ven en el mapa) para crear las colisiones donde se necesiten (muros, plataformas, suelo, piedras, etc...).

Un editor de mapas que ya comente es el Mappy Win32: http://www.tilemap.co.uk/mappy.php Que tiene una version free. Y si miramos por la pagina hay un apartado que pone GameMaker y un editable de ejemplo. Aunque con extension gm6.
En ese editable esta el objeto myplane que tiene el script de la carga del mapa.

En todo caso, pensaba si con el GMS esto se habia automatizado un poco. Osea, el importar mapas de nivel.

Tambien hay un blog donde los Mojon Twins explican el uso de Mappy para sus juegos retro: http://www.elmundodelspectrum.com/contenido.php?id=833&d=Taller-Crea-tu-propio-juego-de-Spectrum-%28capitulo-3%29

EDITO:

Otra idea que se me ocurre es la siguiente:

Usamo el Tiled Map Editor. Y creamos el mapa a base de tiles. En el menu de archivo del programa escogemos exportar como imagen. Y podemos guardar el mapa como extension *.png. Luego, en GMS, creamos un sprite con el mapa y un objeto con ese sprite. Osea, spr_mapa y obj_mapa. Luego solo hemos de ir a rooms y colocar dicho obj_mapa en dicha room ¿Es buena idea?

Luego solo deberiamos crear un objeto colision (que fuera invisible) e ir colocandolo por el mapa. 

El Tiled Map lleva mas opciones de exportacion y guardado. Sobre todo la *.tmx pero no se como importarla luego al GMS.



3
Hola!

Hace tiempo hice una pregunta similar. Y a dia de hoy, aun no lo he solucionado. Mirando los mapas que se hacian de 8 bits (en el ejemplo Cauldron 2 de ZX Spectrum):

http://maps.speccy.cz/map.php?id=Cauldron2&sort=4&part=1&ath=

Dejo tambien la web donde salen todos los mapas. Una delicia para las capacidades de esos ordenadores:

http://maps.speccy.cz/index.php?sort=4&part=0&ath=#list

El mapa estaba dividido en habitaciones o roms (como en gamemaker). Pero cuando el personaje llegaba al final de esa habitacion, y por ejemplo, daba un salto, aparecia en la siguiente habitacion terminando ese salto. Dichas habitaciones debian estar bien planificadas. Ya que no era logico que llegara al final de esa habitacion y en la siguiente hubiera un muro. Si al final de esa habitacion saltaba desde una plataforma, en la siguiente debia haber otra plataforma para acabar el salto.

Si ibamos por una habitacion y habia un agujero, debiamos caer a la habitacion de abajo respetando la animacion y la secuencia del juego.

Os pongo un video de dicho juego pa tenerlo mas claro. Es la version de Commodore 64.

https://www.youtube.com/watch?v=hCbuNyU1Rrw

Lo que no veo claro, es poner nuestro personaje en cada room desde dicho editor. Me gustaria que el personaje se creara en el primer nivel del juego y que desde alli, por medio de coordenadas o lo que fuera, siguiera la logica de las habitaciones.

Es un tipo de juego que no tiene scroll. Se basa en el cambio de rooms, niveles o habitaciones a medida que avanzamos. Pero manteniendo la secuencia y logica de la animacion.
4
General / Curso GMS (GML) en Youtube
Agosto 01, 2015, 10:48:10 AM
Buenas...

Por si a alguien le he interesa, dejo un enlace de un nuevo curso de programacion con GMS. Donde, segun su creador, tocara los temas de scripting. En su canal segui el curso que tiene sobre Python. Y la verdad, que lo explicaba todo bastante bien.

Aprovecho para darle las gracias, tambien desde aqui, por su iniciativa.

https://www.youtube.com/playlist?list=PLiplYDjUMttha-xBO7Fawx_6yAivhK7_D
5
 Pues eso...

Me gustaria saber,  si en el Gamemaker 8, se puede definir una paleta de colores propia en el editor de sprites. Es decir, que al abrir el editor, cargue la paleta de colores creada por nosotros. Ha decir verdad, en otros programas mas potentes de graficos tampoco la he configurado nunca. Pero se que tiene la opcion de carga de paletas. Me limito a escoger los colores de los que nos muestra el programa. Pero me gustaria tener unos rangos de paleta de 8, 16 y 256 colores como mucho. Para hacer juegos de un tipo retro y tal. Dudo que el Gamemaker disponga la opcion de carga de paletas ¿No?
6
General / ¿PSP 3000 ó PSP Vita para emulación?
Mayo 09, 2015, 01:53:50 PM
Hola de nuevo...

La verdad, que ando un poco perdido en este tema:

Emular videojuegos retro de 8 y 16 bits, se puede hacer con cualquier PC. Pero no sé, si se puede realizar con una PSP. Osea, de fabrica. Comprarla, meterle el emulador de la consola en cuestión y luego la rom. Es decir, sin piratear la consola ni nada.

Y la otra duda:

Que consola es mejor para emular...¿PSP 3000 ó PSP Vita?

Lo suyo es poder emular los juegos de Spectrum, MSX, Amstrad, NES, SNES, Megadrive, etc...

Saludos!
7
Pues eso...

Quiero dar el salto a crear un plataformas. Pero nada, para ir cogiendo la mecánica al asunto. El primer ensayo que hice con GM8 fue un laberinto. Para probar colisiones, puntuación, rooms, objetos y tal.

Ahora me gustaría crear un pequeño juego de dos o tres rooms. Pero de plataformas. Para aprender hacer mi primer juego, miré tutos de youtube, preguntas a este foro y algo del manual. Me fue mas o menos bien por que era todo bastante compatible (GM6, GM7, GM8). Pero ya sabemos que el GMS ha sufrido cambios algo mas profundos.

Bueno, explico mas o menos lo que me gustaría hacer:

- Subir y bajar escaleras.
- Gravedad de nuestro personaje
- Creación de plataformas móviles (Y que nuestro personaje se pueda desplazar sobre ellas)
- Cámara fija siguiendo al personaje. Osea, el siempre estaría en el centro de la room y sería el escenario lo que se desplazaría.
- Creación de un ascensor
- Algún enemigo con IA básica que nos persiga
- etc...

Bueno, mas o menos cosas así. Y utilizaría GML. La cosa es, si puedo seguir algún tuto del GM7 o del GM8 (y aplicarlo al GMS). Por que del GMS no he encontrado gran cosas sobre estos temas. Sobre todo en el Youtube.

Sería algo parecido a un tipo de juego así (Es un juego online de la época de los 8 bits del Spectrum) http://torinak.com/qaop#!saboteur2
8
Hace unos días me baje la versión que regalo Yo Yo Games. Osea, el GMS Studio Standard. Y como ellos la regalaban tengo la duda si hemos de pagar algo a la compañía si publicamos el juego. Porque con esto de las licencias me pierdo. De todas formas suelo crear alguna cosa como hobby. Pero era para saberlo y tal...
9
Hola de nuevo!

Todos sabemos que GM tiene funciones hasta aburrir. Y claro, leérmelas todas de golpe sin ver su utilidad practica no me convence. El juego de GM 8 (que no he acabado), a medida que lo hacia, iba buscando -o preguntando- las funciones que me hacían falta. No se si es el mejor método para hacerlo también con GMS.

Aparte, como todavía no conozco las funciones de GMS, debería ir probando a medida que creo mi juego funciones de GM 8. Y ver de esa forma si son compatibles.

Por lo que veo la función sleep ya no existe. Y supongo que pasará con muchas mas.

Supongo que la mayoría de los usuarios deberán avanzar con preguntas en el foro. O mirando la traducción del manual oficial que esta llevando a cabo la comunidad.

Tengo en mente crear tres tipos de juegos para ir cogiendo práctica. Claro, serían básicos para aprender bien los conceptos.

1. Un juego de laberintos (Maze) Que ya lo comencé en GM8. Pero al importarlo a GMS daba errores por todos lados. Y claro, tendría que hacerlo de cero.

2. Un juego de naves (Tipo 1941)

3. Un plataformas.



¿El orden en dificultad sería el correcto? ¿No...?
10
Hola de nuevo. Bueno, lanzo la pregunta, pero yo lo sigo usando. Lo he dejado un tiempo parado por que el GML se me atragantaba. Y he estado mirando un poco el lenguaje Pascal para ir cogiendo nociones básicas de programación.

La cosa es, que a mi me gusta crear el juego para jugarlo en ordenador. Osea, que no quiero pasar el móvil. Pero he visto que casi todas las consultas en el foro van destinadas a Android.

No sé si todavía habrá gente que use GM8. Y claro, me gustaría saber si la gente seguirá contestando dudas sobre la versión GM8.

Si descartamos pasar nuestras creaciones a Android ¿Vale la pena seguir usando GM8 si jugamos en PC?

Saludos!
11
Supongo que esto se hace mediante las funciones get_string y get_integer. Pero las he probado y de momento no me funciona.

En el evento CREATE defino la variable num = 0

y en el evento DRAW pongo esto:

get_integer('Di un numero: ', num);

show_message(num);


Osea, lo que quiero es que el programa me pida un numero y que lo guarde en la variable num. Y luego, que lo muestre mediante el show_message.

Ya me imagino que algo estoy haciendo mal... :-X
12
Tengo la versión 8. Y en muchos códigos veo que la gente antes de la utilizar la variable, la declara con var.

Osea...

var numero;
numero = 10;


Por lo que entiendo, esto se hace cuando se crean variables que no van a durar mucho en el juego. Yo normalmente, utilizo el evento Create para dar un valor a la variable y punto. En otros lenguajes si se debe declarar el tipo de dato. Por ejemplo en Pascal.

¿Se puede prescindir de esta palabra reservada?
13
Si pongo este código en el evento CREATE se crean 5 pelotas en posiciones aleatorias:

for (i = 1; i <= 5; i += 1)
{   
    instance_create(random(400),random(400),obj_pelota);
}


Pero si pongo este otro, solo se crea una. Osea, que las variables durante el ciclo FOR tienen el mismo valor:

a = random(400);
b = random(400);

for (i = 1; i <= 5; i += 1)
{   
    instance_create(a,b,obj_pelota);
}


¿Durante cada paso del ciclo no se debería actualizar la variable 'a' y 'b' con otro valor 'random'?
14
Tengo la duda si se debe emplear place_free(x,y) para este asunto. Osea, se crea un determinado número de enemigos de forma aleatoria dentro de la room. Pero puede suceder que se superpongan encima de otros objetos y incluso encima de nuestro personaje.

Como estoy haciendo un laberinto, se daba el caso que pasaba eso. Y claro, el juego se bloqueaba. Para postre, tengo el place_snapped(x,y) que aún me complica mas el asunto.

Yo tengo puesto el repeat(5) para crearlos. Supongo que luego irá un IF que chequee las posiciones evitando solidos ¿No?
15
Preguntas y respuestas / instance_create, una duda...
Febrero 28, 2014, 06:46:08 PM
Quizás a estas altura de la película es tonto preguntar esto. Pero estoy haciendo pruebas para colocar los enemigos de forma aleatoria cada vez que inicia el juego. Osea, en evento Create se crean los enemigos con un:

repeat (5)
{
    instance_create(irandom(x),irandom(y),enemigo);
}


Y luego, en el evento Step, había pensado poner lo movimientos del enemigo que persigue al personaje.

Cual a sido mi sorpresa que se ha inundado el juego con tropecientos enemigos ¿El repeat(5), no debería haber creado solo 5?

Cómo esto me ha sorprendido, he realizado esta prueba con el evento Create:

instance_create(100,100,enemigo);

Pero al iniciar el juego da error. Lo que quiero es colocar el enemigo por código. Osea, no pegandolo en el editor de room.

Pone que se crea un bucle infinito y tal... :(
16
Bueno, supongo que no. Pero explicaré lo que me ocurre.

Cuando creamos una condición del tipo IF, el bloque que creamos entre corchetes se ejecuta de forma secuencial. Osea, una instrucción detrás de la otra. Pues con este código me va al revés:

if (instance_number(obj_Enemigo_A) == 0) and room == PLAYA
{
    //sound_play(snd_abre_reja);
   
    obj_heroe.x = 1024; obj_heroe.y = 832;
    sleep(5000);
    instance_destroy();
}


El código está en el objeto puerta. En su evento Step. Cuando en la room no quedan enemigos, una puerta que estaba cerrada se abre. El jugador es transportado al lado de esa puerta para que nos haga ver que se ha abierto.

Pero quiero que el jugador llegue a ese lugar, y aún veamos esa puerta cerrada. Creía que con el sleep resultaría así. Pero no.

Ocurre esto:

En el sitio que estamos, se produce la parada del sleep (5 segundos) y luego nos transporta al lado de la puerta. Pero ya está abierta. Cosa que no entiendo.

¿No debería transportarnos primero, luego la parada del sleep y después que se abra la puerta? Pregunto...
17
Aunque todavía no estoy creando ningún juego de plataformas, quiero recopilar alguna información para cuando llegue el caso. Y algo que me interesa mucho, es el cálculo exacto (o lo mas aproximado) de la gravedad de un cuerpo. Es decir, hacerla la mas real posible.

A veces, ponemos un valor en gravity a lo tonto y parece que el personaje flote o bien que lleve piedras en los zapatos (de lo rápido que cae). Eso sin contar cuando al saltar parece que se haya tomado un Red Bull doble.

Googleando, he visto algunas fórmulas, donde argumentan que el valor a hallar es la aceleración en relación al peso de cuerpo (o su masa) y haciendo un cálculo con el índice de gravedad.

El cálculo resultante sería un valor que luego podríamos poner en la variable gravity. Por que normalmente se pone 12 o 10 por norma (si se trata de un personaje normal).

La fórmula sería la ley de la gravitación universal ¿No...? ¿Esto que he encontrado sería lo correcto?

Citarley de gravitación universal:
Fgrav=G mm'/r( r al cuadrado)

r ----------es la distancia a la que se encuentra el cuerpo de la superficie terrestre.
m----------masa de dicho cuerpo
m'----------masa de la tierra.
G----------es una constante cuyo valor es=6.67*10 elevado a -11 Nm(m al cuadrado)/kg(kg al cuadrado)

18
Bueno...otra duda que tengo  :-[

Entiendo mas o menos la función instance_destroy(). Ya sé que no tiene muchos secretos. Pero yo quiero poder destruir objetos de forma selectiva. Y claro, esta función no admite parámetros.

Por ejemplo:

En mi juego tengo una puerta para pasar al siguiente nivel. Y esta solo se destruye cuando eliminamos todos los enemigos del nivel (nada original por cierto, jejeje...). Para hacer esto, tengo un objeto control que va contando cuantos enemigos nos quedan.

Mi código:

if (instance_number(obj_Enemigo_A) == 0) and room == PLAYA
{
       
        // Aquí vendría el instance_destroy obj_puerta
}


Es decir, cuando se destruye la puerta podemos pasar de nivel ya que el acceso queda libre.

LA PREGUNTA ES...

¿Porqué no admite parámetros? ¿No sería lógico un instance_destroy(objeto)?

¿La forma correcta es...? with (obj_puerta) instance_destroy();

if (instance_number(obj_Enemigo_A) == 0) and room == PLAYA
{
    with (obj_puerta) instance_destroy();
}
19
Videojuegos / Fantástico canal sobre vídeo juegos...
Febrero 17, 2014, 08:54:04 PM
Hola!

Igual muchos de vosotros conocéis el canal. Para mí, uno de los mejores que hay sobre vídeo juegos. De hecho tiene dos canales. Ambos del mismo usuario. Uno enfocado a sistemas más antiguos (que es el que me gusta a mí) y otro mas actual. Osea, sistemas de hoy día. El usuario es muy majo y lo explica todo a las mil maravillas.

Ah, desde aquí te mando mis felicitaciones y muchas gracias por hacernos pasar un buen rato, Slo ;)

Os dejo los dos links de los canales:

http://www.youtube.com/user/slobulus/videos

http://www.youtube.com/user/GeneracionActual/videos?sort=dd&view=0&flow=grid&live_view=500

Es obvio, pero si os gustan los vídeo juegos os van a encantar...
20
Normalmente en la room principal del juego, se pone el jugador arrastrándolo en la ventana de objetos a la room. Y cuando comienza el juego, desde esa posición comienza. Yo aún sigo con el tema de cambios de room y tal. Y claro, quiero que cuando pase a la siguiente room, aparezca en las coordenadas que yo le dé por código.

Había pensado poner este código (en evento STEP). Pero no funciona:

if (y == 896) and (room =(PLAYA))
{
    room_goto(Nivel_4)
    obj_heroe.x = 1024; obj_heroe.y = 32;
}


Y este tampoco:

if (y == 896) and (room =(PLAYA))
{
    room_goto(Nivel_4)
    instance_create(1024,32,obj_heroe);
}


En la segunda room, el personaje (obj_heroe) me sale donde yo lo he pegado. No en las coordenadas que yo le indico.

Lo que no sé, si en la segunda room (la nueva donde vamos a parar), también debo arrastrar al objeto personaje en la ventana de objetos y pegarlo en esta segunda room. O bien, se debe hacer por código.