馃幃 RtcParty.js: Conectividad WebRTC para Videojuegos Multijugador en JavaScript
RtcParty.js es un m贸dulo ligero en JavaScript que facilita el manejo de conexiones WebRTC basadas en datos, pensado especialmente para videojuegos multijugador, pero 煤til para cualquier aplicaci贸n que requiera comunicaci贸n P2P eficiente.
Este m贸dulo encapsula toda la l贸gica de se帽alizaci贸n, conexi贸n, sincronizaci贸n de estados y comunicaci贸n en red, permitiendo que te concentres en lo m谩s importante: el juego.
馃П Niveles de uso
Este documento est谩 organizado en orden de mayor a menor nivel de abstracci贸n. Si solo quieres hacer funcionar una partida multijugador con lobby y lista de jugadores, empieza desde aqu铆. Si necesitas m谩s control o tienes casos especiales, puedes ir bajando a los niveles inferiores.
馃敐 1. RTC.RTCMultiplayer(...)
– Soluci贸n completa con interfaz de usuario
Esta funci贸n implementa todo lo necesario para una experiencia multijugador:
-
Pantalla de bienvenida
-
Ingreso de nombre
-
Selecci贸n de tipo de conexi贸n: p煤blica, privada, local o QR
-
Lobby con lista de jugadores, 铆conos, selecciones y estado de "listo"
-
Disparo autom谩tico del inicio cuando todos est谩n listos
Ideal para:
Juegos casuales, prototipos r谩pidos, experiencias multijugador completas.
Ejemplo:
馃帹 Estilo visual para
RTC.RTCMultiplayer
La interfaz visual generada por RTC.RTCMultiplayer puede personalizarse f谩cilmente. El sistema ya incluye clases de CSS para las distintas pantallas y elementos de la interfaz.
Aqu铆 tienes un conjunto de estilos base que puedes usar como punto de partida para integrar con el dise帽o de tu juego:
/* Administra la pantalla de bienvenida */
#RTCMultiplayerltiplayer.splash {}
/* Pantalla para ingresar el nombre */
#RTCMultiplayerltiplayer.requestName {}
/* Pantalla para elegir tipo de conexi贸n */
#RTCMultiplayerltiplayer.menu {}
/* Pantalla para escribir el nombre de la sala privada */
#RTCMultiplayerltiplayer.requsetRoom {}
/* Pantalla de lobby (estilo libre, personaliza aqu铆) */
#RTCMultiplayerltiplayer.lobby {
/* puedes agregar estilos como display:grid, borders, etc. */
}
/* Estilo base para campos de entrada */
#RTCMultiplayerltiplayer input {}
/* Estilo base para botones */
#RTCMultiplayerltiplayer button {}
#RTCMultiplayerltiplayer button.Scan {}
#RTCMultiplayerltiplayer button.changeName {}
/* Indicador visual para el bot贸n enfocado (煤til para teclados o TV remotos) */
#RTCMultiplayerltiplayer button:focus::after {}
馃搶 Recomendaciones
Todos los estilos est谩n encapsulados dentro del ID
#RTCMultiplayerltiplayer
, lo que facilita su integraci贸n sin afectar el resto de tu UI.Puedes sobrescribir cualquier clase agregando tus propios estilos al final de tu archivo CSS.
Si usas rutas personalizadas para las im谩genes (
scan.png
,user.png
,selector.png
,PachangaLogo.png
), aseg煤rate de ajustar las URLs seg煤n tu estructura de proyecto.
馃柤️ ScreenShots
馃搧 Archivos
https://drive.google.com/drive/folders/1bqa7436mbJoTJgtpsoaVaz4c204EyJuz?usp=sharing
馃寪 2. RTC.roomDealer(...)
– Conexi贸n autom谩tica v铆a WebSocket
Permite conectar autom谩ticamente a los jugadores en una sala, usando un servidor WebSocket para se帽alizaci贸n. Internamente utiliza RtcParty
.
Ideal si ya tienes una interfaz personalizada pero quieres evitar manejar ofertas y respuestas manualmente.
馃 3. RTC.localPlayer(...)
– Conexi贸n por c贸digos QR (sin servidor)
Permite que los jugadores se conecten entre s铆 localmente usando WebRTC puro. Utiliza c贸digos QR para compartir la informaci贸n de conexi贸n (ofertas/contraofertas).
Requiere las librer铆as:
-
jsQR.min.js
-
qrcode.js
-
coloredQR.js
馃И 4. RTC.singlePlayer(...)
– Modo sin red
Modo de operaci贸n sin conexi贸n para pruebas o juegos de un solo jugador. Ejecuta localmente todos los eventos como si estuviera en red.
馃暩️ 5. RTC.RtcParty(...)
– Red P2P en malla
Conecta m煤ltiples jugadores en una red de malla usando WebRTC. Cada jugador comparte sus conexiones con los dem谩s.
Permite:
-
Invitar jugadores con
invite(id)
-
Aceptar conexiones con
acceptInvite(id, offer)
-
Enviar mensajes con
commit(data, [targets])
-
Escuchar eventos como
onGuest
,onData
, etc.
Ideal si quieres manejar la l贸gica de conexi贸n directamente, pero con soporte multicliente.
馃敡 6. RTC.RTC(...)
– Conexi贸n punto a punto b谩sica
Nivel m谩s bajo: conexi贸n entre dos puntos usando WebRTC. Es necesario encargarse manualmente de la negociaci贸n de ofertas y respuestas.
Ejemplo de uso:
馃棧️ ¿Qu茅 opci贸n deber铆a usar?
Necesidad | Funci贸n recomendada |
---|---|
Quiero todo listo con interfaz visual | RTC.RTCMultiplayer |
Tengo mi propia interfaz pero quiero que se conecten f谩cil | RTC.roomDealer |
Quiero jugar en local sin servidor | RTC.localPlayer |
Quiero simular red sin red real | RTC.singlePlayer |
Quiero controlar conexiones entre varios usuarios | RTC.RtcParty |
Solo necesito conectar dos usuarios directamente | RTC.RTC |
No hay comentarios.:
Publicar un comentario