Simulação de Jogos Cooperativos Baseada em

Transcrição

Simulação de Jogos Cooperativos Baseada em
Pontifícia Universidade Católica do Rio de Janeiro Simulação de Jogos Cooperativos Baseada em Decisões de Múltiplos Humanos e Agentes Peter Furtado Dam Relatório Final de Projeto Final de Graduação Centro Técnico Científico ­ CTC Departamento de Informática Curso de Graduação em Bacharelado em Informática Rio de Janeiro, Janeiro de 2010 Peter Furtado Dam Simulação de Jogos Cooperativos Baseada em Decisões de Múltiplos Humanos e Agentes Relatório de Projeto Final, apresentado ao Curso Bacharelado em Informática da PUC‐Rio como requisito parcial para a obtenção do título de Bacharel em Informática. Orientador: Prof. Marcos Vianna Villas Rio de Janeiro, Janeiro de 2010 Resumo Dam, Peter Furtado. Villas, Marcos Vianna. Simulação de Jogos Cooperativos Baseada em
Decisões de Múltiplos Humanos e Agentes. Rio de Janeiro, 2009. 21p. Relatório Final de
Projeto Final - Departamento de Informática. Pontifícia Universidade Católica do Rio de
Janeiro.
Neste trabalho é estudada uma forma de simular um jogo cooperativo que envolva
as decisões tomadas por diversos humanos e agentes. Para isto foi escolhido, como tema
de simulação, o futebol, por se tratar de um jogo em equipe. Além disso, o futebol tem várias
abordagens na área de simulação e tem um grande apelo cultural, o que tende a aumentar o
interesse de usuários no sistema. Na simulação estão sendo levado em conta diversos
atributos (habilidades) dos jogadores, pesando na chance de sucesso de determinadas
ações de acordo com as habilidades relacionadas àquela ação. Com isso pretende-se atingir
um grau maior de realismo. O produto final do trabalho será um simulador básico que
pretende ser usado como serviço por outros sistemas.
Palavras-chave:
simulação, jogos, futebol, multi agente, multi usuário
Abstract Dam, Peter Furtado. Villas, Marcos Vianna. Simulação de Jogos Cooperativos Baseada em
Decisões de Múltiplos Humanos e Agentes. Rio de Janeiro, 2009. 21p. Relatório Final de
Projeto Final - Departamento de Informática. Pontifícia Universidade Católica do Rio de
Janeiro.
In this work we study how to simulate a cooperative game involving decisions made
by several humans and agents. For this soccer was chosen as the simulation theme because
it is a teamwork game. Besides that, soccer has several approaches in the simulation area,
besides having great cultural appeal, which tends to increase the interest of users in the
system. For the simulation several attributes (skills) are considered, which weigh in the
chance of success in certain actions according to the skills related to that action. With this we
intend to achieve a higher degree of reality. The work's final product will be a basic simulator
that will be used as a service by other systems.
Keywords:
simulation, games, soccer, multi agent, multi user
Índice 1
2
3
4
5
6
7
8
9
Introdução ..........................................................................................................................
1.1 Ambiente Computacional ...........................................................................................
1.2 Adequação como Projeto Final ..................................................................................
Estado da Arte ....................................................................................................................
2.1 Qualificação de um jogador através de atributos
......................................................
2.2 Conjunto de Atributos
...............................................................................................
2.2 Decisões .....................................................................................................................
Objetivos ............................................................................................................................
3.1 Objetivos Específicos ..................................................................................................
3.2 Usuários .....................................................................................................................
3.3 Avanço em relação ao estado da arte ........................................................................
Atividades Realizadas ........................................................................................................
4.1 Estudos preliminares ..................................................................................................
4.2 Estudos conceituais e de Tecnologia
........................................................................
4.3 Testes e protótipos para aprendizado e demonstração
............................................
4.4 Método
......................................................................................................................
Projeto e Especificação do Sistema
..................................................................................
5.1 Arquitetura
......................................................................................................
5.2 Motor
....................................................................................................................
5.3 Decisões
..................................................................................................................
5.4 Interação Humana
....................................................................................................
5.5 Saída
.........................................................................................................................
5.6 Casos de Uso
............................................................................................................
5.7 Diagramas de Classes ...............................................................................................
5.8 Diagramas de Seqüência
..........................................................................................
Implementação e Avaliação ...............................................................................................
6.1 Ferramentas auxiliares desenvolvidas
......................................................................
6.2 Comentários sobre implementação
...........................................................................
Considerações Finais
.......................................................................................................
7.1 Aprendizagem ............................................................................................................
7.2 O que faria de diferente
.............................................................................................
7.3 Trabalhos futuros .......................................................................................................
Referências Bibliográficas ..................................................................................................
Anexos
..............................................................................................................................
1
3
3
4
4
9
10
12
12
12
13
14
14
14
14
15
17
17
19
22
24
25
26
29
35
36
37
38
40
40
40
40
43
45
SIMULAÇÃO DE JOGOS COOPERATIVOS BASEADA EM DECISÕES DE MÚLTIPLOS HUMANOS E AGENTES Peter Furtado Dam Matrícula: 0611678 1. Introdução
A simulação é uma área da computação que chama bastante atenção, pois
existem vários estudos nesta área e, quando é bem feita, impressiona pelo grau de
realismo que pode atingir, fazendo com que os usuários se envolvam
profundamente com a experiência proporcionada. A sua implementação quase
sempre envolve muitas fórmulas e contas, além de algoritmos complexos para que
atinja esse maior grau de realismo.
Em alguns casos a simulação se mistura com sistemas de tomada de decisão,
principalmente quando é uma simulação que, em sua natureza, depende de vários
agentes. Isso é bem comum em jogos atualmente, principalmente nos que envolvem
equipes. Nem sempre toda a equipe de um jogo é composta por pessoas reais,
então o sistema precisa ter um sistema de inteligência artificial capaz de preencher
esses lugares, garantindo que essa equipe possa ainda ser completamente
funcional. Uma tendência que vem se apresentando é o surgimento de jogos para
múltiplos jogadores. Portanto, além do sistema ser capaz de interpretar as
informações de decisões tomadas pelo próprio sistema, precisa ter um mecanismo
que gerencie vários usuários tomando as suas próprias decisões independentes.
Este mecanismo capturará todas as informações e as usará para fazer os cálculos
necessários da sua simulação.
O futebol é um tema bastante interessante e explorado em alguns aspectos
na simulação. É um tema clássico para estudos de sistemas multi-agentes por ser,
segundo Moemeng (2004), um problema distribuído de ambiente colaborativo e
competitivo. É colaborativo porque envolve um conjunto de agentes que buscam
obter êxito em uma tarefa através da colaboração entre si, e é competitivo porque
existe um outro conjunto de agentes rivais, onde somente um destes conjuntos pode
sair vitorioso. O conjunto de regras é relativamente bem conhecido pela maioria das
pessoas e envolve um apelo emocional geralmente maior do que outras possíveis
simulações. Em cima desta simulação, é possível criar um conceito de comunidade,
onde pessoas participam da simulação através de uma representação virtual. Uma
pessoa na vida real pode ser representada por um personagem no ambiente virtual,
e, através deste, participa efetivamente tomando decisões por ele a fim de
influenciar o resultado da simulação. Trata-se, então, de um sistema de simulação
‐ 1 ‐ PUC – Rio – Pontifícia Universidade Católica SIMULAÇÃO DE JOGOS COOPERATIVOS BASEADA EM DECISÕES DE MÚLTIPLOS HUMANOS E AGENTES Peter Furtado Dam Matrícula: 0611678 de ambiente futebolístico virtual, onde os personagens (agentes) desta simulação
são inúmeros humanos e computadores. Os personagens se reunirão em equipes,
com a intenção de atingirem o sucesso pessoal, mas que dependerá
necessariamente do sucesso coletivo.
No conjunto de jogos eletrônicos de futebol que existem hoje é possível
destacar alguns tipos de simulação. Alguns permitem que o usuário desenvolva um
personagem e tenha uma carreira, outros se baseiam na equipe inteira, onde o
usuário não tem definido um personagem fixo. Mas nenhum destes simuladores
possui como ponto chave o desenvolvimento das habilidades de um personagem e
na subsequente interação feita pelo usuário interpretando seu personagem com o
sistema.
Este projeto tem como objetivo a simulação de partidas de futebol, onde
múltiplos usuários e jogadores controlados pela máquina (com o apoio de técnicas
de inteligência artificial) tomarão decisões para cada ação executada por seus
personagens. As decisões dos jogadores, aliado às habilidades que desenvolveram
para seus personagens, contribuirão para que a sua equipe seja vitoriosa ao fim da
simulação de uma partida.
Roger Caillois (1961, apud Piccolo, G. M.) classificou os principais elementos
que constituem os jogos humanos, enumerando quatro elementos: agôn, alea,
mimesis e ilinx.
Agôn
são
os
jogos
dominados
fundamentalmente
por
atividades
competitivas, onde o sucesso depende de habilidades previamente adquiridas. Os
esportes são exemplos clássicos de agôn. Alea são, em oposição a agôn, jogos de
"sorte", onde o jogador atua passivamente. Ele não faz uso de habilidades
previamente adquiridas. Mimesis são jogos onde os participantes adotam papéis de
determinados personagens, apropriando-se de uma outra realidade. Um exemplo
claro de mimesis são os jogos RPG (Role Playing Game). Ilinx são jogos onde o
prazer se dá pela perda de percepção do corpo através da busca por vertigem.
Busca-se atingir uma espécie de afastamento súbito da realidade.
Essas definições de Caillois podem ser reconhecidas neste trabalho, com
exceção da Ilinx. O agôn está presente pois um jogador de futebol tem mais
sucesso que outro principalmente pela habilidade que adquire no jogo, mas também
depende de um fator externo, que é a sorte, fazendo-se presente também a alea. O
mimesis é o outro elemento importantíssimo para este trabalho, pois o usuário do
‐ 2 ‐ PUC – Rio – Pontifícia Universidade Católica SIMULAÇÃO DE JOGOS COOPERATIVOS BASEADA EM DECISÕES DE MÚLTIPLOS HUMANOS E AGENTES Peter Furtado Dam Matrícula: 0611678 sistema necessariamente adotará o papel de um personagem, que será o jogador,
técnico ou presidente que o representa no jogo.
O ponto principal do jogo é o agôn, pois o sucesso dos participantes
depende de experiência e habilidades previamente adquiridas. Por isso é importante
quantificar essas habilidades para que cálculos possam ser feitos determinando o
sucesso ou falha de determinada atividade.
Diversos jogos utilizam estes conceitos para fazer simulações esportivas,
mas nenhum permite que uma pessoa interprete um único jogador ao mesmo tempo
em que outras pessoas interpretem outros jogadores.
1.1 - Ambiente Computacional
O sistema foi desenvolvido em Java por vários motivos. Um ponto importante
que pesou na escolha por Java é a facilidade de transformar um código de
aplicação "desktop" em um código web. Com isso espera-se que seja mais fácil
futuramente criar um web service utilizando o código desenvolvido. Outro fator é a
gratuidade dos ambientes de desenvolvimento e produção do Java.
1.2 - Adequação como Projeto Final
A criação deste sistema leva em conta diversas disciplinas aprendidas durante a
graduação. Todas as cadeiras de programação têm papel fundamental, mas vale a
pena ressaltar Programação Distribuída e Concorrente, Programação Orientada a
Objetos e Programação para a Web, que têm aplicação indiscutível neste projeto.
Há também a aplicação de inteligência artificial nas decisões que o simulador
precisará tomar. Também existem diversos conceitos aprendidos durante as
cadeiras de modelagem de sistemas e programação orientada a objetos, com
potencial aplicação de diversos padrões de projeto. No escopo do projeto não há
previsão de utilização de banco de dados, pois os dados estarão persistidos em
outro sistema que enviará os dados para o simulador e receberá o resultado de
volta. Apesar disso, o simulador precisará ser desenvolvido levando em conta que
os sistemas externos a ele persistirão os dados, por isso há uma necessidade de
estruturar os dados de forma coerente, e, para isto, é importante ter um
conhecimento básico sobre banco de dados relacionais.
‐ 3 ‐ PUC – Rio – Pontifícia Universidade Católica SIMULAÇÃO DE JOGOS COOPERATIVOS BASEADA EM DECISÕES DE MÚLTIPLOS HUMANOS E AGENTES Peter Furtado Dam Matrícula: 0611678 2. Estado da Arte
Na seção anterior abordei os tipos de simulação que dizem respeito a este
trabalho. Existem vários trabalhos que também abordam uma ou outra simulação, e
quase todos são jogos. Existe um gênero de jogo chamado “fantasy football” que
aborda uma simulação de partida de futebol. Em quase todos estes jogos o usuário
é um gerente, ou técnico, de um clube e a simulação se dá somente no momento
das partidas. A diferença é que não existe intervenção humana durante a simulação,
ou seja, todas as ações dos jogadores são decididas pela inteligência artificial do
jogo. Basicamente a simulação recebe uma entrada de informações, definidas pelo
usuário, e faz um cálculo para gerar o resultado final. Alguns fazem cálculos para
apenas o resultado, outros fazem a simulação completa, jogada por jogada, para
produzir de forma mais realista esse resultado. As informações quase sempre são
(1) esquema tático, (2) definição de posições dos jogadores e (3) escalação. Para
estas informações não existe uma evolução das habilidades de um personagem
representado pelo jogador, pois são puramente baseadas no conhecimento que o
usuário tem do jogo.
2.1 - Qualificação de um jogador através de atributos
Para podermos avaliar um jogador na questão de habilidade (caracterizado
pelo agôn) é necessário transformar certos fundamentos do futebol em o que
podemos chamar de "atributos". Enquanto uma alta quantidade de atributos é capaz
de definir com mais clareza a capacidade de um jogador, aumenta também a
dificuldade para um usuário analisar um jogador. Por isso é importante fazer um
levantamento de quantos e quais atributos são necessários para definir com boa
clareza a capacidade de um jogador.
O primeiro ponto dessa pesquisa foi avaliar as soluções existentes. Em
ordem crescente de complexidade serão apresentadas as soluções pesquisadas.
A. ELIFOOT (2 ATRIBUTOS)
O Elifoot (2009) tem apenas dois atributos: Performance e Remate. A
Performance é, na verdade, um grupo composto de cinco valores: Força, Estrela,
País, Moral e Físico. A Força varia bastante (de 1 a 100) e é o principal valor que
‐ 4 ‐ PUC – Rio – Pontifícia Universidade Católica SIMULAÇÃO DE JOGOS COOPERATIVOS BASEADA EM DECISÕES DE MÚLTIPLOS HUMANOS E AGENTES Peter Furtado Dam Matrícula: 0611678 compõe a Performance. É o valor que define a habilidade propriamente dita do
jogador e varia lentamente. Temos também a Estrela, que é um valor binário (1 ou
0). É associado aos "grandes craques", mas efetivamente dá uma vantagem
pequena em relação aos jogadores sem Estrela. O País define uma pequena
melhora na Performance caso o jogador esteja atuando em seu país de origem. Já a
Moral tem mais importância que a Estrela e o País, representando o estado
psicológico do jogador. Diferentemente da Estrela, que é um valor que nunca varia,
a Moral varia constantemente. Físico representa o condicionamento físico do
jogador: em início de temporada este valor está no seu máximo (100%) e diminuirá
conforme for jogando consecutivamente, assim como aumentará caso o jogador
descanse. O Remate é o único atributo "técnico" explícito do jogador, representando
a qualidade de chute a gol daquele jogador. Varia também de 1 a 100. Uma outra
característica do jogador é o Comportamento, que se divide em 4 valores, definindo
o grau de violência do jogador em campo.
Contudo, de todos estes atributos, podemos extrair apenas dois que
indiquem as habilidades do jogador: Força e Remate. Apenas dois atributos de
habilidade não são capazes de dar idéia das capacidades do jogador nas várias
tarefas que ele precisa executar durante o jogo, pois, excluindo-se chutes a gol, o
atributo Força sugere que o jogador executa todas as outras tarefas com a mesma
competência.
B. ONLINE FOOTBALL MANAGER (2 ATRIBUTOS)
No Online Football Manager (2009) os jogadores possuem 2 principais
atributos: Ataque e Defesa, que partem de um mínimo de 0. Não existe valor
máximo conhecido para um atributo, mas um jogador extraordinário estaria entre 95
e 100, porém com treinamentos é possível atingir valores acima de 130, por
exemplo. Existe um terceiro atributo que é a média entre Ataque e Defesa. Para um
atacante o atributo determinante é o Ataque, tendo pouca importância o atributo
Defesa. Para um meio-campista o atributo mais importante é a média entre Ataque
e Defesa, ou seja, precisa dos dois atributos altos. Para os defensores e goleiros o
atributo Defesa é o mais importante, sendo que os goleiros nunca possuem mais
que zero no atributo Ataque. Para defensores o atributo Ataque tem alguma
importância, porém não é determinante no seu valor. Novamente, igual ao Elifoot,
encontramos os atributos Físico e Moral. Ambos são atributos percentuais que
‐ 5 ‐ PUC – Rio – Pontifícia Universidade Católica SIMULAÇÃO DE JOGOS COOPERATIVOS BASEADA EM DECISÕES DE MÚLTIPLOS HUMANOS E AGENTES Peter Furtado Dam Matrícula: 0611678 influenciam no rendimento do jogador na partida e têm a mesma importância para
todas as posições. Diferentemente do Elifoot, o Online Football Manager não possui
um atributo técnico explícito (remate), porém já diferencia tarefas ofensivas e
defensivas, agrupando em dois atributos, porém ainda é pouco para termos real
noção das capacidades de cada jogador.
C. HATTRICK (8 ATRIBUTOS)
O Hattrick (2009) é mais complexo que as duas soluções apresentadas até
agora. Apresenta oito habilidades: Resistência, Armação, Finalização, Ala, Goleiro,
Assistências, Defesa e Bola Parada. Esses atributos não cobrem todas as áreas
desejáveis para as habilidades completas de um jogador, além de ter alguns
atributos altamente específicos e outros altamente genéricos, complicando a análise
do jogador, como, por exemplo, o atributo winger, que se aplica somente aos alas e
o atributo passing que se aplica a todos os jogadores. Os valores dos atributos são
adjetivos, como: brilhante, fenomenal, formidável, excelente, boa, razoável, etc. Isso
é um problema, pois implica que o usuário terá que decorar todos esses adjetivos,
complicando uma comparação entre jogadores. Existem 22 adjetivos, ou seja, podese dizer que os atributos variam de 1 a 22.
D. NEW STAR SOCCER (12 ATRIBUTOS)
No New Star Soccer (2009) os jogadores possuem uma quantidade maior de
atributos do que nas soluções apresentadas acima. Estes atributos são agrupados
em quatro grupos: Fundamentos, Técnica, Físico e Tática. No grupo dos
Fundamentos encontramos: Bola Parada (cobrança de falta, escanteio), Chute a
Gol, Cabeceio, Drible, Passe e Desarme. Na Técnica temos: Flair (é difícil encontrar
uma tradução exata, mas a habilidade significa a qualidade e personalidade que o
jogador possui para arriscar jogadas mais ousadas e diferenciadas), Controle de
Bola e Ambos os Pés (significa o quão habilidoso o jogador é com a perna que não
é a sua principal). Na parte física e tática apenas dois atributos cada: Velocidade e
Força no Físico; e assim no Tático: Posicionamento e Visão de Jogo.
Essa quantidade de atributos já é capaz de proporcionar uma boa noção das
qualidades de um jogador, dando ao usuário uma chance de ponderar a respeito
das chances de sucesso que aquele jogador terá ao tentar executar determinada
tarefa. Todos os atributos variam entre valores de 0 a 30.
‐ 6 ‐ PUC – Rio – Pontifícia Universidade Católica SIMULAÇÃO DE JOGOS COOPERATIVOS BASEADA EM DECISÕES DE MÚLTIPLOS HUMANOS E AGENTES Peter Furtado Dam Matrícula: 0611678 E. VIRTUAL MANAGER (18 ATRIBUTOS)
O Virtual Manager (2009) divide os atributos em três grupos: Técnica,
Mentalidade, Físico. Cada grupo possui seis atributos. Para a Técnica temos:
Finalização, Drible, Passe, Desarme, Marcação e Cobrança de Pênaltis. Na
Mentalidade: Coragem, Criatividade, Determinação, Influência (o poder de
influenciar os outros jogadores em campo, essencial para capitães), Moral e
Posicionamento. Finalmente, para o grupo Físico, os atributos são: Aceleração,
Equilíbrio, Preparação Física, Salto, Força e Resistência (quanto tempo o jogador
agüenta sem sentir cansaço). A variação dos atributos não é conhecida, mas em
uma equipe inicial os jogadores tendem a ter atributos entre 0 e 10, os melhores
chegam a 15 ou até mesmo 20. Já nas principais equipes é comum encontrar
jogadores com atributos acima de 100, alguns, em determinados atributos,
ultrapassam 200 pontos. 18 atributos ainda é uma quantidade boa para avaliar um
jogador, mas não fica claro quais os atributos essenciais para cada posição, o que
acaba dificultando um pouco a priorização por atributos. Além disso não existe um
bom parâmetro de comparação, visto que não há limite aparente para os valores
dos atributos, mas, por outro lado, os valores são bem altos, deixando a impressão
de que variações pequenas nos atributos não são tão impactantes.
F. UNIVERSAL SOCCER MANAGER (22 ATRIBUTOS)
O Universal Soccer Manager (2009) é outro que divide os atributos em
grupos: Goleiro, Defensivo, Meio-Campo e Ofensivo. Os grupos resolvem o
problema encontrado no Virtual Manager a respeito de não saber quais atributos
são importantes para as posições. Cada grupo, por mais que tenham atributos
importantes para todas as posições, são cruciais para a posição que dá nome ao
grupo. No grupo Goleiro temos: Agilidade, Salto, Controle Manual (habilidade de
defender e controlar a bola com as mãos), Reflexos, Saída de Gol (habilidade de
sair do gol para interceptar uma bola) e Força. O grupo Defesa é composta por:
Marcação, Desarme, Agressividade, Velocidade, Cabeceio e Antecipação. No MeioCampo: Passe, Criatividade, Drible, Resistência, Bola Parada e Técnica. E,
finalmente, no Ataque temos: Chute a Gol, Finalização (diferentemente de Chute a
Gol, a finalização define a qualidade do jogador para "matar" a jogada, ou seja,
colocar a bola para dentro do gol de qualquer maneira), Drible, Reflexos (é o mesmo
‐ 7 ‐ PUC – Rio – Pontifícia Universidade Católica SIMULAÇÃO DE JOGOS COOPERATIVOS BASEADA EM DECISÕES DE MÚLTIPLOS HUMANOS E AGENTES Peter Furtado Dam Matrícula: 0611678 atributo encontrado no grupo Goleiro), Cabeceio (outro atributo repetido, encontrado
no grupo Defesa), Cobrança de Pênalti. No fim das contas temos, efetivamente, 22
atributos, todos variando de 1 a 99.
G. PRO EVOLUTION SOCCER (29 ATRIBUTOS)
O Pro Evolution Soccer (2009) possui o problema de não saber quais
atributos são importantes para cada posição e, além disto, não divide os atributos
em grupos. Portanto são: Ataque, Defesa, Equilíbrio, Resistência, Velocidade,
Aceleração, Reação (tempo que demora para o jogador perceber e reagir a uma
situação), Agilidade, Precisão de Drible, Velocidade de Drible, Precisão de Passe
Curto, Velocidade de Passe Curto, Precisão de Passe Longo, Velocidade de Passe
Longo, Precisão de Chute, Potência de Chute, Técnica de Chute, Bola Parada,
Efeito (quantidade de efeito que o jogador consegue aplicar à bola), Cabeceio,
Salto, Técnica, Agressividade, Mentalidade, Habilidade de Goleiro, Trabalho em
Equipe, Precisão com Perna Fraca, Freqüência com Perna Fraca. Todos os
atributos variam de 1 a 99. Neste caso temos muitos atributos e, pior ainda, uma
redundância enorme. Por exemplo: em vez de quatro atributos para definir o passe,
poderia ter apenas um, assim como é com o chute, drible, perna fraca e bola
parada. Fazendo uma reavaliação é possível chegar a 17 atributos sem perder
muita informação, o que seria um número bem mais fácil de analisar.
H. FOOTBALL MANAGER (37 ATRIBUTOS)
O Football Manager (2009) tem a maior quantidade de atributos dentre os
programas analisados. Estes atributos são divididos em três grupos. Técnico, que
contém: Escanteios, Cruzamentos, Drible, Finalização, Primeiro Toque (a qualidade
do primeiro toque na bola, seja para dominar ou passar a bola "de primeira"), Bola
Parada, Cabeceio, Chutes à Distância, Cobrança de Lateral Longa, Marcação,
Passe, Cobrança de Pênalti, Desarme, Técnica. Tem também o grupo Mental:
Agressividade, Antecipação, Coragem, Compostura, Concentração, Criatividade,
Decisões (capacidade de tomar boas decisões rapidamente), Determinação, Flair,
Influência, Posicionamento, Trabalho em Equipe, Empenho (o quanto o jogador se
esforça nos treinos e no trabalho do dia-a-dia). O menor grupo é o Físico:
Aceleração, Agilidade, Equilíbrio, Salto, Preparo Físico Natural, Velocidade,
Resistência, Força. O Football Manager também tem o problema de identificar os
‐ 8 ‐ PUC – Rio – Pontifícia Universidade Católica SIMULAÇÃO DE JOGOS COOPERATIVOS BASEADA EM DECISÕES DE MÚLTIPLOS HUMANOS E AGENTES Peter Furtado Dam Matrícula: 0611678 atributos importantes para cada posição, além de uma quantidade alta de atributos
para analisar. Os valores variam entre 1 a 20, que é o menor intervalo de todos os
casos estudados. Isso leva a crer que uma variação de apenas um ponto tem um
peso grande, fazendo a avaliação do jogador ficar ainda mais difícil.
Além destas soluções que já existem, foi feito um levantamento com várias
pessoas. De todas as respostas foram identificados 13 atributos diferentes
considerados mais importantes: Velocidade, Passe, Chute a Gol, Mentalidade
(Agressividade, Determinação), Desarme, Resistência, Cabeceio, Posicionamento,
Defesa, Ataque, Controle de Bola (Técnica), Visão de Jogo, Força.
2.2 - Conjunto de Atributos
Com base nessas respostas e nos estudos feitos sobre as soluções
existentes, foi feito um mapeamento dos atributos e, posteriormente, uma contagem
de quantas citações cada atributo teve para que se pudesse identificar uma ordem
de importância. Após estabelecer essa ordem foi possível determinar a quantidade
ideal de atributos e descartar os atributos excedentes. O mapeamento resultou em
33 atributos a seguir, na ordem de importância: Finalização, Drible, Mentalidade,
Passe, Resistência, Bola Parada, Técnica, Velocidade, Desarme, Cabeceio, Força,
Salto, Criatividade, Marcação, Posicionamento, Aceleração, Agilidade, Cobrança de
Pênaltis, Equilíbrio, Habilidades de Goleiro, Influência, Reação, Antecipação,
Coragem, Cruzamento, Flair, Habilidade com Perna Fraca, Trabalho em Equipe,
Visão de Jogo, Compostura, Concentração, Decisões, Empenho. Destes atributos
há um conjunto de atributos visivelmente mais importantes. Baseado nos estudos
até agora feitos, chega-se à conclusão que o conjunto de atributos visivelmente
mais importantes tem um número aceitável: 15. Assim foi estabelecido um conjunto
que define adequadamente as habilidades de um jogador sem dificultar muito a
análise e comparação. O conjunto resultante é:
• Bola Parada: capacidade do jogador de cobrar bolas paradas (escanteio,
lateral, falta, pênalti);
• Cabeceio: capacidade do jogador de controlar o toque da bola com a
cabeça, seja para o passe ou para finalizar a gol;
• Criatividade: capacidade de enxergar e criar possibilidades de jogadas;
‐ 9 ‐ PUC – Rio – Pontifícia Universidade Católica SIMULAÇÃO DE JOGOS COOPERATIVOS BASEADA EM DECISÕES DE MÚLTIPLOS HUMANOS E AGENTES Peter Furtado Dam Matrícula: 0611678 • Desarme: capacidade de roubar (desarmar) a bola do adversário sem
cometer uma infração;
• Drible: capacidade de passar por um adversário sem perder controle da
bola;
• Finalização: capacidade de colocar a bola dentro do gol adversário;
• Força: força física do jogador, que servirá para disputas de corpo;
• Marcação: capacidade de marcar um ou mais jogadores adversários;
• Mentalidade: a determinação do jogador e o quanto ele afetado por
pressão, cansaço e situações adversas em campo;
• Passe: capacidade de mover a bola em direção a um companheiro;
• Posicionamento: capacidade de posicionar-se em campo para receber
passes ou rebotes;
• Resistência: quanto tempo o jogador agüenta jogar até cansar;
• Salto: altura do salto e "tempo" de bola (saltar na hora correta para
executar a ação desejada);
• Técnica: capacidade que o jogador tem de controlar a bola, seja ao
dominá-la, ao tentar um drible, chute ou passe;
• Velocidade: velocidade do jogador na corrida, aceleração e reação
(reflexos).
2.3 - Decisões
A todo momento o jogador estará tomando decisões. Primeiro foi feito uma
análise sobre as decisões e a forma com que elas são apresentadas para o usuário
nos sistemas atuais.
Na maioria dos sistemas o usuário não recebe um pedido explícito para
tomar a decisão, já que as decisões são tomadas em tempo real. Geralmente existe
um mapeamento de teclas para determinados tipos de ação que o usuário pode
tomar. Ele escolhe a direção e velocidade que seu jogador irá correr. Além disso,
pode ser ao mesmo tempo em que está se movimentando, o jogador poderá fazer
algumas ações, dependendo da posse de bola. Em todos os casos, quando o
jogador está com a bola, ele pode tentar mantê-la, executar um drible, passar a bola
ou chutar. Em alguns casos poderá fazer lançamentos e cruzamentos. Além disso,
quando um companheiro de equipe tem posse da bola, o jogador poderá chamar a
‐ 10 ‐ PUC – Rio – Pontifícia Universidade Católica SIMULAÇÃO DE JOGOS COOPERATIVOS BASEADA EM DECISÕES DE MÚLTIPLOS HUMANOS E AGENTES Peter Furtado Dam Matrícula: 0611678 atenção do companheiro para receber um passe. Nas vezes em que a bola estiver
em posse da equipe adversária, o usuário poderá escolher se marca a bola para
tentar roubá-la, e, quando estiver próximo, poderá tentar roubar a bola normalmente
ou fazendo o chamado "carrinho" (deslizar o corpo no chão para tentar atingir a bola
que está um pouco mais distante).
Em poucos sistemas as opções são apresentadas periodicamente e o
jogador escolhe dentre essas, ou combina várias. As mesmas decisões acima estão
disponíveis para os casos encontrados. E em todos os sistemas estudados os
jogadores possuem habilidades que influenciam no desempenho da execução de
cada decisão.
‐ 11 ‐ PUC – Rio – Pontifícia Universidade Católica SIMULAÇÃO DE JOGOS COOPERATIVOS BASEADA EM DECISÕES DE MÚLTIPLOS HUMANOS E AGENTES Peter Furtado Dam Matrícula: 0611678 3. Objetivos
Neste trabalho a proposta é estudar e desenvolver algoritmos de simulação
de partida em tempo real com a possibilidade de interação de múltiplos usuários.
Basicamente
trata-se
da
simulação
de
uma
partida
completa,
descrita
anteriormente, através da simulação de cada jogada da partida. A simulação da
partida proporcionará a possibilidade real de testar habilidades desenvolvidas para o
personagem, mas ao mesmo tempo usar da capacidade de decisão do usuário
representado por este personagem. Além disto, existe a intenção de estudar
mecanismos de maior interação com a partida, de forma a criar maior dificuldade e
diversão. É imperativo que múltiplos usuários possam interagir na mesma partida
para que exista uma dependência entre usuários do sistema, fazendo com que
todos de uma mesma equipe dependam do desempenho individual de cada membro
para atingirem suas próprias metas pessoais.
3.1 - Objetivos Específicos
O objetivo do trabalho é produzir um sistema que possa ser posteriormente
incorporado a outros ambientes. Dessa maneira, o sistema pretende fornecer um
serviço de simulação, onde o utilizador deste serviço escolhe qual a finalidade que
terá o simulador, além de fornecer os dados iniciais e interpretar, da maneira que
preferir, os resultados obtidos pelo simulador.
O sistema, uma vez pronto, pretende ser utilizado de várias maneiras.
Principalmente para fazer estudos de como diferentes ações podem influenciar o
resultado final. Também pode ser até possível realizar testes empíricos para
determinar possibilidades mais prováveis de resultados e estudar determinados
comportamentos de formações táticas no futebol.
3.2 - Usuários
Como já foi dito anteriormente, o sistema pretende ser um serviço. Os
usuários serão outros programadores que utilizarão o simulador nos seus sistemas.
As pessoas que interagirão com o simulador não podem ser considerados usuários
diretos, uma vez que o simulador não faz interface direta com o usuário, em vez
disto, recebe as decisões do usuário através do sistema ao qual está acoplado.
‐ 12 ‐ PUC – Rio – Pontifícia Universidade Católica SIMULAÇÃO DE JOGOS COOPERATIVOS BASEADA EM DECISÕES DE MÚLTIPLOS HUMANOS E AGENTES Peter Furtado Dam Matrícula: 0611678 3.3 - Avanço em relação ao estado da arte
Não existe atualmente uma solução que permita que diversos usuários
interajam em tempo real em um simulador de futebol onde são responsáveis por
decisões pontuais de um único jogador. Desta forma será possível estudar
comportamentos de usuários e como a forma de pensar de cada pessoa influenciará
no resultado da simulação.
‐ 13 ‐ PUC – Rio – Pontifícia Universidade Católica SIMULAÇÃO DE JOGOS COOPERATIVOS BASEADA EM DECISÕES DE MÚLTIPLOS HUMANOS E AGENTES Peter Furtado Dam Matrícula: 0611678 4. Atividades Realizadas
4.1 - Estudos Preliminares
De conhecimento prévio, que auxiliou de qualquer maneira neste Projeto,
havia várias linguagens de programação, destacando-se Java e PHP. Por
conseqüência as tecnologias relacionadas, como ambiente de desenvolvimento e
modelagem, já eram, em sua maioria, conhecidas, portanto não houve pesquisa
muito grande em relação a isto. Também já havia conhecimento prévio básico de
inteligência
artificial,
pesquisado
anteriormente
por
conta
própria,
sem
relacionamento com o projeto, mas que ajudou no desenvolvimento deste.
4.2 - Estudos Conceituais e de Tecnologia
Houve a necessidade de fazer um estudo relacionado a sistemas multiagentes, pois pode-se considerar que cada elemento do simulador (jogadores e
técnicos) são agentes e agem de forma independente. Diferencia-se um pouco pelo
fato deste sistema ser muito mais dirigido à cooperatividade e busca de um objetivo
comum, onde o conhecimento entre os agentes precisa ser dividido.
Também estudou-se tecnologias web para criação de um web service.
Apesar da criação do web service não estar previsto no escopo do trabalho, o
estudo foi importante para a criação de um padrão de arquivos de comunicação e a
forma como esta troca de arquivos será feita, assim permitindo que o sistema seja
utilizado como um serviço.
4.3 - Testes e Protótipos para Aprendizado e Demonstração
Para facilitar a criação de dados foram criados geradores onde o usuário
(desenvolvedor) pode criar um time e será gerado um arquivo XML para leitura pelo
sistema. Isso foi feito porque, na verdade, o sistema pretende ser um serviço, e,
portanto, toda a persistência de dados (como times, jogadores e formações táticas)
será feita pelo sistema cliente, e não pelo simulador. Assim há uma carência de
dados e estes pequenos programas auxiliares ajudarão a criar dados para invocar o
simulador. Foi feito também um módulo para geração de HTML, a fim de demonstrar
visualmente o resultado da simulação. Uma série de arquivos interligados são
gerados para que a visualização seja animada.
‐ 14 ‐ PUC – Rio – Pontifícia Universidade Católica SIMULAÇÃO DE JOGOS COOPERATIVOS BASEADA EM DECISÕES DE MÚLTIPLOS HUMANOS E AGENTES Peter Furtado Dam Matrícula: 0611678 4.4 - Método
4.4.1 ­ Criação de um Motor O primeiro passo foi desenvolver um "motor" para o sistema de simulação. O
motor consiste em uma série de comandos que farão com que o simulador irá iterar
por um tempo definido e, a cada iteração, forçará a atualização de todos os objetos
simulados. Desta forma o simulador não precisa conhecer especificamente a forma
com que os cálculos internos são feitos, apenas informa o tempo e força
atualizações. Os componentes da simulação, por sua vez, usam o tempo para se
atualizarem. A cada iteração o tempo decorre de acordo com um determinado passo
de simulação, que é um número definindo quanto tempo incrementar a cada
iteração. O passo poderá ser definido pelo usuário e fará com que a simulação seja
mais ou menos minuciosa.
4.4.2 ­ Estabelecimento dos Parâmetros Foram estabelecidos diversos parâmetros de configuração do sistema para
que o cliente possa configurar de acordo com suas necessidades. Estes parâmetros
são fornecidos através do arquivo de inicialização da simulação (XML). Dentro deste
arquivo XML é esperado: dimensões do campo (largura e comprimento), equipes,
jogadores (cada jogador possui um "papel", no sistema chamado de Role, um
conjunto pré-determinado de habilidades, nome, número e posição XY inicial),
tamanho do passo de simulação e modo de simulação.
4.4.3 ­ Definição dos Modos de Simulação Três tipos de simulação foram previstos: Parcial com Intervalos, Total com
Intervalos, Total sem Intervalos. A diferença entre Parcial e Total é se está previsto
interação com humanos. Caso um humano possa tomar decisões, é considerada
Parcial, caso contrário, o tipo de simulação é Total, pois todas as decisões ficarão a
cargo da inteligência artificial do sistema. O conceito de com ou sem intervalos
identifica se o simulador disponibilizará resultados das parciais de cada intervalo ou
não. No caso da simulação parcial só poderá ser com intervalos, pois os humanos
que estão interagindo com o sistema precisam do resultado de cada ação para
tomar sua próxima decisão. Quando escolhido o modo sem intervalos o simulador
ainda processará todas as etapas, mas só fornecerá um XML com o resultado final.
‐ 15 ‐ PUC – Rio – Pontifícia Universidade Católica SIMULAÇÃO DE JOGOS COOPERATIVOS BASEADA EM DECISÕES DE MÚLTIPLOS HUMANOS E AGENTES Peter Furtado Dam Matrícula: 0611678 Assim é possível obter uma resposta muito mais rápido, pois o sistema não
precisará parar a cada passo para ler ou escrever dados.
4.4.4 ­ Criação dos Papéis Um papel, do inglês role, determina a forma que um jogador deverá se
comportar no jogo. Foram criados os seguintes papéis: GK (goleiro), CB (zagueiro
central), WB (lateral), DM (volante), MF (meia), AM (meia-atacante), FW (atacante),
ST (centro-avante). A cada papel é acoplado também um descritor do lado do
campo que o jogador atua: L (esquerda), C (centro), R (direita). Estes papéis serão
utilizados pelo sistema para gerar decisões. ‐ 16 ‐ PUC – Rio – Pontifícia Universidade Católica SIMULAÇÃO DE JOGOS COOPERATIVOS BASEADA EM DECISÕES DE MÚLTIPLOS HUMANOS E AGENTES Peter Furtado Dam Matrícula: 0611678 5. Projeto e Especificação do Sistema
O projeto desenvolvido é um simulador. Este simulador recebe os dados de
todos os jogadores e ambas as equipes envolvidas em uma partida de futebol, e, a
partir destes dados, reproduz jogadas e ações similares ao que se espera na
realidade. O sistema também é capaz de receber entradas pontuais de humanos
com descrição de ações a serem executadas por alguns dos jogadores. O simulador
criará arquivos de saída descrevendo o estado em cada momento da simulação, de
maneira a ilustrar o decorrer das jogadas. Este sistema é desenvolvido com
intenção de ser um serviço, e, por isso, não fornece nenhuma interface visual de
controle. Sua comunicação com outros sistemas se dá através de arquivos XML,
tanto de entrada quanto saída. Estes arquivos seguem um modelo padrão que será
conhecido pelo cliente.
5.1 - Arquitetura
O sistema desenvolvido possui módulos de: leitura de dados, escrita de
dados e o núcleo onde o processamento ocorre. Conforme ilustrado na figura 5.1.1,
a comunicação entre Cliente e Simulador é feita através de arquivos XML. O Cliente
envia um XML Inicial, contendo as configurações e jogadores. Em seguida o Leitor
de XML interpreta estes dados e "alimenta" o Simulador, que então prepara o
sistema para a simulação. O Cliente então envia um XML de Entrada, que é um
arquivo descrevendo as ações de cada jogador. Este arquivo é opcional, para cada
jogador que o simulador não obtiver informações sobre que ação tomar, a
inteligência artificial gerará uma decisão. Após processadas todas as decisões, o
Escritor de XML interpreta os dados presentes no Simulador e os disponibiliza em
um XML de Resultados para que o Cliente possa saber o que está acontecendo na
simulação.
‐ 17 ‐ PUC – Rio – Pontifícia Universidade Católica SIMULAÇÃO DE JOGOS COOPERATIVOS BASEADA EM DECISÕES DE MÚLTIPLOS HUMANOS E AGENTES Peter Furtado Dam Figura 5.1.1
‐ 18 ‐ PUC – Rio – Pontifícia Universidade Católica Matrícula: 0611678 SIMULAÇÃO DE JOGOS COOPERATIVOS BASEADA EM DECISÕES DE MÚLTIPLOS HUMANOS E AGENTES Peter Furtado Dam Matrícula: 0611678 5.2 - Motor
O motor está centralizado na classe Simulator. Essa classe controla o tempo
de simulação e chama no momento adequado cada função do sistema. Há uma
validação inicial dos parâmetros do sistema, lidos no arquivo de inicialização. Uma
vez validados, o sistema utiliza estes parâmetros para inicializar sua configuração,
como tamanho do passo de simulação e modo de simulação (parcial/total, e
com/sem intervalos). A partir deste instante o sistema itera até que o passo seja o
final. A cada passo o motor faz uma avaliação da bola, para saber qual o estado em
que esta se encontra (em jogo, fora de jogo, gol, etc.). Além disso, na avaliação são
aplicados os movimentos pendentes à bola. Uma vez feito isso, o sistema solicita a
cada elemento do jogo (tipicamente os jogadores) a sua decisão ou a lê do arquivo
de entrada, caso fornecido pelo cliente.
O processamento das decisões é feito separadamente da tomada de
decisão para que todos os elementos façam a avaliação a partir do mesmo estado
de simulação. Com as decisões colhidas o motor solicita que o simulador de ações
processe cada decisão, retornando a nova posição dos jogadores e possíveis
influências sobre a bola. Com essas informações o resultado é formulado e, caso o
cliente tenha solicitado o resultado deste passo, o sistema escreverá um arquivo de
saída, seguindo para o próximo passo de simulação.
‐ 19 ‐ PUC – Rio – Pontifícia Universidade Católica SIMULAÇÃO DE JOGOS COOPERATIVOS BASEADA EM DECISÕES DE MÚLTIPLOS HUMANOS E AGENTES Peter Furtado Dam Matrícula: 0611678 Figura 5.2.1
O processo acima é descrito através do diagrama na figura 5.2.1. Esta figura
é uma máquina de estados que demonstra o fluxo, por alto, do programa.
5.2.1 ­ Validação dos Parâmetros A validação de parâmetros é uma etapa simples e curta, verificando
simplesmente a integridade dos dados fornecidos.
5.2.2 ­ Inicialização Na inicialização o sistema lê o arquivo de configuração fornecido pelo cliente
(ver anexo simInit.xml). Da leitura deste arquivo tem-se os jogadores que compõem
ambos os times e suas posições no campo, além dos seus papéis. Uma vez lidos os
dados, o sistema posicionará os jogadores e a bola para o início da partida.
5.2.3 ­ Iniciar Passo / Próximo Passo Essa etapa apenas incrementa o passo do sistema, para, em seguida,
disparar as funções necessárias para a simulação.
‐ 20 ‐ PUC – Rio – Pontifícia Universidade Católica SIMULAÇÃO DE JOGOS COOPERATIVOS BASEADA EM DECISÕES DE MÚLTIPLOS HUMANOS E AGENTES Peter Furtado Dam Matrícula: 0611678 5.2.4 ­ Avaliar Bola Movimenta a bola de acordo com as forças aplicadas a ela. Depois da
movimentação ser feita, o sistema avaliará o estado da bola: com quem está a
posse, se está em jogo ou fora. Também é nesta etapa que será feito o teste para
saber se ocorreu gol.
5.2.5 ­ Colher Decisões O sistema irá colher as decisões fornecidas pelo cliente para cada jogador,
caso se trate de uma simulação parcial (com intervenção humana). A inteligência
artificial do sistema fornecerá uma decisão para os jogadores que não tiverem uma
decisão fornecida. Essa decisão é formada em 3 bases: as habilidades do jogador,
o papel do jogador e uma pequena parte aleatória. As decisões serão validadas e
cada decisão inválida será gerada novamente.
5.2.6 ­ Processar Decisões Uma vez que todas as decisões estiverem válidas o sistema prosseguirá
para processar cada uma. Neste momento será calculado a influência daquela ação
nos elementos do sistema: o jogador atuante, a bola e os outros possíveis jogadores
que sofrerem alguma influência decorrente daquela ação. É importante notar que
este é um ponto que pode gerar inconsistências, pois a decisão de um jogador pode
não estar mais válida após a ação de algum outro jogador. A melhor forma de
proceder neste caso ainda está sendo estudada.
5.2.6 ­ Formular Resultado Esta etapa do processo resume-se em decidir se será produzida uma saída
para este passo ou não.
5.2.7 ­ Escrever Resultado Caso o sistema tenha decidido produzir uma saída, esta etapa se encarrega
de "traduzir" as variáveis e informações internas em um resultado compreensível
para o cliente, seja por HTML ou por XML.
‐ 21 ‐ PUC – Rio – Pontifícia Universidade Católica SIMULAÇÃO DE JOGOS COOPERATIVOS BASEADA EM DECISÕES DE MÚLTIPLOS HUMANOS E AGENTES Peter Furtado Dam Matrícula: 0611678 5.3 - Decisões
Cada elemento do sistema precisará tomar uma decisão a cada passo. Para
cada decisão o sistema solicita a cada equipe as decisões dos seus jogadores. A
partir desse instante serão geradas as decisões de acordo com três premissas:
habilidade individual do jogador, papel do jogador, aleatoriedade. As possíveis
decisões são representadas por tabelas. A primeira premissa segue uma tabela
comum a todos os jogadores. São feitas contas baseadas nas habilidades do
jogador, distância entre certos elementos e posse de bola.
Figura 5.3.1
Esta tabela é traduzida em uma série if. As decisões não são mutuamente
exclusivas, ou seja, se a condição for satisfeita a decisão será acrescentada ao
vetor de decisões com o peso determinado na tabela. Posteriormente uma das
decisões será sorteada usando este vetor. O simulador varre a tabela
seqüencialmente, adicionando ao vetor conforme as condições forem satisfeitas.
A tabela acima seria percorrida da seguinte forma:
1. Primeiro há algumas contas comuns que podemos guardar o valor em
variáveis, como distância da bola:
double ballDist = player.distance( Ball.instance() );
double ballPoss = Ball.instance().getPossession();
2. A bola está longe? Vamos estipular "longe" sendo o valor numérico 50.
Teremos:
if( ballDist > 50 )
decision.addPossibility( 500, (Action)new RunToPosition( player) );
‐ 22 ‐ PUC – Rio – Pontifícia Universidade Católica SIMULAÇÃO DE JOGOS COOPERATIVOS BASEADA EM DECISÕES DE MÚLTIPLOS HUMANOS E AGENTES Peter Furtado Dam Matrícula: 0611678 3. Se ninguém possui a bola e ela está próxima (novamente estipulando um
valor, neste caso 15), temos:
if( ballPoss == null && ballDist < 15 )
decision.addPossibility( 10 + player.getAttribute( Attribute.SPEED ) ballDist, (Action)new RunToBallTarget( player ) );
4. O próximo caso é mais complicado, então é estruturado assim:
if( !player.getTeam().hasBall() && Ball.instance().getPossession() != null )
{
double oppDist = player.distance( Ball.instance().getPossession() );
double defDist = team.closestTeammate( player );
if( oppDist < 15 && defDist > 15 )
{
decision.addPossibility( 50 + player.getAttribute(
Attribute.TACKLING ) - oppDist + defDist, (Action)new
Challenge( player );
}
}
5. E assim sucessivamente. Nenhum dos casos é excludente e novas
possibilidades são acrescentadas em seqüência.
Em seguida o papel do jogador é consultado e, baseado nas tarefas daquele
papel, serão geradas mais decisões de acordo com esta outra tabela. A última
premissa é a aleatoriedade, mas o peso atribuído às decisões desta forma geradas
é muito pequeno.
As seguintes tabelas foram geradas: geral, aleatórias, GK, CB, WB, DM, MF,
AM, FW e ST. Estas tabelas são apresentadas no anexo.
Cada decisão está ligada a uma ou mais ações. Estas ações são instruções
simples implementadas no simulador. Uma decisão combina e calcula os
parâmetros para as suas ações. Por exemplo uma decisão de passar a bola invoca
a mesma ação que um chute (movimentar a bola) com parâmetros bem diferentes.
Cada ação é uma classe que implementa a interface Action e, uma vez fornecidos
‐ 23 ‐ PUC – Rio – Pontifícia Universidade Católica SIMULAÇÃO DE JOGOS COOPERATIVOS BASEADA EM DECISÕES DE MÚLTIPLOS HUMANOS E AGENTES Peter Furtado Dam Matrícula: 0611678 os parâmetros da ação, a sua execução é chamada através do método execute().
Estas classes estão agrupadas no pacote action.
Existe uma ação chamada Composite, que é uma composição de uma ou
mais ações, tipicamente usada para encadear ações, a fim de estruturar uma
possível decisão mais complexa.
No sistema existe uma classe chamada Decision. Esta classe é um
agregador de ações. Conforme dito anteriormente, diversas decisões serão geradas
de acordo com as tabelas do sistema. Estas decisões estão representadas por uma
lista de ações cujos parâmetros já foram preenchidos. A esta lista foi dado o nome
de vetor de decisões. Cada ação é encadeada com seu peso anotado e um número
é sorteado. O sistema itera dentro do vetor até que o peso acumulado supera o
número sorteado e assim determina a ação selecionada para execução. Como
todas as ações do vetor já estão com os parâmetros preenchidos, basta chamar o
método execute() na ação sorteada.
Os papéis também são classes, cada papel tem sua classe, que é uma
implementação de uma interface comum chamada Role. Os papéis têm apenas um
método: decide(). Cada jogador tem uma instância de um role e chama a função de
decisão desta instância para que a parte das decisões relativas ao seu papel seja
completado.
5.4 - Interação Humana
Vale lembrar que as classes de decisão e toda essa lógica de tomada de
decisão só é usada no caso da ausência de um decisão de humanos. Na simulação
parcial com intervalos é possível (e esperado) que pelo menos um humano tome
decisões. O sistema cliente é quem apresentará as possíveis decisões, a capturará
e enviará ao simulador. Esta comunicação é feita por arquivo XML através de um
trecho como o seguinte:
<players>
<player>
<pid>5</pid>
<act_chain>
<action>ACT.PASS</action>
‐ 24 ‐ PUC – Rio – Pontifícia Universidade Católica SIMULAÇÃO DE JOGOS COOPERATIVOS BASEADA EM DECISÕES DE MÚLTIPLOS HUMANOS E AGENTES Peter Furtado Dam Matrícula: 0611678 <action>ACT.RUN</action>
</act_chain>
</player>
</players>
Poderiam haver mais jogadores, mas neste caso apenas um jogador tomou
decisão. Há uma cadeia de ações e a primeira tem prioridade sobre a segunda e
assim sucessivamente. Isso significa que cada ação será executada e a próxima
será validada. Se estiver válida a cadeia continua a executar, senão é interrompida
e nenhuma ação subseqüente é interpretada.
5.5 - Saída
De acordo com a escolha do cliente poderão ser produzidos arquivos de
saída. Um arquivo de saída (XML) fornecerá informações acerca da bola
(velocidade, jogador com posse da bola, posição da bola, alvo da bola se estiver em
movimento) e informações sobre cada jogador na partida (posição, ações
executadas, velocidade). Com estas informações o cliente é capaz de montar uma
visualização do estado atual da simulação. A figura 5.5.1 ilustra um exemplo de
visualização a partir dos dados do simulador: cada jogador é posicionado em um
campo, além da bola.
Figura 5.5.1
Exemplo de visualização de estado da simulação.
‐ 25 ‐ PUC – Rio – Pontifícia Universidade Católica SIMULAÇÃO DE JOGOS COOPERATIVOS BASEADA EM DECISÕES DE MÚLTIPLOS HUMANOS E AGENTES Peter Furtado Dam Matrícula: 0611678 5.6 – Casos de Uso
5.6.1 – Caso: Inteligência Parcial com Intervalos Quando o simulador está no modo parcial com intervalos é esperada uma
entrada de dados informando ações de um ou mais jogadores. Assim o Cliente
enviará os dados iniciais e pode submeter as ações a cada intervalo de simulação.
Este intervalo é um tempo dado para que o cliente agregue possíveis entradas de
dados e monte um arquivo XML para enviar ao simulador, comumente chamado de
timeout. Além disso o cliente pode recuperar resultados de cada intervalo.
‐ 26 ‐ PUC – Rio – Pontifícia Universidade Católica SIMULAÇÃO DE JOGOS COOPERATIVOS BASEADA EM DECISÕES DE MÚLTIPLOS HUMANOS E AGENTES Peter Furtado Dam Matrícula: 0611678 5.6.2 – Caso: Inteligência Total com Intervalos No caso de Inteligência Total com Intervalos o simulador está operando sem
intervenção humana, então o cliente não envia dados durante os intervalos de
simulação, mas pode recuperar as informações de cada intervalo. Este caso é como
se fosse um "vídeo" da partida, já que não se pode interferir no jogo, mas pode-se
observá-lo do início ao fim.
‐ 27 ‐ PUC – Rio – Pontifícia Universidade Católica SIMULAÇÃO DE JOGOS COOPERATIVOS BASEADA EM DECISÕES DE MÚLTIPLOS HUMANOS E AGENTES Peter Furtado Dam Matrícula: 0611678 5.6.3 – Caso: Inteligência Total sem Intervalos O último caso, Inteligência Total sem Intervalos, só permite que o cliente
recupere o resultado final. Este resultado final contem informações sintetizadas da
partida, como se fosse um relatório. Esta é a forma em que a simulação se completa
mais rapidamente, já que não há quase leitura e escrita de dados nem troca de
informações.
‐ 28 ‐ PUC – Rio – Pontifícia Universidade Católica SIMULAÇÃO DE JOGOS COOPERATIVOS BASEADA EM DECISÕES DE MÚLTIPLOS HUMANOS E AGENTES Peter Furtado Dam Matrícula: 0611678 5.7 – Diagramas de Classes
O sistema é dividido em diversos pacotes de acordo com as funcionalidades
das classes. Os pacotes presentes são: actions, core, decision, geom, io, main,
roles. Os três pacotes principais, e mais complexos, são apresentados com
diagramas de classes: actions, core e roles. O pacote decision desempenha a
tomada de decisões do sistema, porém possui apenas duas classes. Uma classe é
chamada Decider, que se encarrega de processar uma tabela geral de decisões. A
outra classe se chama Decision, que é produto do processamento de uma tabela.
Esta classe é onde está, na verdade, o vetor de decisões e, na solicitação de uma
ação ser desempenhada, a classe sorteará randomicamente uma das decisões do
vetor. O pacote geom contem classes responsáveis por cálculos geométricos e
algébricos. O pacote io é constituída de classes responsáveis por leitura e gravação
de dados. Por fim, o pacote main contém apenas a classe que inicializa o programa.
5.7.1 – Pacote: Actions No pacote actions temos a classe Action, que é uma interface. Esta interface
tem 3 métodos:
‐ 29 ‐ PUC – Rio – Pontifícia Universidade Católica SIMULAÇÃO DE JOGOS COOPERATIVOS BASEADA EM DECISÕES DE MÚLTIPLOS HUMANOS E AGENTES Peter Furtado Dam Matrícula: 0611678 •
execute() – chamada para executar (pôr em prática) a ação
•
inProgress() – uma função que retornará se aquela ação ainda está em
curso ou já concluiu
•
getName() – retorna o nome da ação, usado somente para informações ao
cliente
Cada Action implementa estes 3 métodos. Algumas ações são instantâneas,
como Pass, por exemplo. Outras ações podem demorar mais tempo, como, por
exemplo, RunToBallTarget. A tendência é que um jogador mantenha a sua linha de
ação, e é por este motivo que essa função é importante no sistema.
‐ 30 ‐ PUC – Rio – Pontifícia Universidade Católica SIMULAÇÃO DE JOGOS COOPERATIVOS BASEADA EM DECISÕES DE MÚLTIPLOS HUMANOS E AGENTES Peter Furtado Dam Matrícula: 0611678 5.7.2 – Pacote: Core Este é o núcleo do sistema. Existem 3 classes singleton: Simulator, Ball e
Field. Na classe Ball está concentrada a lógica da bola do jogo. Essa classe calcula
e mantém a velocidade, altura, velocidade, movimento e posse da bola. Existem 4
métodos importantes nesta classe:
•
setKickoff() – Posiciona a bola no centro do gramado para início (ou
reinício) do jogo.
•
step( double ) – Avança um passo na simulação da bola. Ou seja,
calcula novamente todas as variáveis da bola.
•
stop() – Encerra qualquer movimento atual e futuro da bola, ou seja,
zera as variáveis de movimentação.
•
kick( double, int, int, Point2D ) – Esta é uma das funções mais
importantes do sistema. É através dela que é feito qualquer
movimento da bola. Um drible consiste em pequenos “kicks”, ou seja,
a chamada da função kick com pequenos parâmetros. Um passe, um
lançamento e um chute a gol também são outros exemplos do uso da
‐ 31 ‐ PUC – Rio – Pontifícia Universidade Católica SIMULAÇÃO DE JOGOS COOPERATIVOS BASEADA EM DECISÕES DE MÚLTIPLOS HUMANOS E AGENTES Peter Furtado Dam Matrícula: 0611678 função kick, que recebe a distância do chute, a velocidade inicial da
bola, altura máxima e a direção.
Na classe Ball temos os seguintes atributos:
•
currentPosition - a posição atual da bola no campo
•
inertia - a quantidade de movimento potencial que a bola possui
•
speed - velocidade de movimentação da bola
•
direction - direção de movimentação da bola
•
target - posição onde a bola irá parar, se não tiver sua trajetória
interrompida
•
kicked - ponto do campo de onde a bola foi chutada pela última vez
•
height - distância que a bola está do chão
•
possession - jogador que está com a posse de bola
A classe Field é apenas uma classe contendo informações a respeito,
principalmente das dimensões do campo. Possui também variáveis para rápida
referência como center, que é o ponto central do campo e homeGoal/awayGoal, que
são os gols em cada ponta do campo.
A classe Team tem as referências para todos os jogadores da sua equipe e
é mais usada para fazer mudanças em vários jogadores de uma só vez. Os
métodos importantes são:
•
hasBall() – Usado para cálculo de decisões, retorna se algum jogador
do time tem a posse de bola.
•
changeSides() – Usado apenas para inverter uma equipe de lado do
campo, por exemplo usado após o intervalo de jogo.
‐ 32 ‐ PUC – Rio – Pontifícia Universidade Católica SIMULAÇÃO DE JOGOS COOPERATIVOS BASEADA EM DECISÕES DE MÚLTIPLOS HUMANOS E AGENTES Peter Furtado Dam •
Matrícula: 0611678 setKickOff( boolean ) – Posiciona todos os jogadores para início da
partida. Recebe um parâmetro indicando se o time iniciará com posse
de bola ou não.
•
makeDecisions() – Função usada pelo simulador para que a classe
Team recolha as decisões dos seus jogadores.
A classe Player agrega todas as informações de um jogador, e é onde todo o
processo
de
tomada
de
decisão
ocorre.
As
funções
changeSides()
e
kickOffPosition() são chamadas pelo time ao qual o jogador pertence e já foram
explicadas. Há uma série de métodos sobrecarregados para calcular a distância de
um jogador a um ponto, a outro jogador ou à bola. São funções para rápida
referência, já que o mesmo cálculo poderia ser feito usando a classe Point2D. Além
dessas, existe uma função, getLastAction(), que resgata a última ação do jogador,
usado para exibir ao cliente e também nos casos em que a ação perdura por mais
de um ciclo de simulação. A função chave desta classe é a decide(), onde uma série
de testes e condições serão feitas para gerar o vetor de decisões de cada jogador.
Parte desta tarefa é repassada para o papel (role) do jogador.
Os atributos da classe Player são:
•
startPoint - ponto do campo onde o jogador iniciou a partida
•
currentPoint - ponto do campo onde o jogador se encontra
atualmente
•
name - nome do jogador
•
jersey - número da camisa do jogador
•
role - papel desempenhado pelo jogador
•
changedSides - se o jogador trocou de campo. Uma equipe sempre
estará com esta variável verdadeira e a outra falsa
•
decision - vetor de decisões do jogador
•
team - time ao qual o jogador pertence
‐ 33 ‐ PUC – Rio – Pontifícia Universidade Católica SIMULAÇÃO DE JOGOS COOPERATIVOS BASEADA EM DECISÕES DE MÚLTIPLOS HUMANOS E AGENTES Peter Furtado Dam •
Matrícula: 0611678 receivePass - variável indicando se o jogador está sendo alvo de um
passe (torna-se falsa quando algum jogador tomar posse da bola)
5.7.3 – Pacote: Roles Cada role é uma implementação da interface Role, que tem apenas um método.
Este método recebe um vetor de decisões (para escrita) e uma instância de Player,
que é o jogador para quem a decisão será tomada. É com esta instância que o role
acessará os atributos do jogador para a tomada das decisões. Todas estas classes
são singleton, pois não é necessário criar múltiplas instâncias, já que não possuem
dados.
Há também uma classe, RoleUtil. Esta classe possui apenas o método
fromString( String ), que recebe um valor em texto e retorna uma instância referente
àquele texto. Esta função é usada apenas na montagem inicial dos elementos, já
que os valores são lidos em texto.
‐ 34 ‐ PUC – Rio – Pontifícia Universidade Católica SIMULAÇÃO DE JOGOS COOPERATIVOS BASEADA EM DECISÕES DE MÚLTIPLOS HUMANOS E AGENTES Peter Furtado Dam Matrícula: 0611678 5.8 – Diagramas de Seqüência
5.8.1 – Motor Neste diagrama está representado a seqüência de mensagens desde o início de
uma simulação até o final. A saída de dados não está ilustrado, pois é isto é feito
implicitamente ao final de cada iteração do loop.
‐ 35 ‐ PUC – Rio – Pontifícia Universidade Católica SIMULAÇÃO DE JOGOS COOPERATIVOS BASEADA EM DECISÕES DE MÚLTIPLOS HUMANOS E AGENTES Peter Furtado Dam Matrícula: 0611678 5.8.2 – Decisões Agora pode-se ver a representação das mensagens trocadas durante o
processo de tomada de decisão. A requisição é feita pelo simulador ao time, que
repassa aos seus jogadores. Cada jogador cria uma instância de Decision, que é
retornada até o simulador. Uma vez que o simulador recebe a decisão ele manda
executar. Esta execução "adiada" é feita para que as decisões tomadas não
influenciem nas decisões subseqüentes dos outros jogadores na mesma rodada.
Em outras palavras, se a decisão fosse executada no mesmo instante em que fosse
tomada, este resultado influenciaria na decisão dos jogadores seguintes,
provavelmente comprometendo uma das decisões.
‐ 36 ‐ PUC – Rio – Pontifícia Universidade Católica SIMULAÇÃO DE JOGOS COOPERATIVOS BASEADA EM DECISÕES DE MÚLTIPLOS HUMANOS E AGENTES Peter Furtado Dam Matrícula: 0611678 6. Implementação e Avaliação
6.1 - Ferramentas Auxiliares Desenvolvidas
6.1.1 ­ Gerador de Formação Tática Para facilitar o desenvolvimento do sistema foi criado um gerador de time.
Este gerador é drag-n-drop, permitindo que se arraste os jogadores para as
posições desejadas e, em seguida, gere um XML que represente aquela formação.
Isso foi feito porque o sistema não persiste dados, portanto é carente de
informações suficientes para funcionar sem uma entrada de dados externa. Com
esta ferramenta auxiliar é possível gerar esses dados para que a simulação possa
ocorrer.
Figura 6.1.1
‐ 37 ‐ PUC – Rio – Pontifícia Universidade Católica SIMULAÇÃO DE JOGOS COOPERATIVOS BASEADA EM DECISÕES DE MÚLTIPLOS HUMANOS E AGENTES Peter Furtado Dam Matrícula: 0611678 6.1.2 ­ Visualizador de Estado da Simulação Figura 6.1.2
Outra ferramenta criada foi o visualizador de estados. Na verdade consiste
em uma saída alternativa de dados em formato HTML que o simulador gera para
que possamos visualizar passo-a-passo o decorrer das ações. É importante lembrar
que o simulador não possui nenhum método de visualização, apenas gera os dados
em formato XML e os retorna ao cliente, este responsável por gerar sua
visualização.
6.2 - Comentários sobre implementação
Durante a execução do projeto houve três dificuldades. A primeira foi a
reformulação da API. Antes pensado para ser um código incorporado ao sistema
cliente, percebemos que não era uma forma boa e alteramos para a comunicação
através de arquivos XML, pois, desta forma, o sistema poderá ser remodelado
rapidamente para um web service e utilizado em conjunto com o AJAX, fazendo um
‐ 38 ‐ PUC – Rio – Pontifícia Universidade Católica SIMULAÇÃO DE JOGOS COOPERATIVOS BASEADA EM DECISÕES DE MÚLTIPLOS HUMANOS E AGENTES Peter Furtado Dam Matrícula: 0611678 simulador poderoso e muito flexível. A segunda dificuldade foi fazer a
implementação das regras. Reconhecer que a bola saiu, gol e falta. O conseqüente
re-posicionamento dos jogadores quando a bola não está em jogo também foi
complicado. A última dificuldade (não em ordem cronológica) foi fazer os jogadores
realmente jogarem. Este é um trabalho contínuo e é preciso estar sempre alterando
as tabelas de decisões para, cada vez mais, melhorar o desempenho dos jogadores
e, desta forma, aumentar o realismo do simulador. Eventualmente poderá ser
necessário a criação de uma nova ação, mas o sistema está construído de forma
modular e as ações atualmente estão adequadas a descrever a maioria das
decisões que poderão vir a existir. ‐ 39 ‐ PUC – Rio – Pontifícia Universidade Católica SIMULAÇÃO DE JOGOS COOPERATIVOS BASEADA EM DECISÕES DE MÚLTIPLOS HUMANOS E AGENTES Peter Furtado Dam Matrícula: 0611678 7. Considerações Finais
Com este projeto é possível que outros programadores desenvolvam sistemas
mais complexos sem precisarem se preocupar com a simulação de partidas. Isso
permite estudos mais profundos a respeito de interação de humanos com outros
humanos e inteligência artificial, por exemplo.
7.1 - Aprendizagem
Com este trabalho aprendi um pouco sobre web services (que até antes do
trabalho não sabia nada) e aprofundei o meu uso de Java. Até então eu não havia
desenvolvido nenhum sistema em Java. Durante a execução do projeto eu estive
cursando a matéria de Simulação Física para Jogos e, apesar de não ter ligação
direta com o projeto, aprendi um conceito que me ajudou bastante a fazer funcionar
o projeto: o conceito de motor de simulação.
7.2 - O que faria de diferente
Talvez não usasse Java. Fiquei um pouco frustrado com Java por limitações
que a linguagem impõe. Sinto falta de ponteiros, devido à forte cultura adquirida na
programação de C++. Não fiquei plenamente satisfeito com a forma com que o
código acabou ficando, pois o planejamento inicial previa técnicas possíveis em
C++, mas não em Java, como descobri posteriormente. Fora isso fiquei satisfeito
com o resultado e ainda gostaria de ver o sistema evoluir mais.
7.3 - Trabalhos futuros
O sistema ainda não foi portado para ser um web service, e este é um
trabalho possível a ser feito. Seria muito interessante ver o sistema funcionando
mesmo como um web service, com um cliente utilizando este serviço.
Há também uma idéia que surgiu durante a implementação como uma opção
adicional para o simulador. A idéia foi denominada percepção simulada. Pode ser
que o cliente deseje que os seus usuários não vejam o estado exato da simulação,
a fim de aumentar a complexidade e realismo do jogo. O cliente poderá então
habilitar a esta opção. Esta opção utilizará o atributo de "visão de jogo" de cada
jogador para produzir uma visão personalizada do jogo para aquele jogador. Isto
‐ 40 ‐ PUC – Rio – Pontifícia Universidade Católica SIMULAÇÃO DE JOGOS COOPERATIVOS BASEADA EM DECISÕES DE MÚLTIPLOS HUMANOS E AGENTES Peter Furtado Dam Matrícula: 0611678 acarretará na criação de até mais 22 XMLs (um XML específico para cada jogador),
então há um custo adicional. O que a função fará é distorcer o posicionamento dos
elementos de forma radial (com o centro sendo o jogador em questão) e
proporcional à distância (elementos mais distantes tendem a sofrer um
deslocamento maior). Caberá, porém, ao sistema cliente garantir que o usuário veja
somente a versão distorcida gerada para o seu jogador.
Utilizando este trabalho é possível criar uma ferramenta para estudo de
estratégias e formações do futebol, ou até mesmo um jogo, como comentado na
proposta, que crie um ambiente futebolístico completamente virtual. O trabalho a ser
realizado neste jogo seria criar uma espécie de comunidade e usar o simulador para
fazer a simulação das partidas, permitindo que os usuários interajam com o jogo em
tempo real.
‐ 41 ‐ PUC – Rio – Pontifícia Universidade Católica SIMULAÇÃO DE JOGOS COOPERATIVOS BASEADA EM DECISÕES DE MÚLTIPLOS HUMANOS E AGENTES Peter Furtado Dam Figura 5.5.1 (Estado Real)
Matrícula: 0611678 Figura 7.3.1 (Estado Percebido)
Figura 7.3.2 (Comparativo)
Na figura 7.3.1 podemos ver a área de visualização do jogador 6 do time
vermelho no círculo verde-claro. Tudo dentro deste círculo é visto corretamente, fora
dele há um deslocamento dos jogadores e bola, criando uma visualização baseada
na percepção que aquele jogador tem do jogo. Na figura 7.3.2 podemos ver a
comparação entre o real e o percebido através das linhas vermelhas pontilhadas,
onde o início da linha é a posição real do jogador, traçando a distância até a posição
percebida.
‐ 42 ‐ PUC – Rio – Pontifícia Universidade Católica SIMULAÇÃO DE JOGOS COOPERATIVOS BASEADA EM DECISÕES DE MÚLTIPLOS HUMANOS E AGENTES Peter Furtado Dam Matrícula: 0611678 8. Referências Bibliográficas
Bagatini, D. S., Alvares, L. O., Um Agente Reativo Jogador de Futebol: teoria e
desenvolvimento. Disponível em:
<http://www.donnicision.com/downloads/Agente_fute.pdf>. Acesso em: Junho, 2009.
Bagatini, D.S. Um Sistema Multiagente para o Simulador Soccerserver. 2001.
149 p. Dissertação (Mestrado) - Universidade Federal do Rio Grande do Sul,
Instituto de Informática, Porto Alegre, 2001.
Elifoot. Disponível em: <http://www.elifoot.net/>. Acesso em: Abril, 2009.
Football Manager. Disponível em: <http://www.footballmanager.com/>. Acesso em:
Abril, 2009.
Hattrick. Disponível em: <http://www.hattrick.org/>. Acesso em: Maio, 2009.
Mateos, C., Testa, D., Software System Engineering - Soccer Match Simulation.
Disponível em: <http://www.engr.sjsu.edu/fayad/current.courses/cmpe202spring06/docs/04-Soccer-Match-Simulation-pp-4.doc>. Acesso em: Junho, 2009.
Matsubara, H., Noda, I., Kazuo, H., Learning of Cooperative actions in multiagent systems: a case of study of pass play in Soccer. Disponível em:
<https://www.aaai.org/Papers/Symposia/Spring/1996/SS-96-01/SS96-01-012.pdf>.
Acesso em: Junho, 2009.
Moemeng, P., Issues in Soccer Simulation Software Development. Disponível
em: <http://www.journal.au.edu/au_techno/2004/apr04/vol7num4_article04.pdf>.
Acesso em: Abril, 2009.
New Star Soccer. Disponível em: <http://www.newstargames.com/>. Acesso em:
Abril, 2009.
‐ 43 ‐ PUC – Rio – Pontifícia Universidade Católica SIMULAÇÃO DE JOGOS COOPERATIVOS BASEADA EM DECISÕES DE MÚLTIPLOS HUMANOS E AGENTES Peter Furtado Dam Matrícula: 0611678 Online Football Manager. Disponível em:
<http://www.onlinefootballmanager.co.uk/>. Acesso em: Maio, 2009.
Piccolo, G.M., O Universo Lúdico Proposto por Caillois. Disponível em:
<http://www.efdeportes.com/efd127/o-universo-ludico-proposto-por-caillois.htm>.
Acesso em: Maio, 2009.
Pro Evolution Soccer. Disponível em: <http://www.konami.com/games/pes09/>.
Acesso em: Abril, 2009.
RoboCup. Disponível em: <http://www.robocup.org>. Acesso em: Abril, 2009.
Universal Soccer Manager. Disponível em:
<http://www.universalsoccermanager.com/>. Acesso em: Maio, 2009.
Virtual Manager. Disponível em: <http://www.virtualmanager.com/>. Acesso em:
Maio, 2009.
‐ 44 ‐ PUC – Rio – Pontifícia Universidade Católica SIMULAÇÃO DE JOGOS COOPERATIVOS BASEADA EM DECISÕES DE MÚLTIPLOS HUMANOS E AGENTES Peter Furtado Dam 9. Anexos
‐ 45 ‐ PUC – Rio – Pontifícia Universidade Católica Matrícula: 0611678 DECISÕES GERAIS
PESO
AÇÃO
500
RunToBallTarget
-
250
* lastAction
-
20+X+Y
Dribble
50+X-Y
Pass
20-X+Y
Hold
CONDIÇÃO
PARÂMETROS
X = habilidade de drible;
Y = distância de adversários
X = habilidade de passe;
Y = distância do companheiro
X = distância de adversários;
Y = distância de companheiros
O jogador é alvo de um passe
A ação anterior executada pelo jogador ainda não se
concluiu
Jogador possui a bola
Jogador possui a bola
Jogador possui a bola
20
RunToPosition
-
Time do jogador possui a bola
60
RunToClear
-
Time do jogador possui a bola
100
GetBall
-
Time não possui a bola e a bola está muito próxima
50
RunToPosition
-
Adversário possui a bola e está distante
20-X
RunToBall
X = distância da bola
20-X
RunToBallTarget
X = distância do alvo da bola
50+X-Y
Challenge
X = habilidade de desarme;
Y = distância do adversário
X = menor distância da trajetória da bola;
Y = velocidade do jogador;
Z = velocidade da bola
Time não possui a bola e está relativamente próxima
Time não possui a bola e o alvo está relativamente
proximo
Adversário possui a bola e está relativamente próximo
Adversário executou um passe e a trajetória da bola
passa relativamente próxima ao jogador
30+X+Y-Z
Intercept
Kick
X = habilidade de chute;
Y = distância do gol;
Z = adversários cortando trajetória da bola
Jogador possui a bola e está no campo de ataque
10+X-Y-Z
50+X-Y+Z
Kick
X = habilidade de chute;
Y = distância do gol;
Z = distância do goleiro adversário ao gol
Jogador possui a bola e goleiro adversário está
relativamente longe do gol
Assist
X = habilidade de passe;
Y = distância do companheiro ao gol;
Z = distância do companheiro ao jogador;
W = adversários próximos ao companheiro
Jogador possui a bola e está relativamente próximo ao
gol adversário
10+X-Y+Z-W
ALEATÓRIAS
PESO
AÇÃO
2
Kick
2
Pass
2
Run
2
Halt
1
Hold
ROLE: GK
PESO
500
10+X-Y
50+X-Y+Z
500
50+X-Y
100
AÇÃO
CONDIÇÃO
PARÂMETROS
-
Bola está longe
X = velocidade do jogador;
Y = distância da bola
X = habilidade de desarme do goleiro;
Y = distância do atacante;
Z = distância dos defensores
Nenhum time possui a bola e ela está próxima ao goleiro
Defend
-
Bola foi chutada em direção ao gol
Intercept
X = habilidade de desarme do goleiro;
Y = distância da bola;
Bola foi cruzada na área
CloseAngle
-
Bola está próxima ou dentro da área
RunToPosition
RunToBallTarget
Challenge
Atacante está próximo ao gol e defensores estão longe
(típico "mano-a-mano")
<?xml version="1.0"?>
<simInit>
<field>
<width>358</width>
<length>493</length>
</field>
<team>
<name>Real Desportivo</name>
<players>
<player>
<number>1</number>
<name>Mario</name>
<role>GKC</role>
<position>
<x>178</x>
<y>453</y>
</position>
<abilities>
<strength>10</strength>
<resistance>10</resistance>
<jumping>10</jumping>
<speed>10</speed>
<creativity>10</creativity>
<mentality>10</mentality>
<heading>10</heading>
<tackling>10</tackling>
<dribbling>10</dribbling>
<finishing>10</finishing>
<passing>10</passing>
<technique>10</technique>
<set_pieces>10</set_pieces>
<marking>10</marking>
<positioning>10</positioning>
</abilities>
</player>
<player>
<number>2</number>
<name>Ricardo</name>
<role>WBR</role>
<position>
<x>291</x>
<y>324</y>
</position>
<abilities>
<strength>10</strength>
<resistance>10</resistance>
<jumping>10</jumping>
<speed>10</speed>
<creativity>10</creativity>
<mentality>10</mentality>
<heading>10</heading>
<tackling>10</tackling>
<dribbling>10</dribbling>
<finishing>10</finishing>
<passing>10</passing>
<technique>10</technique>
<set_pieces>10</set_pieces>
<marking>10</marking>
<positioning>10</positioning>
</abilities>
</player>
<player>
<number>3</number>
<name>Luciano</name>
<role>CBC</role>
<position>
<x>215</x>
<y>372</y>
</position>
<abilities>
<strength>10</strength>
<resistance>10</resistance>
<jumping>10</jumping>
<speed>10</speed>
<creativity>10</creativity>
<mentality>10</mentality>
<heading>10</heading>
<tackling>10</tackling>
<dribbling>10</dribbling>
<finishing>10</finishing>
<passing>10</passing>
<technique>10</technique>
<set_pieces>10</set_pieces>
<marking>10</marking>
<positioning>10</positioning>
</abilities>
</player>
<player>
<number>4</number>
<name>Lauro</name>
<role>CBC</role>
<position>
<x>138</x>
<y>378</y>
</position>
<abilities>
<strength>10</strength>
<resistance>10</resistance>
<jumping>10</jumping>
<speed>10</speed>
<creativity>10</creativity>
<mentality>10</mentality>
<heading>10</heading>
<tackling>10</tackling>
<dribbling>10</dribbling>
<finishing>10</finishing>
<passing>10</passing>
<technique>10</technique>
<set_pieces>10</set_pieces>
<marking>10</marking>
<positioning>10</positioning>
</abilities>
</player>
<player>
<number>5</number>
<name>Boris</name>
<role>DMC</role>
<position>
<x>179</x>
<y>313</y>
</position>
<abilities>
<strength>10</strength>
<resistance>10</resistance>
<jumping>10</jumping>
<speed>10</speed>
<creativity>10</creativity>
<mentality>10</mentality>
<heading>10</heading>
<tackling>10</tackling>
<dribbling>10</dribbling>
<finishing>10</finishing>
<passing>10</passing>
<technique>10</technique>
<set_pieces>10</set_pieces>
<marking>10</marking>
<positioning>10</positioning>
</abilities>
</player>
<player>
<number>6</number>
<name>Batista</name>
<role>WBL</role>
<position>
<x>54</x>
<y>316</y>
</position>
<abilities>
<strength>10</strength>
<resistance>10</resistance>
<jumping>10</jumping>
<speed>10</speed>
<creativity>10</creativity>
<mentality>10</mentality>
<heading>10</heading>
<tackling>10</tackling>
<dribbling>10</dribbling>
<finishing>10</finishing>
<passing>10</passing>
<technique>10</technique>
<set_pieces>10</set_pieces>
<marking>10</marking>
<positioning>10</positioning>
</abilities>
</player>
<player>
<number>7</number>
<name>Washington</name>
<role>MFC</role>
<position>
<x>251</x>
<y>200</y>
</position>
<abilities>
<strength>10</strength>
<resistance>10</resistance>
<jumping>10</jumping>
<speed>10</speed>
<creativity>10</creativity>
<mentality>10</mentality>
<heading>10</heading>
<tackling>10</tackling>
<dribbling>10</dribbling>
<finishing>10</finishing>
<passing>10</passing>
<technique>10</technique>
<set_pieces>10</set_pieces>
<marking>10</marking>
<positioning>10</positioning>
</abilities>
</player>
<player>
<number>8</number>
<name>William</name>
<role>MFC</role>
<position>
<x>114</x>
<y>200</y>
</position>
<abilities>
<strength>10</strength>
<resistance>10</resistance>
<jumping>10</jumping>
<speed>10</speed>
<creativity>10</creativity>
<mentality>10</mentality>
<heading>10</heading>
<tackling>10</tackling>
<dribbling>10</dribbling>
<finishing>10</finishing>
<passing>10</passing>
<technique>10</technique>
<set_pieces>10</set_pieces>
<marking>10</marking>
<positioning>10</positioning>
</abilities>
</player>
<player>
<number>9</number>
<name>Renato</name>
<role>STC</role>
<position>
<x>161</x>
<y>59</y>
</position>
<abilities>
<strength>10</strength>
<resistance>10</resistance>
<jumping>10</jumping>
<speed>10</speed>
<creativity>10</creativity>
<mentality>10</mentality>
<heading>10</heading>
<tackling>10</tackling>
<dribbling>10</dribbling>
<finishing>10</finishing>
<passing>10</passing>
<technique>10</technique>
<set_pieces>10</set_pieces>
<marking>10</marking>
<positioning>10</positioning>
</abilities>
</player>
<player>
<number>10</number>
<name>Joao Pedro</name>
<role>AMC</role>
<position>
<x>179</x>
<y>133</y>
</position>
<abilities>
<strength>10</strength>
<resistance>10</resistance>
<jumping>10</jumping>
<speed>10</speed>
<creativity>10</creativity>
<mentality>10</mentality>
<heading>10</heading>
<tackling>10</tackling>
<dribbling>10</dribbling>
<finishing>10</finishing>
<passing>10</passing>
<technique>10</technique>
<set_pieces>10</set_pieces>
<marking>10</marking>
<positioning>10</positioning>
</abilities>
</player>
<player>
<number>11</number>
<name>Everaldo</name>
<role>FWC</role>
<position>
<x>250</x>
<y>79</y>
</position>
<abilities>
<strength>10</strength>
<resistance>10</resistance>
<jumping>10</jumping>
<speed>10</speed>
<creativity>10</creativity>
<mentality>10</mentality>
<heading>10</heading>
<tackling>10</tackling>
<dribbling>10</dribbling>
<finishing>10</finishing>
<passing>10</passing>
<technique>10</technique>
<set_pieces>10</set_pieces>
<marking>10</marking>
<positioning>10</positioning>
</abilities>
</player>
</players>
</team>
<team>
<name>Clube Atletico</name>
<players>
<player>
<number>1</number>
<name>Otavio</name>
<role>GKC</role>
<position>
<x>178</x>
<y>453</y>
</position>
<abilities>
<strength>10</strength>
<resistance>10</resistance>
<jumping>10</jumping>
<speed>10</speed>
<creativity>10</creativity>
<mentality>10</mentality>
<heading>10</heading>
<tackling>10</tackling>
<dribbling>10</dribbling>
<finishing>10</finishing>
<passing>10</passing>
<technique>10</technique>
<set_pieces>10</set_pieces>
<marking>10</marking>
<positioning>10</positioning>
</abilities>
</player>
<player>
<number>2</number>
<name>Giovanni</name>
<role>WBR</role>
<position>
<x>298</x>
<y>332</y>
</position>
<abilities>
<strength>10</strength>
<resistance>10</resistance>
<jumping>10</jumping>
<speed>10</speed>
<creativity>10</creativity>
<mentality>10</mentality>
<heading>10</heading>
<tackling>10</tackling>
<dribbling>10</dribbling>
<finishing>10</finishing>
<passing>10</passing>
<technique>10</technique>
<set_pieces>10</set_pieces>
<marking>10</marking>
<positioning>10</positioning>
</abilities>
</player>
<player>
<number>3</number>
<name>Victor Hugo</name>
<role>CBC</role>
<position>
<x>221</x>
<y>375</y>
</position>
<abilities>
<strength>10</strength>
<resistance>10</resistance>
<jumping>10</jumping>
<speed>10</speed>
<creativity>10</creativity>
<mentality>10</mentality>
<heading>10</heading>
<tackling>10</tackling>
<dribbling>10</dribbling>
<finishing>10</finishing>
<passing>10</passing>
<technique>10</technique>
<set_pieces>10</set_pieces>
<marking>10</marking>
<positioning>10</positioning>
</abilities>
</player>
<player>
<number>4</number>
<name>Airton</name>
<role>CBC</role>
<position>
<x>137</x>
<y>375</y>
</position>
<abilities>
<strength>10</strength>
<resistance>10</resistance>
<jumping>10</jumping>
<speed>10</speed>
<creativity>10</creativity>
<mentality>10</mentality>
<heading>10</heading>
<tackling>10</tackling>
<dribbling>10</dribbling>
<finishing>10</finishing>
<passing>10</passing>
<technique>10</technique>
<set_pieces>10</set_pieces>
<marking>10</marking>
<positioning>10</positioning>
</abilities>
</player>
<player>
<number>5</number>
<name>Guido</name>
<role>DMC</role>
<position>
<x>180</x>
<y>321</y>
</position>
<abilities>
<strength>10</strength>
<resistance>10</resistance>
<jumping>10</jumping>
<speed>10</speed>
<creativity>10</creativity>
<mentality>10</mentality>
<heading>10</heading>
<tackling>10</tackling>
<dribbling>10</dribbling>
<finishing>10</finishing>
<passing>10</passing>
<technique>10</technique>
<set_pieces>10</set_pieces>
<marking>10</marking>
<positioning>10</positioning>
</abilities>
</player>
<player>
<number>6</number>
<name>Breno</name>
<role>WBL</role>
<position>
<x>56</x>
<y>335</y>
</position>
<abilities>
<strength>10</strength>
<resistance>10</resistance>
<jumping>10</jumping>
<speed>10</speed>
<creativity>10</creativity>
<mentality>10</mentality>
<heading>10</heading>
<tackling>10</tackling>
<dribbling>10</dribbling>
<finishing>10</finishing>
<passing>10</passing>
<technique>10</technique>
<set_pieces>10</set_pieces>
<marking>10</marking>
<positioning>10</positioning>
</abilities>
</player>
<player>
<number>7</number>
<name>Diniz</name>
<role>MFR</role>
<position>
<x>266</x>
<y>229</y>
</position>
<abilities>
<strength>10</strength>
<resistance>10</resistance>
<jumping>10</jumping>
<speed>10</speed>
<creativity>10</creativity>
<mentality>10</mentality>
<heading>10</heading>
<tackling>10</tackling>
<dribbling>10</dribbling>
<finishing>10</finishing>
<passing>10</passing>
<technique>10</technique>
<set_pieces>10</set_pieces>
<marking>10</marking>
<positioning>10</positioning>
</abilities>
</player>
<player>
<number>8</number>
<name>Guilherme</name>
<role>MFL</role>
<position>
<x>101</x>
<y>231</y>
</position>
<abilities>
<strength>10</strength>
<resistance>10</resistance>
<jumping>10</jumping>
<speed>10</speed>
<creativity>10</creativity>
<mentality>10</mentality>
<heading>10</heading>
<tackling>10</tackling>
<dribbling>10</dribbling>
<finishing>10</finishing>
<passing>10</passing>
<technique>10</technique>
<set_pieces>10</set_pieces>
<marking>10</marking>
<positioning>10</positioning>
</abilities>
</player>
<player>
<number>9</number>
<name>Douglas</name>
<role>STC</role>
<position>
<x>130</x>
<y>76</y>
</position>
<abilities>
<strength>10</strength>
<resistance>10</resistance>
<jumping>10</jumping>
<speed>10</speed>
<creativity>10</creativity>
<mentality>10</mentality>
<heading>10</heading>
<tackling>10</tackling>
<dribbling>10</dribbling>
<finishing>10</finishing>
<passing>10</passing>
<technique>10</technique>
<set_pieces>10</set_pieces>
<marking>10</marking>
<positioning>10</positioning>
</abilities>
</player>
<player>
<number>10</number>
<name>Henrique</name>
<role>AMC</role>
<position>
<x>177</x>
<y>135</y>
</position>
<abilities>
<strength>10</strength>
<resistance>10</resistance>
<jumping>10</jumping>
<speed>10</speed>
<creativity>10</creativity>
<mentality>10</mentality>
<heading>10</heading>
<tackling>10</tackling>
<dribbling>10</dribbling>
<finishing>10</finishing>
<passing>10</passing>
<technique>10</technique>
<set_pieces>10</set_pieces>
<marking>10</marking>
<positioning>10</positioning>
</abilities>
</player>
<player>
<number>11</number>
<name>Matias</name>
<role>STC</role>
<position>
<x>229</x>
<y>68</y>
</position>
<abilities>
<strength>10</strength>
<resistance>10</resistance>
<jumping>10</jumping>
<speed>10</speed>
<creativity>10</creativity>
<mentality>10</mentality>
<heading>10</heading>
<tackling>10</tackling>
<dribbling>10</dribbling>
<finishing>10</finishing>
<passing>10</passing>
<technique>10</technique>
<set_pieces>10</set_pieces>
<marking>10</marking>
<positioning>10</positioning>
</abilities>
</player>
</players>
</team>
</simInit>
Simulação de Jogos Cooperativos Baseada em Decisões de Múltiplos Humanos e Agentes Proposta Aluno: Peter Furtado Dam Matrícula: 0611678­3 Orientador: Prof. Marcos V. Villas Período: 2009.1 Data de Entrega: 13 de abril de 2009 _______________________________________________________ _______________________________________________________ SIMULAÇÃO DE JOGOS COOPERATIVOS BASEADA EM DECISÕES DE MÚLTIPLOS HUMANOS E AGENTES Peter Furtado Dam Matrícula: 0611678 Índice 1 Introdução 2 Estado da Arte ................................................................................................................ 2 .......................................................................................................... 4 3 Proposta e Objetivos do Trabalho .............................................................................. 3.1 Sistema de posicionamento de elementos .............................................................. 8 ............................................................................ 8 ............................................................................................. 8 3.2 Sistema de regras bem definido 3.3 Sistema de atributos 3.4 Sistema de tomada e processamento de decisão 3.5 Sistema de turnos ..................................................... ................................................................................................ 3.6 Sistema de saída de dados .................................................................................... 3.7 Sistema de apresentação do estado da simulação 4 Plano de Ação .................................................. ........................................................................................................... 5 Referências Bibliográficas 7 ........................................................................................... ‐ 1 ‐ PUC – Rio – Pontifícia Universidade Católica 8 8 9 9 10 11 SIMULAÇÃO DE JOGOS COOPERATIVOS BASEADA EM DECISÕES DE MÚLTIPLOS HUMANOS E AGENTES Peter Furtado Dam Matrícula: 0611678 1. Introdução A simulação é uma área da computação que chama bastante atenção, pois existem vários estudos nesta área e, quando é bem feita, impressiona pelo grau de realismo que pode atingir, fazendo com que os usuários se envolvam profundamente com a experiência proporcionada pela simulação. Quase sempre envolve muitas fórmulas e contas, além de algoritmos complexos para que atinja esse maior grau de realismo. Em alguns casos a simulação se mistura com sistemas de tomada de decisão, principalmente quando é uma simulação que, em sua natureza, depende de vários agentes. Isso é bem comum em jogos atualmente, principalmente nos que envolvem equipes. Nem sempre toda a equipe de um jogo é composta por pessoas reais, então o sistema precisa ter um sistema de inteligência artificial capaz de preencher esses lugares, garantindo que essa equipe possa ainda ser completamente funcional. Uma tendência que vem se apresentando é o surgimento de jogos para múltiplos jogadores. Portanto, além do sistema ser capaz de interpretar as informações de decisões tomadas pelo próprio sistema, precisa ter um mecanismo que gerencie vários usuários tomando as suas próprias decisões independentes. Este mecanismo capturará todas as informações e as usará para fazer os cálculos necessários da sua simulação. O futebol é um tema bastante interessante e explorado em alguns aspectos na simulação. É um tema clássico para estudos de sistemas multi‐agentes por ser, segundo Moemeng [1], um problema distribuído de ambiente colaborativo e competitivo. É colaborativo porque envolve um conjunto de agentes que buscam obter êxito em uma tarefa através da colaboração entre si, e é competitivo porque existe um outro conjunto de agentes rivais, onde somente um destes conjuntos pode sair vitorioso. O conjunto de regras é relativamente bem conhecido pela maioria das pessoas e envolve um apelo emocional geralmente maior do que outras possíveis simulações. Em cima desta simulação, é possível criar um conceito de comunidade, onde pessoas participam da simulação através de uma representação virtual. Uma pessoa na vida real pode ser representada por um personagem no ambiente virtual, e, através deste, participa efetivamente tomando decisões por ele a fim de influenciar o resultado da simulação. Trata‐se, então, de um sistema de simulação de ambiente futebolístico virtual, onde os personagens (agentes) desta simulação são inúmeros humanos e computadores. Os personagens se reunirão em equipes, com a intenção de atingirem o sucesso pessoal, mas que dependerá necessariamente do sucesso coletivo. ‐ 2 ‐ PUC – Rio – Pontifícia Universidade Católica SIMULAÇÃO DE JOGOS COOPERATIVOS BASEADA EM DECISÕES DE MÚLTIPLOS HUMANOS E AGENTES Peter Furtado Dam Matrícula: 0611678 No conjunto de jogos eletrônicos de futebol que existem hoje é possível destacar alguns tipos de simulação. Alguns permitem que o usuário desenvolva um personagem e tenha uma carreira, outros se baseiam na equipe inteira, onde o usuário não tem definido um personagem fixo. Mas nenhum destes simuladores possui como ponto chave o desenvolvimento das habilidades de um personagem e na subsequente interação feita pelo usuário com o sistema. Esta linha de jogo segue um gênero conhecido como RPG, do inglês Role Playing Game (jogo de interpretação), que tem, como base, o desenvolvimento de vários aspectos de um personagem baseado em decisões tomadas durante o longo de uma história. Este projeto tem, como objetivo, desenvolver uma simulação em dois aspectos: o desenvolvimento de um personagem, como um RPG, e a simulação de partidas de futebol, onde múltiplos usuários e jogadores controlados pela máquina (com o apoio de técnicas de inteligência artificial) tomarão decisões para cada ação executada por seus personagens. As decisões dos jogadores, aliado às habilidades que desenvolveram para seus personagens, contribuirão para que a sua equipe seja vitoriosa ao fim da simulação de uma partida. Existem muitos trabalhos em ambos os aspectos acima citados, mas não conheço um que utilize as duas, e por este motivo surgiu o interesse em estudar uma implementação que tire proveito de todos estes elementos. ‐ 3 ‐ PUC – Rio – Pontifícia Universidade Católica SIMULAÇÃO DE JOGOS COOPERATIVOS BASEADA EM DECISÕES DE MÚLTIPLOS HUMANOS E AGENTES Peter Furtado Dam Matrícula: 0611678 2. Estado da Arte Na seção anterior abordei os tipos de simulação que dizem respeito a este trabalho. Existem vários trabalhos que também abordam uma ou outra simulação, e quase todos são jogos. Existe um gênero de jogo chamado “fantasy football” que aborda uma simulação de partida de futebol. Em quase todos estes jogos o usuário é um gerente, ou técnico, de um clube e a simulação se dá somente no momento das partidas. A diferença é que não existe intervenção humana durante a simulação, ou seja, todas as ações são decididas pela inteligência artificial do jogo. Basicamente a simulação recebe uma entrada de informações, definidas pelo usuário, e faz um cálculo para gerar o resultado final. Alguns fazem cálculos para apenas o resultado, outros fazem a simulação completa, jogada por jogada, para produzir de forma mais realista esse resultado. As informações quase sempre são (1) esquema tático, (2) definição de posições dos jogadores e (3) escalação. Para estas informações não existe uma evolução de um personagem, pois são puramente baseadas no conhecimento que o usuário tem do jogo. É possível classificar o “fantasy football” em pelo menos três tipos: básico, parcial e completo. O básico é quando o único elemento presente é o controle de uma equipe, porém sem simulação. É o caso do Cartola FC [2], onde os jogadores existem na vida real. O usuário cria uma equipe e seleciona os jogadores da sua equipe. Estes jogadores não são exclusivos para cada equipe e não há partida simulada, ou seja, não há enfrentamento entre as equipes. Cada equipe soma pontos de acordo com o desempenho dos jogadores no mundo real. Este tipo de jogo é bastante comum por não envolver muitas complicações técnicas, porém exige bastante manutenção para atualizar o desempenho de cada jogador. O Cartola FC funciona somente durante o Campeonato Brasileiro de futebol, e somente para a série A (20 equipes). O “fantasy football” parcial é quando existe simulação, independentemente da sua complexidade. Existem exemplos muito simplistas e outros com um grau de complexidade enorme. Geralmente neste tipo de jogo o usuário é técnico de um clube que existe no mundo real com jogadores também reais. A diferença é que nestes jogos não há uma ligação contínua entre o mundo virtual e o mundo real, ou seja, uma vez que se está jogando a situação dos clubes e dos jogadores virtuais pode e provavelmente não será a mesma do mundo real. Existe enfrentamento direto entre os clubes e os resultados são simulados. Um exemplo é o Elifoot [3] que existe há bastante tempo. Nas suas versões iniciais a simulação era muito simples: os jogadores possuíam ‐ 4 ‐ PUC – Rio – Pontifícia Universidade Católica SIMULAÇÃO DE JOGOS COOPERATIVOS BASEADA EM DECISÕES DE MÚLTIPLOS HUMANOS E AGENTES Peter Furtado Dam Matrícula: 0611678 apenas um atributo e não havia simulação de jogadas, apenas demonstrava quando era marcado gol. Um outro exemplo é o Football Manager [4]. Este jogo é consideravelmente mais complexo que o Elifoot, onde os jogadores possuem uma grande quantidade de atributos e a simulação é feita jogada por jogada, sendo exibida em forma de texto. Após algumas versões o jogo passou a exibir o jogo em tempo real, em um campo bidimensional. No tipo completo de “fantasy football” não existe mais nada ligando ao mundo real: os jogadores são puramente virtuais, bem como os times e quaisquer outros elementos do âmbito futebolístico. Há também simulação de partidas, bem como no tipo parcial. É, basicamente, a única diferença entre os dois tipos, podendo a “engine” (sistema central do jogo) ser a mesma em ambos os casos. Outro estilo de jogo que utiliza técnicas de simulação são os jogos de futebol, como FIFA Soccer [5] e Pro Evolution Soccer [6]. Estes jogos dão ao usuário a possibilidade de participar ativamente da partida. Além disto, permite que vários usuários joguem ao mesmo tempo, mas em ambos os casos o usuário não controla somente um jogador. O jogador controlado é constantemente alterado, ou seja, não há ainda o conceito de personagem. É possível até mesmo ser técnico, pois o usuário tem a possibilidade de alterar padrões táticos e fazer substituições, mas estes jogos raramente são jogados com mais de duas pessoas ao mesmo tempo, geralmente uma em cada equipe. Outro fato é que nestes jogos não há uma identificação forte entre um jogador e o usuário, pois ele controla vários ao mesmo tempo. O elemento interessante do RPG está exatamente na ligação emocional entre a pessoa e o personagem por ela interpretada. Alheio a tudo citado acima existe uma competição muito interessante: RoboCup [7]. O RoboCup é uma competição entre desenvolvedores, onde a idéia é construir uma IA (inteligência artificial) capaz de tomar decisões. Cada time é representado por uma IA, que é incorporado a um servidor do RoboCup para disputar partidas contra outras IA. As partidas são simuladas em tempo real pelo servidor, que é a única máquina que sabe todas as variáveis do jogo. As máquinas cliente (uma para cada equipe) são chamadas para tomar decisões para cada um dos seus jogadores e comissão técnica. As informações que essas máquinas recebem não são integrais, ou seja, são defasadas para simular a percepção humana que cada agente tem da situação. Uma iniciativa para a união entre RPG e simulação de partidas está presente no jogo New Star Soccer [8]. O usuário é representado no jogo por um único personagem que ele precisa evoluir para conquistar fama e sucesso. Esta fama e sucesso vêm de acordo com decisões que o ‐ 5 ‐ PUC – Rio – Pontifícia Universidade Católica SIMULAÇÃO DE JOGOS COOPERATIVOS BASEADA EM DECISÕES DE MÚLTIPLOS HUMANOS E AGENTES Peter Furtado Dam Matrícula: 0611678 usuário escolhe em fatores fora do campo de jogo e durante a simulação de uma partida. Ao decorrer da partida são apresentadas opções ao jogador, dependendo das suas escolhas a atuação do seu personagem pode ser boa ou ruim, em uma escala de 1 a 10. A sequência de jogos define a relação do personagem com o treinador, o restante do elenco, a torcida, família, amigos, patrocinadores e outros meios sociais. Nas versões mais recentes é possível até mesmo jogar (graficamente semelhante aos jogos mais antigos de FIFA Soccer) a partida. É uma simulação muito interessante, porém só se pode jogar com um usuário, ou seja, não existem múltiplos usuários e, consequentemente, relação entre estes jogadores. Fugindo um pouco do futebol existe um jogo que simula um ambiente do cotidiano de músicos. Trata‐se do Popmundo [9]. O Popmundo é uma espécie de RPG, onde o usuário é representado por um músico, que pode participar de uma banda musical. O desempenho da banda, tanto nos shows como no geral, depende do desempenho individual de cada membro. O empenho que cada usuário tem com o seu personagem refletirá no reconhecimento e fama que ele obterá no jogo. Essa forma de induzir um pensamento coletivo, ou seja, uma comunidade, através de um jogo é pouco explorada com o tema futebol, mas tem potencial para ser amplamente utilizado, pois em sua natureza é uma atividade coletiva. ‐ 6 ‐ PUC – Rio – Pontifícia Universidade Católica SIMULAÇÃO DE JOGOS COOPERATIVOS BASEADA EM DECISÕES DE MÚLTIPLOS HUMANOS E AGENTES Peter Furtado Dam Matrícula: 0611678 3. Proposta e Objetivos do Trabalho Objetivos Gerais Neste trabalho a proposta é estudar e desenvolver algoritmos de simulação de partida em tempo real com a possibilidade de interação de múltiplos usuários. Basicamente trata‐se da simulação de uma partida completa, descrita anteriormente, através da simulação de cada jogada da partida. A simulação da partida proporcionará a possibilidade real de testar habilidades desenvolvidas para o personagem, mas ao mesmo tempo usar da capacidade de decisão do usuário representado por este personagem. Além disto, existe a intenção de estudar mecanismos de maior interação com a partida, de forma a criar maior dificuldade e diversão. É imperativo que múltiplos usuários possam interagir na mesma partida para que exista uma dependência entre usuários do sistema, fazendo com que todos de uma mesma equipe dependam do desempenho individual de cada membro para atingirem suas próprias metas pessoais. Além desta simulação existe toda uma interface necessária para que o usuário desenvolva o seu personagem, ou seja, é preciso criar também um ambiente cotidiano simulado onde o usuário precisará tomar decisões em fatores que não sejam dentro da partida. Por exemplo: treinamento, aquisição de bens, contratos de patrocinadores, relação com a mídia ou qualquer outro fator que esteja presente em um ambiente do cotidiano futebolístico. Esta simulação não será abordada neste projeto por se tratar de dois sistemas diferentes onde ambos têm um elevado grau de complexidade. Por motivos de tempo, foi escolhida a simulação de partida, que é tecnicamente mais complicada e menos explorada. O objetivo do trabalho é produzir um sistema que possa ser posteriormente incorporado facilmente a um ambiente simulado que forneça os dados iniciais para a simulação da partida e disponha de uma interface para a interação em tempo real com esta simulação para que um ou mais usuários possam interferir diretamente no resultado final da partida. Em relação ao que já existe no estado da arte, o trabalho proporcionará um avanço no sentido de que vários usuários podem influenciar de várias maneiras a simulação em tempo real, mas sempre representados por um único personagem, o que visa a criar uma ligação emocional com este personagem. ‐ 7 ‐ PUC – Rio – Pontifícia Universidade Católica SIMULAÇÃO DE JOGOS COOPERATIVOS BASEADA EM DECISÕES DE MÚLTIPLOS HUMANOS E AGENTES Peter Furtado Dam Matrícula: 0611678 Objetivos Específicos Para atingir esta meta, alguns itens precisarão ser desenvolvidos. A seguir serão apresentados estes itens e a descrição de cada. 3.1 Sistema de posicionamento de elementos É necessário, para iniciar o sistema de simulação, que este sistema possa receber informações de jogadores, comissão técnica e, principalmente, instruções táticas. Com estes dados os agentes precisarão se posicionar de acordo para dar início à partida. 3.2 Sistema de regras bem definido Será de suma importância definir as regras do jogo para que os agentes possam tomar as suas decisões. Essas regras precisam ser interpretadas pelo simulador e por cada agente que estará envolvido na simulação, além de proibir ações ilegais que o usuário possa cometer. 3.3 Sistema de atributos Cada agente no sistema possuirá um conjunto de atributos dependendo do seu papel no jogo. A princípio podemos dividir em três funções: goleiro, jogador de linha e técnico. Cada um dos três terá um conjunto diferente de atributos que influenciarão na capacidade de executar cada decisão tomada. 3.4 Sistema de tomada e processamento de decisão Os agentes do sistema precisarão tomar decisão quando não estiverem sob controle de um usuário. Estas decisões precisam ser tomadas com base nas regras que foram definidas, na definição tática e no seu conjunto de atributos. Estes agentes precisam ser inteligentes o suficiente para não tentarem executar uma ação que eles possuem pouquíssimo talento, além de precisarem respeitar, dentro de certo limite, os padrões táticos definidos para eles. Uma vez que o agente decidiu qual ação realizar ele precisará informar ao simulador, que recolherá todas as decisões que ele precisa e calculará o resultado daquele instante. 3.5 Sistema de turnos Considero que a melhor maneira de implementar a interação com o sistema é trabalhar em turnos, ou seja, o simulador funcionará em ciclos. A cada ciclo o simulador esperará uma decisão de cada agente e, com todas essas informações, faz o processamento necessário para calcular o resultado do ciclo, retornando, para cada agente, a situação atual. ‐ 8 ‐ PUC – Rio – Pontifícia Universidade Católica SIMULAÇÃO DE JOGOS COOPERATIVOS BASEADA EM DECISÕES DE MÚLTIPLOS HUMANOS E AGENTES Peter Furtado Dam Matrícula: 0611678 3.6 Sistema de saída de dados É importante, também, criar uma interface bem definida para a comunicação do resultado dos turnos a um sistema que apresente o estado atual da simulaçao para que os usuários tenham ciência do que está ocorrendo na partida. 3.7 Sistema de apresentação do estado da simulação Uma vez que toda a simulação de um turno foi concluída é preciso apresentar os dados, ou seja, as informações atualizadas daquele instante, para o usuário. Desta maneira o usuário saberá o que ocorreu e o ajudará a tomar a sua próxima decisão. Para não criar complicações técnicas foi escolhido criar um sistema de apresentação por texto, descrevendo o estado atual ao redor do personagem do usuário que está recebendo o texto. Esta forma de apresentação já se provou relativamente eficiente e menos complexo de implementar. Depois que todos estes itens estiverem devidamente funcionando, é esperado ter um sistema completo de simulação de uma partida, capaz de receber instruções de nenhum, um ou vários usuários, produzindo resultados coerentes. Para apresentar o sistema serão feitas várias simulações, alterando informações iniciais (conjunto de jogadores, instruções táticas) e interagindo com a simulação com nenhum, um e mais de um usuário. ‐ 9 ‐ PUC – Rio – Pontifícia Universidade Católica SIMULAÇÃO DE JOGOS COOPERATIVOS BASEADA EM DECISÕES DE MÚLTIPLOS HUMANOS E AGENTES Peter Furtado Dam Matrícula: 0611678 4. Plano de Ação Antes de realmente fazer qualquer algoritmo de simulação será preciso criar um ambiente capaz de receber e reunir todas as informações que a simulação utilizará. Também será preciso criar uma forma de analisar o resultado gerado, então será determinada uma maneira de ler este resultado. Uma vez que estes ambientes estiverem funcionando é que a simulação poderá ser atacada de fato. 4.1 Estudos a serem realizados •
Uma interface (API) básica para “input” (entrada) de dados para o simulador •
Uma interface (API) básica para “output” (saída) de dados do simulador •
Como implementar um sistema multi‐agente •
Como criar “micro‐visões” para cada agente (percepção simulada) •
Como estabelecer regras e limites que sejam respeitados durante a tomada de decisão •
Uma interface (API) para receber instruções de um usuário e sobrescrever a decisão de um agente que represente o personagem deste usuário •
Como compor todas as informações e calcular um resultado com base em múltiplas variáveis de cada agente 4.2 Tecnologias utilizadas Para que o sistema seja acessível a múltiplos usuários que utilizem qualquer sistema operacional capaz de acessar páginas de internet foi escolhido o uso de tecnologia web. Inicialmente será utilizada uma interface gráfica local para testes, então a linguagem escolhida foi Java por alguns motivos: é portável, possui ferramentas de desenvolvimento poderosas e gratuitas e é facilmente acoplável em um sistema web (JSP). ‐ 10 ‐ PUC – Rio – Pontifícia Universidade Católica SIMULAÇÃO DE JOGOS COOPERATIVOS BASEADA EM DECISÕES DE MÚLTIPLOS HUMANOS E AGENTES Peter Furtado Dam Matrícula: 0611678 5. Referências Bibliográficas [1] P. Moemeng, Issues in Soccer Simulation Software Development, http://www.journal.au.edu/au_techno/2004/apr04/vol7num4_article04.pdf, Abril, 2004. [2] Cartola FC, http://cartolafc.globo.com/, Abril, 2009. [3] Elifoot, http://www.elifoot.net/, Abril, 2009. [4] Football Manager, http://www.footballmanager.com/, Abril, 2009. [5] FIFA Soccer, http://www.fifa09.ea.com/br, Abril, 2009. [6] Pro Evolution Soccer, http://www.konami.com/games/pes09/, Abril, 2009. [7] RoboCup, http://www.robocup.org, Abril, 2009. [8] New Star Soccer, http://www.newstargames.com/, Abril, 2009. [9] Popmundo, http://www.popmundo.com/, Abril, 2009. ‐ 11 ‐ PUC – Rio – Pontifícia Universidade Católica 

Documentos relacionados