﻿1
00:00:04,480 --> 00:00:05,230
‫Olá e bem-vindo.

2
00:00:05,230 --> 00:00:09,610
‫Nesta palestra, vamos apresentar uma coisa nova na árvore de comportamento, os serviços.

3
00:00:09,880 --> 00:00:14,530
‫Vamos descobrir o que são serviços, como eles nos ajudam com comportamento de execução persistente e como

4
00:00:14,530 --> 00:00:16,330
‫podemos escrever nossos próprios em C++.

5
00:00:16,330 --> 00:00:17,170
‫Vamos mergulhar direto.

6
00:00:18,150 --> 00:00:23,700
‫Agora, restam apenas alguns pedaços de lógica em nosso controlador aéreo que não estão em nossa árvore de comportamento.

7
00:00:24,120 --> 00:00:26,940
‫Uma delas é definir o local de início.

8
00:00:26,970 --> 00:00:29,940
‫Isso eu ainda quero definir aqui do controlador aéreo.

9
00:00:30,600 --> 00:00:35,940
‫Mas coisas como tic, agora que eu gostaria de fazer de dentro de uma árvore de comportamento.

10
00:00:36,390 --> 00:00:38,070
‫O que eu quero fazer aqui?

11
00:00:38,130 --> 00:00:39,690
‫Como faço para conseguir.

12
00:00:39,720 --> 00:00:42,150
‫Para adicionar à nossa localização do jogador.

13
00:00:42,150 --> 00:00:45,510
‫Para atualizar a localização do último jogador conhecido.

14
00:00:46,260 --> 00:00:51,300
‫Ambos podemos fazer com algo chamado serviço de blueprint.

15
00:00:51,660 --> 00:00:55,950
‫Então vamos aos nossos projetos e ver o que está acontecendo.

16
00:00:55,980 --> 00:01:03,030
‫Então, se eu for até meu aliado e abrir a árvore de comportamento, falar com a janela principal, então preciso mostrar a

17
00:01:03,030 --> 00:01:05,040
‫você quais serviços já usamos antes.

18
00:01:05,460 --> 00:01:14,190
‫E é essencialmente uma maneira de executar algo a cada tomada ou de vez em quando sempre que um caminho específico está

19
00:01:14,190 --> 00:01:14,730
‫ativo.

20
00:01:14,760 --> 00:01:22,110
‫Então, se eu tivesse um serviço aqui no comportamento do Chase, então algo que algum código seria capaz de executar o tempo todo em

21
00:01:22,680 --> 00:01:26,850
‫que o comportamento do Chase estivesse ativo, se estamos movendo, atirando, ponderando qualquer uma

22
00:01:26,850 --> 00:01:28,770
‫dessas coisas, sempre seria encontro.

23
00:01:28,770 --> 00:01:30,990
‫Mas se estivermos dentro, investigue, não seria.

24
00:01:31,440 --> 00:01:35,520
‫Portanto, este é exatamente o tipo de situação que estamos procurando para usar um serviço.

25
00:01:35,850 --> 00:01:38,020
‫Agora vamos ter um serviço de exemplo.

26
00:01:38,040 --> 00:01:44,610
‫Uma coisa que notamos quando estamos jogando é que quando o ar chega ao nosso alcance e nos

27
00:01:44,610 --> 00:01:51,440
‫movemos, ele não está girando para olhar para nós e podemos consertar isso com um serviço já embutido aqui.

28
00:01:51,450 --> 00:01:58,540
‫Então clique com o botão direito nesta nota e vá para adicionar serviço e procure o serviço de foco padrão.

29
00:01:58,580 --> 00:01:59,970
‫Você pode ver que é uma cor diferente, é verde.

30
00:02:00,480 --> 00:02:05,310
‫E se selecionarmos esse serviço padrão, ele também ficará abaixo dos nós de sequência em vez de acima deles, que é

31
00:02:05,310 --> 00:02:06,630
‫o que os decoradores fazem.

32
00:02:07,440 --> 00:02:11,850
‫Assim, com o foco padrão selecionado, você pode escolher o que deseja focar.

33
00:02:11,850 --> 00:02:14,670
‫Neste caso, queremos focar na localização do jogador.

34
00:02:15,390 --> 00:02:17,220
‫Vá em frente e aperte salvar, aperte play.

35
00:02:17,580 --> 00:02:23,070
‫E agora, se formos dar uma olhada e nos movermos, você pode ver que ele está girando para nos seguir.

36
00:02:23,820 --> 00:02:24,540
‫Coisas legais.

37
00:02:25,050 --> 00:02:32,100
‫Agora queremos ser capazes de implementar um serviço semelhante em C++ que atualizará a localização do nosso

38
00:02:32,100 --> 00:02:38,760
‫jogador o tempo todo e atualizará nossa última localização conhecida do jogador enquanto estamos perseguindo.

39
00:02:38,970 --> 00:02:41,670
‫Então, vamos fazer isso como dois serviços separados.

40
00:02:41,670 --> 00:02:46,620
‫E você pode ver como isso também serve automaticamente para tornar as coisas um pouco mais

41
00:02:46,620 --> 00:02:53,910
‫eficientes do que em tecnologia, porque você só pode executar o último local de jogo conhecido quando estiver na parte certa da árvore

42
00:02:53,910 --> 00:02:54,690
‫de comportamento.

43
00:02:54,930 --> 00:02:58,110
‫Então, vamos voltar ao navegador de conteúdo Sandbox.

44
00:02:58,110 --> 00:03:02,640
‫Adicione uma nova classe C++, mostrando todas as classes e veja quais são nossas opções aqui.

45
00:03:03,120 --> 00:03:04,950
‫Estamos em busca de um melhor serviço.

46
00:03:04,950 --> 00:03:11,130
‫E depois há algumas opções, assim como tivemos com B. T. Tarefa.

47
00:03:11,610 --> 00:03:15,900
‫Temos a Blackboard Base, e na verdade vamos querer a Blackboard Base porque

48
00:03:15,900 --> 00:03:18,150
‫queremos saber qual chave devemos atualizar.

49
00:03:18,150 --> 00:03:20,610
‫Por exemplo, deveria ser a localização do jogador?

50
00:03:20,610 --> 00:03:22,950
‫Deve ser o último local conhecido do jogador?

51
00:03:23,460 --> 00:03:28,800
‫Então, vamos seguir em frente com o Blackboard Base, selecioná-lo e vamos

52
00:03:28,800 --> 00:03:36,240
‫chamar esse serviço beta, sublinhar a localização do jogador assim e ir para como criar essa classe.

53
00:03:36,780 --> 00:03:42,960
‫Então, quando terminarmos de compilar, vamos para o código do Visual Studio e você pode ver que temos

54
00:03:42,960 --> 00:03:48,300
‫esse local do player de serviço BT que é herdado do Service Blackwood Base Court.

55
00:03:48,330 --> 00:03:49,320
‫É isso que queremos agora.

56
00:03:49,320 --> 00:03:51,630
‫Qual funcionalidade vamos mover para isso?

57
00:03:52,140 --> 00:03:58,200
‫Bem, vou tentar mover a funcionalidade mais simples possível, que é apenas definir o valor

58
00:03:58,800 --> 00:04:01,590
‫da localização do último jogador conhecido.

59
00:04:01,590 --> 00:04:08,310
‫Embora essa chave seja configurada na árvore de comportamento, não aqui em um texto simples, mas obterá a localização

60
00:04:08,310 --> 00:04:12,360
‫do player e a definirá como uma chave do quadro-negro.

61
00:04:12,360 --> 00:04:17,580
‫E não vai fazer nenhuma verificação de linha de visão, pois se estivermos executando-o em nossa árvore de

62
00:04:17,580 --> 00:04:21,900
‫comportamento, apenas quando estivermos perseguindo que não precisamos da verificação de linha de visão.

63
00:04:21,900 --> 00:04:25,230
‫Podemos ver o jogador que automaticamente sabemos que é o caso.

64
00:04:25,590 --> 00:04:28,770
‫Então, outra simplificação para fazer isso em um serviço.

65
00:04:29,610 --> 00:04:36,570
‫Portanto, isso deve ser bastante simples se soubermos como obter uma chamada de método aqui no serviço BT.

66
00:04:37,320 --> 00:04:41,910
‫Então vamos dar uma olhada no BT Service Dot para ver o que está disponível lá.

67
00:04:41,910 --> 00:04:43,890
‫Qual é a documentação, o que podemos fazer?

68
00:04:44,250 --> 00:04:50,730
‫Os principais métodos aqui que você pode ver são tornar-se relevantes nos C's relevantes no nó de marcação e no início da

69
00:04:50,730 --> 00:04:51,090
‫pesquisa.

70
00:04:51,090 --> 00:04:51,960
‫No início da pesquisa.

71
00:04:51,960 --> 00:04:54,180
‫Não estamos particularmente interessados, mas tome nota.

72
00:04:54,180 --> 00:05:00,630
‫Sim, é aí que vamos receber atualizações sempre que esse serviço estiver em um caminho ativo.

73
00:05:01,170 --> 00:05:02,730
‫Então é isso que vamos querer implementar.

74
00:05:03,030 --> 00:05:05,640
‫Procuramos neste arquivo para encontrar a assinatura completa.

75
00:05:05,640 --> 00:05:07,950
‫Aqui podemos ver é aqui.

76
00:05:07,950 --> 00:05:09,240
‫Vamos ver em que seção está.

77
00:05:09,240 --> 00:05:10,530
‫Está sob a seção protegida.

78
00:05:10,890 --> 00:05:16,620
‫Então, vamos bater o serviço que criamos e criar uma seção protegida.

79
00:05:17,530 --> 00:05:24,160
‫E cole, é automaticamente uma substituição aqui porque o BT Service estava herdando-o de uma classe pai,

80
00:05:24,160 --> 00:05:27,400
‫mas não há problema em substituí-lo novamente.

81
00:05:27,790 --> 00:05:32,890
‫Podemos fazer uma mudança de controle P para criar a implementação e então queremos chamar super.

82
00:05:32,920 --> 00:05:39,220
‫Então, queremos um nó super tick e queremos passar nosso próprio comp e nossa memória de nó.

83
00:05:39,700 --> 00:05:41,410
‫E vamos ver, há algumas outras coisas aqui.

84
00:05:41,440 --> 00:05:43,210
‫Temos também segundos Delta.

85
00:05:43,210 --> 00:05:44,850
‫Isso é o que precisamos deixar passar também.

86
00:05:44,860 --> 00:05:49,930
‫E, finalmente, terminar com este ponto e vírgula deve desaparecer da implementação do nó tick.

87
00:05:49,960 --> 00:05:54,130
‫Agora aqui nós basicamente queremos fazer esse comportamento do controlador aéreo.

88
00:05:54,130 --> 00:05:59,410
‫CP, aquele onde estamos pegando o componente do quadro-negro, então definindo um valor como um vetor.

89
00:05:59,710 --> 00:06:03,910
‫Bem, sabemos como obter componentes do quadro-negro a partir de referências de componentes do proprietário.

90
00:06:04,210 --> 00:06:05,370
‫Então isso é bem direto.

91
00:06:05,380 --> 00:06:11,560
‫Nós vamos apenas fazer o owner comp dot e, em seguida, vamos fazer os componentes get blackboard

92
00:06:11,560 --> 00:06:17,710
‫lembrando que precisamos incluir o hash aqui para o componente blackboard da árvore de comportamento.

93
00:06:18,100 --> 00:06:20,140
‫Então podemos usar nosso operador de seta.

94
00:06:20,590 --> 00:06:27,310
‫E o que devemos fazer aqui é apenas definir valor como vetor e que precisamos de uma chave.

95
00:06:27,310 --> 00:06:30,460
‫Bem, sabemos como lidar com isso, mas vamos apenas refrescar a memória.

96
00:06:30,460 --> 00:06:36,310
‫Se formos ao nosso serviço BT, sublinhamos o Blackboard Base, você pode ver o mesmo que com a tarefa,

97
00:06:36,310 --> 00:06:38,330
‫temos a chave do quadro-negro selecionada.

98
00:06:38,350 --> 00:06:39,070
‫É isso que vamos usar.

99
00:06:39,400 --> 00:06:44,110
‫Obter chave selecionada do Blackboard obtém a chave selecionada na árvore de comportamento.

100
00:06:44,110 --> 00:06:48,520
‫E então queremos que nosso valor vetorial seja exatamente o mesmo que o controlador aéreo.

101
00:06:48,520 --> 00:06:50,170
‫Nós vamos estar recebendo o pool de jogadores.

102
00:06:50,170 --> 00:06:55,690
‫E antes de mais nada, aqui no topo, precisamos verificar se isso é nulo ou não.

103
00:06:55,690 --> 00:06:57,790
‫E também precisamos incluir essa estática de jogo.

104
00:06:57,790 --> 00:07:00,130
‫Então, vamos ter certeza de que temos o jogo.

105
00:07:00,130 --> 00:07:05,920
‫As estáticas incluem do controlador aéreo, mantenha incluído em nosso player um local de player de serviço.

106
00:07:06,880 --> 00:07:13,830
‫Então vamos fazer e se o jogador -- for igual ao ponteiro nulo, então vamos querer fazer é voltar

107
00:07:13,830 --> 00:07:19,780
‫mais cedo aqui retorna void para que possamos apenas fazer um retorno rápido mais cedo.

108
00:07:20,200 --> 00:07:30,010
‫Então podemos usar nosso player -- aqui para simplesmente obter a localização do ator e talvez precisemos fazer uma inclusão aqui.

109
00:07:30,010 --> 00:07:30,880
‫Veremos como vamos.

110
00:07:30,880 --> 00:07:34,360
‫Bem, não faz mal estar seguro, faz isso, e explícito sobre essas coisas.

111
00:07:34,360 --> 00:07:40,230
‫Então, vamos fazer uma inclusão para a estrutura do jogo e, em seguida, a barra será -- ponto H para que possamos ter

112
00:07:40,240 --> 00:07:45,340
‫certeza de que temos tudo em ordem aqui e, em seguida, estamos apenas definindo o valor como voltar a isso

113
00:07:45,610 --> 00:07:47,320
‫deve ser tudo o que precisamos.

114
00:07:47,320 --> 00:07:49,120
‫Vamos compilar e ver se isso funciona.

115
00:07:49,180 --> 00:07:50,290
‫Na verdade, mais uma coisa.

116
00:07:50,290 --> 00:07:54,640
‫Nós provavelmente queremos um nome bonito, então devemos ter um construtor aqui.

117
00:07:54,670 --> 00:08:00,520
‫Então, vou criar uma seção pública com o construtor, que será o nome da classe, e

118
00:08:00,520 --> 00:08:03,730
‫então vamos em frente e criamos essa implementação.

119
00:08:03,730 --> 00:08:08,530
‫Vou trazer minha implementação acima da implementação para o nó tick e, em

120
00:08:08,530 --> 00:08:16,960
‫seguida, vamos definir o nome do nó igual a ele deve ser a localização do player de atualização e vamos construir e ver se isso

121
00:08:16,960 --> 00:08:17,350
‫funciona.

122
00:08:17,680 --> 00:08:19,240
‫Parece que faltava um ponto e vírgula.

123
00:08:19,240 --> 00:08:19,990
‫Vamos tentar isso de novo.

124
00:08:20,170 --> 00:08:25,810
‫Uma vez que isso seja compilado com sucesso, podemos ir para o nosso inimigo e, além do foco

125
00:08:25,810 --> 00:08:31,600
‫da configuração, quero adicionar um novo serviço que aparece aqui como o local do jogador, onde o nome bonito

126
00:08:31,600 --> 00:08:34,570
‫basicamente aparece como atualização do local do jogo .

127
00:08:34,570 --> 00:08:40,660
‫Você pode ver que ele quer dizer a frequência de marcar cada ponto por 2. 6 segundos.

128
00:08:40,660 --> 00:08:43,930
‫Isso é melhor do que usar o tick porque sabemos que o tick executa todos os quadros aqui.

129
00:08:43,930 --> 00:08:46,630
‫Isso está sendo executado com menos frequência, o que é uma coisa boa.

130
00:08:46,630 --> 00:08:52,390
‫E podemos ir para os detalhes e criar uma chave de quadro-negro, desça e selecione que queremos atualizar

131
00:08:52,390 --> 00:08:58,690
‫não apenas como o local de jogo, mas o último local conhecido do jogador, porque isso acontecerá a cada

132
00:08:58,690 --> 00:09:02,620
‫quadro enquanto estivermos perseguindo e isso é o comportamento que queremos.

133
00:09:02,830 --> 00:09:08,890
‫Portanto, mais um nó de serviço que queremos criar e seguir em frente fará o comportamento dos controladores.

134
00:09:08,890 --> 00:09:11,170
‫Vamos descer para pegar e ver o que resta.

135
00:09:11,170 --> 00:09:17,470
‫O que fazemos aqui é atualizar a localização do jogador condicionalmente se temos linha de visão.

136
00:09:17,470 --> 00:09:19,330
‫Então, queremos que ele atualize o local do jogo.

137
00:09:19,330 --> 00:09:22,240
‫Se tivermos linhas como limpar a localização, se não tivermos.

138
00:09:22,540 --> 00:09:23,830
‫Então isso vai ser um novo serviço.

139
00:09:23,830 --> 00:09:25,480
‫Observe que é um comportamento ligeiramente diferente.

140
00:09:25,900 --> 00:09:28,240
‫Vamos adicionar uma nova classe C++.

141
00:09:28,240 --> 00:09:29,890
‫Nós vamos mostrar todas as classes.

142
00:09:29,890 --> 00:09:35,110
‫E novamente, vamos destacar o serviço Blackboard Base como nossa classe base e vamos

143
00:09:35,110 --> 00:09:39,610
‫chamá-la de B. T. Sublinhado do serviço.

144
00:09:40,620 --> 00:09:43,700
‫Localização do jogador, se visto.

145
00:09:44,220 --> 00:09:46,830
‫E vá em frente e crie essa classe.

146
00:09:46,950 --> 00:09:51,090
‫E como isso é tudo o que você já viu antes, será seu desafio implementar

147
00:09:51,090 --> 00:09:51,690
‫este serviço.

148
00:09:52,050 --> 00:09:57,540
‫Então você vai implementar o nó tic usando o código no controlador aéreo.

149
00:09:57,540 --> 00:10:04,320
‫Como seu guia, você precisará obter o ponteiro do controlador aéreo de dentro do serviço BT.

150
00:10:04,320 --> 00:10:09,690
‫Agora, isso é exatamente o mesmo que fizemos nas tarefas de batida, então use isso como orientação para obter

151
00:10:09,690 --> 00:10:11,130
‫um ponteiro de controlador.

152
00:10:11,640 --> 00:10:15,240
‫Você precisará do ponteiro do controlador aéreo para verificar a linha de visão.

153
00:10:15,240 --> 00:10:21,060
‫Lembre-se, a linha de visão é um método no controlador aéreo e, em seguida, você precisa atualizar ou

154
00:10:21,060 --> 00:10:27,210
‫limpar a chave dependendo da verificação da linha de visão e, em seguida, colocar esse nó na árvore de comportamento.

155
00:10:27,210 --> 00:10:31,950
‫Onde você acha que será o nível certo da árvore de comportamento para que esse serviço seja executado?

156
00:10:32,160 --> 00:10:36,840
‫Pense um pouco sobre isso e faça um pequeno arranhão no queixo, pause, grave o vídeo e experimente.

157
00:10:38,040 --> 00:10:38,270
‫OK.

158
00:10:38,280 --> 00:10:38,790
‫Bem vindo de volta.

159
00:10:38,820 --> 00:10:44,400
‫Portanto, isso abriu um novo serviço de beet no código do Visual Studio.

160
00:10:44,790 --> 00:10:48,360
‫Agora vai ser praticamente idêntico no cabeçalho.

161
00:10:48,900 --> 00:10:53,850
‫Então, vou em frente e copiá-lo em um cabeçalho recém-gerado.

162
00:10:54,390 --> 00:10:59,970
‫A exceção é que precisamos alterar o nome do construtor para corresponder.

163
00:11:00,450 --> 00:11:07,380
‫Agora vamos criar uma implementação para o construtor e dar a ele um nome de nó para atualizar a

164
00:11:08,070 --> 00:11:10,170
‫localização do jogador, se visto.

165
00:11:10,920 --> 00:11:12,160
‫E adicione um ponto e vírgula.

166
00:11:12,180 --> 00:11:12,630
‫O fim aqui.

167
00:11:12,680 --> 00:11:14,110
‫Não vamos esquecer que desta vez.

168
00:11:14,520 --> 00:11:16,290
‫Em seguida, de volta para o C++.

169
00:11:16,290 --> 00:11:18,450
‫Indo implementar o nó tick também.

170
00:11:18,840 --> 00:11:25,980
‫E vou copiar se pudermos encontrar a localização do jogador CP E apenas copiar a chamada para

171
00:11:25,980 --> 00:11:32,550
‫super e a obtenção do peão do jogador e a verificação do retorno nulo.

172
00:11:32,550 --> 00:11:35,880
‫Na verdade, vou copiar o corpo inteiro e vamos modificá-lo a partir daí.

173
00:11:36,630 --> 00:11:43,300
‫Então, copiando isso e também estaremos copiando o acesso ao componente do quadro-negro com a inclusão do componente

174
00:11:43,300 --> 00:11:49,230
‫do quadro-negro, as estatísticas de jogo e o peão, porque precisamos de acesso a todos

175
00:11:49,230 --> 00:11:49,860
‫eles.

176
00:11:50,130 --> 00:11:52,950
‫Na verdade, grande parte da funcionalidade é compartilhada aqui.

177
00:11:53,220 --> 00:11:58,830
‫Você pode pensar em fazer com que eles compartilhem esse código de alguma forma, mas acho que não há tanta duplicação que

178
00:11:58,830 --> 00:12:00,090
‫nos importe o suficiente.

179
00:12:00,900 --> 00:12:05,400
‫Então, o que vamos ter que fazer aqui também é verificar se temos um controlador aéreo.

180
00:12:05,400 --> 00:12:15,210
‫Então, eu vou fazer um se o proprietário dos componentes proprietário comp não obtiver um proprietário é igual a ponteiro nulo, então vamos querer

181
00:12:15,810 --> 00:12:19,170
‫ir em frente e retornar neste estágio.

182
00:12:19,980 --> 00:12:24,330
‫Então, a próxima coisa que vamos querer fazer é verificar nossa visibilidade.

183
00:12:24,330 --> 00:12:31,890
‫Então, vamos fazer um if owner comp dot obtém air owner e, em seguida, vamos fazer uma seta aqui

184
00:12:31,890 --> 00:12:34,410
‫e precisamos incluir um controlador aqui.

185
00:12:34,410 --> 00:12:36,600
‫Então vai ser hash include.

186
00:12:38,150 --> 00:12:40,760
‫E vai ser eu controlador.

187
00:12:40,790 --> 00:12:50,930
‫Então h então queremos fazer linha e ver qual é o uso correto aqui se formos para o controlador aéreo.

188
00:12:50,930 --> 00:12:59,060
‫CP A linha de visão dois é o que queremos, então a linha de visão para então precisamos fazer a linha de visão para a

189
00:12:59,060 --> 00:12:59,720
‫peça.

190
00:12:59,720 --> 00:13:00,980
‫Um peão neste caso.

191
00:13:00,980 --> 00:13:02,600
‫Temos linha de visão para o peão do jogador?

192
00:13:03,290 --> 00:13:04,790
‫É isso que estamos fazendo no CPA?

193
00:13:04,790 --> 00:13:05,780
‫Vamos apenas verificar isso.

194
00:13:05,780 --> 00:13:06,440
‫Sim, nós somos.

195
00:13:07,250 --> 00:13:11,150
‫Então vamos querer ir em frente e definir os valores de forma diferente.

196
00:13:11,660 --> 00:13:15,740
‫Então, estamos definindo o valor do vetor para a localização do ator de captura de peões do jogador.

197
00:13:15,740 --> 00:13:18,560
‫Sim, isso se tivermos outra linha de visão.

198
00:13:18,560 --> 00:13:22,160
‫Se não tivermos linha de visão, sabemos que precisamos limpar esse valor.

199
00:13:22,580 --> 00:13:25,790
‫Então, ainda vamos obter o componente proprietário, obter o componente quadro-negro.

200
00:13:26,060 --> 00:13:31,580
‫Então, será claro o valor e ainda vamos limpar o valor da chave

201
00:13:31,580 --> 00:13:37,700
‫do quadro-negro selecionada, e isso deve nos cobrir bastante para a implementação da localização do jogador.

202
00:13:37,700 --> 00:13:41,460
‫Se visto, vamos compilar e ver se funciona bem.

203
00:13:41,460 --> 00:13:42,650
‫A compilação deu certo.

204
00:13:42,650 --> 00:13:44,540
‫Vamos para a árvore de comportamento.

205
00:13:44,570 --> 00:13:50,750
‫Agora, o nível que eu quero que isso execute é basicamente o nível superior no seletor inicial, porque eu quero que ele

206
00:13:50,750 --> 00:13:56,330
‫atualize a localização do jogador basicamente o tempo todo, porque precisamos ser capazes de abortar qualquer um desses outros

207
00:13:56,330 --> 00:13:59,330
‫comportamentos com base no jogador local que está sendo definido.

208
00:13:59,720 --> 00:14:02,570
‫Portanto, precisamos ser capazes de definir um desarmar a qualquer momento.

209
00:14:03,050 --> 00:14:08,630
‫Então, vou clicar com o botão direito do mouse no seletor de nível superior e no serviço no local do jogo, se visto.

210
00:14:09,290 --> 00:14:13,910
‫E então vamos selecionar esse nó de serviço e selecionar sua chave de quadro-negro, que será nosso

211
00:14:13,910 --> 00:14:15,020
‫local de jogo.

212
00:14:15,740 --> 00:14:20,390
‫Então, aquele definido no local de jogo, o local de atualização do jogador, o mais burro está atualizando

213
00:14:20,400 --> 00:14:21,980
‫o último local do jogador conhecido.

214
00:14:22,640 --> 00:14:29,210
‫E agora devemos ser capazes de ir para nosso controlador aéreo e essencialmente remover todo esse

215
00:14:29,210 --> 00:14:33,500
‫código em tecnologia porque foi substituído por nossos serviços.

216
00:14:33,830 --> 00:14:36,230
‫E podemos ir em frente e compilar e ver se isso funciona.

217
00:14:36,320 --> 00:14:41,030
‫Vamos até o editor e jogar e ver se ainda temos nosso inimigo chegando até nós.

218
00:14:41,030 --> 00:14:46,520
‫Ele vem correndo até nós, perde a visão, depois volta para nós e começa a atirar.

219
00:14:46,520 --> 00:14:46,790
‫Sim.

220
00:14:46,790 --> 00:14:53,000
‫Basicamente, tudo está funcionando como antes, exceto que agora está sendo feito inteiramente por meio de serviços que

221
00:14:53,000 --> 00:14:55,520
‫escrevemos para nós mesmos em C++.

222
00:14:55,820 --> 00:15:01,010
‫Na próxima palestra, vamos corrigir aquele bug irritante em que a IA continua a disparar

223
00:15:01,010 --> 00:15:02,990
‫e, eventualmente, consegue se matar.

224
00:15:03,290 --> 00:15:03,950
‫Eu vou ver isso.

