net_join_game()

net_join_game(<nombre de la partida>, <OFFSET estructura>, <SIZEOF(estructura)>)

Retorna:

Número de jugador dentro de la partida (0, 1, 2, ...). Si se produce un error, se devuelve un número negativo, siendo estos los códigos de error existentes:

  -1 : Conexión abortada por el usuario.
  -2 : No se pudo inicializar la conexión.
  -3 : El número de jugadores no coincide.
  -4 : Se produjeron errores de sincronismo.

Descripción:

Las funciones de red son de un nivel extremadamente avanzado, por lo que pueden resultar muy complejas de entender para usuarios que no tengan bastante experiencia en programación.

En primer lugar debe inicializarse la estructura global predefinida net con los parámetros que definen el tipo de conexión que debe establecerse.

Entonces, una llamada a la función net_join_game() bastará para crear una nueva partida o para unirse a la misma (si esta ya estuviera creada).

El nombre de la partida (un literal, como "MiPartida"), sirve únicamente para que un sólo juego pueda ejecutar varias partidas simultáneamente en una sola red local. Diferenciando a cada una de las mismas de esta forma.

A partir de ese momento todos los equipos que se hayan conectado a la partida enviarán y recibirán datos de los demás de forma automática, a través de la estructura indicada como parámetro.

La estructura de datos.

Esta debe ser una estructura global del programa con tantos registros como jugadores deban conectarse simultáneamente.

En los campos de esta estructura se podrán leer y escribir los datos enviados; cada jugador debe introducir sus valores en su registro. El número de registro que le corresponde a cada jugador es el devuelto por esta función.

El sistema enviará automáticamente su registro a los demás jugadores, y los registros de los demás jugadores a este.

La estructura predefinida net

En esta estructura se establecen los parámetros que definen el tipo de conexión. Los campos de esta estructura se resumen a continuación.

net.device - Dispositivo de conexión (1-IPX, 2-Cable serie o 3-Módem).

net.com - Nº de dispositivo COM, de 1 a 4 (sólo para serie y módem).

net.speed - Velocidad (en baudios), hasta 115000 (sólo para serie y módem).

net.number - Número de teléfono (sólo módem), por ejemplo net.number="913040622";.

net.init - Cadena de inicio del módem, por ejemplo net.init="ATZ";.

net.mode - 0 o 1 según sea pulsos o tonos (también sólo para el módem).

net.server - Indica si es el servidor (sólo lectura, no se debe modificar).

net.max_players - Numero máximo de jugadores, de 2 a 16 (debe coincidir con el número de registros de la estructura global).

net.num_players - Numero actual de jugadores, de 1 a 16 (se pueden ir conectando y desconectando jugadores en cualquier momento).

Cuando la conexión se realiza por cable serie o por módem únicamente podrán conectarse 2 jugadores.


Es muy importante que el número de registros de la estructura utilizada para el traspaso de datos tenga tantos registros como los indicados en net.max_players.

Por ejemplo, si se crea un juego en el que el número máximo de jugadores sean 8, y la información que deben pasarse los jugadores es únicamente sus coordenadas (x,y), entonces se podría hacer como se indica en el siguiente programa (suponiendo una conexión IPX para una red local).

Programa ejemplo:
PROGRAM ejemplo_net_join_game;

GLOBAL
  STRUCT jugador[7] // 8 jugadores como máximo (de 0 a 7).
    x,y;
  END

  id_red;

BEGIN

  net.device=1;
  net.max_players=8; // Se indica aquí el número de registros.

  // ...

  id_red=net_join_game("xxx",OFFSET jugador, sizeof(jugador));

  IF (id_red<0)

    // Se ha producido un error ...

  END

  // El registro de este jugador es "jugador[id_red]"

  jugador[id_red].x=x; // Defino mis campos
  jugador[id_red].y=y;

  FRAME; // Envio / Recepción de datos

  // Ahora hay conectados "net.num_players", y sus datos están en
  // los demás registros de la estructura jugador[].

  // ...

END


Nota: Se puede encontrar más información sobre como estructurar un juego por red en el manual de usuario de DIV Games Studio.


Ver: net_get_games() - STRUCT net