Baixe o app para aproveitar ainda mais
Prévia do material em texto
GAME ENGINEGAME ENGINE CRIAÇÃO E PRODUÇÃOCRIAÇÃO E PRODUÇÃO AUDIOVISUALAUDIOVISUAL Autor: Me. George Santiago Alves Revisor : I van Dimitry R . Zyr ianof f IN IC IAR introdução Introdução A Física é parte integrante dos jogos de computador, e os jogos, em si, abrangem muitos aspectos dessa área: desde as famosas Leis de Newton até a dinâmica dos corpos. A Física permite de�nir o comportamento dos corpos rígidos, garante que o movimento seja realista ou surreal. O Unity disponibiliza diversos componentes de Física, para auxiliar no processo de desenvolvimento de um jogo. Apenas mudando parâmetros no Inspector, é possível de�nir a massa dos corpos, garantir colisões, alterar o atrito de superfícies, o comportamento de corpos rígidos e o tratamento de colisões. Além de componentes físicos, o Unity possui componentes visuais para organizar a interface do usuário (chamada HUD), rotinas para trabalhar com efeitos sonoros e elementos para de�nir a iluminação dos corpos. Nesta unidade, estudaremos os principais componentes relacionados à Física, interface, áudio e iluminação dos objetos. Lembre-se de que é necessária a prática constante, para garantir a excelência pro�ssional. A física, em jogos, é projetada para reproduzir as leis físicas da natureza, seja simulando suas leis para criar movimento realista ou alterando as propriedades para criar novidades na jogabilidade. O Unity tem mecanismos que fornecem componentes para lidar com a simulação da física. Permite que o usuário manipule parâmetros para alterar o comportamento de um objeto, sendo possível alcançar o realismo ou o surrealismo em um jogo. A engine tem mecanismos separados para lidar com física em jogos 2D e 3D. O funcionamento dos componentes é idêntico, a diferença é a dimensão extra em jogos 3D. Como exemplo, há o componente Box Collider, para física em jogos tridimensionais e, de maneira análoga, o Box Collider 2D, para jogos bidimensionais. Nas próximas subseções, serão descritos os componentes responsáveis pela gravidade, força e colisões com física. Rigidbody O Rigidbody é um componente que permite que forças físicas atuem sobre o comportamento de um GameObject. Após habilitar esse componente no FísicaFísica objeto, por exemplo, a gravidade passa a atuar sobre o corpo. Vamos usar um exemplo prático para simular esse conceito? O que acontece? Nada, a gravidade não está atuando sobre o objeto. Vamos mudar isso. Enquanto o projeto estiver em tempo de execução, os elementos alterados em cena – por exemplo, adicionar componentes ou mudar as propriedades de variáveis – retornarão ao seu estado padrão, quando o projeto deixar de ser executado. É uma característica da engine , que permite testar parâmetros, componentes e outros elementos, sem modi�car a cena original. Posteriormente, falaremos sobre comandos que permitem alterar e de�nir o comportamento dos objetos (parâmetros, posição, propriedades, adicionar componentes) em tempo de execução. Adicione novamente o componente ao cubo. Agora, vamos conhecer as propriedades do Rigidbody (Figura 2.2). Mass: representa a massa do objeto. Quanto maior o valor, mais força é necessária para movimentar o objeto. Ou seja, quanto maior a massa, maior será a inércia de um objeto. Por padrão, o Unity utiliza a medida de massa em quilogramas. Drag: propriedade que controla o quanto a resistência do ar afeta o objeto. Se aumentarmos o valor do drag e executarmos o projeto, o cubo tende a cair lentamente. Angular drag : propriedade que controla a resistência do ar enquanto o objeto estiver girando. Quanto maior o valor, mais torque será necessário para girar o objeto. Use Gravity: se ativado, a força da gravidade passa a atuar sobre o objeto. Is Kinematic: se ativado, controla a in�uência da física sobre o corpo rígido, as forças e colisões não afetarão o objeto, mas permite que o corpo rígido interaja com a física de outros objetos. Por exemplo, em jogos de plataforma, como Super Mario, o personagem principal é afetado pela gravidade, mas, as plataformas se movimentam livremente, permitem que o personagem pule sobre elas e a gravidade não tem in�uência sobre o seu comportamento. Figura 2.1 - Cube Fonte: Elaborada pelo autor. Interpolate: é a propriedade usada quando o usuário está tendo problemas com o movimento do objeto. Habilitando essa opção, a propriedade suaviza o efeito da física, utilizando uma taxa de quadros �xa. Interpolar suaviza o movimento do objeto com base na taxa de quadro anterior. O Extrapolar suaviza o movimento com base em uma estimativa do próximo quadro. A física é executada em taxas de quadros variáveis, por consequência, objetos em cena podem sofrer instabilidade. Isso ocorre pela falta de sincronismo entre os vários elementos em cena. ] Collision detection: propriedade utilizada para garantir que objetos em movimento rápido sejam detectados por outros objetos. São quatro tipos de con�gurações, e o discrete é o valor padrão para colisões normais. O continuous é usado para objetos com velocidade rápida e com colisão contra objetos estáticos (sem um corpo rígido ou com a propriedade isKinematic ativada). O continuous dynamic é usado quando um objeto colide contra um objeto móvel, por exemplo, com Is Kinematic desativado. O objeto usará a detecção de colisões contra objetos estáticos (sem corpo rígido) e, usará a con�guração discrete em colisões normais. Por �m, temos o continuous speculative , usado para detecção de colisão em objetos dinâmicos e cinemáticos. Constraints: impede que o objeto se movimento e rotacione no eixo marcado (x, y e z). Além das propriedades, é possível controlar os corpos rígidos usando scripts para adicionar forças ou toque. Aplicar uma força usando script permite que o usuário de�na valores para aceleração, impulso, alteração de velocidade, duração, entre outros. Por padrão, o Unity só aplica força em corpos rígidos ativos. Colliders O collider , ou colisor, é um componente que permite que um objeto do jogo ao qual está anexado reaja a outros colisores. Em outras palavras, de�ne a forma de um objeto, para �ns de colisões físicas. O componente collider de�ne o comportamento das colisões em corpos rígidos. Por padrão, os colisores já são habilitados automaticamente em 3D Objects ( cube , sphere , capsule e cylinder ). Se dois objetos colidirem, a física somente atuará se ambos estiverem com um collider anexado; caso contrário, passarão um pelo outro. Vamos testar? Usaremos o exemplo anterior para para ilustrar esse conceito: 1º - Com o Unity aberto e um cubo adicionado em cena, adicione um plano (GameObject > 3D object > Plane). Figura 2.2 - Rigidbody Fonte: Elaborada pelo autor. 2º - Garanta que o plano esteja embaixo do cubo. Para isso, você pode manipular a posição do objeto no inspector (Figura 2.3). Não se esqueça de anexar o componente Rigidbody e marcar a propriedade Is Kinematic no plano. Essa con�guração vai garantir que a física não atue sobre o plano, mas que o objeto tenha interação com a física de outros objetos. 3º Clique em Play para executar o projeto e observe que o cubo começa a cair e tem uma colisão com o plano. Se você desativar o box collider do cubo ou o isKinematic do plano (a propriedade use gravity precisa ser desativada, caso contrário, a gravidade vai atuar sobre o plano), o cubo vai atravessar o objeto. A massa dos dois corpos determina como os objetos reagirão a essa colisão. Figura 2.3 - Plano Fonte: Elaborada pelo autor. Dependendo da forma do objeto, cada collider é de�nido pela sua forma e tamanho. Mas é possível utilizar alterar a estrutura do collider e de�nir sua forma e tamanho, conforme necessidade. Para isso, basta acessar a propriedade "Edit Collider" e alterar os valores dos parâmetros "Center" e "Size”, para adicionar colliders de diferentes formas ( mesh ). Porém, as propriedades são as mesmas para os diversos colliders . No inspector, em box collider , observe as propriedades do colisor: Is Trigger: é umgatilho que, quando habilitado, não registra uma colisão com um corpo rígido. Após a colisão, é possível saber quando o objeto atravessou. Essa propriedade é útil em diversas situações, por exemplo, detectar se o personagem está em determinado local ou se chegou a determinado destino. Em um jogo, o isTrigger pode ser o gatinho para um save automático, a chamada para um cinematic e detectar se o personagem está no limite de uma área, garantindo que possa interagir com um objeto. Material: permite adicionar um material de física para simular diferentes superfícies. O collider precisa simular as propriedades dos objetos; suas interações devem ser representadas de acordo com o material anexado. Por exemplo, uma superfície escorregadia oferecerá pouco atrito a um objeto, enquanto a areia terá maior atrito. Center e Size: responsáveis pelo tamanho e posição do colisor no objeto. Physic Material O Physic Material é o componente responsável por de�nir os efeitos de atrito entre objetos. Vamos adicionar o componente no cubo em cena: 1º - Selecione Assets > Create > Physic Material. 2º Por padrão, o Physic Material é adicionado à janela Project. Arraste-o para a propriedade material no cubo (Figura 2.4). Esse componente, por exemplo, pode fazer o cubo saltar, ao colidir com o plano. Para isso, em Physic Material, altere o valor de Bounciness para o 1 (valor máximo da propriedade) e execute o projeto. Observe que o cubo salta algumas vezes até a inércia. O Bounciness de�ne o quanto uma superfície rebate um objeto sem perda de energia. O valor 0 garante que o objeto não seja rebatido; o valor 1 garante que objeto seja empurrado de volta a sua origem. A propriedade Dynamic Friction é usada quando um objeto está em movimento. O valor 0 garante que a superfície seja lisa, enquanto o valor 1 impõe uma resistência na superfície, como areia, grama, carpete etc. O Static Friction de�ne o quanto de atrito tem uma superfície, propriedade usada em objetos estáticos; o valor 1 impõe uma resistência que torna a movimentação menos deslizante, enquanto o valor 0 garante que a superfície deslize facilmente. Figura 2.4 - Physic Material Fonte: Elaborada pelo autor. Com o physic material, é possível simular o atrito de diversas superfícies, por exemplo: gelo, metal, borracha, madeira, dentre outros. Além disso, é possível de�nir parâmetros para fricção zero ou máxima de um objeto. Para isso, o usuário pode testar os vários parâmetros do Physic Material para simular ou criar sua própria superfície. Entretanto, é possível importar o ativo standard assets da Unity store , que contém uma coleção de recursos para auxiliar os iniciantes em seus projetos. Dentre os quais, disponibiliza modelos de physic materials prontos. Na loja de ativos do Unity, é possível encontrar diversos materiais para serem usados nos mais variados projetos de jogos digitais. É possível simular praticamente qualquer superfície ou artefato de um ambiente real. Como um exercício prático, localize, na Asset Store, um ativo pelo qual você possa simular o efeito de um espelho. saiba mais Saiba mais Para �xar o conteúdo e adquirir novas habilidades é preciso prática. O Unity é um game engine com diversos recursos. É necessária a prática constante, para aprender as práticas recomendadas. O Unity Learn fornece diversos tutoriais gratuitos sobre os principais componentes da engine. Acesse o link a seguir, para compreender a fundo o funcionamento de diversos componentes físicos do Unity: ACESSAR https://learn.unity.com/tutorial/3d-physics# atividade Atividade Leia o excerto a seguir: “A física é parte da nossa experiência de vida. Nossos cérebros são condicionados ao longo da vida para reconhecer o movimento baseado em física como sendo o movimento correto. Faz sentido, então, que os usuários se tornem mais imersos em alguns tipos de jogos quando os objetos se movem de maneira realista. Quando adequado, há uma série de maneiras para criar um movimento realista para um jogo". RABIN, S. Introdução ao desenvolvimento de games . Programação: técnica, linguagem e arquitetura. Tradução da 2ª edição norte-americana. Cengage learning, 2012. p. 373. Com base no trecho e nos componentes para trabalhar com física no Unity Editor, analise as a�rmativas a seguir: I. Drag é uma propriedade que controla a resistência do ar enquanto o objeto estiver girando. II. O Interpolate é uma propriedade que controla a in�uência da física sobre o corpo rígido; as forças e colisões não afetarão o objeto. III. O continuous dynamic é usado quando um objeto colide contra um objeto móvel, por exemplo, com IsKinematic desativado. IV. O Constraints impede que o objeto se movimente e rotacione no eixo marcado (x, y e z). Está correto o que se a�rma em: a) III e IV, apenas. b) I e II, apenas. c) I, II e IV, apenas. d) I, III e IV, apenas. e) I, II, III, apenas. Antes de tudo, precisamos compreender que a atmosfera de um jogo é a combinação de enredo, mecânica, jogabilidade, grá�cos, música e capacidade do jogador de tomar decisões. Todos esses elementos precisam ter uma conexão, e isso, por sua vez, dá ao jogador a imersão através dos seus sentidos. Dentre esses elementos, há o desenvolvimento e integração do áudio, um processo técnico de composição criativa, que cria um grau de realismo su�ciente para que o usuário se sinta imerso em um jogo. Seja em um jogo que simula um ambiente realista ou surreal, o som tem um papel fundamental, que pode determinar o sucesso ou o fracasso de um jogo. O sistema de áudio da Unity é �exível e permite importar a maioria dos formatos de arquivos de áudio, além de possuir recursos próprios para reproduzir sons, mixagem e masterização de áudio em tempo real. A engine também faz detecção e gravação de áudio por microfone. Esse sistema permite que o usuário interaja com o jogo, conforme as entradas de áudio. Por exemplo, usar palavras para acionar eventos especí�cos em jogo. ÁudioÁudio Antes de conhecermos os principais componentes para lidar com áudio no Unity, precisamos compreender a teoria básica do som. Em um ambiente real, um som é emitido por uma fonte e captado por um ouvinte. Ambos, emitir e perceber sons, dependem de inúmeros fatores. Por exemplo, um ser humano tem a noção de distância, direção e qualidade sonora. Conforme o ambiente, essa percepção é alterada: em locais fechados, o som terá eco, mas, ao ar livre, não terá. Ou seja, em um jogo, o som muda de acordo com o ambiente. Outro fator a ser considerado é o Efeito Doppler, que é o resultado do aumento ou diminuição da frequência sonora (além da luz ou ondulações em superfície d'água), à medida que há movimento relativo entre a fonte sonora e o observador (objeto). O efeito doppler é importante em jogos, ainda mais em jogos tridimensionais. Dependendo do ambiente, o jogador poderá ouvir o som de diversas maneiras. Mas como funcionam os efeitos de áudio no Unity? A engine exige que as fontes de áudios sejam anexadas às fontes emissoras, por exemplo, os elementos em cena que emitem sons. Para essa �nalidade, é anexado, ao objeto, o componente audio source . Para a captação do áudio (fonte receptora), é necessário anexar o componente audio source . Por exemplo, por padrão, é recomendado anexar o audio source na câmera principal do jogo. Em um jogo 3D, a câmera principal acompanha o personagem do jogador. É possível, pelo uso de componentes, con�gurar a intensidade do som e a direção, simulando o efeito doppler . Nas próximas subseções, será descrito cada um desses componentes. Audio Listener Esse componente atua como receptor, recebendo as informações de qualquer fonte de áudio ( audio source ). Quando o componente é anexado a um GamObject e as fontes de áudio estiverem próximas, o componente fará a leitura dos sons e enviará os dados ao alto-falante. A engine só permite um audio listener por cena. Por padrão, o componente é adicionado à câmera principal. A ferramenta trabalha em conjuntocom o audio source e o audio clip . Quando o emissor é uma fonte tridimensional, o audio listener simula de forma dinâmica sua orientação, posição e distância. Para adicionar o componente em cena, basta: Selecionar o objeto > Add Component > Audio > Audio Source. Audio Source O audio source vai reproduzir um arquivo de áudio do componente audio clip na cena. O arquivo será reproduzido para o receptor ( audio listener ). O componente pode reproduzir qualquer arquivo do componente Audio Clip, além de, con�gurá-lo para reprodução em modo 2D, 3D ou híbrido ( SpatialBlend ). O componente ainda permite alterações na propagação e controle ativo entre as saídas de áudio nos alto-falantes. Além disso, é possível aplicar �ltros, de�nir reverberação e controlar as fonte de áudio com curvas de níveis. Agora, abra um projeto no Unity e adicione o componente audio source em um GameObject . Para adicionar, basta selecionar um objeto em cena > Add Component > digitar “Audio Source” e anexar ao objeto. Logo após, adicione o componente, importe o recurso da asset store “Free Sound E�ects Pack”, produzido por Olivier Girardot. Por �m, adicione o componente audio listener na câmera principal da cena. AudioClip: arquivo de referência que será reproduzido pelo componente Audio Source. Na janela de projeto, na pasta do ativo “Free Sound E�ects Pack”, localize o arquivo” Dragon Spit Fire 1” e selecione e arraste para a propriedade AudioClip. É possível procurar o arquivo de referência diretamente pela propriedade: basta selecionar AudioClip e buscar o arquivo. A propriedade mostrará apenas arquivos compatíveis. Agora, execute o projeto. O áudio será chamado uma única vez e reproduzido imediatamente. Output: por padrão, a saída de áudio tem como referência o audio listener . Mas é possível enviar o arquivo para o componente audio mixer . O mixer é responsável por editar as várias fontes de áudio da cena, sendo possível aplicar �ltros e efeitos de masterização de áudio. Mute: quando ativo, o arquivo de referência continua sendo reproduzido, mas sem áudio. Bypass E�ects: propriedade que ignora os efeitos aplicados ao arquivo de referência. Play On Awake: quando a propriedade está habilitada, o arquivo de referência será reproduzido logo após a cena ser iniciada. Se desativado, o usuário somente poderá ativar a propriedade via script . Loop: é uma estrutura que permite que o arquivo de áudio seja reproduzido após a sua conclusão. Volume: estrutura de controle da intensidade do áudio. Como referência, o valor 1 representa o volume máximo até um metro do objeto. Na Figura 2.5, observe as principais propriedades do Audio Source : Figura 2.5 - Audio Source Fonte: Elaborada pelo autor. Além das propriedades básicas, há o Rollo� Mode (Figura 2.6), um grá�co para controlar o quão rápido a intensidade do áudio diminui. Existem três modos padrões: Logarithmic , Linear e Custom Rollo� . No Logarithmic, quanto mais próximo o receptor estiver do emissor, mais alto o som será. O Linear permite personalizar o quão intenso serão os sons a longa distância. Custom Rollo� permite personalizar o comportamento da fonte de áudio. De maneira sucinta, existem 4 passos essenciais para criar uma nova fonte de áudio. Primeiramente, o usuário precisa importar os arquivos de áudio para o projeto. Logo após, criar um objeto vazio na cena, selecioná-lo, no inspector > Component > Audio > Audio Source. Por último, no inspector, localize a propriedade "Audio Clipe" e atribua um clipe de áudio. Audio Clip O audio clipe disponibiliza os dados do arquivo de referência usado pelo Audio Source. Antes de continuarmos, selecione o arquivo Dragon Spit Fire 1 na pasta “Free Sound E�ects Pack". No inspector, observe as propriedades do Audio Clipe (Figura 2.7). Figura 2.6 - Rollo� Mode Fonte: Elaborada pelo autor. Após importar um arquivo de áudio, o Unity criará automaticamente o audio clipe associado ao componente audio source . Atualmente, a versão 2019.3.0a4 do Unity suporta os seguintes arquivos de áudio: .mp3, .ogg, .wav, .ai� / .aif, .it, .xm, .s3m e mod. Vamos analisar as opções de personalização e as principais propriedades do audio clipe : Force to mono: quando ativada, o arquivo de áudio será mixado em uma faixa de canal único. Dentre os benefícios, há a economia de espaço quando o arquivo de referência tem uma faixa de audio maior. Por padrão, recomenda-se ativar a opção para todos os ativos de áudio (com curta duração), exceto os arquivos de música. Após ativado, a opção Normalize �ca disponível e permite reproduzir os níveis de volume dos arquivos de áudio de forma normalizada. Load in background: propriedade desativada por padrão. Se ativada, o arquivo de áudio será carregado em segundo plano, sem interferência no encadeamento atual. Load Type: propriedade usada pelo Unity para reproduzir arquivos de áudio em tempo de execução. É possível escolher entre três opções distintas: Decompress on Load, Compressed in Memory e Streaming. O Decompress descompacta os arquivos de áudio assim que a cena ou o audio source forem chamados. Por padrão, é recomendado usar esta opção em arquivos com tamanho reduzido, Figura 2.7 - Audio Clip Fonte: Elaborada pelo autor. para evitar sobrecarga no desempenho do jogo. Por exemplo, descompactar arquivos de áudio com codi�cação Vorbis fará o jogo utilizar cerca de dez vez mais memória do que armazená-los compactados. O Compressed in Memory mantém os arquivos de áudio compactados na memória até a descompactação em tempo de execução. É recomendado ativar essa opção em arquivos de áudio com tamanhos maiores, pois, os arquivos são descompactados em tempo real. por �m, o Streaming codi�ca o arquivo de áudio em tempo real. Durante a instalação ou execução do projeto, o método armazena o arquivo de áudio em um local persistente no dispositivo do usuário. Compression Format: permite escolher o formato especí�co do arquivo de áudio que será usado em tempo de execução. Por padrão, a engine possui três formatos: PCM, ADPCM e Vorbis/MP3. O PCM é um formato especí�co para arquivos. O PCM é um formato especí�co para arquivos com tamanho reduzido. Esse formato oferece alta qualidade no arquivo de áudio, portanto, o tamanho do arquivo é maior. O ADPCM é um formato recomendado para sons que precisam ser reproduzidos constantemente, em intervalos curtos, como o som de um disparo de arma de fogo. A opção mantém a qualidade do arquivo, sem utilizar maiores taxas de compactação. O vorbis/mp3 gera arquivos compactados com tamanho reduzido, mas com qualidade sonora maior do que as outros formatos. É possível reproduzir o arquivo de áudio diretamente da interface do Unity. Se o usuário clicar duas vezes em um ativo de áudio, ele será reproduzido em uma fonte externa. Na interface do Audio Clip , são disponibilizadas três opções: AutoPlay , Loop e Play . Selecionando o AutoPlay , reproduzirá de forma automática qualquer arquivo de áudio selecionado na interface do Unity. O loop reproduz o arquivo selecionado de forma contínua. O Play reproduzirá o arquivo imediatamente. Os principais componentes da interface são: Canvas, Basic Layout, Visual Components e Interaction Components. Nas próximas subseções, será descrito cada um desses componentes. Canvas Para criar uma interface, precisamos de um um local onde colocaremos os elementos presentes na cena. Para isso, usaremos o Canvas, uma área onde todos os elementos da interface do usuário devem estar. Para fazer isso, vá ao menu do Unity > GameObject > UI > Canvas. O componente é automaticamente adicionado em cena. Selecione-o e pressione a tecla F para exibir o componente na frente da câmera principal (Figura 2.8). Interface Grá�ca (HUD)Interface Grá�ca (HUD) A área Canvas é exibida como um retângulo na janela scene . Os elementos da interface do usuário, no Canvas, são renderizados por uma ordem hierárquica. O primeiro objeto �lho, ou subclasse, é renderizado primeiramente; o segundo objeto �lho é o próximo, e assimpor diante. Se algum elemento for posicionado no mesmo local, ou seja, se sobrepuseram, o último objeto aparecerá em cima do objeto anterior. O Canvas possui três modos de renderização: O Screen Space – câmera, nesse modo, a tela é renderizada em um um plano perpendicular à câmera principal. O Canvas é posicionado a uma determinada distância da câmera. Os elementos da interface do usuário são renderizados e visualizados por essa câmera. Diferentemente do modo overlay , a câmera afeta o posicionamento da interface do usuário. A interface será ofuscada por qualquer elemento 3D em cena que esteja na frente do plano de visualização da interface. O overlay (ou sobreposição) é um modo de renderização em que a tela da interface será renderizada sobre todos os outros elementos visuais. Se a tela for redimensionada, o Canvas altera sua estrutura para se adequar à nova resolução. Por consequência, todos os elementos em cena são reorganizados. Essa propriedade é conhecida Figura 2.8 - Canvas Fonte: Elaborada pelo autor. como tela responsiva. Pondere: onde essa con�guração é útil? Pense por um momento: existem diversas resoluções de tela em dispositivos móveis, por exemplo, smartphones e tablets . É necessária uma boa proporção em qualquer tela, ou seja, algo que se enquadre automaticamente em qualquer screen . Por �m, temos o World Space , que é o modo de renderização que torna o comportamento do Canvas igual a qualquer objeto em cena. Esse é o único modo que permite que o usuário de�na manualmente o tamanho da tela, usando o Rect Transform. São propriedades importantes disponíveis no inspector para edição, que determinam o comportamento da interface do usuário. Os elementos da interface do usuário serão renderizados conforme o posicionamento 3D em cena. Esse tipo de interface é conhecido como diegético, por fazer parte do mundo do jogo. Figura 2.9 - Rect Transform Fonte: Elaborada pelo autor. saiba mais Saiba mais O design de interface é um aspecto fundamental em qualquer jogo, pelo qual o jogador interage com os elementos do jogo. A Teoria da Diegese adaptada aos jogos é um conceito que estabelece que todos os elementos da interface do usuário existem no jogo, ou seja, a interface é visualizada pelo avatar do jogo. Para compreender essa teoria aplicada à construção de interfaces, leia o artigo a seguir, na íntegra: ACESSAR Para compreender o funcionamento dos componentes estudados, acesse a loja de assets do Unity e importe o ativo o�cial "Unity Samples: UI", para visualizar, na prática, um exemplo de projeto, mostrando os aspectos do sistema de interface do Unity. Basic Layout Em princípio, o Canvas permite que qualquer elemento da interface do usuário seja posicionado e redimensionado, de acordo com as necessidades do projeto. A barra de ferramentas da interface do Unity pode ser usada para manipular os elementos do Canvas, assim como qualquer objeto em cena. Para testarmos algumas propriedades do Canvas, será necessária a criação de um elemento dentro do Canvas. Para isso, criaremos um button , um botão padrão que pode ser clicado pelo usuário para acionar um evento especí�co. 1º - Na interface do Unity, com um Canvas adicionado à cena, selecione-o, clique com o botão direito do mouse > UI > button. O elemento button será adicionado em cena como subclasse do Canvas. https://www.sbgames.org/sbgames2017/papers/ArtesDesignFull/174586.pdf 2º - No inspector, canto superior esquerdo do component Rect Transform, clique em Anchor presets (Figura 2.10). Esse componente contém prede�nições do Anchor, ou âncora. É um elemento da interface do usuário que de�ne os parâmetros para um deslocamento �xo do elemento. Por exemplo, se a âncora do objeto button for de�nida nas bordas direitas do Canvas e este for redimensionado para a esquerda, o button terá seu deslocamento para a esquerda (Figura 2.11). Caso o usuário de�na a âncora nas bordas esquerdas e desloque o Canvas para direita, o button permanecerá na sua posição original. É possível de�nir manualmente a âncora de qualquer elemento em cena ou utilizar as Figura 2.10 - Anchor presets Fonte: Elaborada pelo autor. Figura 2.11 - Anchor presets Fonte: Elaborada pelo autor. prede�nições do Anchor. Com esse elemento, é possível selecionar rapidamente as principais con�gurações da âncora. Como exercício, selecione o button e teste cada prede�nição de âncora. Não se esqueça de dimensionar o Canvas para observar o comportamento do button . Visual Components Os principais componentes visuais da interface do usuário são texto ( text ) e imagem ( image ). O componente texto pode ser adicionado da seguinte forma: 1º - Selecionando o objeto Canvas > botão direito do mouse > UI > Text (Figura 1.12). 2º - No inspector, as suas principais propriedades são de�nir a fonte do texto. Por padrão, o Unity utiliza a fonte Arial. Mas é possível importar novas fontes para o projeto, do tipo TrueType (.ttf) e OpenType (.otf). Para importar novas fontes, você pode ir à janela de projeto > Asset > Import New Asset. Além de de�nir o tipo da fonte, é possível con�gurar o estilo. Por padrão, existem os estilos normal, bold (negrito), italic (tipo cursiva, inclina-se ligeiramente para a direita) e bold and italic . Existem parâmetros para de�nir o alinhamento do texto, a cor da fonte, a possibilidade de controlar os estouros horizontais ( horizontal over�ow ) e verticais ( vertical over�ow ), ou seja, é possível de�nir o comportamento do texto de acordo com o redimensionamento do Canvas. Figura 2.12 - Text Fonte: Elaborada pelo autor. O componente imagem possui a opção de receber um sprite (objeto grá�co), de�nir sua cor e preservar as proporções originais da imagem. O componente Imagem pode ser adicionado selecionando o objeto Canvas > botão direito do mouse > UI > image . Interaction Components Esses componentes são responsáveis pela interação entre o usuário e a interface do jogo, acionando eventos de acordo com os Inputs, podendo ser, mouse , teclado, joystick e telas de toque. Os principais componentes da interface de usuário são: Button: componente responsável por acionar um evento especí�co. Por exemplo, acessar as con�gurações do jogo, salvar ou carregar os dados do personagem, con�rmar determinada ação, abrir o inventário ou qualquer menu dentro do jogo, entre outros. O button trabalha com um sistema de eventos, entretanto, é preciso de�nir parâmetros em um script e anexar ao objeto button . O componente button pode ser adicionado selecionando o objeto Canvas > botão direito do mouse > UI > button . Toggle: é uma caixa de seleção que retorna os valores verdadeiro ou falso. O usuário pode alternar entre ativada ou desativada. Dependendo do valor, um evento é acionado. Por exemplo, ativar a opção isKinematic do componente Rigidbody, dentro do jogo, possibilita habilitar determina con�guração, deixar visível barras de habilidades, objetos na interface do usuário, dentre outros. O componente Toggle, pode ser adicionado selecionando o objeto Canvas > botão direito do mouse > UI > Toggle. Slider: o slide é um controle deslizante, que o usuário pode alternar entre o valor mínimo (0) e máximo (1). Esse tipo de componente é amplamente utilizado no controle de intensidade de elementos audiovisuais, como o volume da música de fundo, sons do ambiente, iluminação, brilho, dentre outros. O componente Slider pode ser adicionado selecionando o objeto Canvas > botão direito do mouse > UI > Slider. Dropdown: um menu suspenso, contendo uma lista de opções selecionáveis. Cada opção aciona determinado evento, por exemplo, o próprio menu do Unity é um dropdown , que, quando clicado, uma lista de opções é habilitada para o usuário selecionar. O componente Dropdown pode ser adicionado selecionando o objeto Canvas > botão direito do mouse > UI > Dropdown. Input Field: uma caixa de texto interativa e editável, que permite que o usuário edite o texto usando caracteres. Por exemplo, o campo de entrada de texto, como o nomedo usuário, a senha, escolha do nome do avatar, dentre outros. O componente Input Field pode ser adicionado selecionando o objeto Canvas > botão direito do mouse > UI > Input Field. Todos esses componentes trabalham com o UnityEvent, um sistema de evento que de�ne qual ação será acionada após o interação entre o componente e o usuário. Posteriormente, trabalharemos com o sistema de evento do Unity e suas interações via script . saiba mais Saiba mais Vamos praticar? São inúmeros os componentes que auxiliam no desenvolvimento de interface do usuário. Mas como esses componentes são utilizados em jogos? Saiba que é possível desenvolver qualquer elemento interativo na interface do usuário, desde botões, menus, listas suspensas ou elementos não interativos, como barras de life, mana, stamina, dentre outros. Acesse o link a seguir, para compreender o funcionamento dos componentes do Unity, além de aprender como desenvolver uma barra de vida. ACESSAR Os componentes da interface do usuário (UI) da engine disponibilizam recursos importantes para a construção de experiências visuais simples e intuitivas. Cada componente possui diversas �nalidades, sendo possível organizá-los, posicioná-los ou estilizá-los, de acordo com o projeto. Por isso, estude-os, um a um, para compreender o seu comportamento conforme o gênero e estilo do jogo. https://www.youtube.com/watch?v=WvANy8Kp6Cs O Unity é uma engine que oferece um sistema completo para iniciantes. São inúmeras as ferramentas para criar um projeto do zero. Desde recursos, como componentes para trabalhar com física, componentes visuais para criar interfaces interativas e iluminação. Esse último recurso, a iluminação, é essencial para que o jogador possa ver a cena e distinguir os elementos de um cenário. Mas não apenas isso: a luz afeta as emoções (DARWICH; TOURINHO, 2005). Diversas técnicas de iluminação oriundas do cinema, ilustração e teatro são usadas para aperfeiçoar o componente emocional nos jogos. O Unity possui um sistema de iluminação global, que permite manipular o comportamento da luz sobre as superfícies, além de controlar a intensidade, a cor, o contraste, a sombra, a direção e outros efeitos de iluminação. Compreender esses recursos permite entender como a luz afeta a estética do jogo e a experiência do usuário. Antes de falarmos sobre os principais componentes de iluminação no Unity, re�ita: como enxergamos a luz? Ou melhor: como enxergamos as cores? Para IluminaçãoIluminação respondermos a essa pergunta, precisamos compreender como funciona o comportamento da luz. A luz é uma forma de energia eletromagnética. O olho humano saudável é capaz de detectar apenas um curto intervalo do espectro de radiação eletromagnética. O espectro visível é uma faixa de comprimento de onda situado entre 400 (violeta) a 700 nanômetros (vermelho) (POZZER, 2008). Portanto, o sistema �siológico interpreta as variações do comprimento de onda e as associa a uma cor. Cada cor é uma combinação de diferentes elementos absorvidos pela retina e codi�cados pelo cérebro. A cor é uma sensação produzida pelo cérebro; já a luz é uma radiação eletromagnética. A luz viaja diretamente pelo meio, pois não existem substâncias no vácuo. No entanto, na presença de diferentes materiais, a luz se comporta de maneira diferente. Em contato com algum objeto ou substância, parte da luz é absorvida e convertida em energia. Se o material for transparente (tipos de gases como o ar, líquidos como a água, plásticos, vidros, entre outros), a luz propaga-se de forma retilínea no interior sem sofrer interferência. Mas se o material é translúcido (vidro fosco, papel, nuvens etc.), a luz propaga-se de forma irregular. Além de transparente e translúcido, o material pode ser opaco (madeira, metais, concreto, tijolos etc.), que não permite a propagação da luz. Assim, para calcular a incidência e sombreamento de um objeto no Unity, é preciso de�nir o comportamento da luz. Portanto, é necessário conhecer a intensidade, direção e cor da luz (na Figura 2.13, é possível entender o comportamento da luz). O Unity fornece parâmetros em seus componentes de iluminação, para que o usuário possa atribuir propriedades únicas a seus objetos em cena. Por padrão, os componentes principais de iluminação no Unity (Point Lights, Spot Lights, Directional Lights e Area Lights) são em tempo real. O grande benefício do sistema é que a luz incide diretamente sobre o objeto. Assim, a luz é atualizada a cada quadro em cena. Portanto, mesmo que um objeto se movimento no ambiente, a luz o acompanha e é atualizada imediatamente. Figura 2.13 - Sombreamento de um objeto Fonte: Tutorial de… (2020, on-line). Antes de falarmos sobre os componentes de iluminação no Unity, precisamos conhecer a janela geral de iluminação. Para isso, basta acessar o menu do Unity >Window > Rendering > Lighting Settings (Figura 2.14). A janela contém propriedades e parâmetros para controle da iluminação global da Unity. A iluminação global é um sistema que de�ne o comportamento da luz. Assim, é possível controlar como a luz é re�etida diretamente sobre um objeto (luz direta) ou em outras superfícies (luz indireta). A janela de iluminação possui três guias: Scene: guia responsável por controlar a iluminação geral da cena, sendo possível atribuir um material para skybox (bem como o gradiente, cor e a intensidade), desabilitar o sistema global de iluminação em tempo real, dentre outros. Essas propriedades não de�nem o comportamento dos objetos individuais. Os efeitos são aplicados ao ambiente da cena. Realtime lightmaps: use essa guia para visualizar as texturas usadas pelo sistema global de iluminação. Por padrão (iluminação em tempo real), não é possível visualizar nenhum artefato nessa guia. É necessário habilitar as opções baked lighting e mixed lighting . O primeiro é um componente utilizado em um ambiente local, em que o usuário pode de�nir os parâmetros com base nos objetos em cena. Quando o usuário utiliza esse recurso, o Unity faz um cálculo prévio da iluminação antes do tempo de execução normal. Portanto, a engine não inclui o modo baked em cálculos de iluminação em tempo de execução. Por consequência, a sobrecarga no tempo de execução é minimizada. O mixed lighting é um tipo de iluminação mista, cujas propriedades do componente alteram a cor e a intensidade de um objeto durante o tempo de execução. Mas é preciso de�nir os limites para esse comportamento. O sistema de iluminação mista trabalha com objetos estáticos ou dinâmicos, fornecendo iluminação direta e indireta para os objetos em cena. Todos os objetos dinâmicos iluminados por um componente mixed sempre projetarão sombras em tempo de execução em outros objetos em cena dinâmicos. Baked lightmaps: por �m, temos a guia de objetos. O componente é utilizado para visualizar as texturas do objeto selecionado, incluindo as máscaras de luz do sistema global de iluminação e o mapa de sombras. Figura 2.14 - Lighting Settings Fonte: Elaborada pelo autor. É possível alterar as cores da luz de um ambiente com base na temperatura. Para compreender o funcionamento desse sistema, acesse a loja de assets do Unity e importe o ativo "Light Temperature" produzido por Muka Schultze. O recurso possui um algoritmo que transforma uma temperatura especí�ca em uma cor RGB. Além da janela de con�guração geral de iluminação, a engine possui tipos de luz que o usuário pode escolher para a cena do jogo: Point Lights, Spot Lights, Directional Lights e Area Lights. Para adicionar o componente em cena, basta acessar o menu do Unity > GameObjects > Light > “escolher o tipo de luz”. Independentemente da escolha do usuário, é possível alterar o tipo de luz diretamente do Inspector (propriedade light ). Observe a �gura 2.15, para associar ao comportamento de cada um dos tipos de luz no Unity: Point lights: essa luz é localizada em um ponto especí�co no espaço, enviando luz igualmente em todas as direções. Esse tipo de luz é utilizadopara simular objetos que incidem luz em pontos especí�cos, por exemplo: lâmpadas, luminárias, LEDs etc. O usuário pode de�nir o tamanho, a cor, intensidade, sombras, dentre outros. A intensidade da luz diminui, de acordo com a distância estabelecida pelo usuário. Spot Lights: uma luz pontual que é restringida a um ângulo especí�co. O usuário pode de�nir o centro do cone em que aponta a direção da luz, bem como a largura do ângulo do cone. A intensidade da luz é mais forte no centro do cone e diminui nas suas extremidades. Esse tipo de luz é utilizado em objetos que restringem saiba mais Saiba mais Para compreender o funcionamento do sistema de iluminação e sombreamento no Unity com mais detalhes, acesse o link a seguir, que possui diversos tutoriais disponibilizados pela Unity Technologies e possbilita que o usuário tenha noções básicas e intermediárias sobre os sistemas de iluminação global, materiais e o sombreamento padrão na engine. ACESSAR https://learn.unity.com/tutorial/rendering-and-shading a iluminação pelo ângulo, por exemplo: lanternas, faróis, holofotes, dentre outros. Directional Lights: a luz direcional é utilizada para simular grandes e distantes fontes de luz. Geralmente, é localizada fora do alcance do ambiente do jogo. É comum simular os efeitos do sol ou de objetos que não possuem identi�cação usando luz direcional. Diferentemente dos outros modos, a luz direcional ilumina todos os objetos em cena, na mesma direção e mesmo ângulo. Observe que a intensidade da luz nos objetos não diminui conforme a distância. Área: por último, temos a luz de área, que representa uma luz demarcada por um espaço, geralmente, retangular ou em disco. Não é possível visualizar a luz em tempo de execução, pois o cálculo sobre o processador é intenso. Assim, esse tipo de luz é utilizado em mapas de luz. Figura 2.15 - Tipos de luz no Unity Fonte: Elaborada pelo autor. Assim como os outros componentes disponibilizados pela Unity, é possível alterar diversos parâmetros, para de�nir o comportamento da luz em uma cena. Mas é necessário de�nir o comportamento de iluminação de um ambiente. Por exemplo, quais objetos em cena são emissores de Luz, qual o comportamento da luz direta e indireta, a iluminação será realista ou baseada em parâmetros únicos, dentre outros. Além disso, é possível de�nir o grau de profundidade e realismo de uma sombra. A engine de�ne automaticamente a direção e a forma das sombras de um objeto, dependendo da intensidade da luz e dos objetos em cena. Mas é possível alterar o tipo de sombra nas propriedades do componente de luz. Atualmente, a versão 2019.2 do Unity possui dois tipos de sombra: soft e hard shadows . Ambas são localizadas na propriedade Light do componente de luz adicionada na cena. O soft shadow de�ne as bordas das sombras dos objetos como suaves; já o hard shadow aumenta a intensidade das bordas (comportamento menos realista das sombras, mas que exige menos tempo de processamento). Para conhecer as propriedades de iluminação no Unity com mais detalhes, importe o ativo "Mountain Race Track: night" produzido por Niandrei, da loja de ativos do Unity. O ativo é composto de uma cena noturna de uma pista de corrida nas montanhas. Após importar o ativo, observe as fontes de luz da cena. Feito isso, altere os pontos de iluminação da cena para compreender os efeitos de luz nos objetos. Não se esqueça de criar novas fontes de luz, alterando suas con�gurações para observar o comportamento das sombras da cena. reflita Re�ita Levando em consideração os assuntos abordados ao longo da unidade sobre o Unity, re�ita sobre a in�uência e relação entre o sistema de física e iluminação na engine. indicações Material Complementar LIVRO Introdução ao desenvolvimento de games. Volume 3: entendendo o universo dos jogos Editora: Cengage Learning Autor: Steve Rabin ISBN: 978-8522111435 Comentário: terceiro volume da coleção de livros que aborda a introdução ao desenvolvimento de games . Nesta terceira parte, o leitor compreenderá os principais tópicos acerca de temas na área de artes. Para isso, o autor aborda as perspectivas e interação entre as áreas audiovisuais e a produção de um jogo eletrônico. LIVRO Manual de produção de jogos digitais Editora: Bookman Ano: 2012 Autor: Heather M. Chandler ISBN: 978-8540701830 Comentário: um guia completo da produção de jogos digitais, mas do ponto de vista do produtor, do líder do projeto, o que está atrás das cortinas do projeto. Apresenta tópicos gerais desde a pré-produção, testes até o marketing, além de mostrar em detalhe um projeto, na prática. FILME The movie Ano: 2014 Comentário: documentário criado de uma campanha no Kickstarter, uma plataforma de crowdfunding, ou �nanciamento coletivo. A mídia mostra a evolução e o desenvolvimento da indústria dos videogames, explorando o desenvolvimento de diversos dos maiores jogos já produzidos, com entrevista dos seus respectivos criadores. Para saber mais sobre o �lme, acesse o trailer: ACESSAR http://www.adorocinema.com/filmes/filme-229741/trailer-19541753/ conclusão Conclusão Não existe uma fórmula para fazer um bom jogo, nem mesmo prever se será popular e rentável. A�nal, a indústria de jogos é considerada o setor mais lucrativo do entretenimento no mundo. Por isso, antes de conceber um jogo, é necessário estudar a metodologia utilizada para criar jogos com sucesso consolidado. O Unity é uma engine utilizada por diversas empresas de pequeno e grande portes, cujas principais características são a quantidade de componentes na sua interface, lojas de ativo, extensa documentação e comunidade ativa em fóruns da empresa. Nesta unidade, discutimos os principais componentes da interface do Unity, desde as propriedades físicas dos objetos à teoria da iluminação em cenas. Dominar uma ferramenta leva tempo. É necessário, desde o início, consolidar a teoria com a prática. Para isso, é preciso dedicar tempo a estudar a arquitetura do Unity, incluindo os seus componentes, script, cenas, propriedades, objetos e interações entre os elementos da interface. A interface do Unity é �exível e intuitiva para iniciantes, mas sem um entendimento básico e uma prática adequada, o usuário passará horas intermináveis corrigindo bugs na interface. Aprofundar no tema estudado é fundamental para compreender os conceitos abordados nesta unidade. referências Referências Bibliográ�cas DARWICH, R.; TOURINHO, E. Respostas emocionais à luz do modo causal de seleção por conseqüências. Revista Brasileira de Terapia Comportamental e Cognitiva , v. 7, n. 1, p. 107-118, 2005. POZZER, C. T. Fundamentos de cor . Disponível em: https://docplayer.com.br/34710055-Fundamentos-de-cor-1-cor.html. Acesso em: 20 dez. 2019. TUTORIAL de Pixel Art para iniciantes III dithering pontilhado em objetos esféricos. The 8bit Zone , [2020]. Disponível em: https://the8bitzone.wordpress.com/category/sombra-e-luz/ . Acesso em: 21 jan. 2020. https://the8bitzone.wordpress.com/category/sombra-e-luz/
Compartilhar