🚀 GUÍA MAESTRA DEFINITIVA Netcode for GameObjects + Unity 6 100% Gratis & Open Source

Cómo Dominar el Multijugador de Unity
Sin Romperte la Cabeza ni Abrir Puertos en el Router

¿Sueñas con crear el próximo juego cooperativo con tus colegas o un shooter táctico online? Olvídate de los tutoriales obsoletos de 2017 con UNet. Aquí tienes la arquitectura moderna explicada con risas, diagramas claros, proyectos de GitHub listos para clonar y los mejores activos gratuitos de la Asset Store para empezar hoy mismo.

4 Jugadores Test simultáneo en el Editor con MPPM en Unity 6
0 Puertos Conexión con amigos vía Unity Relay & Join Codes
100 CCU Jugadores simultáneos gratis en Unity Gaming Services
1 Click Clona proyectos completos como Boss Room en GitHub
⚰️
Aviso de Salud Mental para Game Devs: Si ves un tutorial en YouTube que menciona UNet o NetworkBehaviour antiguo, ¡huye! UNet murió hace años. El estándar oficial moderno y recomendado por Unity es Netcode for GameObjects (NGO) junto a Unity Gaming Services (UGS). ¡Todo lo que verás aquí es 100% actual y compatible con Unity 6!

La Filosofía del Multijugador: El Servidor es el Árbitro Supremo

En un juego de un solo jugador, tu PC es el dios de su propio universo: si pulsas espacio, saltas; si tocas una moneda, te sumas 100 puntos. Pero en multijugador, si le permites al cliente de tu amigo decidir cuánta vida le queda... ¡tu amigo se pondrá 999.999 de vida antes de que parpadees!

⚽

La Regla de Oro: Autoridad del Servidor (Server Authoritative)

Imagina un partido de fútbol. Los jugadores (clientes) pueden correr y gritar "¡Ha sido gol!", pero el único que valida si el balón cruzó la línea es el árbitro (el Servidor). Si el árbitro no pita, no hay gol. En Unity funciona igual: el cliente envía una petición ("quiero disparar") y el servidor comprueba si tiene balas, si está vivo y si el disparo es válido.

Elige una Arquitectura para Ver Cómo Funciona:

Haz clic en cada pestaña para ver el flujo de datos, ventajas, costes y cuándo usarla.

Los 4 Componentes Sagrados de Netcode for GameObjects (NGO)

Todo lo que necesitas para sincronizar tu juego se resume en estos cuatro elementos:

01 El Director
🎛️

NetworkManager

El corazón de la red. Es un GameObject persistente con el componente NetworkManager. Decide qué transporte usar (Unity Transport), almacena la lista de prefabs que pueden spawnear en red y contiene los botones mágicos StartHost(), StartServer() y StartClient().

NetworkManager.Singleton.StartHost();
02 El Pasaporte
🪪

NetworkObject

Cualquier GameObject que quieras que exista en las pantallas de todos los jugadores necesita este componente. Le otorga un NetworkObjectId único global para que el servidor y los clientes sepan de qué objeto exacto están hablando al moverse o interactuar.

networkObject.SpawnWithOwnership(clientId);
03 Sincronización de Datos
🔄

NetworkVariable<T>

Variables mágicas que se sincronizan solas. Si el servidor cambia Salud.Value = 80;, todos los clientes reciben el nuevo valor automáticamente por la red sin escribir código socket a mano. Además puedes enganchar eventos OnValueChanged para actualizar la UI.

public NetworkVariable<int> Vida = new();
04 Teléfono Rojo
📞

RPCs (Remote Procedure Calls)

Métodos que ejecutas en tu máquina pero corren en otra máquina.
• [ServerRpc]: El cliente le dice al servidor: "Abre esta puerta".
• [ClientRpc]: El servidor le dice a todos los clientes: "¡Boom! Reproduzcan la explosión".

[ServerRpc] void AbrirPuertaServerRpc()
JugadorRed.cs — Tu Primer Script Multijugador en Unity
using Unity.Netcode;
using UnityEngine;

// En lugar de MonoBehaviour, heredamos de NetworkBehaviour
public class JugadorRed : NetworkBehaviour
{
    // 1. Variable sincronizada automáticamente: Solo el servidor puede modificarla, todos la leen
    public NetworkVariable<int> Vida = new NetworkVariable<int>(100, 
        NetworkVariableReadPermission.Everyone, 
        NetworkVariableWritePermission.Server);

    private void Update()
    {
        // 2. Comprobamos IsOwner: ¡Solo controlamos a NUESTRO propio personaje, no al de los demás!
        if (!IsOwner) return;

        float movX = Input.GetAxis("Horizontal");
        float movZ = Input.GetAxis("Vertical");
        transform.Translate(new Vector3(movX, 0, movZ) * Time.deltaTime * 5f);

        // 3. Si pulsamos la barra espaciadora, pedimos al servidor que lance una bola de fuego
        if (Input.GetKeyDown(KeyCode.Space))
        {
            PedirLanzarHechizoServerRpc();
        }
    }

    // 4. ServerRpc: Corre en el Servidor (debe terminar con la palabra ServerRpc)
    [ServerRpc]
    private void PedirLanzarHechizoServerRpc()
    {
        Debug.Log($"El cliente {OwnerClientId} ha pedido lanzar un hechizo. Validando...");
        
        // El servidor valida y luego ordena a TODOS los clientes que muestren el efecto visual
        ReproducirEfectoVisualClientRpc(transform.position);
    }

    // 5. ClientRpc: Corre en TODOS los clientes (debe terminar con ClientRpc)
    [ClientRpc]
    private void ReproducirEfectoVisualClientRpc(Vector3 posicion)
    {
        // ¡Aquí instanciamos partículas o reproducimos sonido en las pantallas de todos los jugadores!
        Debug.Log($"¡Fuegos artificiales en {posicion}!");
    }
}

Simulador de Red en Vivo: Mira los Paquetes Volar

¿Te cuesta imaginar cómo viajan los datos entre el Host y los Clientes? Enciende el servidor virtual, conecta jugadores, ajusta el ping (latencia) y pulsa las acciones para ver la magia de los RPCs y las NetworkVariables en tiempo real.

Servidor Desconectado
HOST (P1) Server + Client HP: 100 CLIENTE 2 Jugador Remoto HP: 100 CLIENTE 3 Jugador Remoto HP: 100
🔥 Disparar Eventos de Red:
📡 Registro de Tráfico de Red (Unity Transport Packet Inspector)
[SISTEMA] Pulsa "Iniciar Host (P1)" para arrancar el servidor local en puerto 7777...

Unity Relay & Lobby: Juega con Amigos Sin Tocar el Router

¿Te acuerdas de tener que entrar a 192.168.1.1, poner admin/admin, abrir el puerto UDP 7777 y rezar para que el Firewall de Windows no te bloquease? Esos días se acabaron gracias a Unity Relay y Unity Lobby.

¿Cómo Funciona una Partida con Unity Relay? (El Flujo Mágico)

1
👑

El Host Pide Sala

El Jugador 1 pulsa "Crear Partida". Unity conecta con la nube de UGS y reserva un servidor intermedio (Relay).

➔
2
🎟️

Join Code de 6 Letras

Relay genera una clave corta (ej: "K9FX2L"). El Host se la pasa a sus amigos por Discord o WhatsApp.

➔
3
🚪

Amigo Introduce Clave

El Jugador 2 pega "K9FX2L" en su juego. Ambos se conectan al túnel seguro de Relay sin abrir puertos.

➔
4
🎮

¡A Jugar!

El tráfico fluye cifrado por el Relay de Unity con baja latencia y protección total de IP privada.

🔀
El Cartero Seguro

Unity Relay

Elimina por completo la necesidad de port forwarding o NAT punchthrough complejo. Actúa como repetidor en la nube para que dos jugadores detrás de routers domésticos estrictos puedan conectarse sin problemas.

  • ✅ 100 usuarios concurrentes gratis cada mes
  • ✅ Cifra el tráfico de red de extremo a extremo
  • ✅ Oculta las IPs reales de los jugadores (anti-DDoS)
🛋️
La Sala de Espera

Unity Lobby

Crea salas públicas o privadas. Muestra lista de partidas activas con filtros (mapa, modo de juego, contraseña), número de jugadores conectados y pasa el Join Code de Relay de forma transparente.

  • ✅ Búsqueda automática de partidas disponibles
  • ✅ Datos personalizados en sala (nivel, mapa, tiempo)
  • ✅ Gestión de expulsiones y transfer de host
🎙️
Voz Espacial 3D

Unity Vivox

El mismo motor de chat de voz que usan Fortnite, Valorant y Rainbow Six Siege. Añade chat de voz 3D posicional (escuchas a tu amigo más fuerte si se acerca a tu personaje) con solo 2 líneas de código.

  • ✅ Gratis hasta 5.000 usuarios concurrentes
  • ✅ Audio 3D posicional realista
  • ✅ Transcripción de voz a texto y filtros de toxicidad

Las Últimas Actualizaciones de Unity: El Fin del Dolor

Unity 6 ha puesto un foco gigante en arreglar todo lo que los desarrolladores odiaban del multijugador. Si no has visto estas novedades, prepárate para ahorrarte cientos de horas de frustración.

⭐ LA NOVEDAD MÁS AMADA DE UNITY 6

Multiplayer Play Mode (MPPM): 4 Jugadores en el Editor a la Vez

Antes de Unity 6, probar un juego multijugador era una tortura china: tenías que cambiar una línea de C#, darle a File > Build and Run, esperar 3 minutos a que compilase el ejecutable .exe, abrirlo en una ventana secundaria y luego darle a Play en el Editor.

Con Unity 6 MPPM: Abres hasta 4 jugadores virtuales independientes directamente dentro del Editor. Cada uno tiene su propia vista, sus propios inputs y su propio perfil sin compilar ni un solo archivo. ¡Das a Play y en 1 segundo estás testeando con 4 clientes!

⏱️ Ahorro de tiempo: De 3 minutos por cambio a 1 segundo
Editor Main (Host - P1)
Virtual Player 2 (Client)
Virtual Player 3 (Client)
P1: Servidor / Host
🧙‍♂️
🧝‍♀️
P2: Cliente Virtual
🧝‍♀️
🧙‍♂️
🧭

Multiplayer Center

Una nueva ventana en el menú (Window > Multiplayer > Multiplayer Center) que analiza tu proyecto y te guía paso a paso según tu género: te sugiere qué paquetes instalar, cómo configurar UGS y diagnostica errores de red antes de compilar.

⚡

Autoridad Distribuida (Distributed Authority)

Nueva modalidad en Netcode for GameObjects que permite a los clientes tener control directo y suave sobre sus objetos con validación comunitaria, eliminando la sensación de lag en cooperativos sin la sobrecarga de un servidor pesado.

📊

Network Profiler 2.0

Analizador de tráfico en tiempo real. Ves exactamente cuántos bytes consume cada NetworkVariable, qué RPC se está enviando con demasiada frecuencia y qué objeto está provocando picos de lag en la gráfica.

🌪️

Netcode for Entities (DOTS) Oficial

Para juegos masivos. Si tu juego necesita 10.000 naves espaciales o balas sincronizadas a 120 FPS sin saturar la CPU, Netcode for Entities usa el Data-Oriented Technology Stack de Unity 6 para un rendimiento insuperable.

Ejemplos de GitHub: Clona, Dale a Play y Aprende

No hay mejor forma de aprender que tocar un proyecto real que ya funciona. Aquí tienes los mejores repositorios oficiales de Unity y de la comunidad, listos para descargar y trastear sin coste alguno.

🚀 Guía Express: Cómo Probar Cualquier Proyecto de GitHub en 3 Pasos

1

Clona el Repositorio

Abre tu terminal o GitHub Desktop y clona el repo en tu carpeta de proyectos.

git clone https://github.com/Unity-Technologies/com.unity.multiplayer.samples.coop.git
2

Abre con Unity Hub

En Unity Hub haz clic en Add project from disk y selecciona la versión recomendada (Unity 2022 LTS o Unity 6).

3

Abre la Escena "Startup"

Busca en Assets/Scenes/Startup.unity, dale al botón Play y selecciona Host para empezar a jugar.

Activos Gratuitos de la Asset Store para Tu Juego Online

No te quedes atascado modelando personajes o dibujando interfaces desde cero. Estos activos 100% gratuitos tienen licencia comercial y son ideales para prototipar o publicar tu primer juego multijugador.

💡

El Error #1 de Todo Principiante: ¡Dos Cámaras y Dos AudioListeners!

Cuando spawneas dos personajes con el prefab de Starter Assets, ambos tienen una cámara activa y un AudioListener. Unity lanzará una alerta roja en la consola y tu pantalla parpadeará como loca.

Solución infalible en 2 líneas de C#: En tu script del personaje, añade:

if (!IsOwner) { GetComponentInChildren<Camera>().gameObject.SetActive(false); GetComponentInChildren<AudioListener>().enabled = false; }

¡De esta manera solo mantienes activa la cámara y los oídos de tu propio personaje!

El Jargon Buster: Términos de Red Explicados con Humor

¿Escuchas palabras raras como "Jitter", "Host Migration" o "Lag Compensation" y sientes que te están hablando en klingon? Aquí tienes las definiciones más claras del universo.

¿Qué Arquitectura Multijugador Necesita Realmente Tu Juego?

Responde estas 3 preguntas rápidas sobre tu proyecto y nuestro algoritmo te dirá exactamente qué tecnología de Unity debes usar para no perder tiempo ni dinero.

🧙‍♂️

Descubre Tu Stack Multijugador Ideal

Te diremos si necesitas Host+Relay, Servidor Dedicado, NGO o Netcode for Entities.

Preguntas Frecuentes sobre el Multijugador en Unity

¡No! El nivel gratuito de Unity Gaming Services (UGS) es sumamente generoso. Te ofrece hasta 100 usuarios concurrentes (CCU) de forma gratuita cada mes tanto en Relay como en Lobby. Para un juego indie nuevo o una demo, esto cubre perfectamente miles de jugadores jugando en diferentes momentos del día sin pagar ni un solo céntimo. Solo pagas si tu juego se convierte en un éxito masivo que supera ese límite simultáneo.

Netcode for GameObjects (NGO) es la solución oficial de Unity: viene integrada de forma nativa en el motor, tiene soporte directo con Unity 6 (Multiplayer Play Mode, Multiplayer Center), no requiere librerías externas de terceros y se integra transparentemente con UGS (Relay, Lobby, Vivox). Photon Fusion es excelente pero tiene planes de pago más costosos para indies. Mirror es una gran opción comunitaria, pero NGO es actualmente el estándar con mayor soporte y futuro en Unity.

La respuesta honesta de cualquier dev experimentado es: "Hacer multijugador un juego ya terminado de un solo jugador es como convertir un coche diésel en un submarino nuclear". Es mucho mejor diseñar con multijugador en mente desde el principio (pensando en qué variables son de red y separando la entrada del usuario de la lógica del servidor). Sin embargo, con NGO y componentes como NetworkTransform, puedes añadir sincronización a mecánicas sencillas mucho más rápido que antaño.

Te recomendamos encarecidamente utilizar Unity 6 (o como mínimo Unity 2022.3 LTS). Con Unity 6 dispondrás de Multiplayer Play Mode (MPPM), que te ahorrará semanas de tiempo al poder testear hasta 4 clientes dentro del propio editor sin necesidad de crear builds ejecutables constantes.