unity3d - sesion - google play services unity
Coincidencia de jugador en Google Play Services según la clasificación/habilidad del jugador (2)
¿Existe alguna manera de unir jugadores utilizando el servicio de juego de Google Play en función del nivel de habilidad de cada jugador en el juego? He almacenado localmente el nivel de jugador de cada jugador, y quiero que un jugador sea emparejado con su jugador clasificado más cercano.
Por ejemplo: un jugador clasificado 10 (principiante) debe emparejarse con el jugador clasificado más cercano disponible (por ejemplo, 5 a 15) en lugar de un jugador experto de nivel 100, para que podamos tener una competencia equilibrada.
Creo que la respuesta de Clayton Wilkinson es correcta y la voté.
Pero, me imagino que el OP espera alguna forma de hacer coincidencias basadas en habilidades sin dividir la base de jugadores en segmentos.
Tristemente, la respuesta es no, no puedes. Las opciones son usar otro sistema de emparejamiento o dividir tu base de jugadores. Si eliges dividir tu base de jugadores, entonces necesitarás muchos usuarios simultáneos para evitar que tus jugadores esperen mucho tiempo.
En un título reciente, lanzamos nuestro propio servicio de búsqueda de parejas basado en Raknet porque queríamos un emparejamiento más matizado. Sin embargo, es un montón de problemas, y GPGS es bastante bueno de lo contrario, por lo que la coincidencia basada en habilidades tendría que ser una prioridad muy alta antes de considerar abandonar GPGS.
Hay dos variables que se pueden establecer para influir en la toma de partido:
Primero, puedes establecer una variante del juego usando RoomConfig.Builder.setVariant () . Este método toma un valor no negativo que indica el tipo de coincidencia. La variante especificada necesita coincidir exactamente con otros participantes para que se realice la auto-coincidencia. Supongo que podrías ser estricto en tu emparejamiento y usar la variante como nivel del jugador. De esta forma, los jugadores solo se emparejarían con jugadores del mismo nivel. Una alternativa sería agrupar los niveles en un rango, por ejemplo, los niveles 1-5 podrían jugarse entre sí, del mismo modo, el grupo 6-8, etc.
La segunda variable es la exclusiva BitMask. Esto se transfiere al llamar a RoomConfig.CreateAutoMatchCritera () . Este método toma el número mínimo y máximo de jugadores para que coincida, y el exclusivo BitMask. Esta máscara cuando AND''ed lógicamente con los otros jugadores será igual a 0. Esto se usa para cosas como juegos basados en roles (necesita tener 1 ofensiva y 1 defensa). Un posible uso de esto sería enmascarar las capacidades de alto nivel frente a las de bajo nivel, por lo que no hay desajuste escandaloso.