Bots em Counter Strike Projecto Geral de AASM 2005/2006.
Transcript of Bots em Counter Strike Projecto Geral de AASM 2005/2006.
Bots em Counter Strike
Projecto Geral de AASM 2005/2006
O Jogo O que é o Half-Life?
http://www.planethalflife.com/
O que é um MOD do Half-Life? Counter-Strike, Team Fortress Classic, Deatmatch
Classic
O que é o Counter-Strike? First-person-shooter Terroristas vs Contra-terroristas Cenários:
(Des)armar bombas Salvar reféns Proteger/assassinar VIPs
2. O Projecto (1\2) Mapas:
do tipo “Bomba”; Equipas:
Desenvolvimento de bots para ambas as equipas: terroristas e contra-terroristas;
Arquitecturas: Exploração de bots com diferentes arquitecturas
(reactiva com estado interno, BDI, etc.); Cooperação:
Trabalho de equipa; Comunicação;
2. O Projecto (2\2)
Tópico adicional: O elemento criativo – emoções, realismo,
aprendizagem, narrativa, etc.; Análise e comparação:
Comparação estatística do desempenho das várias arquitecturas;
Temática: Realismo; estratégias de combate;
formações de grupo; etc.
3. AASM Bot SDK O que é o AASM Bot SDK?
Porquê criar um SDK?
Em que bots se baseou o SDK? Porquê? YaPB (Yet Another POD Bot)
Bastante comportamento Navegação por Waypoints Separação conceptual sensores, actuadores, decisão Engenharia de software
POD Bot Bot original para MODs do Half-Life
4. Como instalar Bots? MODs seguem estrutura de ficheiros bem definida
Metamod Permite correr mais do que um MOD em simultâneo
Instalação do AASM Bot SDK DLL (aasmBot.dll) Ficheiro de configuração (aasmBot.cfg)
Parâmetros do jogo, bots iniciais, etc. Ficheiros de waypoints (‘wptcs16/’ e ‘wptdefault/’)
5. Ciclo de um Bot
modAPI:StartFrame
Bot::main
Bot::think
Bot::preThink
Bot::postThink
Hierarquia de Bots Ciclo de um Bot
+main()#preThink()#think()#postThink()
Bot
TerroristBot CounterTerroristBot
NavigationSampleTBot NavigationSampleCTBot
CommunicationSampleBot CombatSampleBot
ReactiveTBotBdiTBot ReactiveCTBotBdiCTBot
6. API Navegação (1\2) O que são waypoints? Correr exemplo
‘navegação’…
6. API Navegação (2\2) Como funciona a navegação no AASM Bot
SDK?
+setDestination(in destination)+setMoveSpeed(in speed : float)+setSideSpeed(in speed : float)+detectCollision()+handleCollision()
Navigation
+moveToWaypoint(in destinationWaypoint) : bool+update() : bool+setIsAutomaticWaypointNavigation(in isAutomatic : bool)
WaypointNavigation
moveToWaypoint
update
Atingiu destino?
Sim
Não
7. API Comunicação
Existem dois tipos de comunicação: Chat - Flexível, genérico Rádio – Mensagens pré definidas, com
som
Correr exemplo ‘comunicação’…
8. Depuração
Depuração através do .Net Leiam ‘docs/debbuging.htm’
Interface de depuração: debugPrintToServer - Impressão na
consola debugLog – Escrita num ficheiro de log
9. APIs de Combate, Finanças e Visão
Correr exemplo ‘combate’… Primitivas:
Disparar Mudar arma (Des)armar bomba Comprar Etc.