Saturday, April 30, 2011

Balanceamento dinâmico de jogos massivos 3

[1]   Andrade, G., Ramalho, G., Gomes,. A. & C., Corruble, V. (2006). Dynamic Game Balancing: An Evaluation of User Satisfaction. Second Annual Artificial Intelligence and Interactive Digital Entertainment Conference.  AIIDE '06. Stanford. The AAAI Press, 2006. p. 3-8.
[2]   Andrade, G., Ramalho, G., Santana, H. &  Corruble, V. (2005). Challenge-Sensitive Action Selection: an Application to Game Balancing. In IEEE/WIC/ACM International Conference on Intelligent Agent Technology (IAT 2005). pp. 194-200. Compiègne: ACM/IEEE.
[3]   Noah Falstein. The Flow Channel. Game Developer Magazine, May Issue, 2004
[4]   Csikszentmihalyi, M. (1990). Flow: The Psychology of Optimal Experience. New York: Harper & Row, 1990.
[5]   Sirlin, David. Balancing Multiplayer Competitive Games. In: Game Developers Conference, 2009, San Francisco, GDC Lecture Handout. San Francisco, Proceedings: GDC 2009.
[6]   Malone, T.W. What makes computer games fun?  Byte, 1981, 6, 258-277 (Reprinted in Computers in Education (U.K.), 1982, 4, 14-21; and in D. Peterson (Ed.), Intelligent Schoolhouse. Reston, VA: Reston Publishing Co. (Prentice-Hall), 1984. Abbreviated version reprinted as: Guidelines for designing educational computer programs, Childhood Education, 1983, 59, 241-247.)
[7]   Meira, Silvio. WoW: mais um monopólio a vista? Disponível em: http://blog.meira.com/2006/06/02/wow-mais-um-monopolio-a-vista/ Acesso em: 28 ago. 2010.
[8]   Pierce, Shay. “Stickiness” in Games, or: Why you can’t beat WoW. Disponível em: http://www.gamasutra.com/blogs/ShayPierce/20100130/4271/quotStickinessquot_in_Games_or_Why_you_cant_beat_WoW.php Acesso em: 28 ago. 2010
[9]   Pierce, Shay. Levels Vs. Stickiness, Or: How WoW Can Be Beaten. Disponível em: http://www.gamasutra.com/blogs/ShayPierce/20100201/4279/Levels_Vs_Stickiness_Or_How_WoW_Can_Be_Beaten.php Acesso em: 28 ago. 2010.
[10] Spronck, P., I. Sprinkhuizen-Kuyper and E. Postma. 2004. “Online adaptation of Game Opponent AI with Dynamic Scripting.” International Journal of Intelligent Games and Simulation (eds. N.E. Gough and Q.H. Mehdi), Vol. 3, No. 1. University of Wolverhampton and EUROSIS, pp. 45-53.
[11] Giel van Lankveld, Pieter Spronck, Jaap van den Herik, and Matthias Rauterberg (2010). Incongruity-Based Adaptive Game Balancing. Advances in Computer Games. 12th International Conference, ACG2009. (eds. H. Jaap van den Herik and Pieter Spronck), pp. 208-220. Springer-Verlag, Berlin Heidelberg, Germany. (Presented at the 12th Advances in Computer Games conference).
[12] Togelius, J.,   Schmidhuber, J., IDSIA, Lugano. An Experinent in automatic game design. Computational Intelligence and Games, 2008. CIG '08. IEEE Symposium, pp 111 - 118
[13] G. N. Yannakakis, and J. Hallam, "Entertainment Modeling in Physical Play through Physiology beyond Heart-Rate," in Proceedings of the Int. Conf. on Affective Computing and Intelligent Interaction, Lecture Notes in Computer Science, vol. 4738 Lisbon, pp. 256-267, Portugal, September, 2007. Springer-Verlag.
[14] Yannakakis, G. N., and Hallam, J. 2007. Towards optimizing entertainment in computer games. Applied ArtificialIntelligence 21:933–971.

Balanceamento dinâmico de jogos massivos 2

Inúmeras teorias existem voltadas para entender o que faz um jogo divertido [6] assim como que aspectos contribuem para outros tipos de experiência do jogador. Csikszentmihalyi [4] define o conceito de flow, a experiência ótima. Quando no estado de flow, uma pessoa está completamente concentrada executando uma tarefa que o faz perder o senso de ser mantendo um senso de controle total. O requisito chave para o estado de Flow é que o nível de dificuldade da tarefa deve ser exatamente igual ao nível de habilidade do executor: nem muito difícil, nem muito fácil.
Spronck [10] e Lankveld[11] focam na adaptação das regras do jogo para escalonamento do nível de dificuldade. No entanto, as regras adaptadas são sempre da inteligência artificial (IA) do jogo não mencionando maneiras de adaptação da regra para o caso de jogos com muitos jogadores. Ambos baseiam-se no ajuste da dificuldade a habilidade do jogador para criar jogos melhores. [2] utiliza aprendizagem por reforço para fazer o ajuste na dificuldade mas tem como base os mesmos princípios básicos de Csikszentmihaly.
Recentemente, a pesquisa para o balanceamento automático como em [13][14] preocupa-se com a medição empírica do impacto da mudança de vários aspectos de um jogo na experiência do jogador. Essa linha tenta criar modelos de satisfação dos usuários.
Nesse tipo de estudo o critério de diversão utilizado é gerado a partir de aprendizagem de máquina por meio de questionários e medidas fisiológicas. O jogador é exposto a certo tipo de situação onde medições, como a de batimentos cardíacos e sinapses nervosas, são feitas e depois o mesmo responde um questionário avaliando a experiência do jogo com relação a critérios como diversão e frustração. Um modelo então é gerado com aprendizagem supervisionada que tenta concluir que aspectos do jogo o deixam mais ou menos frustrantes, por exemplo.
Podemos concluir, assim como Togelius[12] que a maioria dos trabalhos se preocupam, exclusivamente, na criação de estágios, ambientes, estratégias ou habilidades de um oponente virtual que casem com a habilidade do jogador para um jogo existente. No entanto, nenhum deles se preocupa com a possibilidade de vários jogadores humanos fazerem parte de um mesmo ambiente compartilhando a mesma fantasia e curiosidade. Togelius, no entanto, preocupa-se com a geração automática do jogo em si e utiliza funções de fitness também baseado nas teorias de entretenimento e curiosidade para sessões individuais de jogo.
Por outro lado, [5] é o trabalho mais relevante e recente voltado para o balanceamento de jogos com muitos jogadores. No entanto, todo o trabalho consiste em uma série de conceitos, guidelines e estudos de caso voltados para o balanceamento estático de jogos. Ou seja, é voltada para o balanceamento comum feito na indústria. Apesar disso, esse trabalho possui informações valiosas indicando que requisitos devem ser levados em consideração na criação de modelos de balanceamento tornando-se uma fonte importante para a geração de heurísticas e funções de fitness.
Na indústria, alguns jogos, como Halo, possuem sistema de ranking de jogadores para a criação de partidas somente entre jogadores de habilidades compatíveis. No entanto, em jogos massivos esse ranking não é suficiente visto que os jogadores não compartilham partidas de curta duração, mas sim toda a experiência do jogo. Além disso, cai no problema da divisão de amigos em diferentes sessões de jogo. E isso é indesejável para jogos com muitos jogadores[8][9].
Podemos concluir que apesar de vasta pesquisa e desenvolvimento nos campos do balanceamento automático, modelagem de satisfação do usuário e de jogos massivo de muitos jogadores, os trabalhos são ainda paralelos e sem uma interseção. Esse trabalho pretende criar essa interseção e identificar pontos de melhorias tanto no balanceamento automático de jogos como no processo de produção desses jogos.

Saturday, April 23, 2011

Escalabilidade de sistemas multiagentes em jogos digitais: herdando técnicas e componentes da computação gráfica 3

[1]    “nVidia website,” http://www.nvidia.com/, 2009. [Online]. Available: http://www.nvidia.com/
[2]    “ATI website,” http://www.ati.com/, 2009. [Online]. Available: http://www.ati.com/
[3]    “CryTek GmbH: Home,” http://www.crytek.com/, 2009. [Online]. Available: http://www.crytek.com/
[4]    “id Software” http://www.idsoftware.com/, 2009. [Online]. Available: http://www.idsoftware.com/
[5]    CryEngine 3: Advanced Real-Time Rendering Course. SIGGRAPH 2009.
[6]    “Torque 3D” http://www.garagegames.com/products/torque-3d, 2009. [Online]. Avaliable: http://www.garagegames.com/products/torque-3d
[7]    “SOURCE” http://source.valvesoftware.com/, 2009. [Online]. Available: http://source.valvesoftware.com/
[8]    Artigo da nVida sobre GPUs (vertex shader) GDC/SIBGRAPH
[9]    “Intel website,” http://www.intel.com/, 2009. [Online]. Available: http://www.intel.com/
[10]G. N. Yannakakis, and J. Hallam, "Modeling and Augmenting Game Entertainment through Challenge and Curiosity,"  International Journal on Artificial Intelligence Tools, vol. 16, issue 6, pp. 981-999, December 2007. [pdf]
[11]G. Andrade, G. Ramalho, H. Santana, and V. Corruble  "Automatic computer game balancing: a reinforcement learning approach", in Proceedings of the Fourth international Joint Conference on Autonomous Agents and Multiagent Systems , July 25 - 29, 2005, AAMAS '05. ACM, New York.
[12]G. N. Yannakakis, and J. Hallam, "Towards Optimizing Entertainment in Computer Games," Applied Artificial Intelligence 21:933–971, 2007.
[13]Gibson, J.J. (1979) “The Ecological Approach to Visual Perception”. Boston: Houghton Muffin.
[14]M. Csikszentmihalyi. Flow: The Psychology of Optimal Experience. New York: Harper & Row, 1990.
[15]Tatarchuk, N. Richer Worlds for Next Gen Games: Data Amplification Techniques Survey. GDC Europe 2005.
[16]Amdahl, Gene (1967). "Validity of the Single Processor Approach to Achieving Large-Scale Computing Capabilities" (PDF). AFIPS Conference Proceedings (30): 483–485. http://www-inst.eecs.berkeley.edu/~n252/paper/Amdahl.pdf.
[17]“OpenCL”, http://www.khronos.org/opencl/, 2009. [Online] – Available http://www.khronos.org/opencl/
[18]Gabb, H., Lake, A. Threading 3D Game Engine Basics. [Online] – Available http://www.gamasutra.com/features/20051117/gabb_01.shtml
[19]“Intel – Developing Multithreaded Applications: A Platform Consistent Approach”, 2005. [Online] . Available: http://cache-www.intel.com/cd/00/00/05/15/51534_developing_multithreaded_applications.pdf
[20]Bleiweiss, A. 2008. GPU accelerated pathfinding. In Proceedings of the 23rd ACM SIGGRAPH/EUROGRAPHICS Symposium on Graphics Hardware (Sarajevo, Bosnia and Herzegovina, June 20 - 21, 2008). SIGGRAPH/EUROGRAPHICS Conference On Graphics Hardware. Eurographics Association, Aire-la-Ville, Switzerland, 65-74.
[21]Bratman, N. (1987) “Intention, plans, and practical reason”. Cambridge, Mass: Harvard University Press.
[22]Shopf, J., Barczak, J., Oat, C., Tatarchuk, N. March of the Froblins: Simulation and Rendering of Massive Crowds of Intelligente and Detailed Creatures on a GPU
[23]“DirectX 10 Home”, http://www.microsoft.com/games/en-US/aboutGFW/pages/directx.aspx , 2009. [Online]. Available: http://www.microsoft.com/games/en-US/aboutGFW/pages/directx.aspx
[24]NVIDIA Corporation, “NVIDIA CUDA compute unified device architecture programming guide version 2.1,” NVIDIA Corporation, 2008.
[25]Sery, O., Poch, T., Safrata, P., and Brom, C. (2006). Level-of-detail in behaviour of virtual humans. In Wiedermann, J., Tel, G., Pokorny, J., Bielikova, M., and Stuller, J., editors, SOFSEM 2006: Theory and Practice of Computer Science, 32nd Conference on Current Trends in Theory and Practice of Computer Science, Mer´ın, Czech Republic, January 21-27, 2006, Proceedings, volume 3831 of Lecture Notes in Computer Science, pages 565–574. Springer.

Escalabilidade de sistemas multiagentes em jogos digitais: herdando técnicas e componentes da computação gráfica 2

[18] atenta para o fato de que a paralelização funcional é complicada e a adaptação de algoritmos em si para novas arquiteturas de hardware é impraticável ou simplesmente não vale o esforço. Dessa maneira, a melhor solução é a paralelização dos agentes, fazendo com que uma mesma classe de algoritmo seja executada em paralelo com cada processo sendo responsável por uma das entidades da simulação. Pois, a GPU é bem adaptada para a classe de problemas conhecidas como computação paralela de dados, onde o mesmo programa, shader no caso da GPU, é executado em diversos elementos de dados diferentes ao mesmo tempo [20].
Seguindo essa linha, [20], propõe métodos para a implementação de algoritmos de path-finding na GPU. E todos os agentes podem ser simulados ao mesmo tempo. Algoritmos de path-finding na GPU possibilitam a simulação de diversos agentes ao mesmo tempo em paralelo. As técnicas de path-finding dinâmicos envolvem a simulação do comportamento dos personagens e análise do terreno para identificar caminhos válidos bons e ruins. E essas operações podem ser bem caras de serem feitas na CPU mesmo com múltiplos núcleos (multi-core).
[22] discute o problema da latência na operação de transferência de dados entre CPU e GPU. Apontando para a necessidade de implementação das técnicas de manipulação dos dados na GPU. Ou seja, quando jogabilidade e física são simuladas na CPU, existe um gargalo adicional que é a via PCI-E, para transferência da posição e estados do personagem entre CPU e GPU.
A implementação de geometry shaders em placas gráficas que suportam a especificação do DirectX 10 [23],  é explorada por [22] na implementação de uma simulação de multidão totalmente na GPU. São propostos algoritmos gráficos de remoção de superfícies escondidas, animação e até de nível de detalhe (LOD). No entanto a técnica de LOD implementada é bastante simples e não eficiente para a escolha de técnicas de inteligência artificial, somente operações gráficas.
[25] apresenta diversas possibilidades para nível de detalhe para inteligência artificial, mas, como de costume, utilizando sempre a CPU como arquitetura de execução. [25] reforça todas as complicações na simulação de um grande número de agentes em computadores tradicionais. E atenta para dois problemas principais resolvidos com algoritmos de LOD para a CPU:

  •          Facilidade de extensão do comportamento dos agentes, evitando a utilização de aprendizagem de máquina.
  •          A velocidade da simulação deve ser boa o suficiente mesmo em computadores com recursos limitados.


Para resolver os problemas um framework foi criado, o IVE. No entanto, o IVE foca na construção de técnicas de LOD voltadas para a execução em CPU. Como já mostrado anteriormente para hardware de futuras gerações esse não é um comportamento desejado. Para o nosso projeto será necessário que essas técnicas sejam adaptadas para a execução em arquiteturas multi-processadas.
[25] ainda afirma que não existe um trabalho, com artigos publicados, que combina todas as preocupações do IVE: affordance[13], practical reasoning[21], e LOD AI. Para este trabalho buscaremos resultados compatíveis com o IVE, mas, novamente, voltadas para arquiteturas de hardware multi-processadas especialmente a GPU. É preciso deixar claro que não estamos procurando implementar o IVE em GPU e sim criar uma alternativa viável em GPU para simulação de mundos virtuais.
Os criadores do IVE afirmam ainda que para ter uma simulação extensível seja necessário utilizar o método de affordances, pois utilizar algoritmos de aprendizagem de máquina seria como “utilizar um martelo para abrir uma noz”. No entanto, acreditamos que a complexidade a ser utilizada em jogos no futuro próximo é suficiente para utilizarmos aprendizagem de máquina[12]. Inclusive, a academia tem vários artigos nas áreas de balanceamento automático de jogos[11], modelagem da satisfação do usuário [10] entre outras áreas relacionadas a criação de inteligência artificial para jogos com resultados bastante promissores. Cabe então, também, adaptarmos os algoritmos de aprendizagem para utilizar melhor os novos hardware que estarão disponíveis com arquiteturas multi-processadas.
Por fim, o artigo ainda foca bastante na questão da mudança de foco no LOD de um paradigma “see – not see”, para um novo paradigma baseado em um LOD com três níveis de detalhe. Apesar de ser uma mudança significativa, a maneira como o LOD é feito deve ser tratado de acordo com o que já é feito na área de computação gráfica, como é proposto por nós, que já possui vasta literatura no assunto. A questão mais importante fica em como adaptar os algoritmos de IA para possuir diversos níveis de detalhe e ser fácilmente utilizado pelos algoritmos de LOD mais competentes.
Sendo assim, apesar de termos os mesmos objetivos do IVE, as arquiteturas de execução são bastante distintas o que requer uma abordagem diferente de ataque ao problema. De acordo com a própria Intel [9][20], a mudança de paradigma das arquiteturas para CPUs multi-processadas e GPUs forçar a repensar os problemas de maneira a utilizá-las da melhor forma possível. O consenso geral é que os algoritmos devem ser repensados e não adaptados.

Saturday, April 16, 2011

Balanceamento dinâmico de jogos massivos

Esse post é o início do meu projeto de doutorado. O Objetivo inicial é criar uma forma de monitoramente para facilitar no balanceamento de jogos online multiplayer massivos (MMOs).

Segundo Malone [6] são necessários três requisitos básicos para a criação de jogos divertidos: desafio, curiosidade e fantasia.
A geração de curiosidade e fantasia está ligada a decisões de enredo e gênero do jogo. O enredo define a história e propósito de se jogar despertando a curiosidade e o gênero define que papel o jogador tem no jogo, a fantasia. Esses dois requisitos, apesar de cruciais para o sucesso de um jogo, não possuem características inerentemente diferentes quando aplicados a jogos multiplayer. Ou seja, os mesmos problemas encontrados para jogos single-player valem para multiplayer e vice-versa.
O desafio, por outro lado, deve ser tratado de forma diferente. Em jogos single-player o desafio é uma questão unicamente de igualar a dificuldade do jogo com a habilidade do jogador [3][4]. Em jogos multiplayer o problema toma outra dimensão e precisa ser avaliado de maneira diferente.
O balanceamento do jogo é a fase na produção do mesmo em que se define o nível desejado de dificuldade em cada etapa do jogo. De uma maneira geral, o game designer fica responsável por criar uma curva de aprendizado mais generalizada possível, em alguns casos diferentes níveis, discretos, de dificuldade podem ser gerados. O padrão atual da indústria é o balanceamento estático da dificuldade. A abordagem estática não consegue lidar com a grande diversidade de usuários em termos de habilidades e conhecimentos sobre o domínio do jogo, assim como a capacidade humana de aprender e se adaptar com o tempo. Essas limitações fazem com que o jogo se limite a um público específico (casual ou hardcore[1]) e não possua profundidade [5] deixando de ser interessante depois que certo nível de habilidade é adquirido.
O balanceamento dinâmico consiste em fazer essa opção desnecessária. O próprio jogo, por meio das ações do jogador deve ajustar o nível de desafio. A dificuldade, dessa maneira, torna-se uma variável contínua e é definida pelo tipo de jogador que está experimentando o jogo naquele momento.
Em jogos de muitos jogadores, a competição é tão importante quanto à dificuldade na percepção de desafio por parte do jogador. Os parâmetros de dificuldade não podem ser ajustáveis para cada usuário individualmente. Essa abordagem, claramente, beneficia os jogadores com menos habilidades, esses receberão desafios mais simples, indo contra os princípios básicos de qualquer competição. Em outras palavras, a noção de desafio no balanceamento dinâmico para jogos multiplayer deve levar em conta a dificuldade inerente ao jogo e também a dificuldade relacionada ao restante da comunidade.
De acordo com [4] o desafio não pode está muito acima da habilidade do jogador ou o mesmo se sentirá frustrado nem muito abaixo ou o jogador ficará entediado. As preocupações somente com elementos de jogo levam a uma evidente falha de balanceamento para jogos multiplayer, pois o mesmo desafio de para jogadores com níveis de habilidades diferentes frustrará o menos habilidoso e entediará o de maior habilidade.
Uma falha de balanceamento deve ser evitada a todo custo em um jogo massivo. Segundo [5] uma falha no balanceamento de um jogo single-player pode levar a desistência de uma fatia pequena (1%) dos jogadores. Em jogos com muitos jogadores uma falha de balanceamento significa o fracasso do jogo. A falha viaja rapidamente entre os usuários, como um vírus, e destrói a experiência de todos os jogadores.
De uma maneira geral o balanceamento para jogos massivos é tratado de maneira estática. A abordagem mais comum é criar, no mundo virtual do jogo, regiões específicas para cada nível de experiência (tempo de contato do jogador com o jogo) e nos níveis mais altos de experiência criar um conjunto de ambientes com dificuldades variadas. Dessa maneira, o balanceamento é feito baseado em experiência e não em habilidade. Nos níveis mais altos de inteligência o jogo mantém a fidelidade de seus jogadores com profundidade [5] e a inserção constante de novos conteúdos.
Pierce, em [8][9], identifica os problemas da abordagem do balanceamento por experiência. O principal fator de fidelidade do jogador em um jogo massivo é a comunidade[8]. Após um longo tempo de exposição ao mesmo o jogador criou laços afetivos com diversas pessoas que jogam o mesmo jogo. [9] mostra como o sistema de níveis de experiência separa os jogadores ao longo do tempo, afirmando que “When it comes to stickiness, a level system is the worst feature that a game could possibly have”. Ainda de acordo com Pierce [9], praticamente a totalidade dos jogos massivos para muitos jogadores são baseados em um sistema de níveis de experiência.
Claramente a inserção de conteúdo não é uma opção viável em termos de escalabilidade. A cada vez que o jogo atinge certo nível de saturação novos elementos precisam ser inseridos para a manutenção do público. Esse tipo de abordagem é prejudicial ao mercado de jogos massivos, pois beneficia sempre os hits que possuem capacidade financeira para manter seu público interessado.

[1] Hardcore é a denominação comum da área para jogadores experientes e habilidosos que dedicam um tempo considerável de seus dias aos videogames.

Saturday, April 9, 2011

Escalabilidade de sistemas multiagentes em jogos digitais: herdando técnicas e componentes da computação gráfica

A busca por realismo em jogos de computador levou a indústria a grandes progressos na computação gráfica tanto na modelagem como na renderização. A sinergia entre as fabricantes de hardware [1][2] e os desenvolvedores de middleware[3][4] (as engines [5][6][7]) é muito interessante e culminou com a criação de peças de hardware específicas para o processamento gráficos, as GPUs [8], e na geração de imagens com um grau de realismo impressionante, como Uncharted 2 [9] para Playstation 3 [10] na Figura 1.

Figura 1 - Uncharted 2 para Playstation 3.
Em jogos recentes, por demanda de mercado, temos a utilização de cenas compostas por diversos elementos e um alto nível de detalhe. Cenários com batalhas épicas , ambientes urbanos ou partidas de futebol , requerem a renderização de um grande número de personagens autônomos.  Pelas imagens dos jogos podemos ver que avanços incríveis foram feitos nas áreas de gráficos 3D em tempo real, complexidade do mundo e dos personagens, e até em efeitos de pós-processamento. No entanto, apesar desse tremendo esforço na parte gráfica a simulação desse ambiente utilizando técnicas confiáveis de inteligência artificial ainda não é prioridade para a indústria.

Figura 2 - Jogos com simulação complexa. Age of Empires 3 simula guerras, SimCity 4 e GTA 4 simulam cidades inteiras.
Essa marginalização da inteligência artificial nos jogos provoca uma série de problemas de game design que terminam por quebrar toda a imersão gerada pela criação de cenas graficamente perfeitas. Em diversos jogos temos problemas de frustração do jogador quando os oponentes “roubam”, pois não possuem estratégias convincentes o suficiente para competir de igual para igual com o mesmo.  Em alguns casos a simulação é desinteressante, pois parece artificial e não mimetiza bem o fenômeno real . O replay-value é baixo, pois em pouco tempo o jogo deixa de apresentar desafios com nível de dificuldade suficiente para o jogador [14]. Enfim, tipicamente, o sentimento do usuário é que quanto melhor a inteligência artificial que controla os NPCs, melhor é o jogo. Sendo ela um tanque de uma estratégia em tempo real ou um monstro num jogo de ação em terceira pessoa.
Milhares de técnicas de inteligência artificial foram criadas para simular os mais diversos fenômenos (naturais, sociais, econômicos, entre outros) encontrados em jogos eletrônicos, no entanto, poucas delas são efetivamente utilizadas comercialmente pelos jogos. Apesar de todo o avanço tecnológico os jogos ainda são limitados pela capacidade de processamento das CPUs [15]. E as técnicas geradas, por cultura mesmo, são voltadas para a execução em arquiteturas de CPU dificultando a utilização das mesmas.
Se por um lado o aumento da performance das CPUs está diminuindo com o tempo, o das GPUs têm duplicado a cada dois anos. A saída das CPUs é utilizar vários núcleos e paralelizar o processamento [16], como já é feito desde o começo pelas GPUs e os algoritmos precisam se adaptar para essa nova realidade.


A proposta de alguns trabalhos nessa área (como o de Adônis)  é aproveitar todo o avanço do hardware para a computação gráfica e as técnicas de nível de detalhe já desenvolvidas ao longo de todos esses anos, que já tomam proveito de todo o paralelismo do hardware, na implementação de técnicas de inteligência artificial adaptando-as. Dessa maneira podemos ajudar no balanceamento da carga entre CPU e GPU [17]. Essa é uma área bem interessante e farei alguns posts relacionados a isso no decorrer do blog :D

inicio

essa é mais uma tentativa de criar um blog no qual eu realmente post com frequencia e durante um período longo de tempo. como eu sempre começo e nunca termino resolvi colocar coisas que eu já escrevi por aqui.

como não conseguir criar um nome voltado para os assuntos que vão ser discutidos aqui (jogos, computação e coisas relacionadas), escolhi um nome que tinha a ver comigo. para quem não entende, existe uma sobremesa bem conhecida que é creme de papaya com licor de cassis. eu adoro, mas nunca coloca cassis, não acho legal. por isso, detalhe desnecessário o creme já é bom o suficiente. isso resume também um pouco de como eu penso as coisas... o cassis é aqueles 5% final de qualquer tarefa que vai demandar um esforço igual aos outros 95% e não vai melhorar em nada... :D (esse artigo do gamasutra resume bem isso, melhor do que eu)

a idéia é inserir pelo menos um posto por semana e também, não sei com que periodicidade ainda, links para o patinhocast. O patinhocast é um podcast que farei com dois amigos (Alonso e Motoca) que discutirá os mesmos temas desse blog.

o tema principal do blog é desenvolvimento de jogos. eu sou formado em computação e tenho mestrado na área de entretenimento de jogos e iniciei em 2011 o meu doutorado na mesma área. aos poucos vou postando coisas relativas a esse meu trabalho aqui (podendo ser tanto em inglês quando em português). então esperem tanto posts de computação aplicada a jogos como de game design puro.

como jogos é software e eu sou formado em computação muita coisa aqui também será de específico de computação não voltada para jogos.