Buscar

Jogos e Inteligencia Artificial

Prévia do material em texto

Jogos e Inteligeˆncia Artificial
Adelson Pacheco e Lucas Rodrigues
Resumo
Nesse artigo iremos abordar um pouco sobre o processo de criac¸a˜o,
te´cnicas, me´todos usados na fabricac¸a˜o de jogos e tambe´m apresentar
algumas informac¸o˜es da a´rea, apresentando uma perspectiva futura.
Abordaremos tambe´m o uso de IA (Inteligeˆncia Artifical) nos jogos de
hoje e de antigamente, o que faz com que eles sejam mais desafiadores
e, consequentemente, mais emocionantes de se jogar.
1 Criac¸a˜o de um jogo
A criac¸a˜o de um jogo e´ na verdade a criac¸a˜o de um sofware complexo, onde se
necessita de um script, uma historia,conceitos art´ısticos, a´udio, programac¸a˜o,
e toda uma estrutura para trazer a vida aqueles personagens imagina´rios,
responsa´veis por horas de alegria e diversa˜o para adultos e crianc¸as. Ha´ duas
formas mais comum de desenvolvimento:
• O desenvolvimento indie: todo o jogo e´ feito por uma u´nica pessoa.
Esse tipo de produc¸a˜o e´ mais barato, mais lento, e os resultados na˜o
sa˜o ta˜o bons se comparados a aqueles feitos por grandes estu´dios.
• O desenvolvimento em estu´dios: a criac¸a˜o e´ feita em um estu´dio, finan-
ciada por alguma empresa grande – nesse caso chamada de editora -,
contando com um grande nu´mero de funciona´rios que juntos formam
os desenvolvedores. Demanda um pouco mais de tempo pelo fato de
que esse tipo de desenvolvimento so´ e´ utilizado em jogos grandes, mais
detalhados, que sa˜o os que realmente va˜o para o mercado e que fazem
mais sucesso.
O desenvolvimento em estu´dios segue toda uma estrutura de criac¸a˜o, como
engenharia de sofware, um cronograma, divisa˜o do trabalho, um padra˜o de
1
qualidade, e o uso de me´todos como o desenvolvimento a´gil e o Personal
Sofware Process,(me´todos mais adequados a` criac¸a˜o de jogos pelo fato de
sempre se ter um proto´tipo em ma˜os). A equipe desenvolvedora conta com
alguns tipos diferentes de profissionais, como[9]:
1.1 O produtor
Existem dois tipos de produtores: os internos e externos. Os produtores
externos ou tambe´m chamados de “produtores executivos” sa˜o aqueles fun-
ciona´rios da empresa que financia o jogo. Sua principal func¸a˜o e´ acompanhar
o desenvolvimento dos jogos e manter a diretoria da editora informada do
andamento do projeto; ele e´ o elo entre os funciona´rios do estu´dio e os in-
vestidores. O produtor interno e´ a pessoa encarregada de estar a` frente da
criac¸a˜o. E´ o responsa´vel por orientar a equipe, por montar o cronograma
e fazer com que todos estejam de acordo com ele, analisar e dividir toda a
verba destinada a` criac¸a˜o, garantir a qualidade desse software e fazer com
que nada venha a dar errado.
1.2 Editora
Similar as editoras de livros, sa˜o elas que financiam e publicam todos os
projetos onde elas esta˜o envolvidas. E´ a empresa grande que torna poss´ıvel
que grandes jogos sejam feitos (alguns jogos teˆm seu orc¸amento em apro-
ximadamente US$ 20 milho˜es, o que seria invia´vel para a grande maioria
dos estu´dios arcarem sozinhos com toda essa cifra). Sa˜o responsa´veis pelo
marketing e por toda a distribuic¸a˜o do produto.
1.3 Estu´dio
E´ o grupo responsa´vel pelo desenvolvimento dos jogos. Sa˜o eles que realmente
criam desde o conceito, a histo´ria, o roteiro e todas as demais partes do game.
Possuem entre 20 a 100 funciona´rios, dependendo do jogo a ser feito. Um
u´nico estu´dio pode desenvolver diversos trabalhos ao mesmo tempo.
1.4 Designer
E´ a pessoa responsa´vel por projetar o jogo, desde a histo´ria, as regras, per-
sonagens, locais, narrativas, ou seja, todo o conceito, a base do jogo. Em
2
projetos maiores, costuma-se colocar va´rios designers, cada um responsa´vel
por uma parte do jogo como a mecaˆnica, interface de usua´rio, personagens,
dialogo, tendo um que vai estar a` frente coordenando o trabalho de todos os
outros designers.
1.5 Artista
E´ o Profissional que responsa´vel por todo o visual do jogo. E´ ele quem
desenha, modela, cria os cena´rios, as cenas, a apareˆncia f´ısica de cada per-
sonagem. O diretor de arte e´ a pessoa que supervisiona toda a produc¸a˜o de
arte, garantindo que todos esta˜o seguindo a mesma visa˜o.
1.6 Programador
Profissional que desenvolve todo o co´digo fonte. Os profissionais de arte
criam os ambientes, personagens, toda a parte gra´fica, e os programadores
criam o co´digo que vai unir tudo o que foi constru´ıdo e montar a estrutura
do jogo em si, com os comandos, fases e o correto funcionamento.
1.7 Produc¸a˜o de a´udio
Profissionais com a func¸a˜o de compor e orquestrar todo o a´udio presente
no jogo como as falas dos personagens, sons ambientes, mu´sicas e tambe´m
coordenar os dubladores. Geralmente e´ um cargo ocupado por um engenheiro
de a´udio.
1.8 Tester
Profissional que tem a func¸a˜o de testar os jogos em busca de encontrar erros
ou qualquer tipo de problema que esta´ presente nos proto´tipos. E´ uma func¸a˜o
importante, ja´ que qualquer problema, qualquer erro no meio do jogo pode
resultar em perda de vendas, perda de qualidade, e dependendo do erro pode
impedir o lanc¸amento do jogo, ja´ que eles precisam passar por analise com
as empresas de consoles, para depois irem para o mercado.
2 Fases no desenvolvimento de um jogo
O processo de desenvolvimento inclui as seguintes fases [8]:
3
2.1 Pre´ produc¸a˜o
Um jogo, ale´m de um software, e´ tambe´m uma obra de arte. Antes de comec¸ar
realmente a ser constru´ıdo, precisa-se de toda uma documentac¸a˜o a respeito
da obra. Assim como em um livro, necessita-se da historia, dos personagens,
publico alvo, orc¸amento dos gastos e tempo, qual sera´ a plataforma, a lin-
guagem, e apo´s ter tudo isso em ma˜os, sintetiza-se as informac¸o˜es em um
manuscrito, chamado de documentac¸a˜o funcional, onde esta´ descrito todo o
funcionamento do jogo e sera´ o suporte da equipe nesse desenvolvimento.
2.2 Escolha das tecnologias
E´ importante desde o inicio saber qual sera´ a plataforma sobre a qual o
jogo sera´ executado. Um jogo precisa desse hardware que seja capaz de
fazer sua execuc¸a˜o. A escolha desse hardware e tambe´m da linguagem a ser
usada na˜o e´ aleato´ria. Sa˜o feitos va´rios ca´lculos e algoritmos, de forma a se
obter o melhor custo benef´ıcio. O console escolhido na maioria dos casos e´
o mais avanc¸ado que o mercado oferecer, pelo fato de se ter um hardware
melhor, com uma capacidade maior de processamento, e consequentemente
um melhor funcionamento do jogo. Ja´ a escolha da linguagem demanda uma
ana´lise mais aprofundada. Precisa-se de uma linguagem de baixo n´ıvel para
o nu´cleo do game, e uma linguagem de script de alto n´ıvel, que em alguns
casos e´ criada especialmente para determinado tipo de jogo. Hoje, grande
parte dos estu´dios utiliza motores de jogo (game engine), que e´ uma espe´cie
de sofware utilizado na construc¸a˜o de um determinado tipo de jogo, com o
objetivo de facilitar o desenvolvimento. Ele possui uma extensa biblioteca
onde os criadores encontram tudo o que precisam para o desenvolvimento do
jogo: motor gra´fico para renderizar gra´ficos 2D e/ou 3D, um motor de f´ısica
ou simplesmente para fazer detecc¸a˜o de colisa˜o, suporte a animac¸a˜o, sons,
inteligeˆncia artificial, networking, gerencia de memo´ria, gerencia de arquivos,
gerencia de linha de execuc¸a˜o, suporte a grafos de cenas e entidades e suporte
a uma linguagem de script.
2.3 Linguagens
A programac¸a˜o e´ o que transforma todo o material dispon´ıvel no jogo propiri-
amente dito.Sem programac¸a˜o tudo na˜o passa de um amontoado de imagens
e videos. A escolha da linguagem e´ uma parte fundamental no sucesso do
4
jogo, pois e´ ela que configura todo o funcionamento, todas as opc¸o˜es. A
estrutura do jogo e´ feita em uma linguagem de baixo n´ıvel e orientada a
objetos, onde a mais usada e´ C++[6]. A linguagem de baixo n´ıvel e´ um
fator de extrema importancia, pelo fato dela na˜o exigirmuito do harware
enquanto e´ executada, o que seria um grande problema se usassem lingua-
gens de alto nivel, que necessitaria de mais memo´ria em seu processamento,
diminuindo a memo´ria dispon´ıvel para os gra´ficos. Juntamente com a lin-
guagem base, sa˜o usadas linguagens de scripts. Ela sa˜o utilizadas para uma
maior customizac¸a˜o em determinados n´ıveis do jogo, as quais seriam quase
que impratica´veis na linguagem base [7]. Todos esses detalhes sa˜o necessarios
para que se tenha o melhor e mais eficiente co´digo.
2.4 Level Designer
Apo´s fazer todas as escolhas e ter todas as opc¸o˜es e funcionamento do jogo
em ma˜os, comec¸am as fases de implementac¸a˜o. Inicialmente, divide-se todo
o mapa do jogo em “fases”, sub n´ıveis com caracter´ısticas pro´prias, cada uma
com seu n´ıvel de dificuldade, onde a unia˜o de todas elas formara´ o jogo[8].
Nessa etapa todo o jogo sera´ especificado nos mı´nimos detalhes, ja´ que no
script principal encontra-se apenas a ide´ia geral. Cabe ao designer criar
os cena´rios, projetar n´ıveis de dificuldade, a missa˜o que o jogador devera´
cumprir.
2.5 Criac¸a˜o/Animac¸a˜o
Apo´s ter especificado tudo, vem a` hora de passar tudo isso para o computa-
dor. Nessa etapa os designers ira˜o construir cada cena´rio, cada personagem.
E´ uma fase demorada e e´ ela a responsa´vel por toda a apareˆncia do game.
Escolhas de cores, texturas, estilos, elementos, detalhes gra´ficos, sa˜o repeti-
das dezenas de vezes na busca do visual ideal. E´ preciso muita pesquisa nesse
ponto, ja´ que a apareˆncia de um jogo representa grande parte da avaliac¸a˜o
do consumidor. Estudos sa˜o feitos para que a cor na˜o seja muito forte – para
que o usua´rio consiga jogar por um grande per´ıodo de tempo sem se cansar –,
tambe´m para que na˜o fique muito escuro. Tudo minuciosamente estudado e
testado. Em seguida os objetos criados sa˜o animados, ganham movimentos,
caracter´ısticas pro´prias atrave´s das engines [8].
5
2.6 Programac¸a˜o
Apo´s todos os blocos e personagens estarem prontos, sa˜o enviados aos progra-
madores que ira˜o juntar tudo, inserir os personagens em seus devidos lugares,
e tambe´m programar todos os comandos, ac¸o˜es de cada parte do game.
2.7 Teste
Apo´s a programac¸a˜o, temos um proto´tipo do jogo que e´ testado por profissio-
nais treinados em encontrar poss´ıveis erros, problemas gra´ficos, erros lo´gicos
ou qualquer outra coisa que possa vir atrapalhar o bom funcionamento e a
qualidade do jogo.
3 Histo´ria da IA em Jogos
Os primeiros jogos foram desenvolvidos pra simular situac¸o˜es dia´rias como,
por exemplo, os jogos de Xadrez, Dama e Jogo da Velha. A principal pre-
ocupac¸a˜o dos desenvolvedores nessa e´poca era a parte visual, consequente-
mente, deixavam de lado o uso de Inteligeˆncia Artificial. Tambe´m, nesse
momento, os desenvolvedores usavam-se de te´cnicas de programac¸a˜o para
“enganar” os jogadores.
4 Te´cnicas de IA em jogos
Das muitas te´cnicas de Inteligeˆncia Artificial, atualmente algumas vem sendo
mais usadas no desenvolvimento de jogos. [6] Tais te´cnicas sa˜o descritas a
seguir.
4.1 Ma´quinas de Estado Finito
Essa te´cnica tem enfoque em regras como as Ma´quinas de Estado Finito
(FSM) e e´ a te´cnica mais utilizada nos jogos atuais. [6] De acordo com
os desenvolvedores, o largo uso de Ma´quinas de Estado Finito deve-se a`
sua facilidade de sua implementac¸a˜o. [6] Uma Ma´quina de Estado Finito
trata-se de um conjunto de estados, sendo um nu´mero finito de estados, um
estado final, um conjunto de entrada, um conjunto de sa´ıda e uma regra
de transic¸a˜o. Para modelagem de jogos mais complexos, as FSM podem
6
ser hierarquizadas, de forma que a cada n´ıvel possa-se subir de hierarquia
ate´ atingir seu estado final. O uso de Ma´quinas de Estado Finito permite
criar jogos mais complexos e que, trazem mais emoc¸a˜o para o jogador. [6] O
uso dessa te´cnica pode, por exemplo, construir jogos em que os inimigos do
usua´rio pode tomar deciso˜es baseadas em diversas ac¸o˜es do jogador.
4.2 IA Extens´ıvel
Te´cnica bastante utilizada atualmente, a IA Extens´ıvel e´ baseada em lingua-
gens de scripts. Atrave´s destas linguagens, o jogador pode criar seus pro´prios
inimigos e uma classe de personagens, escolher o n´ıvel de dificuldade de cada
fase, modificar de reac¸o˜es ba´sicas dos personagens em determinada situac¸a˜o.
[6] Dessa forma, o jogador pode modificar fases do jogo, ou seja, deixar o
jogo com a sua cara.
4.3 Ma´quinas de Aprendizado
Te´cnica que vem crescendo bastante atualmente em jogos computadorizados.
[6] E´ uma te´cnica bastante interessante e muito diferente. Ela grava as ac¸o˜es
do jogador e depois o subsistema de IA, baseado nessas ac¸o˜es, o jogo mostra
ao usua´rio as suas antigas ac¸o˜es e o grau de efetividade no momento.
4.4 Artificial Life
Os algoritmos de Artificial Life sa˜o baseados em comportamentos humanos.
A A-Life (Artificial Life) simula tais comportamentos a partir de uma mul-
tiplicidade de me´todos. Um comportamento complexo e´ desenvolvido em
blocos de co´digos que faz um comportamento mais simples. [6] A integrac¸a˜o
desses blocos de comportamento mais simples que va˜o determinar o compor-
tamento complexo como um todo. Por exemplo, o jogo ”The Sims”, feito pela
Maxis, o jogador pode controlar um conjunto de “pessoas” e essas “pessoas”
tem uma vida virtual. Elas tem emprego, amigos, famı´lia... Esses blocos
simples unidos transformam-se em um bloco bastante complexo. [6] Dessa
forma, nenhum personagem e´ igual ao outro.
7
4.5 Software Development Kits (SDK’s)
Os SDK’s sa˜o um conjunto de software utilizados, principalmente no desen-
volvimento de jogos. [6] Alguns exemplos de SKD’s sa˜o:
• Motivate: permite a criac¸a˜o de personagens animados, que podem so-
frer mudanc¸as de comportamento de acordo com o ambiente em que
esta˜o inseridos. [6]
• Spark!: ainda esta´ em versa˜o preliminar. Esse SDK basicamente e´
um editor de Lo´gica Fuzzy. Seus sistemas podem ser depurados sem a
necessidade de uma recompilac¸a˜o.
• DirectIA: esta te´cnica pode e´ usada para a construc¸a˜o de personagens
que tem necessidades fisiolo´gicas e emocionais. [6] O desempenho de
SDK pode ser confrontado com as “Ma´quinas de Estados Infinitos”,
pois os seus estados sendo dinamicamente alterados, geram um con-
junto de estados muito grande.
As te´cnicas descritas acima mostram o que esta´ sendo mais comumente usado
atualmente em termos de IA em jogos. [6] Algumas destas te´cnicas podem
ser ajustadas de modo que possa gerar jogos mais complexos.
5 Indu´stria de Jogos no Brasil
Na de´cada de 80, os jogos no Brasil eram comercializados nas mais diversas
formas. [2] Nessa e´poca os computadores eram muito limitados em termos de
processamento e de memo´ria e conseguiam trabalhar apenas com textos. Ao
contra´rio de atualmente que os computadores utilizam-se do que ha´ de mais
evolu´ıdo em gra´fica computacional. Em 1997, um game de ac¸a˜o chamado
“Guimo” foi lanc¸ado no Brasil e na Europa. Um atrativo nesse jogo foi o uso
de elementos de IA nos personagens. A Abragames (Associac¸a˜o Brasileira
de Desenvolvedoras de Jogos) em 2004 lanc¸ou seu Plano Diretor que visava
estabelecer metas de aumento da indu´stria de games nos pais atrave´s de di-
minuic¸a˜o de impostos sobre jogos, atrativo administrativo para investimento
na a´rea entre outros. [2] Uma pesquisa feita pela Abragames em 2005, um
dado importante merece ser destacado. Desde 1992, va´rias empresas brasi-
leiras de desenvolvimento de jogos se consolidaram no pa´ıs. [2] OutLive, um
8
jogo de estrate´gia produzido pela empresa brasileira Continuum Entertain-
ment e lanc¸ado em 2001 foi o segundo projeto da empresa e o maior de todos
ganhou destaque na Europa e nos Estados Unidos.
6 Refereˆncias
[1] Dispon´ıvel em: < http : //noticias.r7.com/tecnologia−e−ciencia/noticias
/mercado− de− jogos− eletronicos−ja−movimenta− quase− r − 1−
bilhao− por− ano−no− brasil− 20121103.html?question = 1quiz > Aces-
sado em: 20/03/2013
[2] Dispon´ıvel em: < http : //www.targettrust.com.br/blog/industria −
de− jogos− de− computador − no− brasil/ > Acessado em: 14/03/2013
[3] Dispon´ıvel em: < http : //pt.wikipedia.org/wiki/Programa%C3%A7%
C3%A3odejogoseletr%C3%B4nicos > Acessado em: 20/03/2013
[4] ALMEIDA, Janiel Henrique Pinheiro de. MEDEIROS, Wander Klaysson
Aparecido. Mobile games: etapas de desenvolvimento e especificidades. 2007.
Dispon´ıvel em: < http : //www.comunidadesvirtuais.pro.br/seminario4/
trab/jha.pdf > Acesso em: 20/03/2013
[5] Dispon´ıvel em:< http : //en.wikipedia.org/wiki/Gamedevelopmentusg =
ALkJrhgLONfiFJZZgRKRi53fJ6ofsdV lZg > Acesso em: 20/03/2013
[6] BORGES, Ricardo. AUGUSTO, C´ıcero. VOLWEIS, Maur´ıcio. Jogos em
Inteligeˆncia Artificial. 2002. Dispon´ıvel em: < http : //www.slideshare.net
/mauricioastiazara/inteligncia− artificial − em− jogos > Acessado em:
14/03/2013.
[7] STEIN, Daniel Barbosa. Implementac¸a˜o de Linguagens de Script Para
Jogos. 2009. Dispon´ıvel em: < http : //www.ime.usp.br/ cef/mac499 −
09/monografias/daniel− stein/monografia.pdf > Acesso em: 20/03/2013
9

Continue navegando