Este proyecto describe el desarrollo de un videojuego multijugador utilizando la arquitectura cliente-servidor. Explica conceptos como Processing, sockets y la arquitectura cliente-servidor. Luego detalla el código del servidor y cliente para implementar un juego de laberinto multijugador donde los clientes se comunican a través de un servidor central para coordinar sus movimientos y posiciones en el mapa. Concluye que esta arquitectura permite una comunicación eficiente entre múltiples clientes y servidores para juegos en línea
Desarrolo de un videojuego multijugador usando arquitectura Cliente-Servidor
1. UNIVERSIDAD NACIONAL DE TRUJILLO
FACULTAD DE CIENCIAS FISICAS Y MATEMATICAS
ESCUELA ACADÉMICO PROFESIONAL DE INFORMATICA
DESARROLLO DE UN VIDEOJUEGO MULTIJUDADOR
USANDO ARQUITECTURA CLIENTE – SERVIDOR
ALUMNOS:
Luis Visitación, Jhonatan Telmo
García Vergara, Cristhian Eduardo
PROFESOR:
Díaz Pulido, Arturo
TRUJILLO – PERÚ
2018
2. INDICE
RESUMEN ......................................................................................................................... 3
INTRODUCCIÓN………………………………………………………………………… 4
REALIDAD PROBLEMÁTICA........................................................................................ 5
MARCO TEORICO ........................................................................................................... 6
1. Processing......................................................................................................................... 6
2. Arquitectura Cliente-Servidor........................................................................................ 7
3. Sockets ........................................................................................................................ 8
INGENIERIA DEL PROYECTO.................................................................................... 10
Código con su respectiva explicación................................................................................ 10
CONCLUSIONES...............................................................................................................19
BIBLIOGRÁFIA ................................................................................................................20
3. RESUMEN
El presente proyecto trata de llevar a cabo el desarrollo para un videojuego utilizando
arquitectura cliente-servidor. En el informe se explicará sobre el caso de estudio
especificado como también de temas que se engloban en el marco teórico, ya que es
necesario darlas a conocer para así lograr un mayor entendimiento para el público en
general.
4. INTRODUCCION
Los videojuegos forman parte de esta cultura digital, principalmente como medios de
entretenimiento, sin embargo, debido al avance tecnológico, los videojuegos también
son considerados medio de comunicación enfocados al entretenimiento individual o
colectivo, permitiendo originar comunidades virtuales. Los videojuegos son medios que
a pesar del paso de los años han tenido la preferencia en el publico infantil y juvenil. No
son indispensables en la vida de jóvenes y niños, pero estos los han hecho parte
importante de sus vidas como una fuente de entretenimiento, debido a que les brindan
la sensación de experiencia que difícilmente tendrán en la vida real.
La evolución de la historia de los videojuegos llego en el mejor momento, desde el
comienzo de siglo hasta hoy en día los juegos mejoraron en todos los sentidos posibles
y así llego las siguientes generaciones. En la actualidad el tamaño de la industria de los
videojuegos moderna puede superar las expectativas de los hombres que los crearon,
pero los videojuegos van a seguir creándose como siempre inspirándose con la historia
y las culturas, con la imaginación, la tecnología para dar historias y retos que desafíen a
las siguientes generaciones sim importar en lo que se convierta.
El presente proyecto será crear un videojuego de un laberinto, un juego simple y
divertido, donde vamos a enlazar dos computadoras usando arquitectura cliente-
servidor y así poder jugar en línea y entretener a los usuarios.
5. REALIDAD PROBLEMÁTICA
En los últimos años las perspectivas de futuro son los juegos online más que nunca. Ya
que forma parte del pasado, el hecho de fabricar un juego para venderlo sin más.
Ahora los juegos se van actualizando periódicamente y con acceso a través de la nube,
y esto supone importantes oportunidades, pero también desafíos para los fabricantes.
6. MARCO TEORICO
1. Processing
Es un lenguaje de programación orientado a diseñadores que no tienen
necesariamente que saber programar para usarlo creado por Ben Fry y Casey Reas.
Pensado especialmente para proyectos multimedia de diseñadores audiovisuales y
como herramienta alternativa al software propietario, ya que se distribuye con
licencia GNU GPL.
Uno de los objetivos declarados de Processing es el de actuar como herramienta
para que artistas, diseñadores visuales y miembros de otras comunidades ajenos al
lenguaje de la programación, aprendieran las bases de la misma a través de una
muestra gráfica instantánea y visual de la información.
Processing está basado en java por lo que toda la sintaxis es exportada a applets
Java, también se puede usar JavaScript o incluso Android para ejecutar las
creaciones en aplicaciones móviles.
2. Arquitectura Cliente-Servidor
La arquitectura cliente-servidor modelo de diseño de software en el que las tareas
se reparten entre los proveedores de recursos o servicios, llamados servidores, y los
demandantes, llamados clientes. Un cliente realiza peticiones a otro programa,
el servidor, quien le da respuesta. Esta idea también se puede aplicar a programas
que se ejecutan sobre una sola computadora, aunque es más ventajosa en un
sistema operativo multiusuario distribuido a través de una red de computadoras.
En esta arquitectura la capacidad de proceso está repartida entre los clientes y los
servidores, aunque son más importantes las ventajas de tipo organizativo debidas
a la centralización de la gestión de la información y la separación de
responsabilidades, lo que facilita y clarifica el diseño del sistema.
7. La separación entre cliente y servidor es una separación de tipo lógico, donde el
servidor no se ejecuta necesariamente sobre una sola máquina ni es
necesariamente un sólo programa. Los tipos específicos de servidores incluyen los
servidores web, los servidores de archivo, los servidores del correo, etc. Mientras
que sus propósitos varían de unos servicios a otros, la arquitectura básica seguirá
siendo la misma.
Los dos componentes del paradigma son:
Cliente: aplicación que inicia la comunicación, es dirigida por el usuario.
Servidor: es quien responde a los requerimientos de los clientes, son
procesos que se están ejecutando indefinidamente.
Los procesos clientes son más sencillos que los procesos de los servidores,
los primeros no requieren de privilegios de sistemas para funcionar, en
cambio los procesos servidores sí.
Los usuarios cuando quieren acceder a un servicio de red, ejecutan un
software cliente. El diseño de los servidores debe ser muy cuidadoso, debe
incluir código para la manipulación de:
Autenticación: verificar la identidad del cliente.
Seguridad de datos: para que estos no puedan ser accedidos
inapropiadamente.
Privacidad: garantizar que la información privada de un usuario, no sea
accedida por alguien no autorizado.
Protección: asegurar que las aplicaciones no monopolicen los recursos del
sistema.
Autorización: verificar si el cliente tiene acceso al servicio proporcionado por
el servidor.
La mayoría de las comunicaciones punto-a-punto en las redes (incluida
Internet), están basadas en el modelo Cliente/Servidor. Desde el punto de
vista Internet/Intranet, se tendría:
Un servidor es un ordenador remoto - en algún lugar de la red – que
proporciona información según petición.
Un cliente funciona en su ordenador local, se comunica con el servidor
remoto, y pide a éste información.
El servidor envía la información solicitada.
Un único servidor típicamente sirve a una multitud de clientes, ahorrando a
cada uno de ellos el problema de tener la información instalada y almacenada
localmente.
8. 3. Sockets
Normalmente, un servidor se ejecuta en una máquina específica y tiene un socket
asociado a un número de puerto específico. El servidor simplemente espera a la
escucha en el socket a que un cliente se conecte con una petición.
El cliente conoce el nombre de la máquina sobre la que está ejecutándose el
servidor y el número de puerto al que está conectado. Solicitar una conexión
consiste en intentar establecer una cita con el servidor en el puerto de la máquina
servidora.
Si todo va bien, el servidor acepta la conexión. Pero antes, el servidor crea un nuevo socket
en un puerto diferente. Es necesario crear un nuevo socket (y consecuentemente un
número de puerto diferente) de forma que en el socket original se continúe a la escucha de
las peticiones de nuevos clientes mientras se atiende a las necesidades del cliente
conectado. En el cliente, si se acepta la conexión, el socket se crea satisfactoriamente y se
puede utilizar para comunicarse con el servidor.
Un socket es el extremo final de un enlace punto-a-punto que comunica a dos programas
ejecutándose en una red.
Los sockets siempre están asociados a un número de puerto que es utilizado por TCP para
identificar la aplicación a la que está destinada la solicitud y poder redirigírsela.
9. INGENIERIA DEL PROYECTO
I. Arquitectura
La arquitectura de red más utilizada es la arquitectura llamada TCP/IP, que se
basa en el modelo de red teórico OSI. Esta arquitectura toma su nombre del
protocolo de transporte TCP y del protocolo de red IP. Al ser la arquitectura de
red en la que se basa Internet, otras redes que se conectan a ella también
emplean la misma arquitectura.
El modelo TCP/IP se divide en cuatro niveles, de los que nos interesan los tres
niveles superiores (de menor a mayor):
Nivel de Interred; Su función es la encaminar los paquetes de datos hasta
su destino final. Utiliza un sistema de direccionamiento que identifica de
forma única a cada dispositivo de comunicaciones llamado dirección IP.
Nivel de transporte; Es el encargado de establecer el canal de
comunicaciones extremo a extremo. Dispone de dos protocolos: TCP y
UDP.
TCP es un protocolo orientado a conexión, es decir, espera confirmación
de cada unidad de datos que envía. Debido a ello emisor y receptor deben
establecer una conexión antes de empezar a enviarse datos deben cerrarla
después de terminar la comunicación. Funciona análogamente como un
servicio de telefonía.
UDP es un protocolo no orientado a conexión, sin garantía de entrega del
mensaje, pero más rápido que TCP. Por lo tanto, no es necesario establecer
una conexión entre emisor y receptor.
Nivel de aplicación; Es el nivel más alto del modelo TCP/IP y lo forman las
aplicaciones que ofrecen sus servicios al usuario o al sistema dónde están
instaladas. Ejemplos de protocolos de este nivel son HTTP, FTP o SSH.
10. CODIGO CON SU RESPECTIVA EXPLICACION
1. CLASE SERVIDOR
Inicializamos todas las variables incluyendo los clientes que se van a conectar.
Iniciamos el servidor en el puerto 12345
11. Hacemos la conexión con los clientes y leemos los datos que envían (coordenadas x y)
Enviamos los datos desde el servidor al cliente
12. 2. CLASE CLIENTE
Iniciamos el servidor y el cliente
Creamos la matriz que define los bloques y el espacio libre en el mapa
13. Inicializamos el cliente conectado a través del ip local al puerto 12345
Le damos valores a los parámetros del jugador(posicionX,posicionY,velocidad)
Llamamos a los métodos para validar los movimientos y colisiones
Enviamos las coordenadas del cliente activo al servidor.
Recibimos las coordenadas de nuestro oponente desde el servidor para pintar su
ubicación en la pantalla.
14. Pintamos todos los ceros de la matriz con una imagen de bloque.
Creamos la clase jugador con 3 parámetros (x,y,velocidad)
El método actualizar pinta la ubicación del cliente en el mapa
El método parar detiene el movimiento al encontrarse con un bloque en su camino
15. Creamos una función para enviar datos con las coordenadas x y
A través de eventos por teclado determinamos los movimientos que hacemos.
CONCLUSIÓNES
Mediante el presente informe del PROYECTO del curso de Teleprocesamiento se escogió
el tema de un “Desarrollo de un sistema multijugador usando arquitectura Cliente-
Servidor”.
La conexión de varios clientes a uno o varios servidores es posible a través de puertos
en internet, contribuyendo a una comunicación eficaz entre los mismos.
El tiempo de respuesta que hay por petición de respuesta es ínfimo, ideal para su uso
en juegos en línea o servicios de mensajería.
Los videojuegos online desarrollan en sus usuarios competitividad y más
entretenimiento, esto es posible gracias a esta arquitectura.