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/19
12/12/2023, 13:09 Programação para jogos 3D
Introdução
Caro(a) estudante, chegamos à parte final da nossa disciplina, e agora
está na hora de aplicarmos os conhecimentos construídos de forma mais
direta no desenvolvimento de jogos.
O aprendizado na área de jogos digitais, apesar de ter a teoria como
importante base, essencialmente, é bastante prático. De nada serve um
desenvolvedor — seja programador, artista, game designer —, dominar os
conceitos teóricos e não ter experiência prática, juntamente com a
construção de um portfólio. Ao longo da unidade, você deve construir
exemplos de forma autônoma com alguma engine. Durante a disciplina, a
maioria dos exemplos apresentados ocorrem através da Unity, mas os
conceitos trabalhados podem ser aplicados em qualquer tecnologia, assim,
você pode realizar implementações na engine que desejar, seja Unity, Unreal, Godot, Construct, Game Maker, entre outras.
Nesta unidade, focaremos na implementação de non-player characters (NPCs) e sua relação direta com algoritmos de busca, que
visam definir seu comportamento, seja como NPCs genéricos, aliados, inimigos, entre outros. Aplicaremos diferentes algoritmos e
técnicas para construir experiências imersivas e diferenciadas no contexto de jogos digitais, sempre relacionando as
implementações com algumas das tecnologias mais avançadas disponíveis na indústria de jogos e considerando as principais
plataformas de publicação e comercialização do âmbito do entretenimento digital.
Bons estudos!
4.1 NPCs
simples
Em geral, quando se pensa na qualidade de um personagem não controlável, é comum que surja a ideia de que quanto mais complexo esse
personagem for, melhor será a experiência do jogo. Isso não necessariamente é verdade. De fato, em alguns casos, é importante que uma
implementação com alta qualidade se apresente em um personagem não controlável (NPC), e é comum que essa implementação esteja
relacionada a algoritmos de busca (KYAW et al., 2013). Porém, a maioria dos personagens em jogos, inimigos, aliados ou personagens
neutros, apresentam o comportamento bastante simples. Viana et al. (2020, p. 87) afirmam que:
Importante ressaltar que no contexto dos jogos há dois tipos de personagens: os personagens jogáveis (PJ) e os personagens não jogáveis (NPCs). Ambos
são agentes no mundo aos quais estão inseridos. Devido ao seu caráter interativo, em geral, o PJ é o protagonista da história e quem promove as grandes
mudanças no mundo na qual está inserido.
Mesmo não sendo os agentes centrais das grandes mudanças que ocorrem no desenrolar de uma narrativa em um jogo, ao menos na
maioria dos casos, os NPCs têm papel crucial na construção da experiência, complementarmente ao colocado pelos autores Viana et al.
(2020) como personagens jogáveis.
Comportamento simples
É comum que inimigos em jogos de plataforma apenas patrulhem uma área caminhando
da esquerda para direita e da direta para a esquerda, ou até mesmo percorram um
caminho em direção ao personagem e se atirem em penhascos. Esse tipo de
https://student.ulife.com.br/ContentPlayer/Index?lc=uy4Ru0c1rbtg%2bZ6D%2fcLmFw%3d%3d&l=o0iDOtLh81rsO9ClfYRYHQ%3d%3d&cd=B4… 2/19
12/12/2023, 13:09 Programação para jogos 3D
comportamento é bastante simples e usado com frequência.
Comportamento elaborado
Mesmo comportamentos um pouco mais elaborados, como um boss (chefe) que apresente
três ou quatro movimentos padrão com certa variabilidade, podem ser implementados em
uma máquina de estados simples.
Ao contrário desses exemplos, alguns NPCs mais complexos exigem técnicas aprimoradas de implementação e acabam por demandar um
custo computacional maior.
Você sabia?
Existem diversas engines que fornecem possibilidades de implementação para facilitar o
desenvolvimento de um jogo. No caso da tecnologia Construct 3, existem comportamentos
predefinidos que podem facilitar a implementação de NPCs, como os comportamentos Sine
e Pathfinding. Para obter a Construct 3, utilizar os recursos e analisar ideias para
desenvolvimento de jogos 2D, acesse o seguinte endereço.
https://www.construct.net/ (https://www.construct.net/)
A figura “Movimentação para ponto específico do cenário” determina uma possível trajetória de NPC com certas limitações, mas que pode
atingir o objetivo pretendido no jogo.
#PraCegoVer: na imagem é apresentado o código de um script em C# que utiliza a biblioteca de inteligência artificial da Unity. É obtido o
componente de navegação do personagem e definido o local de deslocamento a partir de uma variável de posição com acesso público,
podendo ser alterado através do Inspector.
O script que utiliza o componente NavMeshAgent só funcionará se, naturalmente, o personagem possuir o componente NavMeshAgent e o
cenário apresentar uma malha de navegação definida.
https://student.ulife.com.br/ContentPlayer/Index?lc=uy4Ru0c1rbtg%2bZ6D%2fcLmFw%3d%3d&l=o0iDOtLh81rsO9ClfYRYHQ%3d%3d&cd=B4… 3/19
12/12/2023, 13:09 Programação para jogos 3D
#PraCegoVer: na imagem é apresentado o código de um script em C# que utiliza a biblioteca de inteligência artificial da Unity. É obtido o
componente de navegação do personagem e definido o local de deslocamento a partir de uma variável de posição com acesso público,
porém, a partir dessa variável é somado ou subtraído um valor que pode variar entre –5 e 5 para a posição determinada nos eixos X e Z,
enquanto o eixo Y não é alterado.
Essa variabilidade pode escalar a aplicação para diversos NPCs, inclusive para os que forem direcionados ao mesmo local (ou próximo),
pois, com a variação, o comportamento tende a ser mais orgânico e menos fixo aos olhos do jogador. Com essa variação, uma mesma cena
visitada pelo jogador diversas vezes terá variações o suficiente para se tornar interessante por mais tempo. A figura “Definição de
variabilidade por variáveis” pode definir outras possibilidades de controle.
https://student.ulife.com.br/ContentPlayer/Index?lc=uy4Ru0c1rbtg%2bZ6D%2fcLmFw%3d%3d&l=o0iDOtLh81rsO9ClfYRYHQ%3d%3d&cd=B4… 4/19
12/12/2023, 13:09 Programação para jogos 3D
#PraCegoVer: na imagem é apresentado o código de um script em C# que utiliza a biblioteca de inteligência artificial da Unity. É definido o
local de deslocamento a partir de uma variável de posição com acesso público, porém, a partir dessa variável é somado ou subtraído um
valor que pode mudar a partir de duas variáveis, que definirão o quanto podem variar os eixos X e Z.
É uma opção de game design tornar os comportamentos mais ou menos variados e orgânicos. Nem sempre é o ideal a ser adotado em um
jogo, mas essas variações tendem a colaborar com o reaproveitamento dos scripts.
Vamos Praticar!
Na implementação de um NPC, que faz parte do tutorial do jogo, ou seja, de um momento de
uma fase inicial em que o sucesso do jogador deve ser facilitado para que ele aprenda como
jogar, você foi designado para implementar um personagem NPC com comportamento limitado
e bastante simples. Escreva no mínimo dois parágrafos argumentando sobre o motivo de definir
trajetórias fixas e limitadas ser vantajoso no caso de um NPC em um contexto de tutorial dentro
de um jogo digital.
4.2 NPCs em
grupos
Quando personagens não controláveis precisam atuar em grupos, dependendo do contexto do jogo, isso pode afetar bastante a
complexidade da implementação.
Em um jogo que possua grupos de inimigos, por exemplo, esses grupos podem se deslocar para um ponto
Deslocamento
específico, que pode ser o ponto em que o jogador está.
Para que o deslocamento ocorra, precisam de algum critério para não colidir entre si e apresentar alguma
Colisão
variabilidade de movimento, ainda que o script e a programação de todos seja similar.
Por outro lado, a complexidade pode ser ainda maior: podem ser analisados quais inimigos estão em um mesmo grupo e como coordenar
ataques e ações a partir disso.
https://student.ulife.com.br/ContentPlayer/Index?lc=uy4Ru0c1rbtg%2bZ6D%2fcLmFw%3d%3d&l=o0iDOtLh81rsO9ClfYRYHQ%3d%3d&cd=B4… 5/19
12/12/2023, 13:09 Programação para jogos 3D
Alguns são focados em defesa.
Há várias outras possibilidades, mas, independentemente do contexto, todos devem conseguir fazer leituras do ambiente e dos demais
agentes presentes na cena.
#PraCegoVer: na imagem é apresentado o código de um script em C# que utiliza a biblioteca de inteligência artificial da Unity. Para
movimentar o personagem pelo sistema de navegação da Unity, é utilizada uma referência do tipo GameObject para obter informações do
jogador.
Para aplicar um mesmo comportamento em muitos personagens que tenham o jogador como referência, é desejável uma alteração na
posição através de um valor randômico, ou seja, com variabilidade definida por sorteio, como pode ser observado na figura “Movimentação
variada com o jogador como referência”.
https://student.ulife.com.br/ContentPlayer/Index?lc=uy4Ru0c1rbtg%2bZ6D%2fcLmFw%3d%3d&l=o0iDOtLh81rsO9ClfYRYHQ%3d%3d&cd=B4… 6/19
12/12/2023, 13:09 Programação para jogos 3D
#PraCegoVer: na imagem é apresentado o código de um script em C# que utiliza a biblioteca de inteligência artificial da Unity. Para
movimentar o personagem pelo sistema de navegação da Unity, é utilizada uma referência do tipo GameObject e são acrescidas, nas
posições X e Z, valores sorteados entre –20 e 20.
A complexidade pode ser ainda maior quando o personagem tiver diferentes pontos de referência. A partir daí diferentes abordagens podem
ser adotadas para construção do comportamento.
Você o conhece?
Christopher Kastensmidt é um norte-americano naturalizado brasileiro que atuou em diversos títulos de
jogos e como escritor de literatura fantástica. Christopher foi um dos precursores da indústria nacional.
Tendo atuado na Southlogic Studios, uma empresa de jogos digitais de Porto Alegre, fundada em 1996.
Christopher é o autor da série de livros A Bandeira do Elefante e da Arara, que pode ser visualizada no
link.
Acesse (https://www.eamb.org/brasil/)
A figura “Movimentação variada de diversos objetos como referência” apresenta diversos objetos como referência de movimento. Esses
objetos podem variar, sendo diversos personagens controláveis ou outros NPCs. A imagem foi dividida em duas partes.
https://student.ulife.com.br/ContentPlayer/Index?lc=uy4Ru0c1rbtg%2bZ6D%2fcLmFw%3d%3d&l=o0iDOtLh81rsO9ClfYRYHQ%3d%3d&cd=B4… 7/19
12/12/2023, 13:09 Programação para jogos 3D
#PraCegoVer: é apresentada a primeira parte do código de um script em C# que utiliza a biblioteca de inteligência artificial da Unity. Para
movimentar o personagem através do sistema de navegação da Unity, é utilizada uma referência do tipo GameObject para obter informações
do jogador e um array de GameObjects para obter referências de outros personagens. De acordo com uma variável de estado, a referência
de alvo é modificada.
#PraCegoVer: é apresentada a segunda parte do código de um script em C# que utiliza a biblioteca de inteligência artificial da Unity. Para
movimentar o personagem através do sistema de navegação da Unity, é utilizada uma referência do tipo GameObject para obter informações
do jogador e um array de GameObjects para obter referências de outros personagens. De acordo com uma variável de estado, a referência
de alvo é modificada.
Cada uma dessas aplicações pode ocorrer para construir a experiência de jogo projetada, e as referências adotadas não precisam
necessariamente ser outros personagens, podem ser objetos do cenário, por exemplo. No caso da Unity, a variável GameObject engloba
qualquer tipo de objeto, e isso também pode ser obtido em outras tecnologias, seguindo essa mesma lógica.
https://student.ulife.com.br/ContentPlayer/Index?lc=uy4Ru0c1rbtg%2bZ6D%2fcLmFw%3d%3d&l=o0iDOtLh81rsO9ClfYRYHQ%3d%3d&cd=B4… 8/19
12/12/2023, 13:09 Programação para jogos 3D
4.2.2 Critérios de escolha de algoritmos
A aplicação de árvores binárias no contexto da Unity pode ocorrer com variações para diferentes tipos de aplicações em necessidades em
cada tipo de jogo. É fundamental que uma implementação seja realizada na linguagem C#.
Você sabia?
Para aplicar árvores binárias no contexto de jogos e da engine Unity, não é
necessário realizar a implementação desde o início. É possível utilizar
estruturas aplicadas. Um exemplo é o recurso Binary Trees, da Asset Store da
Unity. Esse recurso pode ser obtido no link a seguir.
https://assetstore.unity.com/packages/tools/integration/binary-trees-
21652#content
(https://assetstore.unity.com/packages/tools/integration/binary-trees-
21652)
No contexto da Unity, nem todas as classes necessitam herdar MonoBehaviour. A implementação da árvore pode ocorrer em uma ou mais
classes sem essa herança, como apresentado no exemplo “Árvore binária de busca em C#”, na imagem seguinte dividida em quatro partes.
#PraCegoVer: é apresentada a primeira parte do código em C# de árvore de busca binária com duas classes: uma representando o nodo e
outra com as operações usuais de uma árvore binária (AB).
https://student.ulife.com.br/ContentPlayer/Index?lc=uy4Ru0c1rbtg%2bZ6D%2fcLmFw%3d%3d&l=o0iDOtLh81rsO9ClfYRYHQ%3d%3d&cd=B4… 9/19
12/12/2023, 13:09 Programação para jogos 3D
#PraCegoVer: é apresentada a segunda parte do código em C# de árvore de busca binária com duas classes: uma representando o nodo e
outra com as operações usuais de uma árvore binária (AB).
https://student.ulife.com.br/ContentPlayer/Index?lc=uy4Ru0c1rbtg%2bZ6D%2fcLmFw%3d%3d&l=o0iDOtLh81rsO9ClfYRYHQ%3d%3d&cd=B… 10/19
12/12/2023, 13:09 Programação para jogos 3D
#PraCegoVer: é apresentada a terceira parte do código em C# de árvore de busca binária com duas classes: uma representando o nodo e
outra com as operações usuais de uma árvore binária (AB).
#PraCegoVer: é apresentada a quarta parte do código em C# de árvore de busca binária com duas classes: uma representando o nodo e
outra com as operações usuais de uma árvore binária (AB).
https://student.ulife.com.br/ContentPlayer/Index?lc=uy4Ru0c1rbtg%2bZ6D%2fcLmFw%3d%3d&l=o0iDOtLh81rsO9ClfYRYHQ%3d%3d&cd=B… 11/19
12/12/2023, 13:09 Programação para jogos 3D
A partir da implementação da árvore, um objeto pode ser instanciado em uma classe que possua MonoBehaviour para ser utilizado
normalmente. Existem inúmeros recursos na Asset Store e até mesmo implementações nativas na Unity utilizando árvore binárias, mas
também há a possibilidade de o desenvolvedor precisar implementar a sua própria árvore.
4.3 NPCs
combativos
É comum encontrar personagens não controláveis (NPCs) em diferentes contextos e situações nos jogos digitais.
1
Comércio
Personagens que podem ser comerciantes com lojas em que é possível comprar e vender itens.
2
Ambiente
Personagens que apenas caminham com certo grau de aleatoriedade em alguma região e dão dicas ou conversam com o jogador sobre
assuntos sem utilidade prática, apenas para ambientar o jogo.
3
Batalha
Personagens combativos, que são aqueles inseridos no sistema de batalha do jogo, quando esse existir.
https://student.ulife.com.br/ContentPlayer/Index?lc=uy4Ru0c1rbtg%2bZ6D%2fcLmFw%3d%3d&l=o0iDOtLh81rsO9ClfYRYHQ%3d%3d&cd=B… 12/19
12/12/2023, 13:09 Programação para jogos 3D
Para esses NPCs combativos, os algoritmos de busca e formas de implementação podem ter algumas particularidades.
#PraCegoVer: na imagem é apresentado o código de um script em C# que verifica uma variável de vida do jogador. Ao verificar que o valor
de vida está menor que 10, é alterado o valor de uma variável booleana chamada “emPerigo” para verdadeiro. Essa variável é pública,
podendo ser acessada por objetos externos.
Naturalmente, os scripts de NPCs serão diferentes do script do jogador, dado que esses códigos serão aplicados em agentes diferentes no
jogo. Os aliados, por sua vez, devem referenciar o jogador para ter acesso ao seu estado e, se for o caso, modificar seu comportamento,
conforme apresentado na imagem “Comportamento defensivo de NPC”, dividida em duas partes.
#PraCegoVer: é apresentada a primeira parte do código de um script em C# que determina o movimento do personagem em relação ao
jogador. Caso perceba que o jogador está em perigo, determina sua posição próxima a ele. Caso não detecte perigo, patrulha em áreas mais
vastas.
https://student.ulife.com.br/ContentPlayer/Index?lc=uy4Ru0c1rbtg%2bZ6D%2fcLmFw%3d%3d&l=o0iDOtLh81rsO9ClfYRYHQ%3d%3d&cd=B… 13/19
12/12/2023, 13:09 Programação para jogos 3D
#PraCegoVer: é apresentada a segunda parte do código de um script em C# que determina o movimento do personagem em relação ao
jogador. Caso perceba que o jogador está em perigo, determina sua posição próxima a ele. Caso não detecte perigo, patrulha em áreas mais
vastas.
Considerando que, apesar de apresentar um comportamento autônomo, os NPCs aliados devem se guiar pela necessidade do jogador, é
essencial que esses agentes consigam obter informações acerca do estado do personagem controlável. Da mesma forma, o personagem
controlável deve fornecer informações de seu estado através de variáveis ou métodos de acesso público.
Implementação
Nesse sentido, a implementação é bastante parecida com os próprios inimigos na delimitação de um comportamento agressivo.
Definições
Observa-se as definições de alvo, independentemente de esses alvos serem inimigos ou aliados dentro do jogo.
Nesse sentido, o programador pode projetar uma estratégia de reaproveitamento de códigos tanto para aliados quanto para inimigos.
https://student.ulife.com.br/ContentPlayer/Index?lc=uy4Ru0c1rbtg%2bZ6D%2fcLmFw%3d%3d&l=o0iDOtLh81rsO9ClfYRYHQ%3d%3d&cd=B… 14/19
12/12/2023, 13:09 Programação para jogos 3D
#PraCegoVer: é apresentada a primeira parte do código de um script em C# que determina o comportamento de um NPC inimigo. Após
determinar o alvo para ataque, o NPC verifica a distância para o alvo e o ataca quando essa distância for menor que 10.
https://student.ulife.com.br/ContentPlayer/Index?lc=uy4Ru0c1rbtg%2bZ6D%2fcLmFw%3d%3d&l=o0iDOtLh81rsO9ClfYRYHQ%3d%3d&cd=B… 15/19
12/12/2023, 13:09 Programação para jogos 3D
#PraCegoVer: é apresentada a segunda parte do código de um script em C# que determina o comportamento de um NPC inimigo. Após
determinar o alvo para ataque, o NPC verifica a distância para o alvo e o ataca quando essa distância for menor que 10.
Analisar os diferentes tipos de alvo é uma possiblidade para criar NPCs com comportamentos mais avançados. No exemplo da figura
“Comportamento de NPC ofensivo”, o inimigo analisa o status de estar em perigo de todos os agentes disponíveis na cena e, caso encontre
alguém enfraquecido, determinará esse personagem como alvo. Quanto mais variabilidades como essa e mais critérios de escolha, mais
complexa se torna a implementação, mas ao mesmo tempo apresenta maior potencial de criar uma experiência interessante e desafiadora ao
jogador.
Vamos Praticar!
Em um RPG em terceira pessoa, a sua tarefa como parte da equipe de desenvolvimento de um
jogo é implementar o comportamento de diferentes NPCs. Para isso, você está autorizado a usar
soluções de terceiros, mesmo que tenham custos, para agilizar o processo. Você pode escolher
uma solução em fóruns ou qualquer loja de recursos de game assets, inclusive a Asset Store da
Unity. Escreva ao menos dois parágrafos justificando as razões de a solução de terceiros que
você escolheu ser a mais indicada.
4.4 NPCs
avançados
A implementação de NPCs avançados pode adotar diversas estratégias. Podem ser utilizadas árvores de comportamento (MULLER;
BITTENCOURT, 2014), o algoritmo A* (OSÓRIO et al., 2007), máquinas de estado (RABIN, 2016), técnicas de pathfinding variadas (SILVA;
VILLELA, 2016), entre outros. Dado esse leque de opções, o desenvolvedor deve escolher a abordagem que tenha um melhor custo-
benefício para o seu projeto.
No caso da implementação de um NPC, para definir qual técnica será utilizada, é feita a análise do jogo em
Análise do jogo
si e dos elementos de game design, como mecânicas e level design.
Além disso, é preciso analisar os recursos do projeto: tempo disponível para desenvolvimento, recursos,
Análise dos recursos
impacto de manutenção, entre outros.
https://student.ulife.com.br/ContentPlayer/Index?lc=uy4Ru0c1rbtg%2bZ6D%2fcLmFw%3d%3d&l=o0iDOtLh81rsO9ClfYRYHQ%3d%3d&cd=B… 16/19
12/12/2023, 13:09 Programação para jogos 3D
Em geral, essa decisão deve ser tomada pelo gestor do projeto, porém, o desenvolvedor deve colaborar para essa tomada de decisão.
Implementação do algoritmo A*
Progressão
Em um momento inicial do jogo, é bastante comum que os NPCs não sejam muito
espertos. Nesse caso, o algoritmo poderia ser implementando sem obter soluções muito
otimizadas e, posteriormente, ir progredindo ao longo do avanço do jogo. Essa progressão,
porém, preferencialmente deve ser disponibilizada para uma edição visual por parte dos
game designers.
No caso da Unity, essa progressão poderia ser realizada por variáveis públicas e editadas visualmente para facilitar o processo.
Acompanhe o caso a seguir, em que adotar o posicionamento de aceitar diminuir a qualidade de algumas implementações pode ser crucial
ao projeto.
Caso
Implementar NPCs e agentes inteligentes é a função de Marcos, um desenvolvedor de jogos brasileiro que
atua na indústria de jogos há 8 anos. Marcos implementou agentes para um jogo até então inédito em sua
carreira: controlar uma torcida de futebol e enfrentar diversos conflitos dentro e fora do estádio. O jogo foi
desenvolvido para consoles de última geração com muitos recursos disponíveis para a implementação.
Marcos é apaixonado por IA e realizou uma implementação que o orgulhou bastante.
Os agentes no jogo de torcidas de futebol implementados por Marcos possuem comportamentos muito
variados. Marcos usou árvores, grafos e diversas outras estruturas para implementar técnicas de IA. Aplicou
máquinas de estados, algoritmos genéticos, diferentes técnicas de aprendizagem de máquinas e explorou
muito bem os recursos do console. O jogo foi lançado com sucesso e, sem dúvidas, o comportamento definido
pela IA foi um dos grandes responsáveis.
Passaram-se alguns meses desde o lançamento do jogo de torcidas e um novo desafio é lançado: criar uma
versão para consoles portáteis que não possuem capacidade de processamento similar aos consoles e, pelo
contrário, são muito inferiores, dado que o cliente quer que o lançamento ocorra na maior quantidade de
dispositivos possíveis.
Marcos em um primeiro momento fica bastante decepcionado, mas depois reflete e entende que é mais um
grande desafio em sua carreira e propõe-se a alterar a implementação. A estratégia de Marcos, apesar de
trabalhosa, é relativamente simples de entender: ao invés de todos ou quase todos os agentes terem
processamento e definição de trajetórias de forma autônoma e individual, ele define que a aplicação dos
https://student.ulife.com.br/ContentPlayer/Index?lc=uy4Ru0c1rbtg%2bZ6D%2fcLmFw%3d%3d&l=o0iDOtLh81rsO9ClfYRYHQ%3d%3d&cd=B… 17/19
12/12/2023, 13:09 Programação para jogos 3D
algoritmos com alto custo computacional ficará apenas em poucos agentes-chave, e a maioria dos demais
agentes apenas seguirá esses agentes-chave, tendo pouco custo para definições de seus caminhos. No final,
a qualidade de movimento diminuiu um pouco, mas não foi tão perceptível considerando que a experiência de
jogo nos dispositivos móveis é diferente da de consoles. Assim, o lançamento do jogo em versão mobile foi
também um sucesso.
Por fim, a atividade de implementar NPCs é multidisciplinar: envolve aspectos de arte, programação, game design e áudio. O profissional
deve estar atento a todos esses aspectos para um melhor desenvolvimento dos personagens não controláveis.
Conclusão
Concluímos a unidade e nela fomos capazes de aprofundar conhecimentos na
implementação de NPC, tanto implementações simples quanto desenvolvimento de
comportamentos mais complexos e que demandam maior tempo e curso de
desenvolvimento.
Nesta unidade, você teve a oportunidade de:
Referências
C# BINARY Search Tree Implementation. C# Examples, [S. l.], 2 maio 2019. Disponível em:
http://csharpexamples.com/c-binary-search-tree-implementation/
(http://csharpexamples.com/c-binary-search-tree-implementation/). Acesso em: 5 jan.
2021.
DISCOVERY Brasil | Inteligência Artificial — IBM. [S. l.: s. n.], 2018. 1 vídeo (87 min). Publicado
pelo canal Discovery Brasil. Disponível em: https://youtu.be/W95YlM5-iPk
(https://youtu.be/W95YlM5-iPk). Acesso em: 5 jan. 2021.
KASTENSMIDT. C. A bandeira do elefante e da arara. 2021. Disponível em:
https://www.eamb.org/brasil/ (https://www.eamb.org/brasil/). Acesso em: 5 jan. 2021.
KYAW, A. et al. Unity 4. VIII Game AI Programming. United Kingdom: Packt Publishing, 2013.
MINICURSOS — Programação orientada a objetos. Herança. Contém Bits, [S. l.], [2020]. Disponível em:
http://contembits.com.br/minicursos/poo/Heranca.aspx (http://contembits.com.br/minicursos/poo/Heranca.aspx). Acesso em:
5 jan. 2021.
MULLER, A.; BITTENCOURT, J. UD3 — Unity decision tree integrator: uma extensão de árvores de decisão para Unity. In:
SBGAMES, 13., 2014, Porto Alegre. Anais […]. Porto Alegre: Proceedings of SBGames, 2014. Disponível em:
https://www.sbgames.org/sbgames2014/papers/computing/short/20_allcomputingshortpages.pdf
(https://www.sbgames.org/sbgames2014/papers/computing/short/20_allcomputingshortpages.pdf). Acesso em: 15 dez. 2020.
https://student.ulife.com.br/ContentPlayer/Index?lc=uy4Ru0c1rbtg%2bZ6D%2fcLmFw%3d%3d&l=o0iDOtLh81rsO9ClfYRYHQ%3d%3d&cd=B… 18/19
12/12/2023, 13:09 Programação para jogos 3D
OSÓRIO, F. et al. Inteligência Artificial para Jogos: agentes especiais com permissão para matar… e raciocinar!. Proceedings of
SBGames, São Leopoldo, RS, 2007. Disponível em: http://osorio.wait4.org/publications/Osorio-et-al-SBGames07-Tutorial.pdf
(http://osorio.wait4.org/publications/Osorio-et-al-SBGames07-Tutorial.pdf). Acesso em: 15 dez. 2020.
RABIN, S. (ed.). Game AI pro 2: collected wisdom of game AI professionals. Boca Raton, USA: CRC Press, 2015.
REZENDE, A. C. et al. Design de personagens voltado para reflexões sobre diversidade e representatividade de gênero em games.
In: SBGAMES, 16., 2017, Curitiba. Anais […]. Curitiba, PR: Proceedings of SBGames, 2017. Disponível em:
https://www.sbgames.org/sbgames2017/papers/ArtesDesignShort/175381.pdf
(https://www.sbgames.org/sbgames2017/papers/ArtesDesignShort/175381.pdf). Acesso em: 5 jan. 2021.
SBGAMES | TS: Alfabetização e Letramento com Jogos & Jogos e Aprendizagem. [S. l. s. n.], 2020. 1 vídeo (77 min). Publicado pelo
canal SBGames. Disponível em: https://youtu.be/8_w9cfWiF80 (https://youtu.be/8_w9cfWiF80). Acesso em: 5 jan. 2021.
SBGAMES | TS: Arte e Design 3. [S. l. s. n.], 2020. 1 vídeo (66 min). Publicado pelo canal SBGames. Disponível em:
https://youtu.be/cL03piLtuYU (https://youtu.be/cL03piLtuYU). Acesso em: 5 jan. 2021.
SILVA, P.; VILLELA, S. Applying pathfinding techniques on the development of an Android game. In: SBGAMES, 15., 2016, São
Paulo. Anais […]. São Paulo: Proceedings of SBGames, 2016. Disponível em:
http://www.sbgames.org/sbgames2016/downloads/anais/157460.pdf
(http://www.sbgames.org/sbgames2016/downloads/anais/157460.pdf). Acesso em 17 dez. 2020.
SMITH, M.; QUEIROZ, C. Unity 4.VIII Cookbook. United Kingdom: Packt Publishing, 2013.
UNITY. Binary trees. Asset Store, [S. l.], [2021]. Disponível em: https://assetstore.unity.com/packages/tools/integration/binary-
trees-21652#content (https://assetstore.unity.com/packages/tools/integration/binary-trees-21652#content). Acesso em: 5 jan.
2021.
VIANA, P. R. C. et al. O espaço como personagem em games. In: SBGAMES, 19., 2020, Recife. Anais […]. Recife: Proceedings of
SBGames, 2020. Disponível em: https://www.sbgames.org/proceedings2020/ArtesDesignFull/209661.pdf
(https://www.sbgames.org/proceedings2020/ArtesDesignFull/209661.pdf). Acesso em: 27 dez. 2020.
https://student.ulife.com.br/ContentPlayer/Index?lc=uy4Ru0c1rbtg%2bZ6D%2fcLmFw%3d%3d&l=o0iDOtLh81rsO9ClfYRYHQ%3d%3d&cd=B… 19/19