Lei de Murphy associada a edicao de mapas:
Paragrafo 1o: "Se voce nuca viu um LEAK, nao se preocupe, cedo ou tarde voce vera."
Paragrafo 2o: "Voce achou o seu leak facilmente? Entao quando o seu mapa estiver grande o suficiente voce tera outro, e perdera horas procurando-o."
O que eh um LEAK?
LEAK significa vazamento. Ou seja, tem um buraco no seu mapa. Os mapas para Half-Life devem ser totalmente fechados, se em alguma parte do mapa houver uma fresta minima que seja, o hlbsp ja vai acusar leak.
Se voce ver este erro no hlbsp na hora de compilar o seu mapa, voce tem um leak, e vai precisar corrigi-lo:
Warning: LEAK LEAK LEAK
Uma mensagem de erro como a seguir no hlbsp eh causada por um LEAK como outro qualquer, e nao quer dizer que suas luzes ou entidades estao com problemas, apenas que foi uma delas que detectou o leak, portanto nao precisa apagar ou editar nenhuma entidade, basta achar o leak:
Warning: === LEAK in hull 0 ===
Entity light_spot @ (-112,-688, 424)
Leak pointfile generated
Warning: === LEAK in hull 1 ===
Entity info_player_start @ (-352,-736, 320)
Warning: === LEAK in hull 2 ===
Entity info_player_start @ ( 416,-736, 320)
Warning: === LEAK in hull 3 ===
Entity game_text @ (-1056, 960, 48)
Mas mesmo com leak voce pode jogar o mapa, so que ele fica sem luz, entao porque nao deixar assim mesmo? Porque vai ficar lentissimo e feio! Afinal quando ha leak, a compilacao termina no bsp, entao o vis nao roda, o que faz o seu mapa inteiro ser desenhado a todo momento, e o rad tambem nao roda, deixando o seu mapa brilhante e feio, sem nenhum efeito de luz. (para saber mais sobre compilacao, veja este tutorial)
Como achar LEAKS
Metodo 1: Procurar visualmente, na raca
Mude a sua janela 3D para o modo Flat, e saia navegando por ela ate achar o buraco. Se nao achar facilmente, use outro metodo.
Um leak visto na janela 3D flat:
http://arquivo.mataleone.com/tut/pic/mbtut08-01.jpg>
Metodo 2: Blocaum
Se voce tem uma ideia de onde o leak pode estar, mas nao consegue acha-lo, crie um brush cobrindo toda a area onde voce acha que o leak pode estar. Compile. Se nao der erro de leak, quer dizer que voce o cobriu com o bloco, se der leak, quer dizer que voce nao o cobriu com o bloco, portanto nao esta onde voce pensava, entao aumente ou mova o bloco. Quando voce conseguir cobrir o leak, va diminuindo o tamanho do bloco e compilando. A ideia eh fazer o bloco cobrir o leak e deixa-lo com o menor tamanho possivel, isolando a area do leak. Ai eh so apagar o bloco e voce vai achar facilmente o leak naquela area que ele estava cobrindo.
Metodo 3: Usando PointFiles
Mesmo com leak, o arquivo BSP eh gerado, junto com um arquivo .PTS. Este arquivo .PTS eh chamado de PointFile, e contem informacoes de como o leak foi encontrado pelo hlbsp. No WorldCraft, voce pode carregar este arquivo atraves do menu Map -> Load PointFile. O que eh mostrado eh como se fosse o caminho que o WorldCraft usou para chegar ao leak, mas raramente da para tirar alguma conclusao do que eh mostrado. Para descarregar o PointFile, Map -> Unload PointFile.
PointFile carregado no WorldCraft:
http://arquivo.mataleone.com/tut/pic/mbtut08-02.jpg>
O Arquivo PointFile tambem pode ser carregado no Half-Life, o que fica bem mais facil para seguir, pois aparecera uma linha pontilhada percorrendo o seu mapa que vai dar direto no leak. Para fazer isso, voce deve:
Copiar o arquivo .bsp e .pts para o diretorio valve/maps, dentro do diretorio do Half-Life (eu recomendo incluir comandos para copiar estes arquivos no seu esquema de compilacao).
Rodar o HL com a seguinte linha de comando "hl.exe -dev -console -particles 10000" (eu recomendo criar um atalho com esta linha de comando no seu desktop para ser usado apenas para testes de mapas).
Entrar no console e digitar "map nomedomapa" (sem o .bsp).
Se voce estiver em modo OpenGL Default, digite no console "gl_clear 1" para preencher os espacos fora do mapa com uma cor solida, nao com HOM (Hall Of Mirrors, aquele efeito que fica repetindo a imagem como se estivesse num espelho)
No console de novo, digitar "pointfile"
Opcionalmente, digite "noclip" no console para poder atravessar paredes e voar (fica mais facil para seguir a linha).
Agora de uma andada pelo mapa ate achar uma linha pontilhada voando. Esta linha passa por dentro e por fora do mapa.
Va seguindo esta linha ate que uma hora ela passa pelo leak.
Volte pro WorldCraft e conserte o leak :)
Este metodo eh rapido e eficiente. Se apos corrigir o buraco continuar dando erro de leak, refaca todo o processo novamente, pois certamente voce tem mais leaks, em outros lugares.
A linha pontilhada saindo pelo buraco no Half-Life:
http://arquivo.mataleone.com/tut/pic/mbtut08-03.jpg>
Metodo 4: Envolver o mapa numa caixa
O pior jeito de contornar leaks eh fazer uma caixa em volta do seu mapa inteiro. NUNCA faca isso. Deixe de ser preguicoso. O seu tempo de compilacao vai aumentar e este tempo poderia ser gasto procurando o leak usando PointFiles, o que deixa o seu mapa menor, mais simples, mais rapido de compilar e mais "certo". Falo, mano?
O que pode causar um LEAK
Descuido
Um leak pode aparecer por um simples descuido de nao fechar uma certa parte do mapa. Por exemplo, voce pode ter criado um brush para ser o chao que nao chega ate a parede, deixando um buraco entre a parede e o chao.
Mexer com grupos ou varios brushs de uma vez
Ao mexer no tamanho de grupos ou de varios brushes juntos, tome cuidado para que todos os brushes tenham a mesma dimensao no eixo em que voce esta mexendo. As vezes voce pode estar aumentando o tamanho de varios brushes ao mesmo tempo e sem querer abrir um buraco num lugar inesperado sem perceber, como no exemplo abaixo.
Grupo selecionado que sera editado, sem leaks:
http://arquivo.mataleone.com/tut/pic/mbtut08-04a.jpg>
Apos mudar o tamanho, aparece um leak inesperado:
http://arquivo.mataleone.com/tut/pic/mbtut08-04b.jpg>
Entidades brush nao fecham buracos!
Outro erro comum eh usar uma entidade brush para cobrir um buraco, como uma grade ou vidro numa janela. Se voce quer criar uma janela com grade que de para o ceu, por exemplo, nao basta coloca-la cobrindo o buraco porque entidades nao fecham buracos. Voce deve criar um brush de ceu (com a textura SKY) do lado de fora da parede para fechar o buraco corretamente e ver o ceu quando olhar pela janela.
Janela sem ceu atras (vai dar leak):
http://arquivo.mataleone.com/tut/pic/mbtut08-05a.jpg>
Janela fechada corretamente com um brush de ceu:
http://arquivo.mataleone.com/tut/pic/mbtut08-05b.jpg>
por - Mataleone -
|