Nav Meshes
Agora nós vamos criar o Navigation Mesh, ou "Nav Mesh", para nosso level. O Nav Mesh representa a "área andavel" do mapa. Isto permite que os bots Sobrviventes e Infectados saber como se mover no ambiente.
Criando tutorial04.vmf e compilando
No Hammer, abra o arquivo do mapa tutorial03.vmf
que você criou no tutorial anterior (Caso ainda não esteja aberto). Isto deve estar localizado na pasta mapsrc, por definição:
C:\Program Files\Steam\steamapps\common\left 4 dead\sdk_content\mapsrc\
Agora nós faremos uma nova versão para trabalhar e compilar:
- Vá para o menu File e escolha Save As...
- Mude o nome para
tutorial04.vmf
. - Aperte F9 para abrir a janela Run Map e clique no botão OK para compilar.
Iniciando
Quando o level carrega:
- Assim como antes, vai aparecer a mensagem "Map is unplayable" porque ainda não criamos o Nav Mesh. Aperte Continue para fechar a janela.
- Abra a janela do console de programador (developer console) apertando a tecla `
- Digite
"director_stop"
e pressione a tecla ↵ Enter.- Isto faz com que o AI Director não crie mais Infectados.
- Digite o comando
"nb_delete_all"
e pressione ↵ Enter.- isto removerá todos os bots Infectados e Sobreviventes do jogo atual.
- Digite o comando
"nav_edit 1"
e pressione ↵ Enter.- Isto trocará o jogo pelo modo de edição de Nav Mesh.
- Feche o console apertando novamente a tecla `.
Com o console fechado, Olhe para o chão no meio do corredor entre os dois quartos.
Abra o console e digite "nav_mark_walkable
" e aperte ↵ Enter.
Feche o console e você deve ver uma pirâmide no chão onde você está mirando.
Você acaba de adicionar um marcador de geração de nav chamado "nav_mark_walkable
".
Abra seu console novamente e digite "nav_generate_incremental
" e aperte ↵ Enter.
Isto irá gerar um conjunto de nav areas ao redor do marcador nav_mark_walkable
. Áreas de nav meshes aparecem como uma série de quadrados conectados. Devem ser gerados ao longo dos dois quartos.
nav_mark_walkable
ao longo de seu level. Cada nav_mark_walkable
tem uma área máxima. Em geral, construa nav areas para cada sessão por vez para manter o nav mesh limpo.nav_generate_incremental
automaticamente salva o Nav Mesh no seu mapa quando é rodado. Se você quiser salvar seu progresso manualmente, você pode usar o comando "nav_save
".Após o comando nav_generate_incremental
é rodado, todas as areas criadas são selecionadas. Isto ajuda quando você comete algum erro e quer cria-los novamente. Para deletar o nav selecionado, entre com o comando "nav_delete
" no console e toda as áreas selecionadas serão apagadas. Se você tentar isto, você pode recriar as nav areas simplesmente pondo outro marcador nav_mark_walkable
e digitando nav_generate_incremental
de novo.
- Para desclicar um nav, digite "
nav_clear_selected_set
". - Para selecionar uma nav area, Olhe para a área com seu cursor e digite "
nav_toggle_in_selected_set
". Isto irá selecionar a nav area para qual está olhando.
Como você pode ver, editar o Nav Mesh usa muito comandos do console. O modo mais efetivo de se editar, ao invés de se digitar o comando toda vez, é atribuir (bind) teclas para esses comandos como atalho.
Um arquivo de configuração (cfg) foi incluso para tornar as coisas mais fáceis.
Abra o console e digite:
bind PGDN "exec nav_mode"
e pressione ↵ Enter.
Agora pressionando a tecla Page Down você trocará entre os modos "Nav Edit" e "Game".
Atribuindo seus próprios comandos (avançado)
para configurar suas próprias teclas usando o comando bind
, abra o console e digite:
bind <key> "comando do console"
Por exemplo, se você quer atribuir a tecla Z o comando "nav_toggle_in_selected_set
", digite no seu console:
bind z "nav_toggle_in_selected_set"
Você pode abrir o arquivo left4dead/cfg/nav_mode.cfg
em um editor de texto para adicionar ou mudar comandos atribuídos.
- Para mais informações sobre atribuir comandos para teclas, veja Bind .
nav_mode.cfg
. Se você estiver usando suas próprias atribuições, você terá que substituir suas teclas de atalhos pelas citadas.Você irá notar também que o Nav Mesh no seu level atual possui largas áreas que cobrem o quarto todo. As vezes, é necessário dividir essas áreas largas em menores. Por exemplo, se você quer adicionar um atributo como onde os sobrevivente começam e que seja em frente da mesa com armas.
Você pode dividir nav areas usando o comando "nav_split
".
No arquivo incluso nav_mode.cfg
, nav_split
está vinculada a tecla Insert.
Assim que você mira para as nav areas, você verá uma linha branca que move tanto para Norte/Sul como Leste/Oeste com seu mouse. Posicione seu cursor de modo que a linha apareceça a direita da mesa de armas no primeiro quarto.
Esta linha mostra onde a divisão acontecerá se você usar nav_split
.
Pressione Insert para fazer a divisão.
Agora, posicione o cursor de modo que a new area que acabou de dividir em frente a mesa seja dividida pela metade na outra direção.
Pressione Insert para fazer a divisão e veja o resultado.
Adicionando Atributos (Attributes)
Nav areas podem conter atributos (attributes) que são designidados para fins específicos. Por exemplo, uma nav area marcada com o atributo "EMPTY" significa que um infectado comum não pode nascer ali. Digamos que você tenha uma cozinha com um balcão nela, e não quer que infectados fiquem em cima do balcão quando os jogadores passarem porque pareceria estranho. Você pode marcar esta área como "EMPTY".
Primeiro, digite o comando "z_debug 1
" para permitir que os atributos sejam vistos.
No nosso primeiro nav mesh que estamos criando, nós precisamos designar onde os sobreviventes vão começar quando eles aparecem no mapa. Vamos marcar a area em frente a mesa de armas que nós acamos de dividir como "PLAYER_START".
Mire seu cursor na área em frente a mesa e pressione a tecla Z para usar o comando "nav_toggle_in_selected_set
".
Agora abra o console, digite "mark PLAYER_START
" e pressione ↵ Enter.
isto tornara a área selecionada em uma posição Player Start para os sobreviventes. Deve ficar na cor roxa.
clear_attribute <attribute name>
" no console para remove-lô. Por exemplo: clear_attribute PLAYER_START
Left 4 Dead rquer certas nav areas em seu level para que o Director funcione adequadamente. Para este simples level teste, nós usaremos outro atributo chamado "FINALE".
Vá para o segundo quarto no level e selecione a area o ocupa olhando para ela e pressionando a tecla Z.
Abra o console e digite "mark FINALE
", depois pressione ↵ Enter.
isto irá tornar o quarto em uma finale area e ficará azul.
Agora, o level tem tudo que o Director precisa para funcionar corretamente. O Director pode criar um "flow" (fluxo) do ponto de partida ao ponto de destino.
Para fazer o level um pouco mais jogável, vamos marcar as áreasem torno do Player Start como "EMPTY" (vazio) para que o jogador não fique cercado de zumbis logo quando o mapa carrega.
Selecione todas as áreas ao redor do Player Start com a telca Z.
Abra o console e digite "mark EMPTY
" e pressione ↵ Enter.
Isto irá prevenir que infectados comuns apareçam nessas áres quando o mapa começa.
Salve o nav mesh usando o comando "nav_save
".
Se você cometer um erro ou ver que a geração automática do nav mesh tem erros, você pode deletar nav areas com o comando "nav_delete
". Por exemplo, a mesa de armas não precisa de uma nav area sobre ela. Pode causar os sobreviventes survivors subindo nela, o que pode não ser desejável.
No arquivo config fornecido, este comandojá foi atribuído para a tecla Delete.
Para deletar a nav area, aponte nela, selecione com a tecla Z. Certifique-se de que tenha selecionado apenas as áreas que você quer apagar, então pressione Delete.
Agora que nós temos um nav mesh básico, nós precisamos que ele seja analizado para que o director saiba onde pode nascer infectados.
Abra o console e digite "nav_analyze
" e pressione ↵ Enter.
Isto pode levar um tempo e depois o level irá recarregar.
Para testar a geração de infectados, use "director_start
" no console e recarregue o level com "map tutorial04
".
Seu cenário deve ficar algo parecido com este.
Se você abrir o tutorial03 no jogo, e trocar para nav_edit 1
, você verá como uma escada se parece com nav colocada nela.
Para criar nav em uma func_ladder
, posicione seu cursor sobre ela no modo nav_edit e use "nav_build_ladder
".
Enquanto muitas nav areas serão conectadas corretamente quando usado nav_generate_incremental
, há algumas que você irá querer ajustar ou alterar. Por exemplo, a passarela que criamos no tutorial03 pode não ter sido conectado corretamente com as áreas abaixo.
Para conectar 2 nav areas, selecione-as e use "nav_connect
" no console. A tecla End está atribuída para isto no arquivo nav_mode.cfg.
isto irá conectar as áreas em ambas direções e formará uma linha azul-claro como visto na imagem. Infectados podem escalar-lá (eles podem escalar qualquer área menor ou igual à 180 unidades) e podem pular delas. Bots sobreviventes também podem pula delas.
para conectar 2 áreas em um sentido, você precisa selecionar a que você quer que seja capaz de conectar com a outra e depois com o cursor aponte para a segunda mas não selecione-a. Então, pressione End para usar "nav_connect
".
Certifique-se que em ambos caso em que há duas áreas que você quer conectar não são sobrepostas uma na outra. Isto fará com que infectados travem suas cabeças quando tentarem escala-las.
As vezes nav_generate_incremental
deixa de fora áreas que você quer que o nav tenha. Neste caso, você precisará desenhar sua própria nav area.
Desenhando nav areas é feito com duas 2 teclas. Uma é atribuida com "nav_begin_area
" e outra com "nav_end_area
". O arquivo nav.cfg
tem nav_begin_area
atribuida ao botão esquerdo do mouse e "nav_end_area
" atribuida ao botão esquerdo do mouse.
Mire para onde você quer criar a área e clique com o botão esquerdo do mouse. Assim que você move o mouse, você pode ver onde a nav area será desenhada até que pressione o botão direito do mouse para finalizar a criação da área.
Clique no botão direito do mouse para ativar nav_end_area
e veja o resultado.
Você notará que o cursor não se alinha a grade quando está nesse modo. VOcê pode ativar a propriedades de alinhamento usando "nav_snap_to_grid
" no console.
nav.cfg
, a tecla F9 é atribuída para "incrementvar nav_snap_to_grid 0 2 1
". Isto mudará o tamanho da grade quando você pressionar a tecla e continuará a alterar o tamanho cada vez que pressionada a tecla F9.Também é possível desenhar uma escada usando nav_begin_area
e nav_end area
. Apenas aponte para uma ponta da escada e mova o cursor verticalmente para o canto oposto.
- L4D Level Design/Visibility/pt-br|:L4D Level Design/Visibility/pt-br]]