[en] The main objective of this project is to equip an Android videogame with the ability of connecting multiple remote users so they can play with each other in real time. To accomplish this, a complete system that enables communication between Android devices over the network has been developed. Basically, this system can be divided into three parts: a client, a server and a communication protocol. The client is in the application. Its main role is to send the user's requests to the server and display the information the server sends to the device. The server acts as a meeting point for users who want to play against each others and respond to all requests sent by connected clients. It manages all the games that are being played. The communication protocol indicates which messages should be exchanged between the client and the server for the transmission of information through the network. Google provides a system called Google Play Services. This allows the mulplayer game developer focus exclusively on the client side because the servers and their functionality are provided by Google. This project has been dispensed with Google servers to have the opportunity to understand the challenges posed by the multiplayer games. In this respect, our platform makes use of a prediction system that keeps synchronized players and server during a game. This system reduces the number of information packets that are exchanged. The entire system operates under the TCP and UDP protocols. The first is used for the exchange of information during the navigation through the application (connection, disconnection, creation of a game, joining a game ...). This is because it's necessary to establish the connection to the server. Meanwhile, the second is used for the development of games to secure a quick communication.

[es] El objetivo principal de este proyecto es dotar a un videojuego desarrollado para Android de la posibilidad de conectar a varios usuarios en un mismo lugar para que puedan jugar entre ellos en tiempo real. Para llevarlo a cabo, se ha desarrollado un sistema completo que permite la comunicación entre dispositivos Android a través de la red. Básicamente, este sistema se puede dividir en tres partes: un cliente, un servidor y un protocolo de comunicación. El cliente se encuentra dentro de la aplicación. Su papel principal es el de enviar las peticiones que el usuario realice al servidor y mostrar la información que el servidor envíe al dispositivo. El servidor actúa como punto de encuentro entre los usuarios que deseen jugar una partida contra otros usuarios y responderá a todas las peticiones que envíen los clientes que estén conectados. Además, gestiona todas las partidas que se estén jugando. El protocolo de comunicación indica cuáles son los mensajes que deben intercambiarse entre cliente y servidor para la transmisión de información a través de la red. Google proporciona una plataforma denominada Google Play Services que permite que el programador de juegos multijugador se concentre exclusivamente en la parte del cliente, pues los servidores y su funcionalidad son suministrados por Google. En este proyecto se ha prescindido de los servidores de Google para, precisamente, tener la oportunidad de entender con profundidad los desafíos planteados por los juegos multijugador. En este sentido, se ha desarrollado un sistema de predicción que mantiene sincronizados a los jugadores y al servidor durante el curso de una partida. Este sistema rebaja el número de paquetes de información que se intercambian. Todo el sistema funciona bajo los protocolos TCP y UDP. El primero se emplea para el intercambio de información durante la navegación en la aplicación (conexión, desconexión, crear una partida, unirse a una partida…) ya que para este caso es necesario el establecimiento de la conexión con el servidor. Mientras, el segundo se emplea durante el desarrollo de las partidas dado que es necesario que la comunicación sea rápida.