\subsection{Basado en el lenguaje de programación lógico Prolog}
\subsubsection{Prolog-Scripted Tactics Negotiation and Coordinated Team Actions for Counter-Strike Game Bots}
Este proyecto de investigación consiste en la creación e implementación de un script basado en el lenguaje Prolog dentro de un juego estilo FPS (Disparos en primera persona), con la finalidad de crear diferentes tácticas de comportamiento en un equipo de bots compuesto por agentes. \cite{Prolog-Scripted2016}

La idea fue inspirada principalmente en la observación de tácticas de equipo presentes en torneos reales de Counter-Strike.
Por otro lado, la construcción de este framework está basado en un proyecto anterior hecho por los autores para crear scripts para bots.

El pilar de esta investigación se construye en la premisa de diseñar el framework para utilizar un creador de mapas y así personalizar el comportamiento del bot para mapas nuevos, pues con esto se le entregaría al agente conocimiento necesario del ambiente que le rodea para adquirir una ventaja táctica frente a oponentes humanos.

\subsubsubsection{Desarrollo del razonamiento lógico del agente}
Cada bot contiene dos pilas, una de acciones y otra de tareas. Estas siempre ejecutan el bloque que esta en el tope de la pila. Para que un bot sea capaz de cumplir una tarea de manera exitosa, hará ciertas acciones asociadas a esa tarea con tal de cumplirla. Algunas condiciones causarán que se agreguen o quiten acciones dentro de esta pila. Por tanto, cuando se complete una tarea o una acción, se borrará el bloque  y luego el bot intentará ejecutar la acción o tarea siguiente en la pila.

Uno de los mecanismos de razonamiento utilizado es uno llamado ''Razonamiento de reflejos'', el cual sucede en cada actualización del estado actual del juego, prestando gran apoyo cuando ocurren cambios repentinos en un nivel, como en el ambiente o cuando el bot este siendo atacado. En consecuencia, este mecanismo posee una característica poderosa para agregar nuevas tareas o limpiar la pila de tareas, adaptándose a cada situación.

\subsubsubsection{Tipo de I.A.}
El agente usado en este proyecto es de tipo racional basado en objetivos, con base en un árbol de decisión con instrucciones condicionales.

\subsubsubsection{Planificación de camino}
En los trabajos previos hechos por el autor, se implementó una base de datos que contiene puntos de navegación, con el fin de calcular y planificar el camino que debe seguir al moverse el bot. También se usan los puntos de navegación para tomar decisiones racionales de naturaleza táctica.

\subsubsubsection{Agente omnisciente}
El bot adquiere total conocimiento del mapa, lo que le permite tener una ventaja táctica y así aumentar sus posibilidades para ganar la partida.