Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

BuildNetworkGame

Iniciado por Portief, Mayo 13, 2017, 12:47:20 AM

Tema anterior - Siguiente tema
Buenas a todos después de meses de trabajo tengo una beta del juego multijugador sobre el que estaba trabajando. Utiliza el network de unity y mi proyecto esta linqueado a su servicio con un máximo de 20 jugadores. Mi pregunta es he repartido entre mis colegas copias del ejecutable y al parecer he jugado con ellos mientras yo estaba en una version mas antigua. La pregunta es cuando saque una beta1.2 Ellos van a poder jugar en versiones antiguas conmigo y por tanto va a dar error? Al estar jugando ellos en versiones antiguas ese maximo de jugadores me lo están ocupando aunque haya una versión nueva? Que debería hacer deslinquearlo el proyecto y volver a linquearlo? Cualquier ayuda sera bienvenida y gracias de antemano.

Yo aun estoy empezando con el networking pero creo que ya se donde esta el problema. Cuando el cliente conecte al host debe chequear la version. Si la version (representada con numeracion) no coincide, debe denegarse la conexion. Si no pones esta comprobacion si podran conectarse con versiones antiguas pero sufriran errores de todo tipo al faltarles contenido (ya sean assets, scripts,...) 

Vale si es así sigo preguntándome. Como es la forma de comprobar la versión ya que no encuentro info. Y como ya he comentado si deslinco el proyecto actual a la referencia del network y lo vuelvo a linquear sería solución? 

Mayo 13, 2017, 03:26:38 PM #3 Ultima modificación: Mayo 13, 2017, 03:27:05 PM por francoe1
Primero deberías obtener la versión del cliente. 
 

string assemblyVersion = Assembly.GetExecutingAssembly().GetName().Version.ToString();
string productVersion = FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location).ProductVersion;

 
Luego en el servidor deberías crear un arreglo de versiones compatibles.
 

private string[] m_compatible_versions = new string[3] {"V1.0.1", "V1.0.2", "V1.0.3"}

 
Por ultimo cuando el cliente se conecta envía su versión y hasta recibir la respuesta queda en un estado de conectando.
 
 
 
Estoy viendo que existen muchas personas interesadas por este tema del networking, pronto subiré material a mi canal de youtube si estas interesado suscribete.

Mayo 17, 2017, 01:05:58 AM #4 Ultima modificación: Mayo 17, 2017, 01:07:29 AM por Portief
Gracias por la info, francoe1 ¿Me podrías recordar tu canal de youtube? Creo que lo había visto por ahí pero ahora mismo no lo encuentro. Al final he optado por acceder a la versión existente en playersettings y comprobar si tengo la misma versión que servidor si no me desconecto. Ya que estoy utilizando una conexión básica peer to peer. Se también que me recomendaste una lectura sobre network en unity hace un par de posts. Pero me estuve informando sobre montar mi propia transmisión de datos protocolo udp etc... para próximos proyectos y me di cuenta que me faltaba información de calidad si me puedes recomendar algo te lo agradecería saludos.

Etiquetas: