Ultimos temas
Cargando...
jueves, 19 de mayo de 2016

En este segundo tutorial sobre de cómo hacer un juego online multijugador en Game Maker Studio, se aprenderá a cómo saber la cantidad de conexiones o jugadores conectados, empezare mostrando captura de pantallas con los códigos y luego explicare las líneas. Solo trabajaremos con el objeto servidor o obj_servidor es un que ya ha sido creado.


Se declaran tres variables a la cual se le asigna una función a cada una.
1.   La variable socket se le asigna la función network_create_socket(); esta función permite con que socket se va a trabajar en este caso se usa el protocolo TCP, se usa este ya que garantiza que los datos le llegaran al emisor que sería en cliente y le llegaría en el orden que se envía.
2.   La variable servidor se usara para saber si el id del cliente que se espere que se reciba los datos sea el mismo id del servidor, esta variable se va a utilizar en el evento networking.
3.   La variable usuario se usa para crear una lista con la función ds_list_create(); con esa variable vamos a gestionar los usuarios que se conectan al servidor en este caso a visualizar los usuarios usando en todo el proceso las funciones ds_list.


En la siguiente captura de pantalla usara el evento Destroy.

Cuando se destruya el objeto servidor también se destruirá el socket almacenado en la variable socket esto es para evitar dejar el protocolo TCP abierto a hacker en la computadora donde se ejecute el servidor. También se destruirá la lista creada que esta almacenada en la variable usuarios esto ya seria para liberar memoria osea liberar RAM.

En la siguiente captura de pantalla se trabajara en el evento Networking.

En este evento se declara una variable llamada evenid, en estos eventos asíncronos ya sea networking, dialog, HTTP, etc, se genera un ds_map llamado async_load, estos async_loads tienen entradas diferentes dependiendo de que evento se esté usando. En este caso una entrada que se esa en la primera línea es el id del tipo de protocolo que se espera recibir, seguido de eso una sentencia de: si servidor es igual a evenid, ósea si el protocolo del servidor es igual al protocolo del cliente, si no es igual el servidor no gestionara la conexión pero si es igual al protocolo del cliente gestionara la conexión que sería el siguiente código.

Se declara una variable llamada tipo que es la que va  determinar qué tipo de conexión hay por ejemplo, si de conecta un cliente, se desconecta o recibe datos.

En otra sentencia se usa la variable tipo donde: si tipo es igual a un usuario conectado hace el siguiente bloque de código.

Se declara una variable llamada sock donde se le asigna el socket del usuario que se ha conectado con el servidor, el socket del usuario se almacena en la lista que fue creada en el evento Create, se usa de esta manera con la función ds_map_add(id,valor); el id es la variable declarada que se le asigna la creación de la lista en este caso nuestra variable es usuarios y el valor que guardara o agregara la lista usuarios es el socket del cliente.

En la otra sentencia si se desconecta un cliente o usuario se vuelve a declarar la variable sock que se le vuelve asignar el valor del socket del cliente, y, se crea otra variable llamada index que buscara en la lista usuarios el socket del cliente que se a desconectado, una vez que se sabe cual es el socket que se desconectó con la función ds_list_delete(id,valor); se elimina de la lista el socket desconectado, en valor se coloca la variable index que es el que tiene el valor del socket que se eliminara.

Ahora en el evento Draw 

Se declara otra variable llamada clientes que va a contener el tamaño de la lista que en este caso la lista que va a medir va a ser usuarios, luego en mi caso quise que se muestre el valor de los usuarios conectados con letras de color blanco, y, con draw_text(); muestro el valor que contiene la variable clientes.

Haciendo pruebas del proyecto:
Las pantallas de color verde manzana son los clientes la otra ventana es el servidor que tiene el conteo de los usuarios o clientes conectados. Con esto se termina esta parte del tutorial, dejo el enlace de descarga del editable.

1 comentarios:

  1. Gracias por hacer estos tutoriales, me sirven de mucho. Hace poco que pagué por una licencia del Game Maker Studio y ando aprendiendo un poco su lenguaje de código para hacer algún que otro minijuego como hobby.
    En fin, un saludo y gracias otra vez por compartirlo :)

    ResponderEliminar