Edición de «Captura la bandera»

De OpenDataLab
Saltar a: navegación, buscar

Advertencia: No has iniciado sesión. Tu dirección IP será visible públicamente si haces cualquier edición. Si inicias sesión o creas una cuenta, tus ediciones se atribuirán a tu nombre de usuario, junto con otros beneficios.

La edición puede deshacerse. Antes de deshacer la edición, comprueba la siguiente comparación para verificar que realmente es lo que quieres hacer, y entonces guarda los cambios para así deshacer la edición.
Revisión actual Tu texto
Línea 1: Línea 1:
 
Página de las características de la plataforma CTF-UHU
 
Página de las características de la plataforma CTF-UHU
  
== Descripción del proyecto ==
 
El proyecto a desarrollar se puede encajar, principalmente, dentro del proyecto docente del área de de Ciencias de la Computación e Inteligencia Artificial.
 
Éste va a consistir en el desarrollo de una plataforma multiagente donde poner en práctica todas las ideas y algoritmos desarrollados durante los estudios de Grado en Ingeniería Informática.
 
 
En concreto, para la asignatura de Inteligencia Artificial, los alumnos lo usarán para experimentar con los principales algoritmos de búsqueda estudiados.
 
 
Para la asignatura Sistemas Inteligentes, los alumnos podrán desarrollar por completo un agente software, o varios, para poner en práctica los conocimientos aprendidos en la asignatura.
 
 
Sobre la plataforma, se desarrollará en Java. Simulará el juego "Capture the Flag". El servidor será un agente sofware JADE. Recibirá jugadores y simulará las partidas. También se desarrollará un agente gráfico, para ver la partida. La comunicación entre agentes se basará
 
en la biblioteca JADE. La parte gráfica se desarrollará mediante la biblioteca PROCESSING.
 
 
Objetivos:
 
- Estudio y desarrollo de la plataforma base y arquitectura del sistema.
 
 
- Integración con entorno gráfico.
 
 
- Desarrollo de esquemas de programación.
 
 
- Elaboración de algunas prácticas "tipo".
 
 
- Redactar documentación del funcionamiento del sistema.
 
 
- Implantación de la plataforma en la web.
 
 
 
== GitHub ==
 
 
 
https://github.com/Saviatron/Plataforma_CTF_UHU
 
 
 
 
== Vídeo funcionamiento ==
 
 
 
[https://youtu.be/K_xbm8FObIE Demostración funcionamiento Plataforma]
 
 
 
 
== Versión y estado ==
 
 
 
El proyecto está actualmente en la versión 9.1.
 
 
Esta versión es completamente estable y tiene todas las funcionalidades pensadas inicialmente.
 
 
 
El estado de desarrollo es 99%, ya que siempre será posible seguir añadiendo funcionalidades.
 
  
 
== Implementadas ==
 
== Implementadas ==
 
- Agente Servidor inicial. Se han planteado los comportamientos.
 
 
- Agente Monitor inicial. Se han planteado los comportamientos.
 
 
- Agente Jugador inicial. Se han planteado los comportamientos.
 
 
- El Agente Servidor lee los mapas, se han desarrollado los comportamientos básicos.
 
 
- El Agente Servidor recibe y administra Agentes Monitores.
 
 
- Se ha establecido la conexión entre Agente Servidor y Agente Monitor. Se muestra la partida por pantalla.
 
  
 
- Cambiar de JFrame a processing 2, luego a processing 3. Esto implica que PApplet no hereda de Applet, debido a eso, no se puede incrustar en JFrame.
 
- Cambiar de JFrame a processing 2, luego a processing 3. Esto implica que PApplet no hereda de Applet, debido a eso, no se puede incrustar en JFrame.
Línea 73: Línea 13:
  
 
- Dibujar el mapa en 3D con processing.
 
- Dibujar el mapa en 3D con processing.
 
- Agente Jugador básico funcionando.
 
 
- El Agente Servidor ya recibe y gestiona las acciones de los Agentes Jugadores.
 
  
 
- Realizar procesador de lenguajes (Parser) para comunicar mapa:  
 
- Realizar procesador de lenguajes (Parser) para comunicar mapa:  
 
+
         La gramatica finalmente realizada será:  
         La gramática realizada finalmente para el primer mensaje HandleInform será:
+
         Cada línea: token ,equipo ,posX ,posY \n”
       
+
         token: “entrada” | “jugador” | “muerte” | “base” | “bandera”
        handleInform : orientacion "," vision_parcial "," ancho_mapa "," alto_mapa "," posX "," posY "," num_eq "," mapa "\n" (linea)*
+
         equipo: numero
        orientacion : Boolean
+
         posX: numero
        vision_parcial : Boolean
+
         posY: numero
        ancho_mapa : Integer
+
        alto_mapa : Integer
+
        num_eq : Integer
+
        mapa : ( " " | "#" )*
+
        linea : token "," equipo "," posX "," posY "\n"
+
        token : "entrada" | "jugador" | "muerte" | "base" | "bandera"
+
        equipo : Integer
+
        posX : Integer
+
        posY : Integer
+
 
+
        La gramática realizada finalmente para el mensaje de cada Tick será:  
+
          
+
        tick : (linea)*
+
        linea : token "," equipo "," posX "," posY "\n"
+
         token : "entrada" | "jugador" | "muerte" | "base" | "bandera"
+
         equipo : Integer
+
         posX : Integer
+
         posY : Integer
+
 
+
  
 
- Corregir texturas 2D y 3D.
 
- Corregir texturas 2D y 3D.
Línea 120: Línea 37:
  
 
- Archivo Config externo. (API Properties)
 
- Archivo Config externo. (API Properties)
        servidorConfig.cfg: como su nombre indica, es el fichero de configuración del servidor.
 
       
 
        '''NOMBRE_SERVICIO''' = Nombre del servicio que ofrece el agente Servidor (String)
 
        '''TIPO_SERVICIO''' = Tipo de servicio que ofrece el agente Servidor (String) MAPA= Nombre del fichero .txt del mapa (String)
 
        '''CONTENIDO''' = Nombre del fichero .ini de los elementos iniciales del mapa (String)
 
        '''ORIENTACION_RELATIVA''' = Tipo de orientación de la rotación de la acción. true para relativa, false para absoluta (Boolean)
 
        '''TICKS''' = Cantidad de ticks sin enviar acción para ser desconectado (Integer)
 
        '''DESCONEXION''' = Activar o desactivar la desconexión de los jugadores (Boolean)
 
        '''MAX_JUGADORES_EQ''' = Número de jugadores máximo por equipo. Recomendado ~5 (Integer)
 
        '''NUM_EQUIPOS''' = Número de equipos. Recomendado 2 (Integer)
 
        '''TiempoTick''' = Tiempo entre ticks. Recomendado ~500 (Integer)
 
        '''TASA_RECHAZO''' = Probabilidad de rechazo de la conexion. Recomendado ~0.5 (Integer)
 
        '''VISION_PARCIAL''' = Comunicar tablero completo o solo parte visible (Boolean)
 
        '''ALCANCE''' = Número de casillas al frente que verá el jugador con visión parcial (Integer)
 
        '''ANCHO''' = Número de casillas a los lados que verá el jugador con visión parcial (Integer)
 
 
        monitorConfig.cfg: como su nombre indica, es el fichero de configuración del monitor.
 
       
 
        '''SERVIDOR''' = Indicamos true si queremos conectar al servidor, false si queremos leer una partida de fichero (Boolean)
 
        '''PARTIDA''' = Si queremos leer una partida, indicamos su nombre. Si no, este parámetro será ignorado. "Partida.txt" (String)
 
        '''IS3D''' = Indicamos true si queremos visualizar en 3D, false si queremos visualizar 2D. (Boolean)
 
        '''SOUND''' = Indicamos true si queremos música de partida. (Boolean)
 
  
 
- Desconectar monitor
 
- Desconectar monitor
Línea 191: Línea 86:
 
- Añadir sonidos. Hacer visibles acontecimientos.
 
- Añadir sonidos. Hacer visibles acontecimientos.
  
- Poner botones del Play... etc...
+
== Pendientes ==
  
- Estadísticas. quien es el ganador número de tics jugados número de bajas por equipos.
+
• Poner nombre al equipo.
  
- Lista de jugadores y sus bajas.
+
• Poner botones del Play... etc...
  
- Esquema de pasos de mensajes.
+
• Estadísticas. quien es el ganador numero de ticks jugados numero de bajas por equipos.
  
- Cámara por teclado
+
• lista de jugadores y sus bajas.
  
- Meter carpeta figuras dentro del .jar
+
• Esquema de pasos de mensajes.
  
- Añadir opción 2D-3D en config.
+
• Limpiar, ordenar, optimizar, comentar, depurar código.
  
- Ordenar librerías externas.
+
• Camara por teclado
  
 +
• Cámara por jugadores
  
----
+
• Meter carpeta figuras dentro del .jar
  
- Beta finalizada.
+
• Sombras y luces en processing
  
----
+
• Redimensionar tablero y casillas a pant. Completa
  
 +
• Añadir opción 2D-3D en config.
  
- Poner nombre al equipo. El primer jugador que cambie el nombre del equipo.
+
• Mapa parcial
  
- Opción para deshabilitar sonido del monitor.
+
• Mejorar jugadores
  
- Cámara por jugadores. Más o menos, hay que terminar de cuadrarla por posición. Se elegirá un jugador de la lista de los actuales.
+
Hacer esquema rellenable de jugadores
 
+
- Añadir orientación a jugadores (solo se mueven adelante) .
+
Orientación relativa o absoluta. Se elige en Servidor.cfg. Se ha creado la clase Accion.java. El servidor recibe: int,String (Absoluta) o int,int (Relativa) -> desplazamiento,orientacion
+
Si (desp>1) -> desp=1
+
Relativa: si (!grados%45) -> INCORRECTA
+
Absoluta: si (¡orientacion==[N,NE,E,SE…]) -> INCORRECTA
+
Si (desp==0) -> NULA
+
Si recibe “ABANDONAR” -> Abandonar
+
Orientación inicial -> 0 == N
+
-45º -> 360-45  ,  405º -> 405%360
+
Deberia rotar si desp==0? Por ahora no.
+
Añadir opción de despl=-1 (atrás)?
+
Se podría quitar opción, ya que se diferencia en int o String?
+
- Sombras y luces en processing (Terminar, arreglar fallos)
+
Por ahora no!
+
 
+
- Ficheros partida y estadística siempre abiertos. Si el servidor no acaba como es debido se pierde todo. Ultima voluntad o abrir y cerrar siempre?
+
Java.Util.Logging no sirve, escribe fecha… -> Abrir y cerrar cada vez que escriba.
+
 
+
- Mapa parcial: Solo se le enviará al jugador una porción del tablero en cada tick. Configurable desde ServidorConfig.
+
 
+
- Hacer esquema rellenable de jugadores (jugador esqueleto) PARA PRACTICA IA LABERINTO
+
 
+
- Hacer Agente Jugador con comportamiento basado en Sistema Difuso mediante XFuzzy.
+
 
+
- Agentes Monitores y Agentes Jugadores adaptados a todos los cambios del Agente Servidor.
+
 
+
- Implantación de la Plataforma en Internet. Desarrollo de la Base de Datos inicial.
+
 
+
- Ejecución de la plataforma en la Base de Datos local. Todo correcto, arreglado fallos de finalización.
+
 
+
== Pendientes ==
+
 
+
• Redimensionar tablero y casillas a pant. Completa
+
 
+
• Mejorar jugadores
+
  
 
• Añadir elementos al juego. (Vida, daño, paredes moviles, recursos)
 
• Añadir elementos al juego. (Vida, daño, paredes moviles, recursos)
  
        Vida y daño ya añadidos.
+
• Esquema de clases de cada proyecto y funcionamiento.
 
+
• Hacer figuras con menos detalles -> eficiencia
+
  
 
== Ideas ==
 
== Ideas ==
  
De cara al futuro, aunque la plataforma se ha desarrollado por completo, cumpliendo todos los objetivos propuestos, aún se puede ampliar:
+
Poner nombre al equipo
 
+
• Cabe la posibilidad de desarrollar otro tipo de juego mediante otro tipo de objetos, acciones, agentes…
+
 
+
• Hasta ahora, en la percepción de los agentes jugadores, solo se percibe el tablero y sus objetos. Con el objetivo de desarrollar una plataforma más completa, se podrían añadir otros tipos de percepción, simulando otros tipos de sensores. Por ejemplo, zonas de temperaturas elevadas, de las que podemos percibir las temperaturas. Además, podríamos percibir sonidos de jugadores alejados.
+
 
+
• La plataforma desarrollada hasta ahora funciona por ticks. Gracias a la libertad que nos ofrece JADE mediante el paso de mensajes asíncronos, se podría desarrollar una lógica de juego en tiempo real que no esté marcada por ticks.
+
 
+
• Respecto al tablero, se ha desarrollado con casillas cuadradas. Se podría desarrollar otro tipo de tablero, por ejemplo, hexagonal, o incluso de campo abierto, sin casillas. Por supuesto, cabe la posibilidad de desarrollar un juego en 3D, cuyo tablero incluya diferentes alturas.
+
 
+
== Autoría==
+
 
+
Autor del proyecto: '''Javier Martín Moreno.'''
+
 
+
Tutor del proyecto: '''Gonzalo Antonio Aranda Corral.'''
+
 
+
  
 +
Poner botones del Play... etc...
  
== Firmado ==
+
Estadísticas.
 +
quien es el ganador
 +
numero de ticks jugados
 +
numero de bajas por equipos.
  
--[[Usuario:Javier.martin816|Javier.martin816]] ([[Usuario discusión:Javier.martin816|discusión]]) 11:49 20 jun 2019 (CEST)
+
lista de jugadores y sus bajas.

Por favor, ten en cuenta que todas las contribuciones a OpenDataLab pueden ser editadas, modificadas o eliminadas por otros colaboradores. Si no deseas que las modifiquen sin limitaciones y las distribuyan libremente, entonces no las pongas aquí.
También nos aseguras que tú escribiste esto y te pertenecen de los derechos de autor, o lo copiaste desde el dominio público u otra fuente libre. (véase OpenDataLab:Derechos de autor para más detalles). ¡No uses escritos con copyright sin permiso!

Cancelar | Ayuda de edición (se abre en una ventana nueva)