Baixe o app para aproveitar ainda mais
Prévia do material em texto
1 INTRODUÇÃO AO DESENVOLVIMENTO DE JOGOS DIGITAIS AULA 3 Prof. Victor Moreira 2 CONVERSA INICIAL Nesta etapa, vamos conhecer algumas das principais plataformas de jogos e o que precisamos saber antes de desenvolver jogos nelas. Descobriremos os principais sistemas de desenvolvimento de jogos e como as lógicas de jogo se aplicam a elas. Estudaremos também o caso da lógica de jogo em Pac-Man, e como o comportamento dos inimigos afetam as regras e mecânicas do jogo e vice-versa. Ainda, vamos ver as principais características dos motores de jogo, ou game engine. TEMA 1 – SISTEMAS: PARTE 1 Existem diversos dispositivos em que podemos jogar: os clássicos consoles, nosso celular de bolso, computadores e, ainda, existem aqueles que conseguem executar Doom em um teste de gravidez. Saiba mais Para saber mais do que estamos falando, recomendamos o link a seguir. Disponível em: <https://olhardigital.com.br/2020/09/10/noticias/desenv olvedor-faz-doom-rodar-em-um-teste-de-gravidez/. Acesso em: 22 fev. 2023. Cada plataforma de jogo tem as suas peculiaridades, e, como desenvolvedores, precisamos entender quais são elas. A seguir, vamos conhecer no geral algumas das plataformas mais populares. 1.1 Plataformas Chamamos de “plataformas de jogos” os ambientes que, por meio da comunicação entre hardware e software, nos possibilitam executar os jogos. Cada plataforma de jogos pode ser pensada como um ambiente operacional. Nesse sistema, colocaremos todas as artes do jogo, áudio, scripts etc. Por intermédio de uma compilação, ou build, vamos gerar um arquivo que contém esse jogo. A escolha da plataforma em que o jogo vai funcionar é essencial para definir detalhes de como o jogo será feito. Por exemplo, se planejamos fazer um jogo de luta, como Street Fighter, será bem difícil adaptar os comandos de combos para jogar na tela de um smartphone. Da mesma forma, ao fazermos 3 um jogo tipo “infinity run”, como o Subway Surfers, este terá pouca atratividade para ser jogado em um console. Mesmo que seja possível uma adaptação dos controles, a questão é a adaptação à plataforma. Da mesma forma que a entrada e a saída, a capacidade gráfica da plataforma, a memória e o processador, o armazenamento, vários outros fatores podem impor a necessidade de alteração no jogo. É por isso que existem jogos que são exclusivos para uma plataforma específica. 1.2 Arcades Essa plataforma vem se tornando obsoleta e perdendo sua popularidade. O principal motivo para isso são os consoles, que passaram a ser mais acessíveis e com alta qualidade gráfica. O arcade foi pensado e construído para ser uma máquina de um jogo só, dedicada, que roda um jogo otimizada para ela. Além disso, a intenção era ter várias máquinas instaladas para que os jogadores pudessem ter opções variadas de jogos. O arcade tem uma arquitetura fechada e todos os esquemas de controle são embutidos nele. Por isso, a manutenção só pode ser feita por um profissional que entende dessa arquitetura específica, o que torna a manutenção onerosa, além do alto valor de cada uma dessas máquinas. Todas essas características tornam os arcades quase inviáveis de se ter em casa, a não ser que sejamos colecionadores. Mesmo assim, ainda encontramos os arcades em casa de jogos, geralmente em shoppings, que atualmente focam na experiência do jogador. Por exemplo, jogos de corrida de carro colocam controles de volantes, de pedais e de câmbio para passar as marchas. Já nos jogos de moto, o jogador sobe em uma réplica de moto que pode se movimentar para os lados. São vários os exemplos de arcades que focam nesse tipo de experiência imersiva que o jogador normalmente não teria acesso em plataformas caseiras. 4 Figura 1 – Arcades modernos Crédito: Artapartment/Shutterstock. 1.3 Consoles de video game Esta é, provavelmente, a primeira plataforma de jogos digitais que a maioria dos jogadores teve acesso, muito por conta da sua popularidade e preço baixo. Por muito tempo, os consoles foram a plataforma de jogos mais lucrativa; atualmente estão perdendo espaço para os smartphones. Figura 2 – Mercado global de jogos Fonte: Moreira, 2023. 5 Os consoles, assim como os arcades, têm uma arquitetura específica e fechada, capaz de executar jogos que são produzidos para ela. Com isso, os consoles passaram a ser uma opção economicamente mais viável do que os arcades. Assim, os jogos começaram a se adaptar a essa plataforma, com jogos mais longos e mais aprimorados. Com o passar dos anos, também começaram a ficar maiores, com o uso das mídias de CD, em que poderiam ter até 700mb de espaço, passando para os DVDs, depois para o Blu-ray e, mais recentemente, disponíveis por download em lojas virtuais. Os controles também mudaram e foram adaptados para melhorar a usabilidade e a ergonomia. Novos designs de controles foram criados, alguns até baseados em captura de movimentos. Hoje, controles dos consoles Playstation e Xbox são referência de usabilidade e tecnologias embarcadas. Figura 3 – Controles dos consoles Xbox e Playstation Crédito: Carlos_Pascual/Shutterstock. A vantagem dessa plataforma é sua acessibilidade e praticidade, uma vez que não é necessário conhecimento técnico de computação para colocar um console para funcionar, é só o ligar na tomada e jogar. Além disso, os jogos já vêm otimizados para a plataforma. Isso significa que o game passou por um processo de homologação com a produtora do console. 6 Quanto às desvantagens, essa plataforma está relacionada às versões de cada console. Ainda é pouco comum termos jogos com retrocompatibilidade entre versões de consoles; é tão raro que alguns jogos a destacam como um diferencial. Por isso, a cada novo lançamento de console o jogador se vê obrigado a comprá-lo se quiser jogos novos e mais modernos. A manutenção dos consoles também é um problema, muitas vezes cara e pouco acessível, o que faz com que vários usuários criem vídeos na internet explicando como resolver um bug, por exemplo. TEMA 2 – SISTEMAS: PARTE 2 2.1 Computadores Os computadores foram um berço para os jogos digitais, desde o FreeCell, passando por emuladores até chegarmos aos “Massively Multiplayer Online Role-Playing Game” – MMORPG (ou “jogo de representação de papéis on-line para vários jogadores em massa”, em tradução livre). Esses equipamentos nem sempre foram vistos como uma plataforma popular para se jogar, mas com a evolução dos computadores pessoais isso começou a mudar. O computador tem a característica de ser multiuso, ao contrário das outras plataformas, como o console, sendo possível executar diversos tipos de programas. Os computadores apresentam uma arquitetura mais genérica, ou seja, é possível instalar diversos tipos de programas e aplicações, que, nesse contexto, dependem do sistema operacional. Além disso, é possível otimizar o hardware por meio da adição de memória RAM, armazenamento, placa de vídeo etc. Além disso, computador pode ser usado para vários propósitos, como trabalho, estudo, entretenimento, bem como é possível utilizar tanto os controles tradicionais para jogar – teclado e mouse – como também joysticks que se conectam facilmente a esse dispositivo por bluetooth. 7 Figura 4 – Plataforma de computador Crédito: Gorodenkoff/Shutterstock. A maior desvantagem dessa plataforma é que ela exige um nível de conhecimento técnico. Por exemplo, o jogador de computador precisa entender quais são as suas configurações de hardware e se elas atendem aos requisitos específicos do jogo. Além disso, outra desvantagem são os títulos exclusivos de consoles, que raramente são compatíveis com os computadores. 2.2 Portáteis ou handhelds Os portáteis, ou handhelds, são video games que podem ser carregados para qualquerlugar. Os mais modernos têm acesso à internet, o que possibilita jogar jogos on-line. Por se tratar de dispositivos portáteis, essa plataforma costuma apresentar um hardware menos potente quando comparado aos computadores e consoles. Isso impacta diretamente o tipo de jogo que pode ser executado, a quantidade de horas que podemos jogar etc. Os componentes dos video games portáteis são todos pensados em termos não apenas de performance, mas também de consumo de energia, para maximizar o tempo que o dispositivo se mantém ativo para o jogador. 8 Figura 5 – Portátil Nintendo Switch Crédito: SrideeStudio/Shutterstock. A maior vantagem desse tipo de plataforma é que o jogador pode levá-la a qualquer lugar. Geralmente, os controles são embutidos no dispositivo, mas no caso do dispositivo Nintendo Switch isso é uma exceção, já que podem ser removidos. A lista de jogos também costuma ser exclusiva: mesmo em plataformas como a do Steam Deck, os jogos precisam ser portados. O mercado dessa plataforma sempre teve o domínio da desenvolvedora Nintendo, que começou com o dispositivo Game Boy e, atualmente, faz muito sucesso com o Switch. Além disso, nos últimos anos, principalmente depois do advento de jogos que são executados por nuvem, os portáteis vêm ganhando cada vez mais destaque. 2.3 Dispositivos móveis Inicialmente, esses dispositivos contavam com jogos simples, como o “jogo da cobrinha” e vários outros tipos de jogos casuais. Com a evolução dos dispositivos, que ocasionaram melhoras no hardware e na bateria, jogos mais refinados passaram a ser criados. 9 Crédito: Marko Aliaksandr/Shutterstock. Para muitos, o smartphone funciona como um computador de bolso, sendo usado por vezes para editar textos e até vídeos. Da mesma forma que os portáteis, tem uma importante limitação quanto à bateria. Como vimos na Figura 2 anterior, jogos para smartphones já são a maior receita mundial. Sendo assim, diversas empresas já se especializaram em desenvolver jogos exclusivamente para o mobile. Os jogos desenvolvidos para esses dispositivos normalmente levam em conta restrições tecnológicas, espaço de armazenamento, capacidade de processamento gráfico, eficiência energética, como também a interface do dispositivo. O principal gênero dos jogos para dispositivos móveis é o casual, ou seja, é pensado para se passar pequenos períodos jogando. Por isso, o jogo precisa ser intuitivo e fácil de aprender, para que o jogador entre logo em ação, e que as partidas sejam curtas, para que o jogador consiga concluir uma fase em poucos minutos. Por esses motivos, essa plataforma mobile é a mais popular, com uma base de usuários gigantesca. 2.4 On-line São aqueles que, em uma plataforma on-line, estamos nos referindo por precisarem de uma conexão à internet. São jogos como os gêneros MMORPG, 10 Multiplayer Online Battle Arena – Moba (ou “arena de batalha on-line para vários jogadores”, em tradução livre), entre outros. A principal característica desses jogos diz respeito aos servidores, nos quais os jogadores se conectam ao game. É claro que grande parte do processamento é realizado no computador do jogador, mas a velocidade da conexão também é um grande limitador. De nada adianta o jogador ter o computador mais potente se estiver longe do servidor. Figura 6 – Jogos on-line Crédito: Gorodenkoff/Shutterstock. Os jogos on-line requerem uma infraestrutura que não é adquirida pelo jogador, mas pela empresa que oferece suporte ao jogo. Uma característica dos jogos on-line é que conta com uma grande quantidade de jogadores interagindo simultaneamente, o que, por vezes, pode sobrecarregar o servidor. Os jogos on-line podem ser criados como mundos persistentes ou não persistentes. Nos persistentes, as ações do jogador são mantidas não apenas para ele, como também para os outros jogadores. Já nas não persistentes, as alterações são vistas apenas para um jogador ou para um grupo. Para isso, os servidores precisam ter estruturas de múltiplos processadores e eventos de armazenamento específico. TEMA 3 – DESENVOLVENDO LÓGICAS DE JOGO Nesta seção, veremos um pouco sobre como é um jogo do ponto de vista da programação ou, mais especificamente, sobre as lógicas do jogo. Antes de 11 começar a programar, precisamos compreender alguns pontos relacionados aos comportamentos dos sistemas que vamos criar e refletir sobre eles. Para se tornar um bom desenvolvedor de jogos, precisamos saber, no mínimo, alguns aspectos básicos da programação. Por exemplo, estruturas que são usadas na construção de programas, como os laços de repetição, os condicionais, as variáveis, as funções etc. Nada disso será necessário nesse momento; o objetivo aqui é compreender as lógicas de programação e quanto cada tipo de comportamento do sistema pode ser complexo. É na arquitetura de software que definiremos quais tipos de módulos ou componentes serão necessários para que o programa/game funcione. Vamos definir como eles se comunicarão e trocarão informações, quais tipos de padrões de código existem para realizar determinadas tarefas. Mesmo assim, não existe uma arquitetura padrão para jogos, normalmente fica a critério da equipe de desenvolvimento escolher ou criar seus padrões. Cada equipe definirá aspectos para facilitar a programação, melhorar os processos internos de produção de assets, tornar mais fácil o desenvolvimento para a plataforma-alvo, prover uma interface mais intuitiva, possibilitar uma maior flexibilidade na execução de alterações e testes etc. Em termos gerais, podemos dividir os aspectos de arquitetura em três partes principais: a operacional, que se relaciona a detalhes da plataforma e/ou ao sistema operacional destino do jogo e implementa aspectos mais técnicos de como o jogo acessa o recurso computacional para executar; a lógica do jogo, que é o jogo em si, como regras, mecânicas, jogabilidade, elementos de jogo etc., em suma, tudo relacionado ao comportamento dos elementos de jogo; a visualização, que remete à apresentação dos elementos, como modelos 3D, texturas, animações, ou seja, tudo relacionado à renderização do game. 3.1 Lógica de jogo A lógica do jogo define como o jogo será jogado, quais são os elementos no universo e como eles interagem. Ela define como o estado do jogo pode ser alterado por estímulos externos, como quando o jogador aperta botões específicos no joystick ou teclado, e o como sistema reage a isso. Veremos os cinco principais componentes da construção da lógica do jogo a seguir. 12 3.1.1 Estado do jogo e estruturas de dados Jogos simples podem usar uma estrutura de lista, mas jogos mais complexos precisam de algo mais flexível e otimizado para que a busca de “o que fazer” seja mais rápida. Essa estrutura de jogo deve ser capaz de percorrer as estruturas de dados do objeto rapidamente para alterar o estado de um objeto, como também ser capaz de manter outras possibilidades para as propriedades de cada objeto. Pensemos nas propriedades de um objeto como pontos de vida de uma personagem; elas devem ser acessadas constantemente por diversos sistemas. Por exemplo, se a personagem recebe um dano, a barra de vida deve mudar; assim como as animações que o modelo 3D terá que fazer para que o jogador perceba o dano, e assim por diante. No entanto, não devemos confundir a representação lógica de um objeto do jogo com a representação visual de um objeto. A lógica diz respeito ao estado do objeto, como a quantidade de dano que um objeto recebe. Já a representação visual contém dados de modelo e texturas que transmitem o estado visualmente ao jogador. Dessa forma, podemos criar objetos que contêm todas as várias definições que tornam esse objeto de jogo único. Algumas pertencem à visualização do jogo, como o objeto de malha do modelo 3D da personagem. Outrospodem pertencer à lógica do jogo, como dados que informam ao sistema de física. Já outros objetos podem descrever dados específicos do jogo, como os pontos de vida de uma personagem. Quando qualquer dado de lógica de jogo muda, a lógica de jogo a transmite como um evento. Por exemplo, quando a personagem recebe dano, a lógica do jogo envia um evento informando todos os subsistemas do jogo sobre o dano. 3.1.2 Física e colisão A física está relacionada principalmente às regras e ao universo do jogo. Ou seja, são essas regras que definem como a física será aplicada no jogo, desde aspectos como gravidade até os colisores. A maioria dos jogos não apresenta um sistema de física completamente realístico, nem mesmo simuladores de voo como Flight Simulator são 13 completamente realísticos. Um sistema de física bom tornará o jogo mais divertido, mas um sistema de física ruim removerá completamente a diversão de qualquer jogo. Um sistema de física bom tornará o jogo mais divertido, mas um sistema de física ruim removerá completamente a diversão de qualquer jogo. Podemos verificar isso observando alguns movimentos e animações em jogos. Ao compararmos dois jogos, um super-realista e outro bem abstrato, por exemplo, Limbo e Elden Ring, notamos que no primeiro as animações, por mais simples que sejam, fazem sentido com a arte do jogo. Já, no segundo, os movimentos e as animações, apesar de muito bem construídos, ainda não revelam os movimentos com alta fidelidade. Isso ocorre porque, quando a personagem parece tão realista, achamos difícil aceitar quando esta faz algo irreal. Isso tem a ver com a psicologia humana e como observamos as coisas à nossa volta. Quando nos deparamos com uma tecnologia que se aproxime da realidade, como fazem os sistemas de captura de movimento, nosso cérebro busca, com mais frequência, erros e disparidades com a realidade. 3.1.3 Eventos Quando a lógica do jogo faz alterações no estado do jogo, como criar ou mover um objeto, vários sistemas responderão. Por exemplo, em um jogo no qual o jogador precisa abrir uma porta, o sistema é formado por um modelo 3D da porta, com texturas, e animações de abrir e fechar. Nesse caso, podemos supor alguns eventos para essa porta, um em que ela está fechada e é necessário ter um colisor para o jogador não passar daquele ponto, ou outro estado, em que porta está aberta e o jogador pode passar. A depender da complexidade do jogo, essa porta pode precisar de uma chave para ser aberta ou da resolução de um puzzle para tal. Muitos desenvolvedores criam um sistema de eventos para defini-los e os dados que os acompanham. Diferentes subsistemas são registrados para ouvir os eventos aos quais eles reagirão. Um bom exemplo disso é o sistema de abrir e fechar portas; ele pode ser registrado para ouvir eventos de colisão de objetos de modo que possa reagir ao jogador. Arquiteturas baseadas em eventos tendem a tornar seu sistema de jogo limpo e eficiente. Em vez de diversos subsistemas ficarem esperando a colisão 14 de objeto, o código simplesmente envia um evento para os subsistemas que precisam receber. O código do evento mantém unida a arquitetura do jogo. Uma vez que mantém o registro de eventos, os subsistemas são registrados para ouvir os eventos de seu interesse e outros subsistemas enviam eventos conforme necessário. 3.1.4 Gerenciador de processos Gerenciar os processos em um sistema de jogo é crucial para executar um game de forma adequada. Precisamos compreender que quase nunca o jogador terá um hardware extremamente potente, logo, a ordem em que esses processos acontecem é de suma importância para o computador. Cada ação no jogo pode ser descrita com algumas linhas de código, mas, para formar uma lógica de como e quando cada ação acontecerá, precisaremos de um gerenciador de processos. Um bom exemplo de gerenciador é o que acontece quando o jogador lança uma bomba no jogo. Um processo pode rastrear o movimento parabólico da bomba até que ele colida com algo, enquanto outro pode gerenciar uma explosão de bola de fogo e outro busca por personagens na área da explosão e envia o dano. 3.1.5 Interpretador de comandos É importante fazer com que o comando seja interpretado pela máquina e que esta possa entender os comandos do jogador. Por exemplo, em um jogo de luta, os movimentos frente, baixo, esquerda e direita são enviados por meio de inputs, que podem ser de teclado ou joystick. Então, se o jogador aperta para direita, a personagem anda para direita; e se aperta o botão esquerdo, a personagem anda para a esquerda. A simplicidade termina nesse ponto, porque o game precisa prever uma série de outras possibilidades, como se há chão para pisar, se a personagem pode ou não se mover, quais são as animações de cada movimento etc. A visualização do jogo apresenta uma interface para o jogador que se altera conforme o jogador insere os comandos. Esse comando é enviado para a 15 lógica do jogo, o código que define o estado das estruturas de dados que serão apresentadas ao jogador. TEMA 4 – LÓGICA DE PAC-MAN Agora veremos a lógica de jogos aplicada em um jogo. Aqui estudaremos o jogo Pac-Man, como ele funciona, suas regras e mecânicas. Saiba mais Recomendamos ver o gameplay de Pac-Man, disposto no link a seguir. Disponível em: <https://www.youtube.com/watch?v=opNumHDfuV0>. Acesso em: 22 fev. 2023. Também é interessante ver outros vídeos do gameplay de Pac-Man, inclusive o vídeo disposto no link a seguir sobre o game design desse jogo. Disponível em: <https://www.youtube.com/watch?v=S4RHbnBkyh0>. Acesso em: 22 fev. 2023. Além disso, podemos jogar a versão web do Pac-Man no link a seguir. Disponível em: <https://g.co/kgs/TBm5kR>. Acesso em: 22 fev. 2023. Em Pac-Man, o jogador controla uma bolinha amarela. Seu objetivo é comer todos os pontinhos do mapa, sem se deixar ser pego pelos fantasmas. Para mover o Pac-Man, o jogador deve usar as teclas de direcionais e movimentá-lo para cima, para baixo, para a direita e a esquerda. O mapa do jogo é um labirinto que consiste em vários caminhos delimitados por paredes. Caso os fantasmas peguem o Pac-Man, ele perde uma vida; o jogador usualmente começa com três vidas. Existem pontinhos especiais que são referidos como “pílulas de energia”, que dão ao Pac-Man o poder de “comer” os fantasmas; esse modo e chamado de “energizado”. Cada fantasma tem um padrão de movimento próprio, e o jogador deve ter cuidado e atenção para não ser encurralado por eles. Agora, vamos analisar alguns pontos importantes sobre as mecânicas do jogo. Existe uma diferença entre o Pac-Man no modo energizado e o no modo normal. O Pac-Man se energiza depois de pegar a bolinha bônus, e tem momentaneamente o poder de comer fantasmas. Essa diferença não afeta apenas o confronto com os fantasmas, mas até a forma como eles se movimentam, nesse caso, os fantasmas fogem do jogador. 16 Existem estados diferentes dentro do jogo que alteram o modo como os elementos se comportam ou se apresentam para o jogador. Esse conjunto de características é o estado do jogo, que precisa ser atualizado constantemente. Em nível de programação, isso significa manter um conjunto de variáveis e estruturas com informações sobre os vários elementos do jogo, bem como executar ações na medida em que o estado se transforma. Por exemplo, se todas as bolinhas presentes no mapa acabarem, o jogo precisa saber dessa ocorrência e que o jogador venceu a partida, exibindo informações na tela. Se o Pac-Man for pego por um fantasma e não tiver mais tentativas, a temida tela de Game Over será exibida para o jogador. Figura 7 – Momento em que o Pac-Man pode comer o fantasma Fonte: Moreira, 2023. 4.1 Modo dos fantasmas Os quatro fantasmas se chamam Blinky, Pinky, Inky e Clyde. Eles estão sempre em um dos trêsmodos possíveis: chase (“perseguir”); scatter (“espalhar”) ou frightened (“assustado”). 4.1.1 Modo chase ou “perseguir” O modo chase é o modo normal; nele, os fantasmas estão tentando encontrar e capturar Pac-Man. Cada um dos quatro fantasmas tem um comportamento único enquanto persegue o jogador. O Blinky, o fantasma 17 vermelho, age como uma sombra, sempre buscando estar perto do Pac-Man; Pinky, o fantasma rosa, tem o objetivo de emboscar Pac-Man, tentando entrar na frente dele; Inky, o fantasma azul, patrulhará uma área e não é muito previsível nesse modo; Clyde, o fantasma laranja, está se movendo de forma aleatória e parece ficar fora do caminho de Pac-Man. 4.1.2 Modo scatter ou “espalhar” No modo scatter, os fantasmas param de perseguir Pac-Man e cada um se moverá para seus respectivos cantos por alguns segundos. O fantasma vermelho se move em direção ao canto superior direito, enquanto o fantasma rosa se move em direção ao canto superior esquerdo. O fantasma azul se move em direção ao canto inferior esquerdo, e o fantasma laranja se move em direção ao canto inferior esquerdo. Esse modo dura apenas alguns segundos e, em seguida, muda de volta para o modo chase. 4.1.3 Modo frightened ou “assustado” O modo “assustado” ocorre quando Pac-Man fica energizado ao comer uma pílula de energia. Existem quatro pílulas localizadas no labirinto e todos os quatro fantasmas mudam para esse modo quando Pac-Man está energizado. Os fantasmas ficam azuis escuros e vagam pelo labirinto, tornando-se vulneráveis. Eles piscarão momentos antes de retornarem ao modo “perseguir” ou “espalhar”. 4.2 Personalidades dos fantasmas As únicas diferenças entre os fantasmas são seus métodos de seleção de destino nos modos “Perseguir” e “espalhar”, já que o modo “assustado” tem um perfil de aleatoriedade. 4.2.1 Fantasma vermelho O fantasma vermelho começa fora da casa fantasma e, geralmente, é o primeiro a ser visto como uma ameaça, já que ele traça uma linha reta até o Pac- Man. Ele é referido como Blinky, e o jogo descreve sua personalidade como sombra. O destino de Blinky no modo “perseguir” é definido como o bloco atual de Pac-Man. Por isso, Blinky persegue o Pac-Man ficando bem atrás dele. 18 Mesmo que o método de rastreio de Blinky seja muito simples, ele tem uma peculiaridade que os outros fantasmas não têm; em dois pontos definidos de cada nível, sua velocidade aumenta em 5% e seu comportamento no modo “espalhar” muda. O tempo da mudança de velocidade varia de acordo com o nível, bem como ocorre cada vez mais cedo à medida que o jogador progride. 4.2.2 Fantasma rosa O fantasma rosa começa dentro da casa fantasma, no centro da tela, e sempre sai imediatamente, mesmo no primeiro nível. Seu apelido é Pinky, e sua personalidade é descrita como rápida. Pinky não se move mais rápido do que nenhum dos outros fantasmas, mas seu esquema de comportamento tenta movê-lo para o lugar em que Pac-Man está indo, em vez de onde ele está atualmente. O bloco de destino de Pinky, no modo “perseguir”, é determinado observando a posição e orientação atual de Pac-Man e selecionando o local quatro blocos à frente de Pac-Man. Como o seu bloco-alvo é definido como quatro blocos na frente de Pac-Man, se Pac-Man for ao seu encontro, o bloco- alvo de Pinky estará realmente atrás de si mesmo, uma vez que eles estão a menos de quatro peças de distância. Isso fará com que Pinky escolha tomar qualquer outra direção, a fim de voltar a perseguir o seu alvo. Por causa disso, é uma estratégia comum, quando Pinky estiver chegando perto do Pac-Man, voltarmos de encontro ao fantasma. 4.1.3 Fantasma azul O fantasma azul, ou Inky, permanece dentro da casa fantasma por um curto espaço de tempo no primeiro nível. Ele só se junta à perseguição até que Pac-Man tenha conseguido comer pelo menos 30 dos pontos. Inky é difícil de prever porque ele usa a posição e orientação do Pac-Man, bem como a posição de Blinky (o fantasma vermelho) para calcular onde irá. A partir daí, desenhamos um vetor da posição de Blinky para esse bloco e, em seguida, dobramos o comprimento do vetor. O bloco em que esse novo vetor estendido termina será o alvo real de Inky. 19 Figura 8 – Vetor de posição do fantasma azul Fonte: Moreira, 2023. Como resultado, o alvo de Inky pode variar muito quando Blinky não está perto de Pac-Man. O cálculo de “duas peças na frente de Pac-Man” de Inky sofre exatamente o mesmo erro de posicionar o fantasma no bloco da parede. Entretanto, nesse caso, o comportamento padrão dos fantasmas seria parar um bloco antes e se reposicionar. 4.2.4 Fantasma laranja O fantasma laranja, Clyde, é o último a deixar a casa fantasma, e só sai depois que um terço dos pontos tenham sido comidos. O comportamento desse fantasma dá a impressão de que ele está fazendo outras coisas e não procurando o Pac-Man. Clyde tem dois modos de comportamento que ele constantemente alterna com base em sua proximidade com Pac-Man. Ele segue em direção ao Pac- Man, mas quando chega a um raio de oito blocos, fica assustado e se direciona para o canto inferior esquerdo. A combinação desses dois métodos tem o efeito geral de Clyde alternando entre vir diretamente em direção a Pac-Man e, em seguida, mudar de ideia e voltar para seu canto sempre que chegar muito perto. 20 Se Pac-Man permanecer parado nessa posição, Clyde indefinidamente daria uma volta em torno dessa área. Tudo o que vimos aqui são características da lógica do jogo, ou seja, são partes da programação preocupadas em como o jogo funciona no sentido da interação com o jogador. É uma parte independente do hardware ou do sistema no qual o jogo vai funcionar. TEMA 5 – GAME ENGINE Para desenvolver jogos para cada um desses sistemas, precisamos de uma game engine ou “motor de jogo”. Após vários anos de desenvolvimento de jogos, algumas empresas começaram a criar motores de jogos próprios, uma vez que os processos internos eram bem conhecidos. Depois de criar vários jogos, algumas tarefas se tornam recorrentes, e criar interfaces que facilitam essas tarefas torna o processo mais rápido. Todo jogo precisa controlar um estado, desenhar objetos na tela, capturar os comandos etc. As empresas de jogos perceberam que se fizessem um programa abrangendo essas funções que se repetem, isso possibilitaria focar em outros detalhes do jogo, como lógicas, artes, efeitos sonoros etc. Portanto, o motor de jogo foi criado para facilitar a vida de quem faz jogos. Podemos dizer que o motor representa um framework de desenvolvimento de jogos, já que ele apresenta várias funcionalidades previamente implementadas em sua estrutura. Dessa forma, o desenvolvedor precisa complementar e/ou alterar o código para criar o seu jogo dentro de um ambiente pré-estabelecido. Os motores costumam apresentar várias funcionalidades, como: • motor gráfico, que desenha na tela (2D e/ou 3D); • motor de física, que calcula como os objetos se movem e se comportam; • sistemas de suporte a áudio e animações; • comunicação de dados; • gerenciamento de memória; • gerenciamento do fluxo de execução; • ferramentas de código; e • inteligência artificial. O motor de jogo Unity 3D tem várias ferramentas, desde edições simples de modelos 3D até criação de animações e programação de eventos. Isso 21 possibilita o trabalho de diferentes profissionais no uso do programa. O motor já tem uma base de implementação pronta para usarmos e estendermos com código próprio. Dependendo do motor, isso pode ser feito de forma mais rudimentar, por meio do uso de bibliotecas de código ou, de forma mais elaborada, com uma interface contendo programas para edição do código, edição de modelos 2D/3D, gerenciamento de recursos, edição de animação etc. Um detalhe importante é que o motor não substitui todas as ferramentas necessáriasna produção de um jogo. Embora alguns até tenham a capacidade de criar modelos 3D básicos, dificilmente conseguirão substituir uma ferramenta específica como o 3ds Max ou Blender. Os motores possibilitam que o desenvolvedor carregue recursos produzidos nessas ferramentas de forma intuitiva e com um bom suporte para diferentes formatos. Os motores de jogos podem ser vistos como uma camada intermediária, ou middleware, entre a codificação do jogo e o hardware no qual ele é desenvolvido ou executado. 5.1 Entradas Um dos aspectos mais importantes de um jogo é como o jogador vai jogar. Os motores de jogos geralmente suportam uma variedade de tipos de entrada: teclado, mouse, joystick, toques na tela etc. Existem muitas maneiras diferentes de lidar com a entrada, mas há dois principais meios para isso: por meio de eventos ou de sondagem. Os eventos de entrada são ativados por intermédio de ações do jogador, é quando pressionamos uma determinada tecla ou botão. Os motores são capazes de mapear os principais tipos de controles como teclado, mouse e alguns joysticks. Vale lembrar que se usarmos um joystick diferente dos comuns, como o do Playstation ou do Xbox, será necessário mapear os botões manualmente. Esse mapeamento serve para em ações comuns como “pular” ou “atirar”, para que possamos construir o código sem ter que nos preocuparmos com o usuário que deseja jogar usando um layout diferente daquele em torno do qual construímos o nosso jogo. A sondagem geralmente é feita por meio da verificação constante dos dados. Por exemplo, em um jogo que usa o giroscópio para mover a personagem, o sistema precisa ficar constantemente verificando os dados enviadores do giroscópio. Essa sondagem também é importante para controles analógicos. Por exemplo, em muitos jogos de corrida se usa o analógico para 22 diferenciar curvas mais fechadas ou mais abertas de acordo como a posição do direcional analógico. 5.2 Gráficos Uma das principais coisas que chamam a atenção dos desenvolvedores de jogos para um motor é a capacidade de gerar ótimos gráficos sem muito esforço. Os jogos são construídos em torno de modelos 3D que geralmente são criados de modelagem externa e depois são importados para o motor. Ou seja, quanto maior for o leque de possibilidade de exportação desses modelos, maior será o público que esse motor atingirá. Uma vez que o modelo 3D tenha sido importado para o motor, o desenvolvedor pode adicioná-lo ao jogo que está construindo, colocar mapas de colisão, materiais, assim como gerar sombras para criar um objeto mais crível. Os motores de jogo também apresentam uma série de tecnologias e efeitos de iluminação, que dão vida aos modelos, além de lidar com a animações e efeitos visuais. 5.3 Som O som também é muito importante para os jogos, apesar de ser negligenciado por alguns desenvolvedores. Adicionar efeitos sonoros aos jogos não é tão simples, principalmente quando falamos de jogos 3D. Os efeitos sonoros precisam de um tratamento especial; alguns motores podem projetar sons em um ambiente 3D. E com o tratamento correto, é possível incorporar diversos efeitos de som para dar a atmosfera necessária ao jogo. Há também muitas maneiras de melhorar o realismo de um som, como adicionar modulação de tom e reverberação para fazer parecer que o som está saltando das paredes de seus arredores. Por exemplo, o som de espadas em confronto em um campo aberto precisa ser diferente de uma batalha em uma masmorra. 5.4 Conectividade Nos últimos anos, jogos começaram a oferecer modos de jogos multiplayer on-line com maior frequência, com o principal propósito de incrementar a experiência de jogo adicionando partidas que podem ser compartilhas com os amigos. Isso requer funções em torno da comunicação 23 entre diferentes servidores ou até mesmo outros computadores. A maioria dos motores de jogo já fornecem muitos componentes e scripts que fazem a maior parte do trabalho. Isso possibilita ao desenvolvedor que trabalhe nos aspectos da diversão do multiplayer, em vez de se preocupar com as complexidades do tráfego. 5.5 Física Sempre foi possível notar que, em alguns jogos, o comportamento de certas coisas não fazia sentido, seja um caixa que sai voando ou uma cortina intransponível. Essa incongruência acontece porque nós temos um conhecimento sobre o peso das coisas, e podemos prever como se comportariam. Atualmente existem até mesmo motores especializados em simulações físicas, como Havok e PhysX, da Nvidia, que fornecem diversas funções para promover uma física mais realista. Quando o motor renderiza um cubo em um jogo, ele é apenas um efeito visual, e combinamos com mapas de refração de luz e colisão para dar a ele uma sensação de que é um objeto real. Entretanto, não há nada inerente ao cubo que diga que ele tem que obedecer às leis da física. Por isso, precisamos adicionar a física ao cubo para que ele reaja à gravidade ou seja empurrado, disparado etc. O cubo recebe características físicas que podem não ser as mesmas que a forma visual, desde massa, atrito, estaticidade, entre outras propriedades para criar um objeto que pode interagir com o mundo ao seu redor. Quanto mais realista e complexa for a física aplicada no jogo, maior será a necessidade de processamento no jogo, uma vez que todos os cálculos relacionados à física precisam ser realizados em tempo real. Por isso, em muitos jogos são adicionados apenas efeitos de física simples, dessa forma, principalmente quando falamos de jogos mobile, a física parece pouco realista. 5.6 Interfaces gráficas do usuário Os motores de jogos precisam suportar alguns recursos para a construção da Graphical User Interface (GUI, ou “Interface Gráfica do Usuário”). Cada jogo tem a sua GUI, que busca se encaixar ao estilo do jogo. Sempre que pensamos em fornecer uma boa experiência ao jogador, precisamos ter uma GUI que consiga comunicar o que é necessário. A maioria dos motores já oferecem 24 interfaces padrão, que podem ser facilmente alteradas. Assim, podemos criar menus, botões e barras personalizadas do nosso jogo. 5.7 Scripts Outra parte muito importante dos motores é a criação ou edição de scripts ou códigos. A maioria dos motores de jogos fornecem alguns templates para iniciar um jogo com o jogador em uma posição específica, adicionando movimento de câmeras, geradores de partículas, manipulação de luzes, eventos e uma série de outros recursos. No meio deles, o que dá vida a tudo isso são os códigos implementados. Geralmente a criação de scripts é uma tarefa bem fácil, como clicar com o botão direto do mouse, mas a edição é que será complexa. Por exemplo, na Unity a criação de scripts é bem simples, só ir em Assets > Create > C# Script. Contudo, a edição de script fica a cargo de outros programas, como o Visual Studio. É com o Visual Studio que vamos de fato programar, ou seja, escrever o código do jogo. No entanto, sempre que escrevermos alguma coisa no código, o motor de jogo precisará compilar e verificar se há erros nele. Figura 9 – Criação de scripts no Unity Fonte: Moreira, 2023. 5.8 Benefícios e desvantagens Um dos maiores benefícios dos motores de jogos são como eles fornecem aos desenvolvedores ferramentas para a construção de jogos, para que eles não precisem “reinventar a roda”. Isso vai desde otimizações gráficas, para obter uma boa taxa de frames per second (FPS, ou “quadros por segundo”), até a importação de assets. Eles basicamente fazem parte do trabalho para que desenvolvedores possam se concentrar na arte, na história e em outros fatores importantes para criar um bom jogo. Entretanto, essa também é uma das maiores desvantagens dos motores de jogo, uma vez que homogeneízam os jogos que são criados. 25 Além disso, há motores para diferentes finalidades, por exemplo, um jogo de tiro em primeirapessoa pode utilizar um motor diferente de um jogo de um Role-Playing Game (RPG) ou de futebol. Isso dependerá das características do motor, assim como do quanto a empresa está disposta em investir no desenvolvimento de um motor próprio. Saiba mais Mesmo assim, existem aqueles motores de jogos que são muito utilizados. Recomendamos acompanhar o caso do jogo Horizon Chace, desenvolvido pela Aquiris. Mesmo que o Unity 3D não seja bem reconhecido para fazer jogos de corrida, a Aquiris conseguiu fazer um jogo de sucesso com o Unity. FINALIZANDO Conhecemos algumas das principais plataformas de jogos e o que precisamos saber antes de desenvolver jogos nessas plataformas. Descobrimos alguns dos principais sistemas de desenvolvimento de jogos e como as lógicas de jogo se aplicam a elas. Estudamos o caso da lógica de jogo em Pac-Man, e como o comportamento dos inimigos afetam as regras e mecânicas do jogo e vice-versa. Por fim, acompanhamos as principais características dos motores de jogo, ou game engine. 4.1 Modo dos fantasmas
Compartilhar