Escolar Documentos
Profissional Documentos
Cultura Documentos
https://student.ulife.com.br/ContentPlayer/Index?lc=uy4Ru0c1rbtg%2bZ6D%2fcLmFw%3d%3d&l=o0iDOtLh81rsO9ClfYRYHQ%3d%3d&cd=B4… 1/16
12/12/2023, 13:08 Programação para jogos 3D
Introdução
Caro(a) estudante, começaremos esta unidade apresentando conceitos e
aplicações no ambiente de desenvolvimento de jogos. Esse será o alicerce
para construirmos o conhecimento proposto na disciplina. Nosso objetivo
principal é trabalhar o level design e a programação de elementos
relacionados, como non-player characters (NPCs), e construções de
trajetórias com algoritmos de busca. Assim, o conteúdo desta unidade
pretende apresentar os conceitos de uso de motores de jogos para a
implementação de jogos. As atividades propostas aqui serão focadas na
engine Unity, porém é importante que você, estudante, não se prenda a
uma única ferramenta. E, apesar de serem apresentados conceitos e
formas de aplicação na Unity, esses mesmos conceitos podem ser
aplicados em outras tecnologias de motores de jogos, como Unreal e Godot, considerando as adaptações necessárias. Inicialmente
serão apresentados os aspectos generalistas da engine Unity e a apresentação das principais ferramentas do ambiente de
desenvolvimento, incluindo formas de navegação e ferramentas visuais, diretórios, gerenciadores de arquivos e recursos, entre
outros. Após, será demonstrado um panorama sobre a programação em Unity adotando a linguagem C#. Também serão focadas
boas práticas de organização de projeto e um panorama inicial de construção de níveis e level design, tanto em ambientes
bidimensionais quanto tridimensionais, oferecendo um arcabouço tecnológico vasto o suficiente para a implementação de
diferentes tipos de jogos.
Bons estudos!
Há alguns anos era comum discutir se a melhor abordagem para desenvolver jogos era desenvolver a própria engine ou utilizar engines de
terceiros. Atualmente, é muito comum a segunda opção, em que podem ser citadas Unity, Unreal, Godot, Construct, Game Maker, entre
outras. De fato, é bastante raro verificar algum estúdio de desenvolvimento de jogos que desenvolva a própria engine, pois esta consiste em
uma base tecnológica tão complexa de desenvolver quanto o próprio jogo. Dado esse contexto, abordaremos os conceitos da disciplina e
mostraremos possíveis aplicações por meio da game engine Unity. Menard e Wagstaff (2014, p. 6) afirmam que:
Com uma ideia melhor de porque as pessoas gostam de jogar, vamos considerar as implicações. Supondo que você não tenha uma equipe de cinquenta
artistas e dois anos para produzir seu jogo, você terá que tomar algumas decisões de design inteligentes, para permitir uma boa chance de sucesso. Enredo,
arte conceitual, interação e, até certo ponto, funcionalidade podem continuar independentemente do motor de jogo. Em algum momento, no entanto, você
encontrará essa tecnologia, independentemente de quantas horas de trabalho você alocou para os ativos de arte, porém esses não permitirão realizar tudo o
que você pode imaginar. A parte mais difícil para o artista é definir o que pode ser sacrificado. Na fase de design, com alguma premeditação, você pode
tornar o processo menos doloroso, conforme você visualiza os locais intrigantes e as soluções divertidas.
Essas aplicações, porém, podem ser feitas em outras ferramentas e engines, pois não há uma tecnologia absoluta na indústria de jogos,
além de existir a possibilidade de mudanças nas tecnologias vigentes.
https://student.ulife.com.br/ContentPlayer/Index?lc=uy4Ru0c1rbtg%2bZ6D%2fcLmFw%3d%3d&l=o0iDOtLh81rsO9ClfYRYHQ%3d%3d&cd=B4… 2/16
12/12/2023, 13:08 Programação para jogos 3D
(NPCs), level design e algoritmos de busca (KYAW, 2013).
Você sabia?
A Unity pode ser obtida gratuitamente no endereço
https://unity3d.com/get-unity/download
(https://unity3d.com/get-unity/download).
Apesar de ser gratuita, o desenvolvedor que alcançar uma determina receita anual em vendas deve pagar um valor para os donos da
ferramenta, porém esse valor de receita é relativamente elevado, ou seja, só existirão custos com a ferramenta na minoria dos projetos,
aqueles que de fato alcançarem um resultado comercial expressivo. Além disso, o uso da ferramenta para estudo individual é liberado.
Na tela de criação da Unity, é permitido adotar o modo 2D ou o 3D (SMITH; QUEIROZ, 2013). Para estudarmos sobre o ambiente de
desenvolvimento, adotaremos o modo 3D, que não possui praticamente nenhuma diferença em relação ao bidimensional — 2D. A figura
“Ambiente de desenvolvimento da engine Unity” apresenta esse ambiente de desenvolvimento. Inicialmente, é essencial compreender as
principais características da tecnologia, para depois implementarmos algoritmos de busca, design de níveis e NPCs.
#PraCegoVer: na imagem, é apresentado o ambiente visual de desenvolvimento da Unity. Na parte esquerda e superior, são listados todos
os objetos presentes na cena. Na parte central, estão situados os objetos. Na imagem, aparece um cubo, em que está aplicada a ferramenta
de translação com setas em diferentes direções, para que o objeto possa ser movimentado. Na parte da direita, são apresentadas as
propriedades do cubo, na ferramenta Inspector, que mostra Posição, Rotação e Escala, componentes de malha, de renderização e de
colisão.
A cena pode ser definida como um conjunto de objetos que delimitam o contexto atual do jogo, que pode ser uma fase específica ou um
menu, por exemplo. Essa organização não é algo exclusivo da ferramenta, mas é uma estrutura geralmente usada em jogos, denominada
grafo de cena. Na cena, há uma hierarquização dos objetos, ou seja, alguns podem ser hierarquicamente dependentes de outros. Essa
organização facilita o controle dos objetos e das animações.
Um exemplo de hierarquia é na constituição do corpo de um humanoide.
https://student.ulife.com.br/ContentPlayer/Index?lc=uy4Ru0c1rbtg%2bZ6D%2fcLmFw%3d%3d&l=o0iDOtLh81rsO9ClfYRYHQ%3d%3d&cd=B4… 3/16
12/12/2023, 13:08 Programação para jogos 3D
Braço
Mão
Dedos
A mão, por sua vez, terá cinco objetos dependentes, sendo estes cada um dos dedos.
Mais ao centro é possível observar visualmente os objetos presentes na cena. Esse editor visual é essencial para a construção do level
design em um jogo, e, por ele, é possível posicionar objetos e construir a cena de acordo com o objetivo do desenvolvedor. Cada objeto
selecionado na cena possui propriedades. No caso da imagem, está selecionado um cubo. Ao lado da cena visual, na parte direita do
ambiente, existe o elemento Inspector, que tem o objetivo de apresentar as propriedades e características presentes em qualquer objeto do
projeto. Essas propriedades podem variar e são denominadas de componentes. No caso da Unity, o primeiro componente exibido é o
Transform (SMITH; QUEIROZ, 2013), que exibe posição, tamanho (escala) e o ângulo de rotação. Em outras engines as nomenclaturas e
divisões podem ter variações, mas, em geral, as partes dos projetos são divididas em objetos e estes possuem propriedades, algo bastante
similar ao conceito de instâncias de objetos e atributos em programação orientada a objetos.
Abaixo da parte visual da cena estão os elementos de organização do projeto. Na esquerda, são listados os assets, ou seja, todos os objetos
que podem ou não estar presentes na cena. Esses elementos não são somente visuais, podem ser também scripts de programação ou,
ainda, elementos de áudio. Na parte inferir central, é possível visualizar os objetos em mais detalhes, inclusive sendo possível selecioná-los e
verificar suas propriedades no Inspector. Você deve estar atento a essa organização, pois é um padrão usualmente adotado no
desenvolvimento de jogos, não estando atrelado a somente uma ferramenta específica.
https://student.ulife.com.br/ContentPlayer/Index?lc=uy4Ru0c1rbtg%2bZ6D%2fcLmFw%3d%3d&l=o0iDOtLh81rsO9ClfYRYHQ%3d%3d&cd=B4… 4/16
12/12/2023, 13:08 Programação para jogos 3D
realização dessas operações, mas é essencial que você, estudante, compreenda que as movimentações, translações e escalas dos objetos
ocorrem essencialmente por cálculos geométricos. Na figura “Ferramenta de rotação na Unity” é exibida essa ferramenta, que pode ser
utilizada de forma visual, sem a necessidade de programação.
#PraCegoVer: a figura mostra um cubo dentro da ferramenta de representação visual da Unity com a ferramenta de rotação aplicada. Com
essa ferramenta, é possível alterar o ângulo de rotação do objeto com uma considerável precisão.
Antes de aprofundar a utilização da engine, é sugerido que sejam exercitadas essas operações básicas, para que você possa facilmente
aplicar as alterações necessárias e construir um level design adequado.
Vamos Praticar!
Você foi designado para definir a engine a ser utilizada no próximo projeto do
estúdio em que está atuando. Pelo escopo do projeto, você acredita que a Unity é
a melhor opção. Escreva no mínimo dois parágrafos argumentando os motivos de
a engine ser mais adequada para o projeto em questão.
Trabalhar com programação em uma game engine, apesar de ter as suas particularidades, é uma atividade que possui grande relação com a
programação de outros tipos de softwares. Para programar um jogo, é necessário conhecer os aspectos básicos de programação, como os
elencados a seguir.
Declaração de variáveis.
https://student.ulife.com.br/ContentPlayer/Index?lc=uy4Ru0c1rbtg%2bZ6D%2fcLmFw%3d%3d&l=o0iDOtLh81rsO9ClfYRYHQ%3d%3d&cd=B4… 5/16
12/12/2023, 13:08 Programação para jogos 3D
Utilização de procedimentos, funções.
Orientação a objetos.
Estrutura de dados.
A forma de aplicar a programação, naturalmente, terá uma relação direta com a parte visual do projeto, portanto o programador deve estar
atendo para ambos os aspectos e contextos, tanto o código quanto a parte visual.
#PraCegoVer: o código fonte mostra um script base da Unity, em que são adicionadas as bibliotecas Collections e Unity Engine. Há uma
classe chamada ControleCubo e dentro dela dois métodos: Start e Update.
1
Bibliotecas
https://student.ulife.com.br/ContentPlayer/Index?lc=uy4Ru0c1rbtg%2bZ6D%2fcLmFw%3d%3d&l=o0iDOtLh81rsO9ClfYRYHQ%3d%3d&cd=B4… 6/16
12/12/2023, 13:08 Programação para jogos 3D
Primeiramente, no cabeçalho são determinadas as bibliotecas utilizadas. Com o aprofundamento dos estudos da disciplina, é possível que seja
necessário incluir mais bibliotecas, especialmente para implementar algoritmos de busca (KYAW, 2013).
2
ControleCubo
Depois, observa-se a estruturação de uma classe chamada ControleCubo. Cada script de programação criado da Unity terá uma classe, isto é,
locais em que serão estruturados os comandos e ações.
3
MonoBehaviour
Ao lado do ControleCubo, observa-se o comando: MonoBehaviour, uma estrutura nativa da Unity, necessária para relacionar um script de
programação a um objeto ou a um personagem no jogo.
Aqui, o MonoBehavaiour está sendo herdado por ControleCubo, ou seja, todas as suas propriedades agora fazem parte também do
ControleCubo. O MonoBehaviour, como vimos é nativo da Unity, sendo necessário para relacionar um script de programação a um objeto no
jogo — que pode ser um simples cubo, como o exemplo aqui apresentando —, ou a um personagem de jogo, que é um objeto completo.
Dentro da estrutura da classe são elencados dois métodos: Start() e Update(). Em linhas gerais, todos os comandos de programação estarão
nos métodos, inclusive a implementação dos algoritmos de busca.
O método Start() tem a característica de ser executado apenas uma vez, quando o objeto a qual pertence é
Start()
iniciado. Ele funciona basicamente como um inicializador do objeto.
O método Update() é diferente. Nele, todos os comandos são chamados constantemente enquanto o objeto
Update()
ao qual pertence estiver ativo, e novamente essa característica não é exclusiva da Unity.
Complementando, é necessário compreender que os jogos funcionam de forma cíclica dentro de uma estrutura chamada loop principal, na
qual é feita a leitura cíclica de todos os objetos do jogo. A seguir, um exemplo de uma possível implementação do script, representada na
figura “Leitura do teclado para translação”.
https://student.ulife.com.br/ContentPlayer/Index?lc=uy4Ru0c1rbtg%2bZ6D%2fcLmFw%3d%3d&l=o0iDOtLh81rsO9ClfYRYHQ%3d%3d&cd=B4… 7/16
12/12/2023, 13:08 Programação para jogos 3D
#PraCegoVer: no script é declarada uma variável chamada Velocidade, que deve determinar a velocidade de movimento do objeto. O
método Start sorteia a velocidade entre 5 e 10, e no método Update é verificada a leitura da tecla W, em que ocorre uma translação de
acordo com a variável velocidade.
Nesse exemplo, dois aspectos são relevantes: primeiro, a variável velocidade, que poderia ter iniciado com um valor fixo, apresenta um
sorteio para fazer a atribuição de sua intensidade. Esse sorteio ocorre somente uma vez e necessariamente deve estar em um método,
portanto o uso do Start() é necessário. Essa variabilidade pode ser interessante para definir a velocidade de diferentes NPCs que aparecem
em conjunto em uma mesma cena, pois tende a contribuir para que as movimentações fiquem mais orgânicas e menos robotizadas. O
segundo aspecto relevante é o uso do Update(). Ao pressionar a tecla “W”, o objeto cubo deve se deslocar no eixo Z, que em geral significará
a profundidade no plano 3D. Essa verificação da tecla precisa estar em loop, sendo feita a todo momento, caso contrário, não é possível
verificar a interação do jogador. Uma possível variante do código seria o exemplo da figura “Translação com valor fixo de velocidade”, no qual
a variável de velocidade não é sorteada, mas definida pelo desenvolvedor. Por ser uma variável pública, ela pode inclusive ser definida no
editor visual, atividade que não necessariamente deve ser realizada pelo programador.
https://student.ulife.com.br/ContentPlayer/Index?lc=uy4Ru0c1rbtg%2bZ6D%2fcLmFw%3d%3d&l=o0iDOtLh81rsO9ClfYRYHQ%3d%3d&cd=B4… 8/16
12/12/2023, 13:08 Programação para jogos 3D
#PraCegoVer: a figura mostra um script de programação em que a partir da verificação da tecla W é aplicado um movimento de translação
no eixo Z, sem considerar um sorteio para essa variável, mas com valor fixo.
Parte do seu papel, estudante, a partir do uso das estruturas de engine, é fazer esse tipo de avaliação, considerando quando definir ações
em loop ou não.
Você o conhece?
Chris Sawyer é um dos mais famosos desenvolvedores de jogos da indústria, tendo atuado como
programador e designer do Roller Coaster Tycoon, um título de expressivo sucesso nos anos 1990 e que
até hoje possui sequências em diversas plataformas, como consoles, mobile e PC. Saiba mais sobre esse
icônico desenvolvedor de jogo.
Acesse ( http://www.chrissawyergames.com/)
As variáveis dos scripts C# da Unity podem ser públicas (public) ou privadas (private). Sendo públicas, elas podem ser alteradas facilmente
pelo Inspector, de modo visual. É uma boa prática manter públicas somente variáveis que precisam ser alteradas visualmente ou que devem
ser acessadas por outros scripts.
#PraCegoVer: as propriedades dos objetos são mostradas na ferramenta Inspector dentro da Unity. A imagem mostra as propriedades do
cubo, tendo o script de programação como uma das propriedades.
Conforme apresentado anteriormente, o Inspector apresenta todos os componentes de um objeto, assim, o script será também um
componente. Para ser executado, o script deve estar associado a um objeto, caso contrário seus comandos não alterarão a dinâmica do jogo.
Um objeto pode possuir mais de um script. Pode, por exemplo, ter um script para controle de movimento, de forma similar ao ControleCubo e
https://student.ulife.com.br/ContentPlayer/Index?lc=uy4Ru0c1rbtg%2bZ6D%2fcLmFw%3d%3d&l=o0iDOtLh81rsO9ClfYRYHQ%3d%3d&cd=B4… 9/16
12/12/2023, 13:08 Programação para jogos 3D
outro apenas para aplicar algoritmos de busca. Essa organização e estruturação é definida e projetada pelo programador.
Por fim, o ambiente de programação na Unity não é a ferramenta em si, mas um programa auxiliar que será executado em paralelo com a
engine. A Unity possui um programa nativo para auxiliar na programação, porém é bastante comum a utilização do Microsoft Visual Studio,
vastamente utilizado para a programação em C#.
Você sabia?
A versão Community do Visual Studio pode ser obtida gratuitamente
em https://visualstudio.microsoft.com/pt-br/vs/community/
(https://visualstudio.microsoft.com/pt-br/vs/community/).
Para associar o Visual Studio à Unity basta acessar a opção Edit seguida de Preferences e External tools. Depois, selecionar o Visual Studio
no campo External script editor.
Assim como em projetos mais tradicionais na área de tecnologia, a organização dos conteúdos em um projeto de jogos é essencial. Por meio
dela, é possível não perder produtividade com a escala do projeto, o que pode ser um fator determinante para sua conclusão. Da mesma
forma, para atender o escopo desta disciplina, é necessária uma variabilidade de recursos, considerando a implementação de NPCs que
utilizam algoritmos de busca. Assim, boas práticas de organização do projeto são relevantes.
#PraCegoVer: na imagem, são mostrados os diretórios de organização da Unity, sendo exibidas as pastas Animations, Materials, Mesh,
Prefab, Scene e Textures. Na parte da esquerda as pastas são exibidas em formato de lista e com a hierarquia demostrada, sendo os
subdiretórios situados mais à direita.
https://student.ulife.com.br/ContentPlayer/Index?lc=uy4Ru0c1rbtg%2bZ6D%2fcLmFw%3d%3d&l=o0iDOtLh81rsO9ClfYRYHQ%3d%3d&cd=B… 10/16
12/12/2023, 13:08 Programação para jogos 3D
Todos estão escritos com letra maiúscula, por exemplo. Esse não é o único padrão possível, mas é uma boa prática manter a
homogeneidade no projeto. Além da questão de escrita, é importante observar a hierarquia dos diretórios. No caso da imagem, há um
diretório Personagens e vários subdiretórios, um para cada personagem. Cada diretório contém a totalidade dos recursos dos personagens,
incluindo scripts, efeitos sonoros, texturas, modelos 3D e animações. Não é uma boa prática separar um diretório exclusivo para todos os
scripts, ou para todas as texturas ou animações. O mais adequado é segmentar pelo objeto, já que as engines são capazes de agrupar toda
essa variabilidade de elementos em uma única entidade, que inclusive pode ser exportada para outros projetos e contextos.
#PraCegoVer: a imagem mostra, além de um objeto básico, que é o cubo, um modelo 3D de guerreiro com espada, nas cores marrom,
amarelo e azul e um efeito de iluminação não muito acentuado no plano 3D.
Todos os diretórios existentes no projeto também estão no sistema operacional. Assim, basta inserir os modelos e as animações nesses
diretórios para carregá-los no projeto. Apesar disso, o aspecto visual desses objetos pode variar, principalmente em vista da iluminação.
Existem basicamente dois tipos de luzes nas engines: estáticas e dinâmicas.
Estáticas São aplicadas uma única vez e não alteram os objetos em tempo real.
https://student.ulife.com.br/ContentPlayer/Index?lc=uy4Ru0c1rbtg%2bZ6D%2fcLmFw%3d%3d&l=o0iDOtLh81rsO9ClfYRYHQ%3d%3d&cd=B… 11/16
12/12/2023, 13:08 Programação para jogos 3D
Iluminação e uso de modelos adequados são essenciais para um bom desenvolvimento de level design, e esses elementos devem ser
aplicados em conjunto com algoritmos de busca para a implementação de elementos complexos, inclusive NPCs.
Vamos Praticar!
Você possui um orçamento limitado e um prazo curto para realização de um projeto de jogos,
porém, o seu gestor acredita que todo o conteúdo do projeto deve ser autoral. Pesquisando
algumas alternativas, você encontra lojas de recursos, incluindo a Asset Store, e tentará
argumentar sobre os benefícios de usar tais recursos sem perder a originalidade do projeto.
Escreva ao menos dois parágrafos argumentando sobre o uso desses recursos ser
potencialmente benéfico.
Após estudarmos um panorama sobre o ambiente de desenvolvimento da Unity, suas características de programação e seu sistema de
importação de arquivos, iniciaremos o estudo das diretrizes para implementar o design de níveis em formato bidimensional e tridimensional.
#PraCegoVer: a imagem mostra um ambiente de cenário 2D que remete ao estilo RPG, com um balão preto na parte superior com a
mensagem “Você encontrou uma poção”. Abaixo são exibidas árvores e casas.
A iluminação do ambiente acaba não sendo aplicada em muitos cenários 2D, dado que a cor já é definida no desenho original e não deve ser
alterada, ao menos em parte significativa do design de níveis bidimensionais. Por não existir um eixo Z (profundidade), uma movimentação
de personagem poderia ser trabalhada nos eixos X e Y. No caso do código apresentado na figura “Translação de objeto no eixo X”, a
translação é aplicada somente no eixo X.
https://student.ulife.com.br/ContentPlayer/Index?lc=uy4Ru0c1rbtg%2bZ6D%2fcLmFw%3d%3d&l=o0iDOtLh81rsO9ClfYRYHQ%3d%3d&cd=B… 12/16
12/12/2023, 13:08 Programação para jogos 3D
#PraCegoVer: o script acima utiliza o comando Translate para movimentar o objeto, porém aplica somente no eixo X essa translação.
Usualmente, o movimento no eixo X será aplicado na horizontal.
Um aspecto a ser observado é que, mesmo não tendo profundidade, os objetos acabam ficando sobrepostos, portanto, o desenvolvedor deve
estar atento para definir quais elementos são renderizados de forma prioritária nas camadas.
Você sabia?
Além da Unity, uma das engines mais famosas do mercado é a Unreal. Há alguns anos, a Unreal
possuía um custo extremamente elevado e era utilizada por poucos estúdios. Atualmente, qualquer
pessoa pode adquirir a engine gratuitamente e utilizá-la profissionalmente com condições comerciais
bastante favoráveis e viáveis. Para mais informações sobre a Unreal Engine,
acesse: https://forums.unrealengine.com/international/latin-america/1360917-tutoriais-em-pt-
br-sobre-unreal-engine-4 (https://forums.unrealengine.com/international/latin-
america/1360917-tutoriais-em-pt-br-sobre-unreal-engine-4)
A diferenciação entre 2D e 3D não deve ser pelo ponto de vista do jogador, mas pelo modo como a engine está operando a renderização.
Nesse sentido, Mendes et al. (2019, p. 245) afirmam que:
Existem duas formas básicas de projeção: perspectiva e ortográfica. Na projeção perspectiva, há um (ou mais) pontos de fuga onde os raios de projeção se
concentram. Os efeitos decorrentes deste tipo de projeção são vários, como por exemplo a alteração do tamanho de objetos projetados na tela de acordo
com sua distância em relação à câmera e também o efeito paralaxe. Na projeção ortográfica, os raios de projeção são paralelos, removendo o efeito de
alteração de tamanho e paralaxe. Jogos 2D utilizam em geral uma projeção ortográfica (emulando o efeito paralaxe com deslocamento de planos
sobrepostos em velocidades diferentes), enquanto jogos em primeira pessoa usam projeção perspectiva.
Para atingir o objetivo no desenvolvimento de um projeto, não necessariamente o jogo deve ser 3D, pois, dependendo do caso, a experiência
atingida será mais satisfatória no âmbito bidimensional. Essa é uma avaliação importante no design de um jogo.
https://student.ulife.com.br/ContentPlayer/Index?lc=uy4Ru0c1rbtg%2bZ6D%2fcLmFw%3d%3d&l=o0iDOtLh81rsO9ClfYRYHQ%3d%3d&cd=B… 13/16
12/12/2023, 13:08 Programação para jogos 3D
No caso de ambientes 3D, o desenvolvedor deve estar atento a não deixar os objetos muito alinhados. É preciso criar um pouco de
variabilidade nas rotações, posições e escalas de objetos, além de seguir um estilo visual coerente. Na figura “Cenário Cartoon Buildings
(Asset Store)”, é adotado um visual estilo cartum. Os modelos não estão muito alinhados, dando uma impressão de composição orgânica.
#PraCegoVer: a imagem mostra um cenário 3D, em estilo cartum, com três construções: uma garagem, uma casa com antena parabólica e
um posto de gasolina.
No script apresentado na figura a seguir, “Alteração de escala do objeto entre 1 e 5”, é aplicada uma variabilidade com grau de aleatoriedade
no objeto, fazendo-o escalar nas dimensões X, Y e Z em um valor que varia entre 1 e 5. Para esse feito visual ficar adequado, naturalmente o
objeto a ser escalado deve ser adequado, sem apresentar distorções demasiadas na malha e na textura.
#PraCegoVer: o script modifica o tamanho dos objetos, ou seja, a escala, com o comando localScale. Os eixos X, Y e Z são modificados de
acordo com um sorteio individual para cada eixo com o valor entre 1 e 5.
O script ainda pode variar, como apresentado na figura seguinte, “Alteração de escala do objeto para todos os eixos”, aplicando uma mesma
escala em todos os eixos.
https://student.ulife.com.br/ContentPlayer/Index?lc=uy4Ru0c1rbtg%2bZ6D%2fcLmFw%3d%3d&l=o0iDOtLh81rsO9ClfYRYHQ%3d%3d&cd=B… 14/16
12/12/2023, 13:08 Programação para jogos 3D
#PraCegoVer: o script modifica o tamanho dos objetos, ou seja, a escala, com o comando localScale. Os eixos X, Y e Z são modificados de
acordo com a variável scaleObj, que é sorteada entre 1 e o valor de uma segunda variável chamada maxScale.
A partir dos objetos definidos, o level design pode reaproveitar diversos modelos, posicionando-os com variabilidade de escala e rotação,
criando uma ilusão de variabilidade. Isso é uma técnica bastante comum em jogos e deve ser aplicada no contexto de desenvolvimento de
jogos 3D, visando reaproveitamento e agilidade no desenvolvimento.
Acompanhe o caso a seguir, em que o conhecimento em diferentes gêneros e estilos de jogos, além do domínio tecnológico, é essencial para
o direcionamento do projeto.
Caso
Em um projeto, o desenvolvedor de jogos Mark recebeu um valor bastante limitado em recursos financeiros e
um prazo relativamente curto para entregar um RPG, 8 meses. A demanda do cliente era um tanto confusa:
queria algo parecido com God of War, com características do jogo Diablo, mas que fosse tão divertido quanto
Pokémon.
Mark ouve com atenção a demanda e explica ao cliente que é muito caro e demorado fazer algo no nível de
God of War, especialmente com uma equipe reduzida e pouco orçamento. Apesar disso, o projeto pode ser
adaptado e o objetivo do cliente pode ser atingido.
Já que o cliente cita Pokémon como um exemplo, Mark utiliza esse ponto de vista como argumento e define o
escopo do projeto como um jogo 2D mais voltado ao estilo casual, o que viabiliza o projeto. Ele decide utilizar
o modo 2D da Unity para a implementação. Mesmo tendo recursos mais poderosos, o objetivo do
desenvolvedor deve ser cumprir o solicitado pelo cliente ou objetivo do projeto.
Por vezes, a definição do estilo de jogo, apesar de parecer ser mais adequada com o direcionamento do desenvolvedor, pode acabar por ter
contribuições relevantes por pessoas de fora da equipe. Nesse contexto, saber ouvir é uma importante habilidade para o desenvolvedor de
jogos.
https://student.ulife.com.br/ContentPlayer/Index?lc=uy4Ru0c1rbtg%2bZ6D%2fcLmFw%3d%3d&l=o0iDOtLh81rsO9ClfYRYHQ%3d%3d&cd=B… 15/16
12/12/2023, 13:08 Programação para jogos 3D
Conclusão
Concluímos a unidade e nela fomos capazes de aprofundar conhecimentos em motores de jogos
e construir exemplos de aplicação focados na engine Unity. Compreendemos o ambiente visual e
de programação, desenvolvendo scripts de programação. Realizamos a importação de objetos e
estudamos diretrizes iniciais de level design nos âmbitos 2D e 3D.
Nesta unidade, você teve a oportunidade de:
Referências
KYAW, A. et al. Unity 4. VIII Game AI Programming. United Kingdom: Packt Publishing, 2013.
MENARD, M.; WAGSTAFF, B. Game Development with Unity. Boston, USA: Cengage
Learning, 2014.
MENDES, D. D. M. et al. Processo de design de fases por lógica booleana para geração
procedural de conteúdos em jogos digitais. Proceedings of SBGames, Rio de Janeiro, out.
2019. Disponível em:
https://www.sbgames.org/sbgames2019/files/papers/ArtesDesignFull/198119.pdf
(https://www.sbgames.org/sbgames2019/files/papers/ArtesDesignFull/198119.pdf). Acesso
em: 10 dez. 2020.
SMITH, M.; QUEIROZ, C. Unity 4.VIII Cookbook. United Kingdom: Packt Publishing, 2013.
https://student.ulife.com.br/ContentPlayer/Index?lc=uy4Ru0c1rbtg%2bZ6D%2fcLmFw%3d%3d&l=o0iDOtLh81rsO9ClfYRYHQ%3d%3d&cd=B… 16/16