• Nenhum resultado encontrado

Uma ferramenta de auxílio ao designer na Geração Procedimental de Conteúdo para jogos de corrida

N/A
N/A
Protected

Academic year: 2021

Share "Uma ferramenta de auxílio ao designer na Geração Procedimental de Conteúdo para jogos de corrida"

Copied!
56
0
0

Texto

(1)

ANTONIO VASCONCELOS CAVALCANTE JUNIOR

UMA FERRAMENTA DE AUXÍLIO AO DESIGNER NA GERAÇÃO PROCEDIMENTAL DE CONTEÚDO PARA JOGOS DE CORRIDA

RECIFE 2017

(2)

Antonio Vasconcelos Cavalcante Junior

UMA FERRAMENTA DE AUXÍLIO AO DESIGNER NA GERAÇÃO

PROCEDIMENTAL DE CONTEÚDO PARA JOGOS DE CORRIDA

Trabalho apresentado ao Programa de Pós-graduação em Ciência da Computação do Centro de Informática da Univer-sidade Federal de Pernambuco como requisito parcial para obtenção do grau de Mestre em Ciência da Computação. Orientador: Geber Lisboa Ramalho

RECIFE 2017

(3)

Catalogação na fonte

Bibliotecária Elaine Cristina de Freitas CRB4-1790

C376f Cavalcante Júnior, Antonio Vasconcelos

Uma ferramenta de auxílio ao designer na Geração Procedimental de Conteúdo para jogos de corrida / Antonio Vasconcelos Cavalcante Júnior . – 2017.

55 f.: fig.

Orientador: Geber Lisboa Ramalho

Dissertação (Mestrado) – Universidade Federal de Pernambuco. CIn. Ciência da Computação, Recife, 2017.

Inclui referências e apêndice.

1. Inteligência Artificial. 2. Jogos Digitais. 3. Geração Procedimental De Conteúdo. I. Ramalho, Geber Lisboa. (Orientador) II. Titulo.

(4)

Antonio Vasconcelos Cavalcante Júnior

Uma Ferramenta de Auxílio ao Designer na Geração Procedimental de Conteúdo para Jogos de Corrida

Dissertação de Mestrado apresentada ao Programa de Pós-Graduação em Ciência da Computação da Universidade Federal de Pernambuco, como requisito parcial para a obtenção do título de Mestre em Ciência da Computação

Aprovado em: 05/09/2017.

BANCA EXAMINADORA

______________________________________________ Prof. Dr. Giordano Ribeiro Eulalio Cabral

Centro de Informática/UFPE

__________________________________________ Prof. Dr. Andre Menezes Marques das Neves

Departamento de Design / UFPE

__________________________________________ Prof. Dr. Geber Lisboa Ramalho

Centro de Informática / UFPE

(5)

Aos meus pais, Antonio e Maria Margarida, que me ensinaram o valor do estudo e da honestidade e a minha esposa Maria Concepta, por todo seu apoio e compreensão.

(6)

Agradecimentos

Uma dissertação de mestrado é o resultado de experiências variadas e aprendizados contínuos. E todo o seu processo de preparação dependeu das muitas pessoas que acompanharam o autor em sua jornada. A essas pessoas, gostaria de dedicar meus agradecimentos.

Agradeço a Universidade Federal de Pernambuco, mais especificamente o Centro de Informática, que me deram a chance de desenvolver o curso de mestrado. Aos professores que me apresentaram as ferramentas essenciais para a construção deste estudo. E especialmente a meu orientador, Geber Lisboa Ramalho, pela paciência e incentivo, além de todo o suporte para que minha pesquisa fosse concluída.

Agradeço a meus familiares pelo apoio incondicional durante o desenvolvimento de minha pesquisa, e a compreensão pela minha ausência em datas especiais.

Agradeço, por fim, a todos os amigos e colegas que contribuíram com suas opiniões e posicionamentos, adicionando a minha forma de compreender meu objeto de estudo. A todos vocês, mesmo que não os nomeie diretamente, os meus agradecimentos por terem somado um algo a mais ao meu processo de aprendizagem e meu trabalho final.

(7)

A criatividade é a inteligência se divertindo. —ALBERT EINSTEIN

(8)

Resumo

A concorrência entre as empresas de jogos digitais vem aumentando juntamente com o avanço da tecnologia, criando um abismo entre empresas novatas e veteranas. O avanço dos computadores e dos videogames permite aos desenvolvedores criar jogos mais complexos e realistas, porém existe um custo associado à produção deste conteúdo tornando-o mais caro e complexo. Adicionalmente, os clientes consumidores deste mercado exigem uma melhora significativa a cada geração encarecendo o desenvolvimento. O gênero dos jogos de corrida é particularmente conhecido por ter alcançado o realismo gráfico e o status de simulação relativamente cedo na indústria. Esse status prematuro impõe um peso ainda maior na sua produção. Alguns jogos utilizam uma técnica chamada geração procedimental de conteúdo (GPC), que utiliza algoritmos para criar conteúdo dinamicamente ou para superar limites de armazenamento. Essa técnica também pode ser usada para criar conteúdo automaticamente, porém seu uso pode limitar a interação do designer de jogos. Esta pesquisa visa utilizar conteúdo gerado procedimentalmente, associado a uma inteligência artificial, para auxiliar o designer na produção de jogos de corrida. Nosso intuito é obter um ganho de eficiência para a equipe de desenvolvimento e redução dos custos, gerando um produto de maior valor agregado. A ferramenta proposta pretende guiar o designer na criação do conteúdo de jogos de corrida, utilizando um conceito de curvas para simplificar a elaboração do traçado, além de corrigir decisões de game design, dando suporte a criatividade sem retirar o poder de decisão. A ferramenta foi então submetida a avaliação de desenvolvedores de jogos de diversas áreas - entre programadores, artistas e designers - com o intuito de avaliar o desempenho e conformidade da ferramenta com a sua proposta inicial. A avaliação ajudou a elaborar pontos fortes e fracos, elencando as necessidades dos desenvolvedores e ilustrou novos temas para futuras pesquisas.

Palavras-chave: Jogos Digitais. Inteligência Artificial. Geração Procedimental De Conteúdo. Indústria De Jogos Digitais

(9)

Abstract

Competition among digital gaming companies has been increasing along with the advan-cement of technology, creating a chasm between novice and veteran companies. The advanadvan-cement of computers and video games allows developers to create more complex and realistic games, but there is a cost associated with the production of this content making it more expensive and complex. In addition, consumer customers in this market require significant improvement with each generation making development more expensive. The genre of racing games is particularly known for having achieved graphical realism and simulation status relatively early in the industry. This premature status imposes an even greater weight on its production. Some games use a technique called procedural content generation (GPC), which uses algorithms to dynamically create content or to overcome storage limits. This technique can also be used to create content automatically, but its use may limit the interaction of the game designer. This research aims to use procedurally generated content, associated with an artificial intelligence, to assist the designer in the production of racing games. Our aim is to achieve an efficiency gain for the development and cost reduction team, generating a higher added value product. The proposed tool aims to guide the designer in the creation of racing game content, using a concept of curves to simplify the design of the track, as well as to correct game design decisions, supporting creativity without removing the power of decision. The tool was then evaluated by game developers from different areas - among programmers, artists and designers - with the aim of evaluating the performance and compliance of the tool with its initial proposal. The evaluation helped build strengths and weaknesses, listing the needs of the developers, and illustrated new themes for future research.

Keywords: Digital Games. Artificial Intelligence. Procedural Content Generation. Digital Games Industry

(10)

Lista de Figuras

2.1 Speed Racer. . . 18

2.2 GT Sport. . . 19

2.3 Splines em Unreal Engine. . . 20

3.1 Pitfall. . . 27

4.1 Curvas como controle. . . 33

4.2 Superfície adjacente. . . 34

4.3 Gizmo. . . 34

4.4 Exemplos de geração de automatica de pista. . . 36

4.5 Tangentes entre círculos. . . 37

4.6 Tangentes formando traçado. . . 38

4.7 Escolha entre tangentes internas e externas. . . 39

4.8 Tangentes entre círculos com interseção. . . 39

4.9 Geometria extra para compor o acostamento. . . 40

4.10 Pintura de textura automática. . . 41

4.11 Ajuste automático. . . 42

(11)

Sumário

1 INTRODUÇÃO ... 12

2 DIFICULDADES NA PRODUÇÃO DE JOGOS DE CORRIDA ... 15

2.1 Problemas de produção ... 15

2.1.1 Exigência do mercado consumidor ... 16

2.1.2 Diversão em jogos de corrida ... 16

2.1.3 Custos de produção ... 17

2.1.4 A importância dos testes para produção ... 17

2.1.5 Alto nível de detalhes ... 18

2.2 Problemas comuns das ferramentas atuais na produção ... 19

2.2.1 Grau de parametrização ... 19

2.2.2 Dificuldade de uso ... 20

2.2.3 Dificuldade de modificação ... 20

2.2.4 Integração com ambiente de desenvolvimento ... 21

2.3 Características de uma boa solução ... 21

2.3.1 Boa flexibilidade ... 21

2.3.2 Facilidade de uso ... 22

2.3.3 Modificação simplificada ... 22

2.3.4 Integração com ambiente de desenvolvimento ... 23

3 ESTADO DA ARTE ... 24

3.1 Produção de conteúdo para jogos de corrida ... 24

3.1.1 Ferramentas de modelagem ... 24

3.1.2 Game engines ... 25

3.1.3 Formas de testes do produto ... 25

3.2 Técnicas de Geração Procedimental de Conteúdo ... 26

3.2.1 GPC on-line ou off-line ... 27

3.2.2 GPC aleatório ou determinístico ... 27

3.2.3 GPC baseado em busca ou construtivo ... 28

3.2.4 GPC parametrizado ... 28

3.2.5 Geração automática ou autoria mista ... 28

3.3 Aplicações de GPC na produção de jogos de corrida ... 29

3.3.1 Traçado da pista sem interação do designer ... 29

(12)

3.3.3 Integração em ambientes de desenvolvimento ... 30

3.3.4 Limitações ... 31

4 UMA NOVA PROPOSTA DE FERRAMENTA PARA CRIAÇÃO DE CONTEÚDO PARA JOGOS DE CORRIDA ... 32

4.1 Principais características para uma nova solução ... 32

4.1.1 Simplificação de parâmetros ... 33

4.1.2 Capacidade de modificar um conteúdo previamente gerado ... 35

4.1.3 Integração com game engines existentes ... 35

4.1.4 Uso de IA no auxílio de ajuste fino ... 35

4.1.5 Uso de IA para geração inicial de cenário ... 36

4.2 Descrição das técnicas ... 37

4.2.1 Controlando o traçado com o conceito de curvas ... 37

4.2.2 Construindo curvas com retalhos de superfície de Bézier ... 40

4.2.3 Integração com o terreno da engine ... 40

4.2.4 Implementação de Simulated Annealing para auxilio no ajuste fino ... 41

5 AVALIAÇÃO DA SOLUÇÃO PROPOSTA ... 43

5.1 Objetivo ... 43

5.2 Metodologia ... 43

5.3 Comparação ... 45

5.4 Análise das entrevistas ... 46

6 CONSIDERAÇÕES FINAIS ... 50

REFERÊNCIAS ... 52

APÊNDICE A - QUESTIONÁRIO APLICADO A DESENVOLVEDORES DE JOGOS ... 55

(13)

12 12 12

1

INTRODUÇÃO

Os Jogos eletrônicos, muitas vezes conhecidos como jogos de computador ou jogos de vídeo game, são software criados com o propósito de entreter um determinado público. Entre este grupo-alvo existem vários tipos de jogadores, não apenas jovens do sexo masculino, mas também crianças, mulheres e idosos, com demandas diferentes. É por causa disto que os jogos eletrônicos podem ter vários conteúdos e diversas formas de interação. (FLEURY; NAKANO; CORDEIRO, 2014)

Como jogos eletrônicos são software, eles dependem de um hardware para funcionar. Por sua vez, como todo software ele passa pelos processos de desenvolvimento que um software normal, porém lhes é acrescido às dificuldades de produção artística, além de um design espe-cífico. Isso torna o desenvolvimento de jogos eletrônicos mais difícil e mais caro do que o de software comum. (FLEURY; NAKANO; CORDEIRO, 2014)

Devido à natureza tecnológica desses jogos, eles são normalmente associados a tecnologia de ponta, fazendo uso do máximo que o hardware pode oferecer, e por vezes desenvolvendo novas tecnologias, redefinindo limites. Não é incomum jogadores associarem a performance do hardware com a qualidade visual ou a riqueza de game play. E essa demanda tecnológica dos jogadores tem influenciado a indústria a sempre renovar seus hardwares, levando a um avanço tecnológico muito rápido. (FLEURY; NAKANO; CORDEIRO, 2014)

Os jogos eletrônicos possuem várias vertentes de desenvolvimento, com grandes equipes multidisciplinares que geram um custo de milhões de dólares a equipes pequenas e versáteis com capacidade reduzida e custo controlado. Jogos multimilionários, também conhecidos como AAA (triplo A), são os carros chefe das grandes empresas de jogos. E o tempo de desenvolvimento deles pode levar de um a três anos, com raras exceções excedendo este tempo. Já as pequenas equipes, também chamadas de Indies, tendem a realizar projetos menores, com um impacto menor na indústria e expectativas de vendas reduzidas. O movimento Indie já não é mais ignorado, devido a força, financeira, que todas essas empresas, juntas, proporcionam. (FLEURY; NAKANO; CORDEIRO, 2014)

Jogos de corrida são um gênero bastante popular e quase tão antigo quanto os jogos digitais em si e os primeiros Arcades. Os primeiros exemplares de jogos de corrida datam de 1974 e a evolução do gênero nos Arcades proporcionou experiências únicas com volantes e cabines

(14)

13 onde o jogador pode se sentar dando uma impressão de imersão nunca antes proporcionadas. (IGN, 2015)

Pelo fato dos jogos de corrida representarem um gênero único na indústria, seu desen-volvimento também possui características únicas. Assim, o conhecimento para desenvolvê-los é um segredo guardado pelas empresas que já possuem o know-how para produzi-los. Para trabalhar com a limitação da falta de experiência neste tipo de jogo, a experimentação é uma forte ferramenta que possibilita ao desenvolvedor criar e testar diversas experiências e poder escolher qual se adapta melhor ao seu caso. Entretanto o custo de produzir cenários pode ser proibitivo, uma vez que cada iteração da experimentação vai demandar um novo circuito e vai exigir um certo esforço da equipe de desenvolvimento para elaborar o novo traçado, alterar a geometria da pista, modificar o terreno e adaptar os adornos ao perímetro da pista.

As soluções existentes para a produção de jogos em geral não são adequadas à produção de jogos de corrida. Com ferramentas próprias para outros gêneros de jogos, as engines de jogos são usadas com dificuldade na produção de jogos de corrida, requerendo adaptações no uso. (DUCA; LECCHI, 2017)

Mesmo as técnicas atuais de geração procedimental de conteúdo não habilitam desen-volvedores sem experiência no gênero de jogos de corrida a criarem facilmente o conteúdo, ou pior, tomam para si o trabalho do design, criando o conteúdo de forma totalmente automática. Por exemplo, técnicas baseadas em busca e geração baseado em gramática utilizam poucos ou nenhum parâmetro para criar o conteúdo, limitando a ação do designer. (SHAKER; TOGELIUS; NELSON, 2014)

A partir dessas observações, esta pesquisa se propôs a estudar técnicas para otimizar a produção de jogos de corrida utilizando as técnicas de geração procedimental de conteúdo assistido por algoritmos de inteligência artificial, com o intuito de criar uma ferramenta para auxiliar o desenvolvedor, reduzindo parâmetros e simplificando a tarefa de modificar um conteúdo já gerado. Dessa forma, e a partir da identificação desta questão, a estrutura adotada para este trabalho encontra-se dividida em quatro capítulos:

Em dificuldades na produção de jogos de corrida (segundo capítulo), estudamos os principais problemas de produção, passando por questões como exigência do mercado consumidor, diversão em jogos de corrida, custo de produção, testabilidade e alto nível de detalhes. Em seguida, discutimos problemas comuns das ferramentas atuais na produção, entre eles o grau de parametrização, a dificuldade de uso e de modificação e a integração com o ambiente de desenvolvimento. Ao fim observamos ainda a descrição de uma boa solução englobando flexibilidade, facilidade de uso, modificação simplificada e integração com ambiente de desenvolvimento. Desta forma, buscamos identificar os obstáculos que precisaríamos transpor para propor uma nova ferramenta.

Emestado da arte (terceiro capítulo), foi onde abordamos a produção de conteúdo para jogos de corrida, partindo das ferramentas de modelagem e passando por Game Engines até chegar a testabilidade. Na sequência, levantamos técnicas de geração procedimental de conteúdo

(15)

14 (GPC) como GPC on-line ou off-line, GPC aleatório ou determinístico, GPC baseado em busca ou construtivo, GPC parametrizado, além de geração automática ou autoria mista. Finalizando este capítulo, discutimos aplicações de GPC na produção de jogos de corrida como traçado da pista sem e com iteração do designer, integração em ambientes de desenvolvimento e limitações. Contextualizamos assim o estado atual da produção de jogos a partir de técnicas de GPC.

Após estes primeiros estudos pudemos então propor uma nova solução, o que resultou no quarto capitulo -uma nova proposta de ferramenta para criação de conteúdo para jogos de corrida. Iniciamos nosso trabalho destacando as principais características para uma nova solução, entre elas a simplificação de parâmetros, a capacidade de modificar um conteúdo previamente gerado, a integração com game engines existentes e o uso de Inteligência artificial (IA) no auxilio de ajuste fino e para geração inicial de cenário. A partir daí, passamos para a descrição das técnicas empregadas na produção de nossa solução, principalmente no que se refere ao controle do traçado com conceito de curvas, a construção de curvas com retalhos de superfícies de Bézier, a integração com o terreno da engine e a implementação de Simulated Annealing para auxilio no ajuste fino. Isto permitiu a exposição de nossa solução proposta a partir da forma como ela foi construída.

Em nosso capítulo final,avaliação da solução proposta, avaliamos a solução proposta através de entrevistas com desenvolvedores de jogos atuantes no mercado de trabalho. Apresen-tamos a princípio nosso objetivo em empreender esta experimentação, bem como a metodologia utilizada, para finalizar com uma análise do conteúdo gerado. Conseguimos assim validar nossa solução bem como identificar novos pontos para melhoria em trabalhos futuros.

(16)

15 15 15

2

DIFICULDADES NA PRODUÇÃO DE JOGOS DE CORRIDA

A produção de jogos requer uma variedade de habilidades que incluem design, gerencia-mento de projetos, programação e criação de conteúdo. Conteúdo é tudo que contribui para a aparência visual do jogo, isto inclui qualquer massa de dados que possa ser usada por uma engine de jogos que não seja código, scripts ou documentação. Por exemplo podemos citar modelos, sons, imagens, animações, entre outros. (ALEEM; CAPRETZ; AHMED, 2016)

Jogos de corrida usualmente envolvem um veículo, controlado pelo jogador, correndo contra um ou mais oponentes em uma variedade de pistas e terrenos. O jogador tenta se movimentar o mais rápido possível sem perder o controle do veículo. Este gênero se divide entre Arcade e Simulação. (NOVAK, 2011)

O subgênero Arcade é composto por jogos que focam na ação como principal atrativo, alguns oferecendo elementos incomuns em corridas como armas e projéteis. Já o subgênero Simulação utiliza como principal atrativo a reprodução fiel de detalhes e comportamentos, dando a sensação ao jogador de utilizar um veículo real. (NOVAK, 2011)

2.1 Problemas de produção

Com um mercado aquecido e bastante concorrido, empresas desenvolvedoras de jogos especializadas em jogos de corrida competem pela atenção dos jogadores. Com gráficos atrativos e jogabilidade impecável, estes jogos tomam o espaço da competição na estante do jogador, dificultando o consumo de outras opções deste gênero.

A criação destes jogos é bastante complexa, uma vez que o cenário, composto por uma pista, obstáculos e adereços interagem com o veículo como se fossem uma única peça, deixando transparecer ao jogador uma perfeita harmonia entre os componentes do jogo (HANDRAHAN, 2013). Jogos como Mario Kart exibem gráficos coloridos, com veículos impossíveis no mundo real, mas que se encaixam perfeitamente no ambiente do jogo. Já jogos realistas como a série Gran Turismo utilizam toda a capacidade gráfica do hardware na tarefa de exibir uma imagem realista, aumentando ainda mais a imersão na simulação (PLUMMER, 2015).

O custo elevado de produção destes jogos vem da complexidade resultante do trabalho do desenvolvedor. Os métodos tradicionais de desenvolvimento não são apropriados as

(17)

necessi-2.1. PROBLEMAS DE PRODUÇÃO 16 dades dos desenvolvedores deste gênero e muito do conhecimento das grandes empresas não é compartilhado, criando um nicho de mercado de difícil acesso para novas empresas (SHAKER; TOGELIUS; NELSON, 2014).

2.1.1 Exigência do mercado consumidor

Como jogos de corrida alcançaram um grau de realismo relativamente cedo, em relação ao resto da indústria de jogos, os jogadores deste gênero são mais exigentes quanto aos detalhes. Jogos de duas gerações atrás já são capazes de alcançar tanto realismo gráfico quanto realismo na simulação. (AJAMI, 2001)

Jogos de corrida do tipo arcade tendem a focar na diversão com uma jogabilidade distinta, muitas vezes fugindo da seriedade da simulação, oferecendo elementos atípicos à corrida, como armas e power-ups. Estes elementos tendem a ser mais simples de implementar do que os detalhes da simulação. (NOVAK, 2011)

Mesmo para jogos arcade o nível de concorrência é tão alto que estes jogos acabam tendo que alcançar um grau de realismo gráfico similar ao de jogos de simulação. Ainda que a jogabilidade mude por ser um jogo arcade, os clientes estão acostumados com o alto padrão de qualidade gráfica previamente alcançada por jogos anteriores, o que eleva a expectativa dos jogadores. (FINCH, 2011)

2.1.2 Diversão em jogos de corrida

Togelius et al. oferece uma hipótese para os fatores que tornam um jogo de corrida interessante, elencando em seu trabalho 5 fatores que foram utilizados como métricas de avaliação dos resultados. O primeiro fator de diversão seria a sensação de velocidade; as pessoas gostam de dirigir rápido e a pista deve permitir-los alcançar a velocidade máxima. O segundo fator é o desafio, ou seja, o jogador ficaria entediado dirigindo em uma reta sem fim, mesmo em alta velocidade. O terceiro fator seria o ajuste certo do desafio, pois bater o tempo todo durante a corrida, por exemplo, não é divertido. O quarto fator seria a variação de desafios, com a pista variando em características e não repetindo o mesmo desafio o tempo todo. O quinto fator, drift ou derrapagem nas curvas, parece ser um fator importante. Todos os fatores de diversão estão associados a pista e sua iteração com o veículo. (TOGELIUS; DE NARDI; LUCAS, 2006)

Raph Koster oferece uma perspectiva diferente em seu livro Theory of fun for game design. Falando sobre vídeo games em geral, Koster afirma que jogar e aprender estão ligados intimamente, e que para um jogo ser divertido ele precisa permitir que o jogador consiga aprender continuamente (KOSTER, 2013). Togelius afirma que, uma maneira de interpretar isso em um contexto de jogo de corrida, seria que, uma boa pista de corrida é aquela em que o jogador tem resultados muito ruins na primeira vez em que joga, mas rapidamente e consistentemente melhora em corridas subsequentes. (TOGELIUS; DE NARDI; LUCAS, 2006)

(18)

2.1. PROBLEMAS DE PRODUÇÃO 17 2.1.3 Custos de produção

O aumento de detalhes exigido pelo mercado, juntamente com o aumento da capacidade de processamento dos hardwares, vem impondo um ritmo de crescimento assustador nas empre-sas. Desenvolvedores experientes com a produção de jogos AAA tem sentido os impactos da necessidade de expandir o time de desenvolvimento para continuar competitivo, assumindo um risco maior tanto gerencial quanto financeiro. (OWEN BRAND DAVID BURTON, 2006)

O custo de desenvolvimento de um jogo para Playstation variava entre 800 mil e 1,7 milhões de dólares em meados dos anos 90, enquanto um jogo de Playstation 2 no começo do século variava de 5 milhões a 10 milhões de dólares. Já em 2008, um jogo de Playstation 3 custava em média de 18,8 milhões a 28,2 milhões de dólares para ser desenvolvido. (AGNELLO, 2013)

Alguns jogos mais recentes como Grand Theft Auto V, que custou 265 milhões de dólares, e Destiny, que custou 140 milhões de dólares, tiveram produções similares a filmes de Hollywood. Com seu conteúdo, cenários, efeitos especiais, tudo com uma riqueza de detalhes que novos hardwares proporcionaram, os desenvolvedores acabaram sendo forçados a aumentar os números de suas equipes. E entre mais artistas e programadores, os custos de produção acabaram atingindo patamares e qualidade de cinema. (T.C., 2014)

2.1.4 A importância dos testes para produção

O desenvolvimento de jogos é focado em entreter o jogador, prendendo o jogador em um desafio ou numa narrativa que mantenha sua atenção e seu interesse. Para poder testar se uma determinada parte do jogo está divertida, o desenvolvedor precisa jogar seu jogo, submeter o seu produto a outros membros da equipe além de promover testes com usuários finais. Entretanto, realizar estes testes entre os desenvolvedores é uma tarefa árdua, encontrando resistência por parte dos próprios desenvolvedores (SCHELL, 2008).

Realizar estes testes cedo pode evitar um grande retrabalho, pois quanto mais cedo for identificado uma falha de jogabilidade, menor a chance de se ter conteúdo gerado em cima dela. Essa técnica foi particularmente bem empregada no desenvolvimento do Mario 64, onde toda a movimentação do personagem foi definida e testada incansavelmente antes de ser trabalhado qualquer cenário para o jogo. Apenas após a conclusão da movimentação do personagem estar bem resolvida foram trabalhadas as mecânicas de gameplay e os cenários. (SHMUPLATIONS.COM, 2016)

Já os testes em um jogo de corrida consistem em correr a pista por algumas voltas e avaliar aspectos como dificuldade e diversão. Nestes testes os desenvolvedores podem optar tanto por calibrar a física do veículo como também modificar a pista e seus elementos. (TOGNETTI et al., 2010)

Pode haver um impacto na qualidade do jogo caso os testes não sejam executados corretamente ou não haja uma maneira rápida de testar o jogo. O cuidado com os testes é

(19)

2.1. PROBLEMAS DE PRODUÇÃO 18 importante para o sucesso do jogo no mercado atual de jogos; atrasos nos testes podem resultar em fracasso do projeto. (ALEEM; CAPRETZ; AHMED, 2016)

2.1.5 Alto nível de detalhes

Figura 2.1: Speed Racer, 1974, o controle do veículo é exercido por um volante.

Fonte: (IGN, 2015)

Jogos de corrida são um gênero famoso pela distinção entre outros jogos. Mesmo os primeiros arcades de corrida possuíam um volante de carro como controle do jogo (Figura 2.1). O gênero de simulação ganhou força na década de 90 com jogos de simulação de corrida como Indianapolis 500: The Simulation, lançado em 1989, para PC, tido como o primeiro simulador de corrida para PC. (GOBLE, 2005)

Após jogos de simulação de corrida elevarem os níveis de detalhe para patamares nunca antes vistos (Figura 2.2), foi a vez de jogos arcade acompanharem o ritmo de melhorias gráficas utilizadas nestes jogos. Como jogos arcade não pretendiam manter a mesma fidelidade com a física, como as simulações mantinham, os desenvolvedores puderam colocar maior empenho na qualidade gráfica, melhorando o visual para poder competir com as simulações. Este movimento contribuiu para elevar ainda mais as expectativas dos jogadores com relação a este gênero.

O nível de detalhes esperado atualmente inclui minúcias do interior do veículo, versões da mesma pista em diferentes horas do dia e adversidades meteorológicas como neve, chuva e nevoeiro.

(20)

2.2. PROBLEMAS COMUNS DAS FERRAMENTAS ATUAIS NA PRODUÇÃO 19

Figura 2.2: GT Sport, 2017, Alto nível de detalhes.

Fonte: (PATRICK, 2017)

2.2 Problemas comuns das ferramentas atuais na produção

As ferramentas atuais de produção de jogos são feitas pensando em problemas gerais de jogabilidade, render gráfico, controle, rede e animação. Embora isso também corresponda a problemas em jogos de corrida, há questões específicas dessa classe que não são contempladas nas ferramentas padrão utilizadas na indústria.

A criação de um jogo de corrida se diferencia dos outros jogos em relação a como os jogadores, enquanto veículos, interagem com o cenário e a pista de corrida. A modelagem da pista leva em consideração a forma como os veículos irão interagir, ou melhor, a física dos veículos. A simulação física do tipo sandbox utilizada para fazer os veículos parecerem reais deixa o comportamento mais imprevisível.

Fica muito difícil saber qual será o resultado de uma curva ou de um obstáculo no instante em que um designer estiver projetando a pista, forçando o desenvolvedor a testar e modificar o traçado constantemente (CARDAMONE et al., 2010). Por este motivo a quantidade de parâmetros oferecidos, a dificuldade para aprender a usar estas ferramentas, a necessidade de modificar traçado da pista e a integração com o ambiente de desenvolvimento são os problemas mais comuns das ferramentas tradicionais para a criação de um jogo de corrida.

2.2.1 Grau de parametrização

As engines atuais de desenvolvimento de jogos possuem ferramentas que permitem criar traçados de geometria tecnicamente próprios para um jogo de corrida, como Unreal Engine e a Unity3D. Essas ferramentas são um primeiro passo para tentar minimizar as dificuldades na construção de uma pista de corrida, porém elas ainda são difíceis de manusear.

Essas ferramentas utilizam uma técnica que consiste em deformar uma geometria se-guindo uma curva de splines. Splines são curvas paramétricas que são obtidas através da interpolação de pontos de controle. Se o designer quiser compor uma curva, ele terá que guiar o spline manualmente e colocá-lo seguindo o terreno do jogo, ligando-o novamente a outro trecho

(21)

2.2. PROBLEMAS COMUNS DAS FERRAMENTAS ATUAIS NA PRODUÇÃO 20

Figura 2.3: Splines em Unreal Engine, Sete pontos de controle foram utilizados para gerar este exemplo. A pista não encaixa como o terreno e necessita de ajuste manual.

Fonte: (PARRISH, 2014)

da pista, que pode ser outra curva ou uma reta. Como os splines são compostos por vários pontos de controle, e além das posições dos pontos existem ainda as rotações, o número de parâmetros de ajuste cresce drasticamente a medida que a pista fica mais complexa. (Figura 2.3)

O ajuste dos splines para compor o traçado da pista possui ainda mais um inconveniente: requer que o desenvolvedor tenha o cuidado de não deformar o traçado. Ao modificar um parâmetro o traçado pode perder a forma orgânica, observada em pistas reais de corrida, e criar saliências indesejadas.

2.2.2 Dificuldade de uso

A modelagem de geometria 3D vem evoluindo muito nas últimas décadas. Grandes mercados, como cinema, jogos e engenharia, intensificam cada vez mais o uso dessas ferramentas em suas mais diversas aplicações. Embora a maioria das ferramentas foque em usabilidade, elas requerem um certo grau de treinamento antes que possam ser operadas (LOCKER, 2017). Ainda assim, a liberdade de criação destas ferramentas impõe uma complexidade no uso, o que limita a velocidade de produção do conteúdo.

Mesmo quando utilizamos uma engine de jogos, existe uma curva de aprendizado que, para maioria das pessoas, vai demandar também um treinamento. Mesmo com a facilidade de utilização de um spline para criar o traçado, o designer ainda precisa entender o funcionamento do spline e lidar com o esforço de encaixar o traçado com o restante do cenário.

Além disso noções de programação e lógica, assim como conhecimentos específicos da área de desenvolvimento de jogos podem ser um limitante no uso destas ferramentas.

2.2.3 Dificuldade de modificação

Modificar um cenário ou outra parte de um jogo que já foi produzido é uma atividade comum no desenvolvimento de jogos. Uma solicitação para uma mudança pode surgir em

(22)

2.3. CARACTERÍSTICAS DE UMA BOA SOLUÇÃO 21 diversas etapas do desenvolvimento: da fase de design, onde o jogo pode encontrar-se ainda em fase de protótipo; até a fase de Testes, onde o desenvolvimento está concluído e o time de controle de qualidade está testando o jogo. (NOVAK, 2011)

Jogos de corrida são mais difíceis de serem ajustados, diferentemente da maioria dos jogos, onde uma pequena parte de um cenário pode ser testado e modificado sem alterar o resultado de outras partes. Por exemplo, quando mudamos a altura de uma plataforma para ajustar a dificuldade, isso não altera o resultado do resto do cenário. Em um cenário de jogo de corrida, ao modificar a pista, em uma curva por exemplo, todos os pontos de entrada e saída da curva são alterados. Isso acarreta em modificações nos pontos de entrada e saída de curvas adjacentes, modificação do traçado ótimo da pista e em demais pontos do traçado original. (MCMILLAN, 2011)

Além disso, as modificações realizadas após a inserção de objetos decorativos na pista fazem com que a haja mais retrabalho, pois parte destes objetos não estará mais condizente com o cenário. Não apenas os objetos decorativos deverão ser manualmente reposicionados, mas os objetos de marcação da Inteligência Artificial também estarão defasados em relação a modificação realizada.

2.2.4 Integração com ambiente de desenvolvimento

Ferramentas de modelagem 3D possuem baixa integração com as ferramentas de desen-volvimento de jogos. A geometria gerada pela ferramenta é importada para a engine de jogos e, só então, os outros componentes podem interagir com o conteúdo importado. Desta maneira fica difícil para o modelador visualizar se o que está sendo criado vai encaixar com o cenário.

As ferramentas de spline embutidas na engine de jogo permitem visualizar o conteúdo gerado dentro do cenário, porém, a interação dos splines com os outros componentes do cenário é limitada e não seguem quaisquer convenções que um circuito de corrida.

2.3 Características de uma boa solução

Baseado nos problemas descritos anteriormente propomos algumas mudanças no work-flow do desenvolvimento de jogos de corrida, de maneira integrada as ferramentas atuais, porém simplificando alguns aspectos relativos às necessidades do desenvolvimento deste tipo de jogo. Uma boa solução será capaz de acelerar a produção ao mesmo tempo que torna o processo mais intuitivo para o desenvolvedor, removendo etapas longas e desnecessárias.

2.3.1 Boa flexibilidade

Uma boa ferramenta precisa ser flexível e permitir uma ampla representatividade, per-mitindo o desenvolvedor criar cenários sem restrições, por exemplo perper-mitindo que a pista possa se sobrepor gerando pontes. Para permitir uma boa flexibilidade é importante destacar

(23)

2.3. CARACTERÍSTICAS DE UMA BOA SOLUÇÃO 22 quais os aspectos que compõem uma solução prática, e garantir que estes aspectos possam ser representados pela ferramenta. Como exemplo, uma ferramenta baseada em splines que seja incapaz de representar curva mais fechada pode dificultar ou mesmo impedir o trabalho de um designer ao elaborar um traçado de uma pista mais difícil.

A flexibilidade de uma ferramenta é indicada pelo espaço de soluções que ela pode gerar, dando a liberdade ao desenvolvedor para criar o conteúdo, sem restrições. Ainda que o conteúdo gerado não seja adequado, indicadores baseados em restrições e análises da forma gerada podem ser utilizados para alertar o desenvolvedor de que o conteúdo não está adequado, cabendo a ele tomar as decisões de ajustes.

A ferramenta ainda pode conter uma Inteligência Artificial capaz de sugerir e realizar estas correções, desonerando o designer e deixando-o livre para realizar tarefas mais complexas e apropriadas ao profissional. Desta forma há um ganho de produtividade que resulta em um menor custo de produção.

2.3.2 Facilidade de uso

A facilidade de uso é um ponto importante pois pode impactar diretamente na perfor-mance do desenvolvedor, além de contribuir para a curva de aprendizado. Quanto mais difícil uma ferramenta, mais o processo pode se tornar laborioso e esse impacto na performance torna o custo de produção mais elevado, requerendo mais profissionais e elevando a dificuldade de gerência do projeto.

A capacitação de novos funcionários é parte do plano de crescimento de cada empresa. Essa capacitação em novas ferramentas também é empregada para funcionários veteranos. Como uma empresa de desenvolvimento de jogos é uma empresa de tecnologia, é comum haver uma reciclagem para capacitação em novas técnicas, tendências, ferramentas e processos.

Uma ferramenta fácil de usar significa redução de custos com treinamento e adoção mais rápida por parte dos desenvolvedores. Para alcançar essa facilidade, entretanto, é importante que a ferramenta se adeque ao processo que os desenvolvedores já utilizam. Isto significa que a interface de ferramentas atuais pode servir como ponto de partida para criação de novas.

2.3.3 Modificação simplificada

Durante o processo de testes, modificações do cenário são uma prática comum. Normal-mente uma base é criada com o propósito de testar conceitos com mais facilidade. Ao prototipar essa base o desenvolvedor tentar evitar retrabalho ao identificar pontos falhos logo no início do desenvolvimento, tornando a modificação um processo mais simples. Entretanto, jogos de corrida possuem uma forte ligação entre cenário, pista e veículo.

Ainda que o desenvolvedor tenha prototipado com sucesso todas as pistas, é comum que pontos falhos possam ser encontrados em testes posteriores e que correções precisem ser aplicadas a cenários finalizados. Isso impõe a equipe de desenvolvimento um dilema: eles devem

(24)

2.3. CARACTERÍSTICAS DE UMA BOA SOLUÇÃO 23 escolher entre entregar a pista com a falha ou corrigi-la e assumir todo o retrabalho.

Uma boa ferramenta deve ser capaz de corrigir trechos já finalizados, identificando correções necessárias para manter a coesão do cenário. A reconstrução destes trechos do cenário pode ser realizada tanto de maneira construtiva, interpretando os parâmetros, como de maneira destrutiva, removendo os objetos incoerentes com o novo traçado e colocando novos itens de maneira a manter o cenário coerente.

2.3.4 Integração com ambiente de desenvolvimento

As ferramentas de modelagem 3D proporcionam um ambiente muito desconexo do restante do jogo, diferentemente das engines de jogos, onde é possível visualizar o resultado final e interagir com objetos de jogo em tempo real. As engines de jogos possuem outra característica interessante: a capacidade de se modificar para atender novos requisitos, permitindo uma integração em tempo de desenvolvimento às ferramentas.

Para integrar ferramentas de desenvolvimento de jogos de corrida com as engines de jogo atuais, faz-se necessário identificar os aspectos que compõem o cenário do jogo de corrida. A integração entre essas partes do cenário permitirá a ferramenta corrigir objetos de jogo sem, ou com pouca, intervenção do designer.

Uma boa ferramenta para o desenvolvimento de jogos de corrida permite uma forte integração entre os componentes do cenário, reagindo aos inputs do designer e reajustando estes componentes em tempo de desenvolvimento.

(25)

24 24 24

3

ESTADO DA ARTE

3.1 Produção de conteúdo para jogos de corrida

Os jogos de corrida AAA são, atualmente, desenvolvidos em ferramentas de modelagem 3D, utilizando enigines criadas pelos próprios desenvolvedores, mas também podem utilizar engines de jogos como a Unreal Egine ou a Unity3D. Essas engines trazem soluções como física e animação prontas, porém sempre existe a necessidade de adaptar estes componentes ao game design proposto. (DUCA; LECCHI, 2017)

Os modelos, artefatos das ferramentas de modelagem 3D, são importados nas engines de jogos em um processo separado. Ao importar os modelos o artista técnico ou programador, atribui a eles propriedades como rotação e escala. A rotação serve para indicar qual o lado que fica para cima e a escala indica o tamanho relativo do modelo na cena. Estas ferramentas também são responsáveis pela animação de personagens, normalmente criadas por um profissional especializado em animação. (EPIC, 2017) (UNITY, 2017)

As engines de jogos utilizam estes modelos para compor a cena, associados a efeitos e comportamentos programados para cada situação. Por exemplo, modelos de veículos são associados a comportamentos de física que lhes permite andar pelo cenário. Já modelos de árvores são associados a comportamentos estáticos com colisão, caso estejam ao alcance do veículo, ou sem colisão quando tratam-se de objetos decorativos.

3.1.1 Ferramentas de modelagem

A indústria de jogos utiliza ferramentas de modelagem 3D para produzir os objetos que compõem o cenário. Esses programas constroem superfícies com geometria 3D e também oferecem recursos suplementares como a aplicação de texturas, imagens, em modelos e simulação física de objetos macios como tecido. (G2CROWD.COM, 2017)

Estas ferramentas também são utilizadas pelo cinema e televisão, marketing e realidade virtual. Depois de criados os modelos, eles podem ser animados e produzidos em vídeos. Outras ferramentas com capacidade de modelagem 3D são especialmente projetadas para trabalhos de design e arquitetura, engenharia civil e outras funções relacionados a CAD. (G2CROWD.COM, 2017)

(26)

3.1. PRODUÇÃO DE CONTEÚDO PARA JOGOS DE CORRIDA 25 As principais ferramentas de modelagem utilizadas atualmente na indústria de jogos são o 3DS Max, Maya e Mudbox, todos da empresa Autodesk. O 3DS Max e o Maya são capazes de criar geometria 3D utilizando um pipeline similar, diferentemente do Mudbox que usa uma técnica de escultura. (G2CROWD.COM, 2017)

3.1.2 Game engines

Atualmente as engines de jogos se dividem em dois segmentos. O primeiro é o segmento de jogos AAA, cuja produção é cara e complicada, onde a Unreal Engine se mostra dominante. Desta forma resta pouco espaço para outras engines como a CryEngine e a Source Engine. Neste segmento muitos jogos ainda são programados em engines próprias. O segundo segmento é o de jogos Mobile, onde a Unity3D ocupa o maior espaço e os jogos são menores e mais baratos para produzir. (DEALS, 2016)

A Unreal Engine não é utilizada apenas para jogos, mas também vem sendo vendida como uma solução para arquitetura e decoração, assim como uma ferramenta de animação em tempo real. Esta ferramenta é conhecida por possuir uma longa curva de aprendizado. Apesar de oferecer mais facilidades que outras engines de jogos, estas funcionalidades precisam ser estudadas e praticadas por um profissional antes que ele possa utiliza-las em sua plenitude. (DEALS, 2016)

A Epic Games, empresa proprietária da Unreal Engine, apresentou em conjunto com a The Mill na Game Developers Conference de 2017 uma versão do Blackbird, um equipamento de realidade aumentada, usado para filmar carros em tempo real. Usando a tecnologia da Unreal Engine para render em tempo real, foi possível visualizar um carro com todos os detalhes, incluindo reflexão. (MARSHALL, 2017)

A Unity3D é a engine mais utilizada no mundo, em parte por causa do grande mercado de jogos mobile. Seus principais atrativos são sua curva de aprendizado reduzida para iniciantes; um ecossistema de criadores de modelos e plug-ins ativo; uma boa velocidade de desenvolvimento e sua lista de plataformas suportadas - atualmente 25 plataformas (em contraste a Unreal Engine, que suporta apenas 10 plataformas). (DEALS, 2016)

Os Jogos de corrida AAA têm sido, geralmente, baseados em engines de jogos proprie-tárias, criadas pelos próprios desenvolvedores, para atender as necessidades específicas deste gênero (DUCA; LECCHI, 2017). Como vimos anteriormente (Seção 2.2.1) as engines de jogos possuem sistemas de splines que podem gerar pistas. Embora este seja um passo da direção certa para ajudar o desenvolvedor, ainda há muito a ser feito, pois o ajuste da pista no terreno ainda precisa ser feito manualmente.

3.1.3 Formas de testes do produto

O Playtesting é necessário para encontrar problemas cedo, enquanto ainda há tempo para corrigi-los; melhora a confiança do time, confirmando que eles estão fazendo o jogo corretamente

(27)

3.2. TÉCNICAS DE GERAÇÃO PROCEDIMENTAL DE CONTEÚDO 26 e para a audiência correta; e é essencial para fazer um bom jogo (SCHELL, 2008).

Testes realizados pelo desenvolvedor são uma categoria importante. Com a utilização de engines de jogo o desenvolvedor pode visualizar e testar pequenas modificações rapidamente. Modificações que não requerem compilação de código podem ser testadas imediatamente na maioria das engines, visto que todas estas adotam um editor em um formato similar as ferramentas de modelagem. As engines de jogos permitem ainda que desenvolvedores façam mudanças durante a execução do jogo, para uma rápida avaliação por parte do desenvolvedor, mediante uma determinada situação de jogo. (ALEEM; CAPRETZ; AHMED, 2016)

Alguns métodos de teste de software são utilizados para testar jogos, como por exemplo o smoke test, que é usado para testar a lógica da interface; testes de regressão são usados para verificar se a qualidade do que já foi implementado não foi alterada pela adição de novos features; testes de performance podem assegurar que o jogo consegue executar dentro de um limite de hardware e testes funcionais são usados para avaliar a jogabilidade e para encontrar falhas no fluxo do jogo. (ALEEM; CAPRETZ; AHMED, 2016)

3.2 Técnicas de Geração Procedimental de Conteúdo

A Geração Procedimental de Conteúdo (GPC) consiste na geração de dados através de algoritmos, dados esses que podem ser interpretados em um jogo como cenários, imagens, modelos, sons, veículos, personagens, etc. Os termos “procedimental” e “geração” implicam que estaremos lidando com algoritmos que criam alguma coisa, esses algoritmos podem ser executados com ou sem intervenção humana. (SHAKER; TOGELIUS; NELSON, 2014)

Superar os limites de armazenamento nos primeiros jogos de computador foi um dos principais motivos para o uso da geração procedimental de conteúdo. No começo dos anos 80, a restrição de armazenamento forçava os designers a procurar por outros métodos para gerar e salvar conteúdo. (SHAKER; TOGELIUS; NELSON, 2014)

Um caso famoso na indústria foi o jogo “Pitfall” (Figura 3.1), para Atari 2600, desenvol-vido pela Activision. O jogo possuía então uma técnica de criação de cenários em tempo real. Assim, Pitfall contava com 256 telas diferentes, com configuração de árvores, armadilhas, inimi-gos, buracos e paredes diferentes. Seria impossível armazenar todas essas telas em 4 kilobytes de ROM, que era o espaço de um cartucho na época. Foi então que o criador do jogo, David Crane, utilizou uma técnica chamada “Polynomial Counter” reversível, que se assemelha a uma sequência de números pseudoaleatórios, mas que pode ser incrementada para obter o próximo número pseudoaleatório, tanto quanto decrementada para obter o número anterior. Utilizando esta técnica, foi possível encodar as combinações dos vários aspectos do cenário em 8 bits e o personagem ficava livre para ir e vir. (CRANE, 2013)

Posteriormente, jogos como Diablo aumentaram a atenção a técnicas de geração pro-cedimental de conteúdo em jogos comerciais. E assim, outros jogos como Spore e Minecraft usaram essas técnicas como funcionalidade central, oferecendo ao jogador uma nova experiência

(28)

3.2. TÉCNICAS DE GERAÇÃO PROCEDIMENTAL DE CONTEÚDO 27

Figura 3.1: Jogo Pitfall. O cenário é criado dinamicamente, poupando espaço no cartucho.

Fonte: (CRANE, 2013)

a cada nova partida (SHAKER; TOGELIUS; NELSON, 2014). A vantagem de usar geração de dados procedurais é que podemos gerar grandes quantidades de dados usando o poder de processamento ao invés de criarmos estes dados manualmente. (BLOMQVIST et al., 2016)

3.2.1 GPC on-line ou off-line

A geração de conteúdo off-line é particularmente útil quando estamos gerando conteúdo complexo como mapas e ambientes. Estes tipos de conteúdo podem levar mais tempo para ser gerado, além de também poderem ser revisados antes da utilização.

Dizemos que a geração de conteúdo é on-line quando o conteúdo é gerado no momento que é requisitado, podendo ser personalizado para o usuário ou não. Mesmo quando o conteúdo é gerado um pouco antes, como em uma tela de espera, e é armazenado antes de ser utilizado, ele perde a característica de ser on-line e passa a ser off-line.

3.2.2 GPC aleatório ou determinístico

A geração de conteúdo determinística permite recriar o mesmo cenário baseado nos mesmos algoritmos e nos mesmos parâmetros, ao contrário de métodos aleatórios onde é praticamente impossível recriar o mesmo conteúdo. Usar fatores puramente aleatórios pode levar a conteúdos sem nenhum controle e sem chance de reprodução, o que pode não ser desejável (BLOMQVIST et al., 2016).

Entretanto um sistema puramente determinístico irá gerar sempre os mesmos resultados. Adicionar um fator de aleatoriedade ao processo pode criar uma grande variação de conteúdo gerado. Uma maneira bem comum de produzir aleatoriedade é utilizando algoritmos de geração

(29)

3.2. TÉCNICAS DE GERAÇÃO PROCEDIMENTAL DE CONTEÚDO 28 de números pseudoaleatórios. Estes algoritmos consistem em operações matemáticas, e por isso são completamente determinísticos, e dependem totalmente do estado inicial, este estado inicial pode ser um número (chamado de semente) ou um vetor de números (chamado de vetor de inicialização). Ser determinístico é um aspecto muito útil para um algoritmo de geração de conteúdo, pois permite ao desenvolvedor armazenar apenas as sementes iniciais e o método para poder obter o mesmo conteúdo. (BLOMQVIST et al., 2016)

3.2.3 GPC baseado em busca ou construtivo

A geração de conteúdo baseado em busca estabelece uma condição de satisfação, gerando e testando em loop até que a condição seja atendida. A condição pode ser algum tipo de critério como por exemplo se a pista contém um número mínimo de curvas, se o cenário não contém algum tipo de obstáculo intransponível. Caso o teste falhe, parte do conteúdo candidato ou todo ele pode ser descartado e um novo gerado até atingir a condição de satisfação. (TOGELIUS et al., 2011)

Ao contrário de técnicas baseada em busca, técnicas construtivas completam a geração de uma vez, sem revisitar os dados gerados. Essas técnicas precisam garantir que geraram o conteúdo corretamente durante a geração, um exemplo é a utilização de fractais para gerar um terreno. (TOGELIUS et al., 2011)

3.2.4 GPC parametrizado

O algoritmo de geração de conteúdo pode utilizar-se de parâmetros para obter um resultado personalizado. Estes parâmetros podem representar a dificuldade de um cenário, a complexidade de uma geometria 3D, ou podemos utilizar uma única semente no gerador de números pseudoaleatórios e construir um cenário completamente aleatório (TOGELIUS et al., 2011) .

Características de uma pista como largura, curvatura, número de curvas e retas podem ser usadas como parâmetros para geração de um traçado, dando poder de decisão ao desenvolvedor. Porém parâmetros não intuitivos ou em quantidade excessiva podem causar um aumento da complexidade. (TOGELIUS et al., 2013)

3.2.5 Geração automática ou autoria mista

Até recentemente as técnicas de GPC permitiam pouca ou nenhuma entrada dos game designers. Os designers modificavam os algoritmos de GPC para gerarem o conteúdo desejado, enquanto o propósito dos algoritmos ainda era o de gerar infinitas variações de conteúdo. Entretanto um novo paradigma vem surgindo, onde designer e jogador são incorporados como entrada no processo de design. Neste paradigma de autoria mista designer e jogador cooperam com o algoritmo para gerar o conteúdo desejado (SHAKER; TOGELIUS; NELSON, 2014).

(30)

3.3. APLICAÇÕES DE GPC NA PRODUÇÃO DE JOGOS DE CORRIDA 29 Um exemplo de sistema onde o designer interage com o algoritmo é o Tanagra (SMITH; WHITEHEAD; MATEAS, 2010). No Tanagra, a ferramenta preenche as lacunas deixadas pelo designer na criação dos cenários 2D. Um outro exemplo desta iniciativa é observada no jogo Cut the Rope, onde os algoritmos de GPC completam lacunas no design, sugerem modificações, cuidam das restrições e testam a jogabilidade dos cenários. (SHAKER; TOGELIUS; NELSON, 2014)

A maioria dos sistemas de GPC não oferecem uma interface simples intuitiva de controlar, em muitos casos o desenvolvedor precisaria ter mais controle do conteúdo gerado, como por exemplo controlar a dificuldade, quantos tesouros deve haver em um determinado cenário ou que tipo de itens podem haver em um baú, tudo depende do jogo a ser criado. Alguns algoritmos construtivos possuem maneiras de especificar o conteúdo gerado, como quantos galhos possuirá uma planta. Algoritmos baseados em busca permitem que o designer escolha algumas propriedades desejáveis - no conteúdo, na forma e nos objetivos - mas codificar estas qualidades em uma função fitness pode ser complicado. (TOGELIUS et al., 2013)

Técnicas baseadas em autoria mista podem aumentar a criatividade de desenvolvedores humanos, especialmente quando possuem Inteligência Artificial embutida. Desta forma, seria possível para equipes pequenas sem os recursos das grandes empresas, ou até mesmo entusiastas, desenvolverem jogos ricos em conteúdo. (SHAKER; TOGELIUS; NELSON, 2014)

3.3 Aplicações de GPC na produção de jogos de corrida

Existem diversos estudos sobre geração procedimental de conteúdo para jogos de corrida no que diz respeito ao traçado, com diversas técnicas se mostrando eficazes na criação de um traçado convincente. Estas técnicas podem trabalhar de forma independente do designer, gerando um traçado de uma pista de corrida sem intervenção humana ou recebendo como entrada as especificações do designer em forma de parâmetros.

David Maung sugere a utilização de tiles para a criação de traçados de corrida, utilizando um conjunto mínimo de 7 tiles com a restrição de que a pista em tiles adjacentes deve alinhar. Este conjunto contém um tile vazio, um ligando a vertical, outro ligando a horizontal e mais quatro tiles de curvas 90º. O traçado gerado seguindo esta técnica tem curvas limitadas ao tamanho do tile e não possui informação de altura ou outros detalhes que são importantes na representação da pista. (MAUNG, 2016)

Além do traçado, outros aspectos também são cobertos pelas técnicas de geração de conteúdo, como ambientes, modelos e veículos. Entretanto estas técnicas não fazem uso de ferramentas comerciais e não atentam para a integração com o pipeline de produção.

3.3.1 Traçado da pista sem interação do designer

Algoritmos que criam o traçado de uma pista sem interação do designer procuram inferir um traçado a partir de características de pistas existentes ou construindo um conjunto de

(31)

3.3. APLICAÇÕES DE GPC NA PRODUÇÃO DE JOGOS DE CORRIDA 30 características baseado no feedback de usuários. Como exemplo, Loiacono et al. (LOIACONO; CARDAMONE; LANZI, 2011) utiliza algoritmos genéticos para criar um circuito de corrida, a representação de uma pista é feita expandindo um conceito de radial encoding, de Togelius et al. (TOGELIUS; DE NARDI; LUCAS, 2007), acrescentando dois parâmetros, a coordenada angular e a inclinação da tangente. Este método foca em criar pistas com uma boa variação, utilizando para isto duas métricas: a variedade de curvas e linhas retas e a amplitude da velocidade atingível na pista.

O fato de não haver iteração com o designer permite construir pistas em tempo real, durante a partida, possibilitando um conteúdo personalizado e ajustado ao jogador. Normalmente jogos que utilizam essas técnicas não possuem um apelo gráfico, nem procuram atingir o fotorrealismo, mas procuram compensar com um conteúdo customizado para o jogador. Estas técnicas utilizam a parametrização de aspectos como a dificuldade e a temática para criar uma experiência para o usuário seguindo inferências prévias.

3.3.2 Traçado da pista com iteração do designer

Luigi Cardamone propôs uma ferramenta para gerar pistas usando evolução iterativa, e disponibilizando a ferramenta on-line para que jogadores possam dar uma nota para cada pista gerada, que então é utilizada como função fitness em seu algoritmo de busca. Esta técnica mostrou-se eficaz na elaboração de pistas que foram bem avaliadas pelos jogadores. Esta ferramenta colheu a nota dos usuário durante um período de 2 anos e meio, num total de 11.500 sessões de 7.600 visitantes únicos, gerou 8.853 pistas e recebeu 6.542 votos. Entretanto, devido ao fato de haver intervenção humana, a eficiência ficou comprometida, o tempo de resposta foi elevado e o resultado obtido nem sempre se encaixa com as necessidades do designer. (CARDAMONE; LANZI; LOIACONO, 2015)

3.3.3 Integração em ambientes de desenvolvimento

As principais engines de jogo do mercado oferecem suporte à criação de conteúdo dinamicamente gerado, ficando a cargo do programador criar as ferramentas que utilizem esses recursos. O que define se o conteúdo gerado procedimentalmente é dinâmico ou estático é a forma como o programador alimenta o sistema. Embora as engines de jogos ofereçam este recurso básico, porém poderoso, elas ainda oferecem algumas outras ferramentas baseadas em GPC, por exemplo, a distribuição da vegetação em uma área ou a criação de geometria seguindo um spline.

Visando flexibilidade, estas engines não restringem e nem oferecem quaisquer tipos de limitação ao conteúdo gerado, limites esses que devem ser implementados pelo programador de acordo com tipo de jogo desejado.

(32)

3.3. APLICAÇÕES DE GPC NA PRODUÇÃO DE JOGOS DE CORRIDA 31 3.3.4 Limitações

As técnicas atuais não levam em consideração a existência do designer e optam por tentar substituí-lo, focando na criação do traçado da pista. Mesmo levando em consideração os desejos do cliente final, estas técnicas desperdiçam o potencial criativo da equipe de desenvolvimento automatizando apenas parte da produção. Talvez por isso jogos com a qualidade AAA ainda fazem uso das ferramentas tradicionais de produção, onde os desenvolvedores possuem controle de ajuste fino sobre a qualidade do produto gerado.

(33)

32 32 32

4

UMA NOVA PROPOSTA DE FERRAMENTA PARA CRIAÇÃO DE CONTEÚDO PARA JOGOS DE CORRIDA

Neste capítulo iremos propor uma ferramenta para criação de conteúdo para jogos de corrida. Por conteúdo entende-se: pista, cenário e objetos de marcação da inteligência artificial. Veículos e animações não fazem parte deste contexto. Esta ferramenta irá fazer uso de Inteligência Artificial para auxiliar o designer na construção da pista e no acabamento do cenário, aumentando a velocidade de produção e fornecendo liberdade de criação ao designer.

4.1 Principais características para uma nova solução

Nosso objetivo principal é auxiliar o designer e os desenvolvedores na criação de conteúdo para jogos de corrida, de maneira a podermos aproveitar sua criatividade, deixando o controle por sua conta, e simplificando o trabalho de elaborar o conteúdo. A criação de jogos de corrida com o intuito de entretenimento tem um foco muito importante na diversão, no tema escolhido e no ponto do enredo em que a pista do jogo se encontra. Estes aspectos são de responsabilidade do game designer e podemos aproveitar sua expertise em aspectos criativos enquanto o auxiliamos na execução.

Para que esta ferramenta seja útil ao designer é importante que ela seja flexível ao ponto de poder representar qualquer pista válida, onde o veículo possa trafegar em velocidade, sem criar curvas impossíveis ou formatos não ortodoxos. Desníveis na pista também devem ser representáveis, com um controle de suavidade das ladeiras, rampas muito íngremes devem ser evitadas. A largura da pista também deve ser parametrizada, permitindo um controle do tamanho e da dificuldade da pista.

O traçado não é o único problema que pode ser resolvido com geração procedimental de conteúdo, uma pista de corrida convincente segue os desníveis do terreno, como se tivesse sido construída sob aquele piso, de forma que a pista deve, então, se integrar ao terreno parecendo fazer parte do mesmo. Para que o terreno pareça coeso com a pista é necessário modifica-lo sempre que a pista for modificada. E as ferramentas de jogos já oferecem um terreno que pode ser utilizado pelo gerador.

(34)

4.1. PRINCIPAIS CARACTERÍSTICAS PARA UMA NOVA SOLUÇÃO 33 4.1.1 Simplificação de parâmetros

Usaremos retalhos de superfícies paramétricas para criar a pista, de forma a termos controle sobre a geometria criada. Esse método se assemelha a ferramentas que encontramos embutidas em engines. E como já observamos, existe uma dificuldade com esta técnica que é a grande quantidade de parâmetros, principalmente quando lidamos com superfícies.

Figura 4.1: O controle é realizado movimentando cada curva inteira.

Fonte: Feito pelo autor

Para lidarmos com esta situação iremos reduzir o número de parâmetros para um conjunto de controles que se adeque melhor ao conceito de pistas. Usaremos curvas como controle (Figura 4.1).

Curvas circulares são descritas em Engenharia Civil como curvas simples de um projeto geométrico de rodovias e, entre os elementos que as descrevem, pudemos observar alguns mais significativos (PEREIRA et al., 2010):

⌅ Ponto de Curva, é o ponto de contato do fim da reta e a entrada da curva;

⌅ Ponto de Tangente, é o ponto de saída da curva, ligando o fim da curva a reta seguinte; ⌅ Raio da curva, é a distância do centro da curva ao Ponto de Curva ou ao Ponto de

Tangente;

Por se tratar de um ponto que descreve a curva, o centro da curva pode ser utilizado, juntamente com o raio, para definir um circulo. Este circulo contém todos os pontos de entrada e saída da curva possíveis, ficando a cargo da tangente entre os círculos definir quais serão os pontos de entrada e saída da curva. (PEREIRA et al., 2010)

(35)

4.1. PRINCIPAIS CARACTERÍSTICAS PARA UMA NOVA SOLUÇÃO 34 Curvas mais fechadas são representadas por raios menores e curvas mais abertas por raios maiores. Cada curva é responsável por controlar um conjunto de superfícies adjacentes.

Figura 4.2: Superfície adjacente a uma curva. Esta superfície contém 8 parametros, cada curva é composta por 3 superfícies.

Fonte: Feito pelo autor

O objetivo de utilizarmos curvas como conceito mais abstrato é simplificar a quantidade de parâmetros que os desenvolvedores terão de lidar, limitando assim o trabalho em modificar um trecho de uma pista, além de dar significado ao parâmetro, permitindo que o desenvolvedor entenda os resultados ao modificá-los. Cada curva pode ser controlada por uma posição, que é representada com coordenadas X, Y, Z no sistema cartesiano tridimensional, e um raio R, totalizando quatro parâmetros por curva. Com estas quatro variáveis é possível controlar o comportamento de 3 superfícies para compor a curva (Figura 4.2). Cada superfície contém 8 parâmetros, o que totaliza 24 parâmetros sendo controlados por uma curva.

Figura 4.3: Gizmo, Utilizado para movimentar um ponto de controle no ambiente 3D.

Fonte: Reprodução Unity3D

A metáfora da curva traz ainda mais um benefício que é a simplicidade. Com a posição da curva controlada por um Gizmo (Figura 4.3) - um controle visual tridimensional, que é bem

(36)

4.1. PRINCIPAIS CARACTERÍSTICAS PARA UMA NOVA SOLUÇÃO 35 conhecido por profissionais da área de modelagem e jogos 3D - e pelo raio, o desenvolvedor consegue entender prontamente o resultado das alterações que ele pode aplicar.

4.1.2 Capacidade de modificar um conteúdo previamente gerado

Um aspecto importante é a capacidade de modificar uma pista já gerada, comportamento este necessário pois o resultado pode não ser aprovado em testes. É senso comum testar os jogos que estão sendo desenvolvidos durante a fase de produção para identificar problemas de jogabilidade e isto não é diferente em um projeto de jogo de corrida.

Para que seja possível modificar um conteúdo gerado previamente é necessário criarmos uma ferramenta que seja determinística e gere sempre os mesmos resultados para os mesmos parâmetros. Neste caso, os parâmetros que devem ser tomados como base são: o número de curvas, os parâmetros das curvas, a largura da pista e o terreno a ser incorporado. As texturas do terreno ou da pista podem ser desprezadas pois esses parâmetros não devem alterar o resultado.

4.1.3 Integração com game engines existentes

Esta ferramenta precisa fazer uso da API de conteúdo dinâmico da engine para poder se integrar ao pipeline de produção. Essa integração irá permitir aos desenvolvedores visualizar o resultado da geração de conteúdo dentro da engine. E permitirá que os testes de jogabilidade sejam feitos imediatamente, assim como integrar com outros componentes, como o terreno por exemplo.

As engines oferecem ferramentas para customizar o terreno, por exemplo, alterar a topologia e pintar texturas, podendo dar-lhe aparência de pedras, rochas, grama, etc. Integrar a nossa ferramenta a este objeto já oferecido pela engine, permitirá ao desenvolvedor continuar utilizando as ferramentas de sua preferência para lidar com a geração de terrenos. Para obtermos uma integração efetiva, modificaremos o terreno de acordo com a pista para obter uma transição suave entre a pista e o terreno.

4.1.4 Uso de IA no auxílio de ajuste fino

Uma vez que tenhamos o controle das curvas e a geração da pista estiver integrada com o terreno, usaremos algoritmos de busca para obter o encaixe ótimo entre o terreno e a pista. Este método deverá ser acionado pelo designer quando este achar necessário. Para implementar esta busca, criaremos uma função fitness e tentaremos minimiza-la. O propósito é reduzir a distância da pista para o terreno fornecido, para que o cenário passe a impressão de encaixe no ambiente e não o contrário.

(37)

4.1. PRINCIPAIS CARACTERÍSTICAS PARA UMA NOVA SOLUÇÃO 36 4.1.5 Uso de IA para geração inicial de cenário

Criaremos um traçado inicial como sugestão para o designer (Figura 4.4) baseado no algoritmo de busca que minimiza a função fitness, desta forma estaremos criando uma pista que pretende seguir a topologia do terreno. Este recurso é uma geração sem intervenção do desenvolvedor, porém este passo inicial é opcional, cabendo ao designer decidir por usá-lo. Este método difere da busca usada no refinamento por modificar a quantidade de curvas e testar pistas que diferem muito umas das outras, possibilitando o surgimento de traçados completamente diferentes.

Figura 4.4: Exemplos de geração de automática de pista oferecendo uma configuração inicial ao designer.

(38)

4.2. DESCRIÇÃO DAS TÉCNICAS 37 4.2 Descrição das técnicas

Para obtermos uma boa integração com uma engine de jogo precisamos incorporar a ferramenta em seu pipeline. Optamos por usar a Unity3D para a criação de nosso protótipo pela sua importância no mercado e por ser um ambiente comum aos desenvolvedores, deixando-os à vontade em um ambiente conhecido.

A Unity3D oferece ferramentas para customizar o editor, provendo uma API para integração com seus componentes, e permitindo, assim, que a nossa ferramenta faça parte do pipeline produção. Esta API é fornecida em C#, a linguagem de programação preferida para interagir com a Unity3D.

O editor da Unity3D consiste de um ambiente 3D com os objetos do jogo. Permite a alteração de suas propriedades e a adição/remoção de novos objetos ao cenário. Integraremos nossa ferramenta de modo a manter a aparência e a usabilidade da aplicação.

A performance é um aspecto importante uma vez que a ferramenta deve funcionar em tempo real, para que o desenvolvedor possa observar as modificações imediatamente. Por este motivo, as técnicas que não podem ser realizadas em tempo real, como o algoritmo de ajuste fino e a geração inicial de traçado, serão disponibilizadas como ações que o designer pode optar em executar. Estas ações devem exibir uma barra de progresso para dar feedback do andamento ao desenvolvedor.

4.2.1 Controlando o traçado com o conceito de curvas

Para implementar o conceito de curvas usamos círculos. Para representar cada curva, o raio do círculo indicará o raio da curva. Para conectar duas curvas, A e B, unimos a tangente de saída do círculo de A com a tangente de entrada do círculo de B.

Figura 4.5: Tangentes entre círculos.

(39)

4.2. DESCRIÇÃO DAS TÉCNICAS 38 Existem quatro tangentes entre dois círculos (Figura 4.5), duas tangentes externas e duas tangentes internas. Estamos interessados em apenas uma única tangente para conectar uma curva a outra. Para determinarmos qual a tangente que deverá ser utilizada, primeiro deveremos avaliar se usaremos a tangente interna ou a externa.

Figura 4.6: Tangentes externas entre círculos formando o traçado da pista, destacado em vermelho.

Fonte: Feito pelo autor

Percebemos que, ao ligarmos três círculos de raio não zero, coplanares, pelas tangentes externas mais afastadas do centro, teremos uma configuração desejável para representar uma pista de corrida (Figura 4.6). Ao adicionarmos um quarto círculo poderemos obter uma configuração não intuitiva, onde a tangente de uma das curvas não faz a volta no círculo. Para corrigirmos isso utilizaremos a tangente interna.

Para determinarmos se devemos usar a tangente interna ou externa criaremos um vetor do círculo anterior ao posterior, o qual chamaremos de vetor AB, e outro vetor do circulo anterior ao circulo atual, que chamaremos de AM (Figura 4.7). Calculando o produto vetorial AB x AM obteremos um vetor com direção para cima caso o ponto M esteja à esquerda. Poderemos então utilizar o sinal da componente vertical para determinar se o círculo está à direita ou à esquerda. Caso o circulo anterior venha usando a tangente à esquerda e a direção mude para direita no circulo atual, usaremos a tangente interna para refletir a mudança. Caso não haja modificação na direção usaremos a tangente externa.

Existem restrições quanto ao uso desta técnica, os círculos adjacentes não podem colidir, uma vez que não há solução para o cálculo das tangentes internas quando há colisão entre os círculos que representam as curvas (Figura 4.8). Indicaremos ao usuário com uma coloração

(40)

4.2. DESCRIÇÃO DAS TÉCNICAS 39

Figura 4.7: Escolha entre tangentes internas e externas. No diagrama a esquerda o círculo M se encontra do mesmo lado das tangentes de A e B, portanto usando a tangente externa. No diagrama a direita o circulo M se encontra em posição contrária as tangentes de A e B, para que a curva faça

uma volta entorno do circulo M utilizaremos a tangente interna.

Fonte: Feito pelo autor

Figura 4.8: Tangentes entre círculos com interseção, Existem apenas as tangentes externas.

Referências

Documentos relacionados

O objetivo do curso foi oportunizar aos participantes, um contato direto com as plantas nativas do Cerrado para identificação de espécies com potencial

O valor da reputação dos pseudônimos é igual a 0,8 devido aos fal- sos positivos do mecanismo auxiliar, que acabam por fazer com que a reputação mesmo dos usuários que enviam

AMU Análise Musical MTOB Música de Tradição Oral Brasileira. AMUA Análise Musical Avançada MUSITEC Música

forficata recém-colhidas foram tratadas com escarificação mecânica, imersão em ácido sulfúrico concentrado durante 5 e 10 minutos, sementes armazenadas na geladeira (3 ± 1

Detectadas as baixas condições socioeconômicas e sanitárias do Município de Cuité, bem como a carência de informação por parte da população de como prevenir

Desenhos para a estação do Alto dos Moinhos. Margarida Botelho, Pina Cabral. Fundação do Distrito Federal, Museu de Arte de Brasília... Júlio Pomar, Alexandre Pomar e José

a) Na doença de Crohn dos cólons, ao contrário da reto- colite ulcerativa, o reto tende a se apresentar pouco comprometido ou até mesmo endoscopicamente normal. b)

O primeiro passo para introduzir o MTT como procedimento para mudança do comportamento alimentar consiste no profissional psicoeducar o paciente a todo o processo,