Hola makeros,
Llevo bastante tiempo probando las funciones de GM server y contactando con su dueño, pero no termino de lograr sincronizar 2 objetos al 100% utilizando las funciones que hay en GM server. ¿Alguno de vosotros ha consigo lograrlo?
Este es el código que uso en mis objetos tras varias respuestas por parte del dueño:
Create Event
if global.IA==0 && gms_session_player_count(global.id_sesion)==2//Si pvp
{
if !gms_instance_created_by_sync()
{
if gms_self_ismaster()
{
gms_instance_sync(id,is_full)
randomize()
if room=rm_play
{
path_start(path_obj_minero,choose(4+0.5,4+1,4-1),path_action_restart,1)
}
if room=room_level4
{
path_start(path_obj_minero_lvl4,choose(4+0.5,4+1,4-1),path_action_restart,1)
}
//Linterna
instance_create(x,y,obj_linterna)
}
else
{
instance_destroy()
}
}
}
Thx!
Nadieeee????? :'( :'(
Yo uso mucho GM Server pero te anticipo que uso mi propio sistema para sincronizar objetos porque no me fio mucho de las capacidades de GMS para hacerlo. Mejor dicho, hay funciones que me dieron buen resultado y otras no, entonces fui abriendo camino a base de escoger un poco ciertas funciones.
También te digo que casi todo lo que he programado bajo GM han sido juegos por turnos, mas fáciles de sincronizar, que programas donde hay una sincronización continua, que termina siendo mas exigente.
Dos preguntas, usas el VS mode? Y la segunda, has verificado que el session_id es igual en ambos casos?
Hola Arcadian!
Tengo un sistema de cambio de sesiones según el nivel y demás, por eso mismo no uso el vs Mode.
Si el problema es que no sincroniza bien los objetos del room, pero por ejemplo si sincroniza bien al otro player. Qué puedo estar haciendo mal???
Yo de momento no me planteo montar el multiplayer por mi cuenta, porque no sabría ni por donde empezar y porque no tengo un servidor propio/alquilado :-X
Yo suelo tener chivatos en pantalla que indiquen si algo va mal, por ejemplo si se pierde la conexión, si el jugador no esta bien logueado, etc y luego siempre muestro el sesión_id porque hay veces que cada jugador acaba en una sesión diferente del Server y entonces eso explica que no se cordinen entre si.
Igual podría echarte un cable, de que es el juego, puedes enseñarme algún pantallazo?
Pues si pudieras ayudarme me salvarías 1 año de trabajo la verdad, porque este es el punto que no me deja publicar el juego.
Te voy a pasar la versión del juego simplificado que le mandé a Size. El player se mueve con el ratón (juego de móvil). Veras que si ejecutas el multiplayer, el enemigo al ejecutar el path al principio se sincroniza, pero pasados unos segundos, hace algo raro y deja de sincronizarse. El principal problema que tengo es la sincronización de objetos en la room, que no termina de funcionar.
Para loguearte en el juego puedes usar estos usuarios:
- Usuario: 123123
- Contraseña:123123
-Usuario:8888
-Contraseña:888888
Te lo paso por aquí, que pesa 20MB y casi no se comprime:
https://www.dropbox.com/s/uwxhsqa972epfyn/Sync%20example.gmz?dl=0
Mil gracias, de verdad :love:
Para empezar veo esta función, gms_self_ismaster(), a mí personalmente, no me daba buenos resultados.
Había veces que los dos jugadores eran master, y otras en que ninguno de ellos lo era, le pregunté a size43 pero me dijo que lo miraría y que yo sepa, no ha habido grandes avances en ese sentido.
Dejé de usarla por ese motivo. Lo que puedo hacer es, si me explicas un poco las mecánicas que quieres meter, las podría llevar a término de otra manera, usando otras funciones, puede coger tu proyecto y hacerlo de otra manera si te parece bien pero claro eso implica quitar código, añadir otro, etc. Sería otro archivo guardado diferente al tuyo claro, para evitar problemas.
Pues sería simplemente que el objeto enemigo empieza con un path, simulando que está custodiando algo, y al estar el obj_player o obj_other_player a una distancia de menos de 128 pixels, deja el path y persigue al que este mas cerca. Este obj_enemigo estaría sincronizado.
Además tengo objetos que hacen de muro y son rompibles. Querría sincronizarlos cuando se crean, porque podrían ser creados/destruidos por los player.
No estoy usando el modo VS porque quiero emparejar jugadores según tengan niveles elegidos. Es decir, solo emparejar jugadores que hayan elegido el level 1, solo a los que hayan elegido el level 2, etc.
Además tengo el sistema de sesiones porque fuera de los levels tengo puesto chats, y necesito que todos estén en las mismas sesiones.
En el ejemplo que te pase tengo puestos los códigos que uso, por lo que ahí podrías ver más en detalle lo que comento. Siéntete libre de hacer lo que quieras, faltaría más!!!!
Muchas gracias!!!!!
Ok, dejame unos días para mirarlo y te iré diciendo.
El VS mode esta bien, pero le saco un gran pero y es que no es personalizable, por ejemplo, que los jugadores puedan establecer el momento en que se inicia la nueva partida, en plan pulsar un botón que diga "Estoy listo!" y luego ambos son movidos a la nueva room.
Lo hable con size43 de hecho pero no había posibilidad de calibrarlo.
Ya sabes que según la documentación del GM Server la comunicación entre jugadores de diferentes sesiones es imposible una vez se inicia la nueva sesion pero en realidad si es posible, usando las variables globales del servidor, lo que permite hacer chat de partida, y chat general también, si fuera necesario.
Ok, muchas gracias!!
Te estaré esperando como agua de Mayo!!!! ;D