Baixe o app para aproveitar ainda mais
Prévia do material em texto
Desenvolvimento de Jogos Digitais II Aula 2: Unreal Development Kit Apresentação Tendo como base os componentes do Unreal Tournament, a Unreal Engine traz os mais diversos elementos para a criação de jogos 3D, embora exija um bom equipamento para executá-la em tempo aceitável. Uma versão mais simples da ferramenta era oferecida com o nome de UDK (Unreal Development Kit), a qual deixou de oferecer atualizações, mas ainda constitui uma das plataformas mais práticas para a criação de jogos FPS (First Person Shooter). Objetivo Identi�car as características do UDK; Construir cenários 3D e adicionar elementos no UDK; Analisar a construção de FPS com UDK. Ambiente do UDK O uso do UDK (Unreal Development Kit) é um ótimo ponto de partida para quem deseja criar jogos de tiro em primeira pessoa. Com base na Unreal Engine 3, é apresentado um bom editor, com diversos elementos de criação baseados em simples arraste, assemelhando-se bastante aos antigos editores de fases personalizadas, também chamados de MODs, oferecidos para jogos como Wolfenstein 3D. Atenção! Aqui existe uma videoaula, acesso pelo conteúdo online Atenção O suporte ao UDK foi descontinuado a partir da versão 4 da Unreal Engine, sendo aconselhável utilizar esta última em novos projetos. Isso não impede que o produto tenha ótimos aspectos didáticos, nem que vários projetos ainda sejam criados nele. Algo que impressiona nos jogos criados com o UDK é a qualidade grá�ca, já que o ambiente é baseado na Unreal Engine 3, e a escolha da inclusão dos pacotes de componentes do jogo Unreal Tournament oferece uma ampla gama de Assets, tratando de materiais, modelos 3D,sons, veículos, árvores, entre diversos outros, os quais podem ser utilizados para efetuar testes no ambiente e servem de base para a de�nição de componentes autorais. A primeira versão da Unreal Engine foi criada pela Epic Games em 1998, dando suporte ao jogo Unreal, e o motor já tinha uma detecção de colisão, inteligência arti�cial e renderização. O software também tinha um sistema de rede, que era considerado limitado em relação ao seu maior concorrente da época, o jogo Quake II. Embora tenha evoluído muito com o tempo, ainda era de utilização interna da empresa, até que o kit denominado UDK teve a disponibilização liberada de forma gratuita para o público em geral no �nal de 2009, focado em estudantes e desenvolvedores independentes. O ambiente do UDK Editor é dividido em quatro partes: 1 Toolbar, com acesso rápido às ferramentas mais utilizadas. 2 Toolbox, para a criação de sólidos e controle de diversos elementos da cena. 3 Viewports, para a manipulação visual da cena. 4 Status Bar, com informações gerais da visualização corrente e controles de entrada selecionáveis. Figura: Interface do UDK Editor. Fonte: O autor. Comentário É possível criar modelos 3D no próprio ambiente do UDK, bastando selecionar um Brush, como um cone ou um cilindro, na divisão Brushes da ToolBox, posicioná-lo e dimensioná-lo corretamente em alguma das Viewports, e acrescentar massa com CSG Add, primeiro botão na divisão CSG da ToolBox. No entanto, por tratar-se de uma Game Engine, a função principal não é a criação de modelos 3D, mas sim a importação e a organização de modelos externos. 1 Em vez de criarmos as malhas no processo de uso de Brush e CSG, vamos utilizar os diversos componentes disponibilizados pelo UDK, extraídos do jogo Unreal Tournament, os quais permitem a composição de um ambiente de testes com grande facilidade. 2 O acesso a esses Assets será feito a partir do maior facilitador do UDK, que é a janela Content Browser, a qual traz todos os recursos disponíveis organizados em pacotes, permitindo adicioná-los à cena com simples operações de arraste. 3 A abertura do Content Browser pode ser efetuada a partir da ToolBar ou com o uso da combinação de teclas CTRL+SHIFT+F, e nele podem ser encontrados elementos como malhas, texturas, árvores e outros componentes pré- con�gurados, além de componentes genéricos, como luzes, neblina e veículos, na divisão Actor Classes. Figura: Content Browser. Fonte: O autor. Para utilizar os componentes do jogo Unreal Tournament durante a instalação da UDK é necessário selecionar a opção UT Sample Game. Figura: Instalação do UDK com elementos do Unreal Tournament. Fonte: O autor. Após serem adicionados à cena, os objetos podem ser manipulados por meio das ferramentas de transformação linear, ou seja, translação, rotação e escala, acessíveis a partir da Toolbar. Essas operações apresentam cursores especí�cos, ou gizmos, indicando a operação corrente no ambiente 3D. Para sair de todos os modos de transformação basta clicar no ícone de seta, posicionado na lateral esquerda do conjunto de ferramentas. Figura: Ferramentas para transformações lineares. Fonte: O autor. Os gizmos apresentam os eixos X, Y e Z de forma que representem e facilitem a execução da transformação linear desejada, sendo apresentadas setas para as translações, arcos para as rotações e cubos terminadores para os escalonamentos. Figura: Apresentação de gizmos no UDK.Fonte: O autor. É importante lembrar que a rotação no plano XY ocorre em torno do eixo Z— assim como os demais eixos rotacionam sempre o plano normal a ele — e que o gizmo de translação permite travar as modi�cações em termos de um eixo especí�co, o qual �ca marcado em amarelo, ou no plano determinado por dois eixos, onde ambos os eixos envolvidos �cam nessa cor, além do quadrado formado a partir da base deles. Muitas vezes é difícil controlar a precisão do mouse, o que pode ser resolvido com o uso de Snaps, presentes na Status Bar. Eles são auxiliares de precisão no uso de transformações lineares, restringindo a variação de valores a intervalos discretos, como rotação a cada 5.63°, ou escala em passos de 5%. Podem ser ativados ou desativados pela marcação dos componentes CheckBox, além de permitirem a alteração dos intervalos a partir das Combos associadas, as quais são abertas com o clique sobre os triângulos apontando para baixo. Figura: Auxiliares de precisão. Fonte: O autor. Para remover objetos da cena é utilizada a tecla Delete. Após acrescentar, remover e con�gurar elementos de nosso cenário, podemos testar toda a movimentação básica, no padrão comum de jogos FPS, com o uso do botão "Play in Viewport", ou ALT+F8, o que deve ser feito com a Viewport maximizada. Como um último passo no reconhecimento do ambiente, vamos alterar as propriedades do jogo, de forma a adicionar armamento e indicadores ao jogador. A con�guração é feita a partir do menu View..World Properties, com a escolha do tipo de jogo em Game Type, utilizando a opção Default Game Type, como UTDeathmatch, na janela que se abrirá. Figura: Acréscimo de arma e indicadores. Fonte: O autor. Ao executar novamente o projeto, será possível andar pelo cenário criado e atirar nos elementos adicionados. Observe como os elementos de colisão, efeitos sonoros e indicadores visuais foram con�gurados sem grande esforço por parte do desenvolvedor do jogo. Criação de Terreno Uma pequena plataforma certamente não é o su�ciente para um jogo FPS. Logo, devemos nos preocupar com a criação de um cenário amplo, com boas possibilidades de movimentação, em que os terrenos criados no UDK tornam-se uma excelente opção. Vamos iniciar um novo projeto e remover a plataforma e o cubo padrão. Com o ambiente livre, o próximo passo será a criação de um terreno a partir da opção de menu Tools..New Terrain, sendo solicitadas, na janela que se abrirá, as con�gurações básicas, como posicionamento do início do terreno em termos de X, Y e Z, além do número de divisões que serão utilizadas em X e Y. O terreno é sempre modelado a partir de uma malha plana que sofre elevações em seus vértices, modi�cando a coordenada Z de forma localizada. Atenção! Aqui existe uma videoaula, acesso pelo conteúdo online Figura: Criação de terreno no UDK. Fonte: O autor. Você observará que o terreno não �cará bem localizado em relação aos limites de visualização,sendo necessário reposicioná-lo. Pode ser necessário modi�car a abertura e o posicionamento da câmera, o que é feito facilmente com o uso das teclas apresentadas a seguir. Teclas de abertura e modificação da câmera Q Diminui a elevação da câmera. E Aumenta a elevação da câmera. W Aproxima a câmera. S Afasta a câmera. A Movimenta a câmera. Para a esquerda. D Movimenta a câmera para a direita. Tabela 1 – Teclas de abertura e modificação da câmera. Fonte: O autor. Com a visualização ajustada para trabalhar o terreno e a translação deste para uma área que facilite seu manuseio, as alturas devem ser con�guradas com a utilização das ferramentas disponibilizadas pela opção Terrain Edit Mode, divisão Modes da Toolbar, também ativadas por meio da combinação de teclas SHIFT+F3. As elevações são obtidas clicando com o mouse, em conjunto com a tecla CTRL, sobre o terreno, isto depois de selecionar as opções Tool e Brush do painel de edição de terrenos. Figura: Seleção do modo de pintura e pincel 3D. Fonte: O autor. A opção Toogle Wireframe permitirá a visualização da malha do terreno, o que é um grande facilitador na fase de edição, e o aumento ou diminuição do detalhamento é controlado pelas opções de Tessellation. Lembre-se, porém, que o maior nível de detalhe sempre aumentará o processamento exigido. Figura: Configuração inicial de um terreno. Fonte: O autor. Aqui já podemos con�gurar o jogo para UTDeathmatch e experimentar o ambiente criado, clicando com o botão direito em qualquer local sobre o terreno e selecionando, no menu de contexto, a opção Play From Here. Com as alturas de�nidas, a próxima preocupação será a utilização de um material adequado, em substituição ao material padrão do UDK, o que será feito com o Content Browser e o Terrain Editor trabalhando de forma conjunta. A partir do pacote UDK Game, no Content Browser, �ltre os objetos disponíveis, marcando a opção "Materials", e clique sobre o material desejado, o qual �cará selecionado com uma borda amarela. Em seguida, volte ao Terrain Editor, clique com o botão direito na divisão HeightMap, e escolha "New Terrain Setup Layer from material (auto-create)". Figura: Aplicação de material ao terreno. Fonte: O autor. Agora vamos acrescentar elementos decorativos ao ambiente, o que é feito com a de�nição de uma camada de decoração, ou DecoLayer. Para criá-la você deve clicar com o botão direito em HeightMap, escolhendo a opção "New DecoLayer". Figura: Camada decorativa criada. Fonte: O autor. Em seguida selecionamos o objeto decorativo no Content Browser, escolhendo uma malha de árvore a partir do pacote UDKGame, com o uso do �ltro Static Mesh e busca por "tree". Figura: Seleção de árvore no Content Browser. Fonte: O autor. Estando com a DecoLayer criada e o objeto decorativo selecionado, o próximo passo é a associação entre os elementos, o que é feito por meio das propriedades do terreno, exibidas a partir da opção Properties do Terrain Editor. Entre as propriedades teremos a DecoLayer criada e devemos clicar em "Add New Item", sinal de adição verde, no atributo Decorations, e a seguir con�gurar a propriedade Factory como Static Mesh Component Factory. Com a fábrica selecionada, a propriedade Static Mesh estará disponível e a associação com o objeto selecionado será efetuada com o clique em "Use Selected Object in Content Browser", seta verde para a esquerda. Também devemos con�gurar Min Scale e Max Scale, para a de�nição dos limites de variação para as escalas, e Density, que determina a quantidade de árvores que será criada em cada unidade padrão de área selecionada. Figura: Configuração da camada decorativa. Fonte: O autor. Agora é só clicar em conjunto com a tecla CTRL sobre o mapa para de�nir as áreas que serão decoradas, da mesma forma que foi feito para a de�nição das alturas. Lembre-se de deixar a DecoLayer selecionada no editor de terrenos para completar a ação. Com o ambiente geral pronto, podemos incluir malhas pontuais, seguindo o padrão normal de arraste, para acréscimo de elementos a partir do Content Browser. Ao �nal do processo de criação devemos recompilar a iluminação, com o uso de Build..Build All, o que irá remover a mensagem "Lighting needs to be rebuilt". Figura: Cenário completo na Viewport de perspectiva. Fonte: O autor. Modelos e Materiais Uma pequena plataforma certamente não é o su�ciente para um jogo FPS. Logo, devemos nos preocupar com a criação de Para criar um jogo comercial são necessários elementos autorais. O uso de componentes do Unreal Tournament não seria permitido devido às questões relacionadas a direitos autorais. Uma forma simples de trabalhar com modelos próprios em meio ao UDK é a criação deles com o uso de ferramentas de modelagem como o 3DS Max. Comentário O processo de criação do modelo 3D não difere do padrão comum, mas deve haver uma preocupação com o número de polígonos utilizados, já que temos a renderização efetuada em tempo real durante o jogo. Existe, porém, um detalhe com relação à exportação para o UDK no que se refere à de�nição de colisão. Além da malha que será utilizada para de�nir o objeto, deverá existir uma segunda malha que envolva a primeira, de forma a de�nir o espaço de colisão com esse objeto, podendo ter formato similar a ele ou apenas envolvê-lo com menor detalhamento. Para que o UDK reconheça a segunda malha como espaço de colisão da primeira, durante o processo de importação ela deve usar o mesmo nome precedido de "UCX_", como Mesa e UCX_Mesa. Figura: Objeto criado no 3DS Max. Fonte: O autor. Seguidas as regras para a criação do objeto e do colisor, os dois devem ser selecionados no 3DS Max e exportados a partir da opção Export Selected, do menu principal, utilizando o formato ASCII Scene Exporter (ASE).Na janela que se abrirá deverá ser escolhido o diretório para gravação do arquivo e o formato ASE em Save as Type, além do preenchimento do nome para o novo arquivo (Mesa.ase). Figura: Exportação no formato ASE. Fonte: O autor. Será aberta uma janela com as opções a serem utilizadas no processo de exportação, quando manteremos o padrão utilizado pelo 3DS Max, mas precisando ser marcados, minimamente, com Mesh De�nition, Geometric e Shapes. Figura: Configuração da exportação para o arquivo ASE. Fonte: O autor. Com o conjunto de operações efetuadas termina o trabalho no 3DS Max e temos um arquivo com o objeto e o colisor exportados em formato compatível com o UDK. Retornando para o ambiente da Game Engine, abrimos o Content Browser e efetuamos a importação, com o clique sobre o botão Import, onde será aberta uma janela que permite a escolha de arquivos de diversos formatos, inclusive ASE, viabilizando a inclusão do arquivo Mesa.ase. Na janela seguinte, após a seleção do arquivo, devem ser de�nidos o pacote para o qual ocorrerá a importação e o nome do novo Asset. Utilizaremos o nome MeusAssets no atributo Package, gerando um novo pacote no projeto. Figura: Importação do objeto no UDK. Fonte: O autor. Atenção Podem ocorrer alguns avisos de possíveis erros no processo de importação, mas não se assuste. A maioria dos avisos refere-se a alguns elementos de convergência para as malhas e não impactarão na criação do jogo. Ao �nal do processo de importação teremos um novo pacote contendo o Asset importado, o qual já traz a colisão. Assim, ele pode ser arrastado para a cena e utilizado livremente, como qualquer outro elemento do tipo Static Mesh. Porém, não se esqueça de salvar o novo pacote, clicando com o botão direito e escolhendo salvar (CTRL+B). Embora o uso da segunda malha automatize a criação do colisor, a colisão também pode ser con�gurada clicando com o botão direito sobre a malha, no Content Browser, utilizando a opção Edit Using Static Mesh Editor, o que abrirá a janela de edição, por meio da qual podemos escolher a melhor opção de colisor a partir do menu Collision. Figura: Colisores no editor de malhas do UDK. Fonte: O autor. Além de escolher o tipo de colisor, você deve ativar a opçãoShow Collison na barra de ferramentas da janela, o que exibirá o colisor ao redor do objeto 3D. Embora os materiais também possam ser exportados pelo 3DS Max, ocorrem diferenças estruturais. Portanto, iremos criá- los diretamente no UDK, onde o processo é iniciado com a seleção de nosso pacote no Content Browser e o clique com o botão direito sobre a área de Assets, com a escolha da opção New Material no menu de contexto. O novo material será chamado de Madeira. O clique com o botão direito sobre o material e o uso da opção EditUsing Material Editor irão abrir o editor de materiais do UDK. Nele, é possível criar elementos de grande complexidade, em forma de diagramas, sendo dividido em cinco áreas principais: Atenção! Aqui existe uma videoaula, acesso pelo conteúdo online 1 Toolbox, com as funcionalidades globais 2 Preview, para a visualização do material. 3 Editor, apresentando o diagrama do material. 4 Material Expressions, para a de�nição de novos nós. 5 Properties, com as propriedades do nó corrente. Figura: Editor de materiais do UDK. Fonte: O autor. Vamos adicionar um nó do tipo Texture Sample, o que pode ser feito com o arraste a partir de Material Expressions ou clicando com o botão direito no Editor e escolhendo Texture, seguido de New Texture Sample. Comentário O clique e arraste sobre o Editor move toda a área de desenho, sendo necessário o uso de CTRL junto ao clique para posicionar os nós de forma mais organizada. Para dar continuidade à criação de nosso material iremos precisar de uma textura e iremos adicioná-la ao nosso pacote no Content Browser, clicando com o botão direito na área de Assets, escolhendo a opção Import e selecionando um dos formatos aceitos para texturas, como PNG, PSD ou TGA. Em seguida, devemos apenas localizar o arquivo com a textura e clicar no botão Abrir, nomeando o Asset como TexturaMadeira, já que o nome Madeira foi utilizado para o material. Apenas texturas cujas dimensões sejam expoentes da base 2, como 16, 32, 128 ou 1024, tanto para a largura quanto para a altura, podem ser utilizadas no UDK. Com o �m do processo de importação teremos o novo Asset presente em nosso pacote e devemos deixá-lo selecionado para efetuar o próximo passo na criação do material. Figura: Material, malha e textura no Content Browser. Fonte: O autor. Voltamos agora para o editor de materiais. Clicamos sobre o nó do tipo Texture Sample criado anteriormente e selecionamos TexturaMadeira para a propriedade Texture utilizando a utilização da seta verde presente ao lado da propriedade, acessível na divisão Properties. Agora é só conectar o nó de textura ao nó principal por meio do atributo Diffuse e nosso material estará completo, mesmo que de�nindo um exemplo simples, com uso de iluminação difusa, sem mapeamento UV, transparências, ou outros elementos mais avançados. Figura: Conexão dos nós de configuração do material. Fonte: O autor. Com o material de�nido podemos voltar para a cena, selecionar uma mesa que tenha sido instanciada e arrastar Madeira a partir do Content Browser até o objeto, de forma a aplicar o material automaticamente. Figura: Mesas com material aplicado sendo visualizadas durante o jogo. Fonte: O autor. Adicionando inimigos Embora já seja possível explorar nosso ambiente de jogo e atirar livremente nos obstáculos que foram adicionados à cena, ainda não podemos testar o combate. Agora, vamos de�nir alguns inimigos, de forma mecânica. Você deve observar em meio à cena a presença de um componente do tipo PlayerStart, que refere-se justamente ao início da execução de alguma ação no jogo, como o surgimento de um inimigo ou o posicionamento inicial do jogador. Caso não exista esse componente na cena, ele pode ser adicionado com o uso do clique com o botão direito no cenário, seguido de Add Actor e Add PlayerStart. Figura: Posicionamento do PlayerStart. Fonte: O autor. Os inimigos serão gerados na posição de�nida pelo PlayerStart. Logo, deverá ser um local que apresente alguma barreira, de forma a permitir uma criação com a possibilidade de ações furtivas, melhorando a qualidade do desa�o em termos gerais. Tendo escolhido um bom local, agora é só trabalhar com os comandos de Script, executando o jogo e pressionando a tecla T (Type) para abertura da linha de comandos. Nessa linha será escrito o comando AddBots 1, o que irá gerar os inimigos, um de cada vez, na posição do PlayerStart. Comentário É claro que o jogo não deverá exigir que sejam digitados comandos para a adição de inimigos, devendo ser efetuado um processo automatizado, apoiado em Triggers e uso do Kismet, mas este é um assunto que será apresentado na próxima aula. Atividade 1. Ao executar transformações lineares, a precisão das mudanças efetuadas pode tornar-se um problema, já que dispositivos de entrada como o mouse admitem uma resolução muito alta, di�cultando o ajuste �no. Uma solução encontrada é a utilização de auxiliares de precisão, localizadas na divisão Status Bar do UDK, que são denominados: a) Gizmos b) Assets c) Viewports d) Brushes e) Snaps 2. Na criação de um terreno é interessante adicionar alguns elementos decorativos, como árvores. Para iniciar esse processo devemos: a) Acrescentar uma malha de árvore como material do terreno. b) Adicionar uma DecoLayer no editor de terrenos. c) Editar o terreno no SpeedTree Modeler. d) Deixar o terreno plano. e) Utilizar Assets de sementes e deixar as árvores crescerem na execução do jogo. 3. O uso de UDK permite a de�nição de jogos do tipo FPS com a simples escolha do tipo de jogo como UTDeathMatch, ou opção similar. São adicionados a malha do personagem do jogador, incluindo armamentos, e os elementos de HUD, mas ainda falta a geração dos inimigos, o que pode ser feito a partir do comando: a) SpamBots b) AddEnemy c) AddBots d) GenerateBot e) SpamEnemy Notas Bones1 Referências COPLE, D. Desenvolvimento de Jogos II. Rio de Janeiro: SESES, 2019. DUNN, F.;PARBERRY, I. 3D Math Primer for Graphics and Game Development. Texas: Wordware Publishing, Inc., 2002. MISHRA, P. SHRAWANKAR, U. Comparison between Famous Game Engines and Eminent Games. IJIMAI. V., n.1, Espanha, 2016. SHOLLER G B ild G ith UDK Bi i h P kt P bli hi 2013 SHOLLER, G. Build a Game with UDK. Birmingham: Packt Publishing 2013. THORN, A. UDK Game Development. Boston: Course Technology,2012. Próxima aula De�nição de interatividade com Triggers e Kismet; Componentes complementares para FPS no UDK; Construção de jogo completo no UDK. Explore mais Consulte o livro sobre UDK (Capítulos 1 a 3): THORNE, A. UDK Game Development, no Google Books.
Compartilhar