Noticias

Se ha publicado un nuevo servicio, el Portal de Juegos Online

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!.

Autor Tema: Trasladar juego de RPG Maker a Game Maker Studio  (Leído 398 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Jcaraballo

  • Visitante
  • *
  • Puntos: 8
  • Mensajes: 5
    • Ver Perfil
en: Agosto 15, 2020, 07:27:23 am
Hola. Soy nuevo aquí.

Ustedes conocerán a RPG Maker. Aquella herramienta que te permite crear tus propios juegos RPG sin tener tanto conocimiento. De esta herramienta salieron juegos como Yume Nikki, OFF, To The Moon etc.

Pero todo tiene sus pros y sus contras. Pues debido a las limitaciones de RPG Maker, a veces no puedes hacer el juego que tu deseas con esa herramienta. Si has pensado en hacer un juego rollo Final Fantasy VII con gráficos 3D y fondos prerenderizados. Lamento decirte que RPG Maker no puede hacer ese tipo de cosas, a causa de eso. Hay gente que prefiere crear sus propios juegos RPG desde cero usando otras herramientas como Unity, Unreal Engine, Godot etc.

Yo me incluyo en ese tipo de gente que quiere hacer su propio juego RPG pero en un motor que no sea el RPG Maker. En este caso elegí Game Maker Studio.

La versión de GMS que yo tengo es la 1.4 en la build 1567. Esta versión, la conseguí pirata que descargue por Internet, ya que el Game Maker Studio 2 no se ejecutaba  en mi computadora debido a que solamente tiene soporte para SOs de 64 bits y mi computadora tiene un SO de 32 bits.

El juego que yo quiero recrear en GMS es LISA: The Painful. Pues ese juego me impacto desde que vi diversos gameplays de ese juego y quise tenerlo. Pero como no tenia dinero para comprarlo en Steam, tuve que recurrir a la piratería para poder conseguir ese juego gratis. Después de jugar un rato a ese juego, sentí que el juego tenia cierta limitaciones, sentía que la jugabilidad estaba algo tosca. Pues es un juego de scroll lateral y RPG Maker no esta pensado para hacer esa clase de juegos.

Por lo que tuve que tener la tarea de recrear este juego en GMS. Cabe destacar que no pretendo recrear todo el juego, sino una parte, hace como una especie de demo similar a la demo publicada en Kickstarter, ya que si intento recrear todo el juego, puedo recibir una posible demanda por parte de Dingaling. Por lo que prefiero mejor solo recrear una parte del juego y después publicarla en forma de template o framework para la gente que se interese en hacer fangames de LISA en GMS.

Cabe destacar que no he encontrado ningún tutorial de como importar un proyecto hecho en RPG Maker a GMS 1.x. Ya que la mayoría de los tutoriales son de GMS 2 y algunos están pensado para versiones mas viejas como Game Maker 8.1.

Así que porfavor necesito ayuda para poder trasladar un juego de RPG Maker a GMS y que sea gente que ya tenga experiencia con el RPG Maker, tanto programadores como gente que ha jugado esos juegos hechos con ese motor y sobretodo gente que haya jugado a LISA: The Painful o haya visto diversos gameplays en YouTube.

Edit 15/08/2020:
Después de ver varios tutoriales de YouTube, intente hacer un Test Room usando los assets originales y este fue el resultado.


Como verán. El personaje se me quedo flotando en el aire, debido a que no encuentro la forma de ponerlo en suelo. Quise programar un script para la gravedad del personaje para que este caiga al suelo una vez que el juego se ejecute. Pero prefiero mejor encontrar una forma de ripear los scripts del juego original de RPG Maker y usarlos en GMS. Pero no encuentro los programas adecuados para ripear los scripts  para usarlos en GMS. Por eso necesito gente que tenga experiencia en el RPG Maker y me ayuden a trasladar este juego a GMS.

Edit 16/08/2020:
Se me presentado un problema. Estaba siguiendo una serie de Tutoriales en YouTube sobre hacer un juego de plataformas en Game Maker Studio, aunque solamente para saber como hago para que el personaje se mueva, tenga colisión con x tal, pueda saltar etc.

Voy a dejar el link de los vídeos para que lo vean:
Parte 1:
Parte 2:

Cuando ya estaba en la parte 2 del vídeo y quiero programar la parte del movimiento del personaje para que este se mueva solamente cuando presione las teclas y luego ejecuto el juego para ver el resultado me sale esto.


___________________________________________
############################################################################################
FATAL ERROR in
action number 1
of  Step Event0
for object objPlayer:

Push :: Execution Error - Variable Get 100040.intAirFric(100020, -2147483648)
 at gml_Object_objPlayer_StepNormalEvent_1 (line 21) -    intTempFric = intAirFric;
############################################################################################


Estas son la lineas de código que yo use mientras veía los tutoriales paso a paso.
///Desplazamiento
var keyLeft, keyRight, keyJump, keyJumpRelease;

keyLeft        = -keyboard_check (vk_left);
keyRight       = keyboard_check (vk_right);

keyJump        = keyboard_check_pressed(ord('x'));
keyJumpRelease = keyboard_check_released(ord('x'));

//Comprobacion de Colisiones
intColLeft  = place_meeting(x - 1, y, objBlock);
intColRight = place_meeting(x + 1, y, objBlock);
bolGround   = place_meeting (x, y + 1, objBlock);

intMove = keyLeft + keyRight;

//Definir aceleración y friccion en funcion del medio
if (!bolGround)
{
   intTempAcc = intAirAcc;
   intTempFric = intAirFric;
}
else
{
   intTempAcc = intGroundAcc;
   intTempFric = intGroundFric;
}

//Velocidad horizontal
if (intMove != 0) intVX = scrApproach(intVX, intVXMax * intMove, intTempAcc);
else intVX = scrApproach(intVX, intVXMax * intMove, intTempFric);

//Colision horizontal
repeat(abs(intVX))
{
   if (!place_meeting(x + sign(intVX), y, objBlock))
   {
        x += sign(intVX);
   }
   else
   {
      intVX = 0;
      break;
   }
}

Necesito una solución para corregir esto. Quiero saber que tipo de error me impide que se ejecute el juego.

Edit 17/08/2020:
Debido a que nadie me respondido sobre el problema de ejecutar el juego en GMS, tuve que solucionarlo yo mismo. Para eso tuve que ver nuevamente el vídeo de la parte 2 de crear un juego de plataformas en Game Maker Studio, aunque yo no pretendo hacer un juego de plataformas, sino un RPG. Resulta y acontece que escribir mal una linea de código en las variables del personaje y por eso me saltaba un error cada vez que ejecuto el juego.

Ya estando en el vídeo de la parte 3 sobre programar el salto y la gravedad que voy a dejar aquí mismo.


Retomando en donde lo deje, tuve un problema que al final termine solucionandolo. Resulta que al ejecutar el juego teniendo programada la gravedad del personaje, este se caía fuera de la pantalla, aun cuando puse el suelo encima. Me fui al editor de habitaciones y resulta que si el objeto bloque no esta dibujado, el juego detectara que no existe y por eso el personaje se caía aun estando en el suelo que hice con tiles.
Mi solución fue que tuve que dibujar los bloques y después hacerlos invisibles, después de eso el personaje al fin podía mantener los pies en el suelo y no se caía sin razón alguna. Les dejo un gif animado sobre el resultado que he hecho.


Como verán, el personaje se mueve y salta, pero algo no anda del todo bien. Pues el personaje no hace la animación de caminar cuando se esta moviendo en tierra, únicamente cuando salta. Cabe destacar que en LISA The Painful, no existe sprites de Brad saltando hacia derecha e izquierda, puesto que ese juego fue hecho en RPG Maker y este motor que mencione posee muchas limitaciones. Si alguien sabe de pixel art, necesito sprites nuevos del personaje Brad, sprites como saltar hacia la derecha e izquierda, correr, aterrizar después de caer de una plataforma baja, estrellarse al suelo hacia la derecha e izquierda después de caer de una plataforma alta etc.  Aunque como ya lo he dicho antes, pretendo hacer un RPG y no un juego de plataformas.

Voy dejar el sprite sheet de Brad que conseguí en la pagina de The Spriters Resource para que se inspire y hagan nuevos sprites.
Spoiler

Y sobretodo necesito saber como hago para que Brad se mueva a la misma velocidad que en el juego original tal y como se muestra en este gameplay. Recuerden saltarse al 13:06 para no tener necesidad de ver toda la secuencia inicial.
Spoiler

Una cosa. Voy a dejar las lineas de código del desplazamiento del personaje para que lo modifiquen y hacer que el personaje se mueva de forma igual que en el juego original.
Código: [Seleccionar]
///Desplazamiento
var keyLeft, keyRight, keyJump, keyJumpRelease;

keyLeft        = -keyboard_check (vk_left);
keyRight       = keyboard_check (vk_right);

keyJump        = keyboard_check_pressed(ord('X'));
keyJumpRelease = keyboard_check_released(ord('X'));

//Comprobacion de Colisiones
intColLeft  = place_meeting  (x - 1, y, objBlock);
intColRight = place_meeting  (x + 1, y, objBlock);
bolGround   = place_meeting  (x, y + 1, objBlock);

intMove = keyLeft + keyRight;

//Definir aceleración y fricción en función del medio
if (!bolGround)
{
   intTempAcc  = intAirAcc;
   intTempFric = intAirFric;
}
else
{
   intTempAcc  = intGroundAcc;
   intTempFric = intGroundFric;
}

//Velocidad horizontal
if (intMove != 0) intVX = scrApproach(intVX, intVXMax * intMove, intTempAcc);
else intVX = scrApproach(intVX, intVXMax * intMove, intTempFric);

//Velocidad vertical
if (!bolGround)
{
   intVY = scrApproach(intVY, intVYMax, intGravityNorm); //Caida libre
}

//Salto
if (keyJump && bolGround) intVY = -intVYMax;

//Colision Horizontal
repeat(abs(intVX))
{
   if (!place_meeting(x + sign(intVX), y, objBlock))
   {
      x += sign(intVX);
   }
   else
   {
      intVX = 0;
      break;
   }
}

//Colision Vertical
repeat(abs(intVY))
{
   if (place_meeting(x, y + sign(intVY), objBlock))
   {
      intVY = 0;
      break;
   }
   else y += sign(intVY);
}   
« última modificación: Agosto 18, 2020, 02:04:44 am por Jcaraballo »

 


No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.


Desconectado getnoff

Respuesta #1 en: Agosto 15, 2020, 03:49:39 pm
Yo nunca he usado RPG Maker y no creo que exista un convertidor automático, pero como opinión personal te sugeriría que portaras manualmente tu proyecto, con el camino difícil aprendes mejor y entrarás rápido en el desarrollo en GM.

Extrae tus recursos de sonido y gráficos e investiga la forma en que se crean juegos RPG en GM. Game maker es un motor global así que puede hacerse cualquier tipo de juego con él.

Respecto al 3D, se dice que GM no tiene mucho soporte y facilidades pero poder se puede.


 


Desconectado DawCrash

Respuesta #2 en: Agosto 15, 2020, 04:48:15 pm
¿Por qué dices que con RPG Maker no se puede hacer el juego que quieres? Lisa The Painful está hecho en RPG Maker, y con ese engine puedes crear cualquier cosa si te das maña programando plugins en javascript (suponiendo que tienes la versión MV)

Sobre lo de "convertir" un juego de RPG Maker a GM, no se puede de forma automática. Tendrías que importar manualmente los assets (tilesets, charas, etc) e ir recreando los mapas en el room editor.


Desconectado Jcaraballo

  • Visitante
  • *
  • Puntos: 8
  • Mensajes: 5
    • Ver Perfil
Respuesta #3 en: Agosto 16, 2020, 01:52:52 am
Después de ver varios tutoriales en YouTube para poder hacer una especie Test Room usando assets del juego original. Este fue el resultado.


Como verán, se me quedo el personaje flotando, debido a que no puedo hacer que el personaje se quede parado en el suelo. Debido a que no encuentro la forma adecuada de que el personaje este en el suelo.

Quise programar para incluir un script de la gravedad del personaje. Pero yo quiero usar scripts importados del juego original de RPG Maker pero me es difícil encontrar programas adecuados para ripear esos scripts para luego usarlos en GMS.
« última modificación: Agosto 16, 2020, 01:55:38 am por Jcaraballo »

 


Desconectado Black_Cat

Respuesta #4 en: Agosto 16, 2020, 04:33:17 am
Malas noticias, bro.  No existen programas para "rippear" scripts de RPGMaker a GameMaker Studio. Son programas independientes con lenguajes independientes.
Otras malas noticias, hacer un RPG como norma, es lo último que alguien quiere hacer como primer juego, debido a la complejidad que conlleva este género.

Ahora, si todavía querés hacerlo a mano, vas a tener que desglosar el comportamiento. Lo cuál resumiría tu problema a arreglar la gravedad o la colision con el suelo. Hay muchos post en Preguntas y respuestas sobre esto, es muy común.
Puede ser la caja de colision, la mask. El punto de origen también. O el código para que colisione. O el de gravedad.
Sería útil ver cómo está hecho para saber donde falla.


 


Desconectado Jcaraballo

  • Visitante
  • *
  • Puntos: 8
  • Mensajes: 5
    • Ver Perfil
Respuesta #5 en: Agosto 16, 2020, 04:56:48 pm
Se me presentado un problema. Estaba siguiendo una serie de Tutoriales en YouTube sobre hacer un juego de plataformas en Game Maker Studio, aunque solamente para saber como hago para que el personaje se mueva, tenga colisión con x tal, pueda saltar etc.

Voy a dejar el link de los vídeos para que lo vean:
Parte 1: https://www.youtube.com/watch?v=PdGOO-JCo-M]]https://www.youtube.com/watch?v=PdGOO-JCo-M
Parte 2:

Cuando ya estaba en la parte 2 del vídeo y quiero programar la parte del movimiento del personaje para que este se mueva solamente cuando presione las teclas y luego ejecuto el juego para ver el resultado me sale esto.


___________________________________________
############################################################################################
FATAL ERROR in
action number 1
of  Step Event0
for object objPlayer:

Push :: Execution Error - Variable Get 100040.intAirFric(100020, -2147483648)
 at gml_Object_objPlayer_StepNormalEvent_1 (line 21) -    intTempFric = intAirFric;
############################################################################################


Estas son la lineas de código que yo use mientras veía los tutoriales paso a paso.
///Desplazamiento
var keyLeft, keyRight, keyJump, keyJumpRelease;

keyLeft        = -keyboard_check (vk_left);
keyRight       = keyboard_check (vk_right);

keyJump        = keyboard_check_pressed(ord('x'));
keyJumpRelease = keyboard_check_released(ord('x'));

//Comprobacion de Colisiones
intColLeft  = place_meeting(x - 1, y, objBlock);
intColRight = place_meeting(x + 1, y, objBlock);
bolGround   = place_meeting (x, y + 1, objBlock);

intMove = keyLeft + keyRight;

//Definir aceleración y friccion en funcion del medio
if (!bolGround)
{
   intTempAcc = intAirAcc;
   intTempFric = intAirFric;
}
else
{
   intTempAcc = intGroundAcc;
   intTempFric = intGroundFric;
}

//Velocidad horizontal
if (intMove != 0) intVX = scrApproach(intVX, intVXMax * intMove, intTempAcc);
else intVX = scrApproach(intVX, intVXMax * intMove, intTempFric);

//Colision horizontal
repeat(abs(intVX))
{
   if (!place_meeting(x + sign(intVX), y, objBlock))
   {
        x += sign(intVX);
   }
   else
   {
      intVX = 0;
      break;
   }
}

Necesito una solución para corregir esto. Quiero saber que tipo de error me impide que se ejecute el juego.

 


Desconectado Jcaraballo

  • Visitante
  • *
  • Puntos: 8
  • Mensajes: 5
    • Ver Perfil
Respuesta #6 en: Agosto 18, 2020, 01:59:10 am
Debido a que nadie me respondido sobre el problema de ejecutar el juego en GMS, tuve que solucionarlo yo mismo. Para eso tuve que ver nuevamente el vídeo de la parte 2 de crear un juego de plataformas en Game Maker Studio, aunque yo no pretendo hacer un juego de plataformas, sino un RPG. Resulta y acontece que escribir mal una linea de código en las variables del personaje y por eso me saltaba un error cada vez que ejecuto el juego.

Ya estando en el vídeo de la parte 3 sobre programar el salto y la gravedad que voy a dejar aquí mismo.


Retomando en donde lo deje, tuve un problema que al final termine solucionandolo. Resulta que al ejecutar el juego teniendo programada la gravedad del personaje, este se caía fuera de la pantalla, aun cuando puse el suelo encima. Me fui al editor de habitaciones y resulta que si el objeto bloque no esta dibujado, el juego detectara que no existe y por eso el personaje se caía aun estando en el suelo que hice con tiles.
Mi solución fue que tuve que dibujar los bloques y después hacerlos invisibles, después de eso el personaje al fin podía mantener los pies en el suelo y no se caía sin razón alguna. Les dejo un gif animado sobre el resultado que he hecho.


Como verán, el personaje se mueve y salta, pero algo no anda del todo bien. Pues el personaje no hace la animación de caminar cuando se esta moviendo en tierra, únicamente cuando salta. Cabe destacar que en LISA The Painful, no existe sprites de Brad saltando hacia derecha e izquierda, puesto que ese juego fue hecho en RPG Maker y este motor que mencione posee muchas limitaciones. Si alguien sabe de pixel art, necesito sprites nuevos del personaje Brad, sprites como saltar hacia la derecha e izquierda, correr, aterrizar después de caer de una plataforma baja, estrellarse al suelo hacia la derecha e izquierda después de caer de una plataforma alta etc.  Aunque como ya lo he dicho antes, pretendo hacer un RPG y no un juego de plataformas.

Voy dejar el sprite sheet de Brad que conseguí en la pagina de The Spriters Resource para que se inspire y hagan nuevos sprites.
Spoiler

Y sobretodo necesito saber como hago para que Brad se mueva a la misma velocidad que en el juego original tal y como se muestra en este gameplay. Recuerden saltarse al 13:06 para no tener necesidad de ver toda la secuencia inicial.
Spoiler

Una cosa. Voy a dejar las lineas de código del desplazamiento del personaje para que lo modifiquen y hacer que el personaje se mueva de forma igual que en el juego original.
Código: [Seleccionar]
///Desplazamiento
var keyLeft, keyRight, keyJump, keyJumpRelease;

keyLeft        = -keyboard_check (vk_left);
keyRight       = keyboard_check (vk_right);

keyJump        = keyboard_check_pressed(ord('X'));
keyJumpRelease = keyboard_check_released(ord('X'));

//Comprobacion de Colisiones
intColLeft  = place_meeting  (x - 1, y, objBlock);
intColRight = place_meeting  (x + 1, y, objBlock);
bolGround   = place_meeting  (x, y + 1, objBlock);

intMove = keyLeft + keyRight;

//Definir aceleración y fricción en función del medio
if (!bolGround)
{
   intTempAcc  = intAirAcc;
   intTempFric = intAirFric;
}
else
{
   intTempAcc  = intGroundAcc;
   intTempFric = intGroundFric;
}

//Velocidad horizontal
if (intMove != 0) intVX = scrApproach(intVX, intVXMax * intMove, intTempAcc);
else intVX = scrApproach(intVX, intVXMax * intMove, intTempFric);

//Velocidad vertical
if (!bolGround)
{
   intVY = scrApproach(intVY, intVYMax, intGravityNorm); //Caida libre
}

//Salto
if (keyJump && bolGround) intVY = -intVYMax;

//Colision Horizontal
repeat(abs(intVX))
{
   if (!place_meeting(x + sign(intVX), y, objBlock))
   {
      x += sign(intVX);
   }
   else
   {
      intVX = 0;
      break;
   }
}

//Colision Vertical
repeat(abs(intVY))
{
   if (place_meeting(x, y + sign(intVY), objBlock))
   {
      intVY = 0;
      break;
   }
   else y += sign(intVY);
}   

 


Desconectado Clamud

Respuesta #7 en: Agosto 18, 2020, 05:46:10 pm
Parece que el juego original corre a 60 fps, de esa forma el desplazamiento de los personajes se ve muy fluido, tal vez debes tomar eso en cuenta.