﻿1
00:00:04,340 --> 00:00:05,160
‫Olá e bem-vindo.

2
00:00:05,180 --> 00:00:11,600
‫Nesta palestra, apresentamos dois novos tipos de ativos, a árvore de comportamento e o quadro-negro, que são

3
00:00:11,600 --> 00:00:16,610
‫dois ativos que nos permitem fazer uma coisa muito interessante com o ar.

4
00:00:16,610 --> 00:00:18,680
‫Permita-nos tornar muito mais complicado.

5
00:00:18,860 --> 00:00:23,330
‫Com muita facilidade, vamos mergulhar e ver como os usamos e os configuramos.

6
00:00:25,080 --> 00:00:25,380
‫OK.

7
00:00:25,380 --> 00:00:28,830
‫Então, queremos criar alguns sofisticados A. EU. comportamento.

8
00:00:29,070 --> 00:00:33,930
‫Agora, a maneira como normalmente fazemos isso no Unreal é usando um sistema chamado árvores de comportamento.

9
00:00:33,960 --> 00:00:34,890
‫Agora, o que são esses?

10
00:00:35,100 --> 00:00:38,850
‫Bem, a melhor maneira de descobrirmos é criar um.

11
00:00:39,090 --> 00:00:41,910
‫Então vamos em frente e clique com o botão direito e pronto.

12
00:00:41,940 --> 00:00:44,940
‫Estamos olhando aqui sob a inteligência artificial.

13
00:00:45,270 --> 00:00:48,300
‫E há duas opções aqui de comportamento, árvore e quadro-negro.

14
00:00:48,540 --> 00:00:50,730
‫Nós vamos querer os dois.

15
00:00:51,180 --> 00:00:54,360
‫Então vamos começar com a árvore de comportamento.

16
00:00:54,780 --> 00:00:59,520
‫O prefixo disso é B. T. e vamos chamar isso de inimigo.

17
00:00:59,670 --> 00:01:01,060
‫Então comportamento árvore inimigo.

18
00:01:01,530 --> 00:01:03,710
‫Acabei de terminar com isso.

19
00:01:03,740 --> 00:01:04,170
‫Eles vão.

20
00:01:04,620 --> 00:01:09,120
‫E também precisamos criar outra coisa ali, que era um quadro-negro.

21
00:01:09,150 --> 00:01:11,190
‫Agora, o que diabos é um quadro-negro?

22
00:01:11,220 --> 00:01:12,270
‫Chegaremos a isso em apenas um segundo.

23
00:01:12,270 --> 00:01:18,510
‫Mas vamos chamá-lo apenas de b b underscore inimigo é a, b, b para quadro-negro, b, t para árvore de

24
00:01:18,510 --> 00:01:18,930
‫comportamento.

25
00:01:19,230 --> 00:01:22,140
‫E enquanto estamos nisso, temos algumas coisas relacionadas a A. EU..

26
00:01:22,170 --> 00:01:29,040
‫Ei, vou criar uma nova pasta chamada A. EU. , e vamos mover o quadro-negro, a árvore de

27
00:01:29,040 --> 00:01:29,400
‫comportamento.

28
00:01:29,820 --> 00:01:33,830
‫E em algum lugar aqui temos nosso atirador, A. EU. controlador.

29
00:01:33,840 --> 00:01:39,540
‫Tudo isso vai para A. EU. mover aqui e então podemos ir para aquele A. EU. pastas, lidar com tudo relacionado

30
00:01:39,690 --> 00:01:40,320
‫à IA.

31
00:01:41,070 --> 00:01:45,180
‫Vamos abrir nossa árvore de comportamento, em primeiro lugar, e encaixá-la na janela principal.

32
00:01:45,750 --> 00:01:47,530
‫Então o que diabos é isso?

33
00:01:47,550 --> 00:01:52,830
‫Então, isso nos permite criar árvores de comportamentos onde você pode dizer que temos parte do comportamento

34
00:01:52,830 --> 00:01:53,820
‫aqui para perseguir.

35
00:01:53,820 --> 00:01:55,080
‫Parte dele é para trollar.

36
00:01:55,440 --> 00:01:59,970
‫Parte disso é para outra coisa, abrir portas, todo esse tipo de coisa.

37
00:02:00,270 --> 00:02:06,330
‫Eles normalmente estruturam comportamentos como muitas e muitas árvores de comportamentos e subárvores e assim por diante.

38
00:02:06,570 --> 00:02:13,980
‫Veremos tudo isso acontecendo em detalhes, mas basta dizer que é uma ótima maneira de reunir comportamentos naturais

39
00:02:13,980 --> 00:02:15,540
‫em seus jogos.

40
00:02:16,140 --> 00:02:17,580
‫Agora não é o ser tudo e acabar com tudo.

41
00:02:17,580 --> 00:02:19,380
‫Tem muito A. EU. técnicas.

42
00:02:19,380 --> 00:02:23,760
‫Este pode não ser o que você deseja para o seu jogo, mas é um ótimo começo

43
00:02:23,760 --> 00:02:25,800
‫e você pode conseguir muito com ele.

44
00:02:26,580 --> 00:02:31,020
‫Agora, a próxima coisa que podemos ver no topo, à direita, esses dois ativos estão vinculados à

45
00:02:31,020 --> 00:02:32,790
‫árvore de comportamento e ao quadro-negro.

46
00:02:33,090 --> 00:02:34,770
‫O que diabos é um quadro-negro?

47
00:02:35,190 --> 00:02:41,430
‫Bem, o quadro-negro é como a memória do seu A. EU. É essencialmente onde você armazena um monte

48
00:02:41,430 --> 00:02:42,180
‫de variáveis.

49
00:02:42,180 --> 00:02:46,290
‫Você os insere a partir da jogabilidade, como estávamos fazendo com o

50
00:02:46,290 --> 00:02:50,970
‫sistema de animação, onde você tem essas propriedades diferentes que estão sendo definidas pela jogabilidade.

51
00:02:51,180 --> 00:02:57,180
‫Fazemos a mesma coisa com o A. EU. definimos muitas propriedades que fornecem informações sobre

52
00:02:57,180 --> 00:03:03,120
‫o mundo do jogo e, em seguida, a árvore de comportamento se baseia nessas propriedades e as usa para decidir o que

53
00:03:03,120 --> 00:03:03,510
‫fazer.

54
00:03:03,510 --> 00:03:04,890
‫Ele pode definir essas propriedades.

55
00:03:04,890 --> 00:03:10,350
‫Ele pode usá-los como uma memória, pode ler essas propriedades e todas essas coisas lindas.

56
00:03:10,770 --> 00:03:16,980
‫Então, com isso em mente, como podemos configurar nossa árvore de comportamento no quadro-negro para que eles sejam vinculados uns aos

57
00:03:16,980 --> 00:03:17,550
‫outros?

58
00:03:18,120 --> 00:03:20,430
‫Bem, vamos expandir isso em nosso painel de detalhes.

59
00:03:20,430 --> 00:03:25,980
‫Você pode ver aqui que existe esse recurso de quadro-negro e automaticamente parece tê-lo preenchido para

60
00:03:25,980 --> 00:03:32,580
‫nós de tal forma que o recurso de quadro-negro está vinculado a esse b b b inimigo, I recurso de quadro-negro.

61
00:03:33,090 --> 00:03:38,280
‫Agora todos nós vamos sair um pouco do C++ para usar esses recursos porque obviamente as

62
00:03:38,280 --> 00:03:42,360
‫árvores de comportamento e os quadros-negros estão inteiramente dentro do editor.

63
00:03:42,360 --> 00:03:44,430
‫Eles não são projetos como tal.

64
00:03:44,430 --> 00:03:49,920
‫Eles são suas próprias ferramentas de editor e podemos interagir com eles em C++, mas isso não significa

65
00:03:49,920 --> 00:03:53,460
‫que usaremos o editor nas próximas aulas, assim como C++.

66
00:03:53,640 --> 00:03:54,810
‫Não há muito projeto lá.

67
00:03:55,050 --> 00:04:00,750
‫Então é ótimo que tenhamos essa árvore de comportamento e esse quadro-negro, mas como diabos nós

68
00:04:00,750 --> 00:04:02,150
‫realmente usamos isso?

69
00:04:02,400 --> 00:04:05,500
‫Bem, para isso, voltamos ao nosso controlador aéreo.

70
00:04:05,500 --> 00:04:14,370
‫Se você se lembra, eu controlador é inteiramente responsável por executar nossos comportamentos e isso não é exceção aqui.

71
00:04:14,850 --> 00:04:18,870
‫A árvore de comportamento é apenas outra coisa que o controlador aéreo pode usar ou executar.

72
00:04:19,410 --> 00:04:24,750
‫Então, a maneira como vamos fazer isso é ir para o nosso ponto de controle e precisamos

73
00:04:24,750 --> 00:04:29,790
‫ter uma maneira de referenciar no blueprint qual árvore de comportamento queremos que ela execute.

74
00:04:30,720 --> 00:04:34,860
‫Então, a primeira coisa que vou fazer é passar para o nosso

75
00:04:34,860 --> 00:04:40,920
‫controle do CP e comentar as coisas no TTIC porque vamos substituir essa funcionalidade pela funcionalidade da árvore de

76
00:04:40,920 --> 00:04:41,400
‫comportamento.

77
00:04:41,880 --> 00:04:46,170
‫E isso significa que posso remover esse raio de aceitação aqui porque não precisamos mais dele.

78
00:04:46,500 --> 00:04:50,910
‫E, em vez disso, usaremos um ponteiro para o novo comportamento.

79
00:04:51,780 --> 00:04:56,100
‫E eu tenho que soletrar essa árvore e ponteiro do estilo americano.

80
00:04:56,550 --> 00:04:58,980
‫Essa é a árvore de comportamento que você quer lá.

81
00:04:59,070 --> 00:05:02,310
‫E eu preciso encaminhar declarar isso com uma classe na frente dele.

82
00:05:02,310 --> 00:05:08,640
‫E então basicamente aqui, o que eu quero dizer é que este é o comportamento e.

83
00:05:09,740 --> 00:05:13,160
‫Vou manter a ortografia americana aqui apenas para consistência.

84
00:05:13,430 --> 00:05:17,570
‫Portanto, este é o comportamento que queremos aqui agora para realmente executar o comportamento.

85
00:05:17,570 --> 00:05:18,500
‫Não poderia ser mais simples.

86
00:05:18,500 --> 00:05:22,670
‫Novamente, o A. EU. controla o H tem uma função interna para isso.

87
00:05:22,670 --> 00:05:26,360
‫Temos essa função de árvore de comportamento de execução que se torna booleana.

88
00:05:26,360 --> 00:05:30,440
‫Quer você seja capaz de executá-lo com sucesso ou não, comece a executá-lo.

89
00:05:30,770 --> 00:05:35,720
‫E leva no ativo beta, que é um ponteiro para a árvore de comportamento de você.

90
00:05:36,350 --> 00:05:39,980
‫Então é isso que vamos querer usar e podemos fazer isso no começo do jogo.

91
00:05:39,980 --> 00:05:44,240
‫Então, o que vamos fazer é, antes de tudo, verificar se realmente temos uma árvore de comportamento

92
00:05:44,270 --> 00:05:44,600
‫aqui.

93
00:05:44,600 --> 00:05:46,970
‫Então vamos dizer comportamento I.

94
00:05:48,210 --> 00:05:50,940
‫Não é igual a pontos nulos, hein?

95
00:05:51,030 --> 00:05:53,600
‫Porque não queremos usá-lo de outra forma.

96
00:05:53,610 --> 00:05:58,920
‫E então o que podemos fazer é executar a árvore de comportamento chamada comportamento do ar.

97
00:05:59,190 --> 00:06:06,150
‫É realmente simples fazer qualquer comportamento rodar e podemos ir em frente e compilar.

98
00:06:07,480 --> 00:06:12,730
‫E mais uma coisa que podemos fazer com as árvores pesadas é que podemos vê-las rodando em tempo de execução, mas para fazer

99
00:06:12,730 --> 00:06:14,950
‫isso, você precisa ter algum tipo de nó aqui.

100
00:06:15,280 --> 00:06:18,850
‫Então, vamos apenas adicionar um nó sem entender completamente o que ele faz.

101
00:06:18,880 --> 00:06:23,800
‫Vou adicionar um nó de sequência e vou conectá-lo arrastando para baixo do nó raiz, abaixo do nó

102
00:06:23,800 --> 00:06:28,720
‫raiz, os destaques quando eu passar o mouse sobre ele até o bit acima do nó de

103
00:06:28,720 --> 00:06:29,050
‫sequência.

104
00:06:29,560 --> 00:06:30,610
‫E eu vou salvar isso.

105
00:06:31,210 --> 00:06:39,580
‫Vou clicar em play e entrar no meu recurso de árvore de comportamento e você poderá ver uma lista suspensa aqui, mas

106
00:06:39,640 --> 00:06:43,390
‫não verá porque não está em execução no momento.

107
00:06:43,390 --> 00:06:44,320
‫Então vamos parar de jogar.

108
00:06:45,100 --> 00:06:46,600
‫E por que não está rodando?

109
00:06:46,600 --> 00:06:51,370
‫Porque nós não o conectamos e como controlador aéreo de atirador, então vamos fazer isso pode ser um desafio

110
00:06:51,370 --> 00:06:52,540
‫para você conectar isso.

111
00:06:53,050 --> 00:06:54,370
‫Espero que não deva ser muito difícil.

112
00:06:55,000 --> 00:06:55,270
‫OK.

113
00:06:55,270 --> 00:06:56,080
‫Bem vindo de volta.

114
00:06:56,110 --> 00:07:01,060
‫Então, se formos dar uma olhada aqui, estamos procurando um comportamento.

115
00:07:01,510 --> 00:07:04,240
‫Por alguma razão, exigiu uma recompilação para eu aparecer para mim.

116
00:07:04,240 --> 00:07:04,840
‫Mas aqui está.

117
00:07:05,180 --> 00:07:06,430
‫Comportamento é o que queremos.

118
00:07:06,880 --> 00:07:07,720
‫Clicamos no menu suspenso.

119
00:07:07,720 --> 00:07:10,570
‫Há apenas uma opção no momento, então temos apenas uma árvore de comportamento.

120
00:07:10,570 --> 00:07:14,140
‫Então selecione aquele e compile e salve.

121
00:07:14,140 --> 00:07:17,140
‫E se agora formos em frente e jogarmos o jogo.

122
00:07:18,040 --> 00:07:21,210
‫E vá dar uma olhada no Beattie Enemy II.

123
00:07:21,220 --> 00:07:26,380
‫Você pode ver que está destacando a nota que está sendo executada no momento e você tem

124
00:07:26,380 --> 00:07:32,380
‫este pequeno menu suspenso ao lado dos botões de pausa, que informa qual controlador aéreo você está observando a trilha

125
00:07:32,380 --> 00:07:33,070
‫de comportamento.

126
00:07:33,100 --> 00:07:38,950
‫Então, essa é uma ótima funcionalidade para você poder entrar e ir, ok, por que esse ar

127
00:07:38,950 --> 00:07:39,700
‫está parado?

128
00:07:39,730 --> 00:07:41,140
‫Por que não está perseguindo o jogador?

129
00:07:41,350 --> 00:07:46,180
‫Você pode ver quais partes do comportamento ele está executando no momento e dizer, Oh, veja, você sabe, essa coisa

130
00:07:46,180 --> 00:07:46,870
‫deu errado.

131
00:07:47,170 --> 00:07:48,830
‫É realmente útil para depuração.

132
00:07:48,850 --> 00:07:53,620
‫Você pode ir e dar uma olhada no que todo o seu ar no mundo está fazendo usando este menu suspenso.

133
00:07:54,070 --> 00:07:54,490
‫Coisas boas.

134
00:07:54,490 --> 00:07:55,510
‫Isso é tudo para esta palestra.

135
00:07:55,510 --> 00:08:01,720
‫Na próxima palestra, veremos como podemos definir informações na memória do quadro-negro de nossa

136
00:08:01,990 --> 00:08:04,540
‫IA a partir de C++.

137
00:08:04,570 --> 00:08:05,320
‫Eu te vejo lá.

