Wildermyth: Como criar um mapa de defesa contra incursões

Um guia para criar mapas personalizados de Defesa de Incursão no Wildermyth e um guia geral para usar o Editor do Site.

 

Introdução

Enquanto trabalhava no meu Pacote de Defesa de Incursão mod Não consegui encontrar muitos recursos sobre como funciona o editor de mapas no Wildermyth. O canal oficial do Youtube tem um vídeo (que eu recomendo assistir), mas o editor tem muitas peculiaridades que não são imediatamente claras para novos usuários. Como eu também estava fazendo especificamente mapas de Defesa de Incursão, eu precisava saber como eles funcionavam em comparação com mapas normais. Este tutorial é especificamente sobre mapas de Defesa de Incursão, mas incluirá conhecimento geral suficiente para ser útil para qualquer pessoa que queira se familiarizar com o editor do site.

Laboratório do local

Para começar, vamos abrir o editor navegando até Ferramentas > Abrir Editor no menu principal e selecionando Site Lab no menu do editor. Antes de prosseguirmos no Editor do Site, vamos fazer nosso novo mod selecionando Mods no canto superior direito e clicando em Criar Novo Mod.


Depois de criar seu mod, ele será selecionado automaticamente na lista de mods. Clique em Confirmar para sair.

O layout básico do Editor do Site possui uma janela principal onde você visualiza o próprio mapa, e o painel esquerdo onde podemos manipular os componentes do nosso mapa. Na parte superior deste painel, temos uma variedade de opções de editores, mas a única que nos preocupa é o “Plano”. Os planos são os dados específicos sobre o layout do mapa e o posicionamento do objeto. Vamos criar um novo, então clique em New Fight (CTRL+N).


Vá em frente e insira um ID memorável para sua luta. Todo o resto nesta tela pode ser desativado ou ignorado com segurança. Como você verá mais tarde, toda a lógica dos mapas de Defesa de Incursão já foi tratada por nós.

Depois de criar sua luta, procure-a no menu suspenso Plano e selecione-a.

Por fim, desmarque a caixa de seleção “Set Pieces”. Isso removerá os objetos de fundo do ambiente para que eles não obscureçam nossa visão do mapa.

Nota: Você pode ficar tentado a selecionar “incursionDefense” no menu suspenso Formato. Alterar o formato mudará a lógica do jogo por trás do nosso mapa no editor. No caso de IncursionDefense, a lógica do jogo ignora nosso plano atualmente selecionado e, em vez disso, escolhe um plano aleatório do pool incursionDefense, o que significa que toda vez que você rolar novamente o editor, ele carregará um mapa diferente. Durante a edição, o Formato deve ser deixado em “assalto” para que a lógica do jogo não interfira em nossa edição.

Plano de Missão

O Plano de Missão é uma representação de nossos dados de mapa (se você estiver tecnicamente inclinado, este é apenas um arquivo JSON). Antes de mergulharmos na construção do nosso mapa, temos algumas configurações iniciais para cuidar. Por enquanto, clique no ícone de menos ao lado da seção de detalhes para recolhê-la. Vamos focar em tudo entre “declaredRoles” e “extraInfo”.


Se você não entender essas configurações, tudo bem. Esta é apenas a informação que o jogo precisa para configurar corretamente nosso mapa.

Primeiro, clique no botão Nova entrada ao lado de declaradoRoles. Apenas uma opção precisa ser definida aqui, que é "auto".

Em seguida, clique no botão Nova entrada em declaradoEncounterResults três vezes. O defina as opções para:

0: derrota
1: vitória
2: escapar

Estas são as três maneiras pelas quais uma missão de Defesa de Incursão termina: ou os heróis derrotam todos os inimigos, os inimigos derrotam todos os heróis ou os heróis escapam do mapa sem matar todos os inimigos.

Clique em skipDefaultPlots e defina a caixa de seleção como True. Como a lógica dos mapas de Defesa de Incursão já existe, não queremos que nenhuma outra lógica interfira nela.

Clique no botão Novo ao lado de extraInfo. Isso adicionará uma opção chamada “incursionDefense”. Defina isso como verdadeiro. Esta opção é muito importante; ele adiciona nosso mapa ao conjunto de mapas de defesa de incursão que o jogo escolhe quando o jogador defende uma cidade contra uma incursão.

Na lista de detalhes, podemos adicionar os vários recursos que compõem nosso mapa. Na próxima seção entraremos em mais detalhes sobre cada um, mas para começar há um detalhe que precisamos adicionar. Mova o mouse sobre os detalhes, clique em “Novo Detalhe…” e adicione MapDetail_Plot. Na parte inferior da lista de detalhes, agora você terá uma opção chamada Plot {}. Expanda esta opção e clique no campo plotId. Na lista que aparece, selecione M_incursionDefense como seu gráfico. Este contém toda a lógica necessária para mapas de defesa contra incursões.

Nota: Esteja ciente de que se o seu mod for carregado ao jogar uma campanha e você não tiver terminado de construir seu mapa de defesa de incursão, o jogo lançará um erro e retornará ao menu principal se tentar carregar este mapa ao defender um Cidade. Certifique-se de desativar seu mod em suas campanhas até que esteja concluído e pronto para uso!

Pisos, paredes, portas

Com toda a nossa preparação fora do caminho, é hora das coisas boas! No momento, sua janela do editor provavelmente ficará assim:


O novo mapa vem com alguns detalhes comumente usados, como pisos, cenários aleatórios e regiões de spawn. Por enquanto, vamos excluir tudo, exceto o piso, as paredes e a plotagem que acabamos de adicionar. Para excluir uma entrada, basta mover o mouse sobre ela e clicar no botão X. Vamos adicioná-los de volta mais tarde.

Você notará que ao excluir essas entradas, elas não desaparecem do mapa. Isso ocorre porque o mapa é gerado apenas uma vez, quando carregado. Para gerar as alterações mais recentes, precisamos Rolar novamente, clicando no botão Reroll no canto superior esquerdo do editor ou pressionando Ctrl+R.


Muito melhor!

Andar

Expanda o detalhe DrawFloor e clique em floorTiles. A grade que aparece no editor mostra cada piso no mapa. Para adicionar mais, clique em um bloco vazio ou clique com o botão direito do mouse para remover um bloco existente. Segurar o shift permitirá que você clique e arraste para desenhar vários blocos, e o menu suspenso no canto superior esquerdo do editor permitirá que você defina o tamanho do pincel. Como antes, as alterações feitas não ficarão visíveis até que você role novamente o mapa.

Construa sua planta baixa como quiser. Pessoalmente, o meu é assim:


Pressione escape ou clique na opção FloorTiles novamente para desabilitar o desenho.

Você pode notar que o detalhe do DrawFloor tem algumas opções adicionais. Na maioria das vezes, você não vai querer alterá-los, pois deseja que o piso corresponda ao bioma, mas em alguns casos, você pode alterar a textura do piso (ou seja, se quiser adicionar um piso diferente dentro de um prédio). Para fazer isso, selecione uma das floorLayers vazias e escolha a textura desejada. Em seguida, com o cursor do mouse sobre o floorLayer, clique no botão desenhar. Você pode até trocar a textura desse floorLayer por uma textura personalizada, incluindo um JPG em Wildermyth\mods\ \ativos\sites\imagens.

Paredes

As paredes são desenhadas da mesma forma que os pisos. Expanda o detalhe DrawWalls, clique em ladrilhos e desenhe onde você deseja que suas paredes. Assim como os pisos, as predefinições shortBiome, midBiome e tallBiome usarão qualquer bioma com o qual seu mapa seja gerado, mas você também pode escolher paredes específicas dependendo do efeito desejado. A maioria das configurações de parede não deve ser alterada, mas opções como hasWallsCaps e isBoundary podem ser úteis. Passe o mouse sobre cada opção para ver uma descrição dela.

Se você quiser vários tipos de paredes, poderá criar detalhes adicionais do DrawWalls para cada tipo de parede. Para fazer isso, passe o mouse sobre a categoria de detalhes e selecione MapDetail_DrawWalls.

portas

Paredes são ótimas para impedir que pessoas (ou monstros) passem por uma área, mas e se quisermos deixá-los passar de qualquer maneira? Podemos fazer isso com uma nova tecnologia incrível chamada “Door”. Adicione MapDetail_Door à lista de detalhes e clique nos locais sob a entrada Door para colocar as portas. Colocar portas em paredes existentes removerá automaticamente a parede para que a porta possa ser atravessada. As portas podem ocupar um único ladrilho ou dimensionar para caber em vários ladrilhos (embora alguns estilos de porta tenham um tamanho mínimo). A opção de estilo determina a aparência da porta e, como as paredes, se você quiser estilos diferentes de portas, poderá criar vários detalhes de MapDetail_Door.


As portas têm algumas opções úteis: isOpen permite definir a porta para já estar aberta quando a missão começar. Locked impedirá que jogadores ou monstros possam interagir com a porta (isso pode ser combinado com isOpen para fazer uma porta que fica permanentemente aberta).

Relâmpago, Cenário, Lâmpadas, Detritos

Com as peças básicas do seu mapa no lugar, vamos ver como adicionar detalhes para tornar o espaço mais interessante.

A maneira rápida

Na última seção, você pode ter colocado algumas paredes para fazer um prédio fechado. Usando MapDetail_InteriorRegion, podemos preencher rapidamente seu prédio com iluminação e cenário. Basta adicionar MapDetail_InteriorRegion, selecionar ladrilhos e pintar a área dentro de seu prédio.


Refaça seu mapa…


E assim, seu prédio tem iluminação interna e cenários posicionados aleatoriamente! Mas ainda não terminamos. Por um lado, você deve ter notado que existem objetos que não correspondem à estrutura pretendida. Podemos controlá-los com algumas das configurações do InteriorRegion.

Muitas das opções do InteriorRegion permitem controlar que tipo de cenário pode aparecer e com que frequência, usando um número entre 0.0 e 1.0. Por exemplo, definir useMonsterScenery para 0.0 significa que essa região nunca gera objetos de cenário que foram criados por monstros (como os tentáculos azuis de Gorgon). Modifique essas configurações ao seu gosto e role novamente para ver as alterações. Você também pode usar o forbidLampsAndScenery para impedir que qualquer objeto seja gerado em certos ladrilhos enquanto ainda tem o efeito de iluminação interior. Finalmente, você pode usar forbidTheseSceneryAndLamps para especificar partes exatas do cenário que você nunca deseja que sejam selecionadas aleatoriamente.

Para um método ainda mais rápido de criar espaços interiores, você pode usar MapDetail_House. Adicione os detalhes ao seu mapa, desenhe um retângulo de sete ladrilhos de largura e o editor criará instantaneamente uma cabana aconchegante. Esta ferramenta dá muito menos controle do que outros métodos, mas os resultados são muito rápidos.

Nota: As paredes laterais da casa são definidas por qualquer detalhe de DrawWalls que venha primeiro na lista de detalhes. Para alterar o estilo das paredes, crie um MapDetail_DrawWalls, defina o estilo de parede desejado e clique na seta para cima nesse detalhe até que ele se mova acima de todos os outros detalhes de DrawWalls em seu mapa.

A maneira avançada

As opções acima permitem adicionar detalhes rapidamente ao seu mapa, mas existem opções adicionais para quem deseja um controle mais específico. Para iluminação, você pode usar MapDetail_DrawIndoorLighting. Isso funciona de maneira muito semelhante ao InteriorRegion, mas permite definir uma quantidade específica de luz por bloco.


Ao desenhar blocos com DrawIndoorLighting, você notará um controle deslizante de opacidade na parte superior da tela. Isso permite definir quanta luz é aplicada a um bloco específico. Você também pode desenhar sobre ladrilhos para adicionar mais opacidade a esse ladrilho (ou seja, com a opacidade definida como 0.1, clicar em um ladrilho duas vezes definirá sua opacidade para 0.2).

Há também uma série de ferramentas para criar cenários e luminárias, com mais controle do que tínhamos na etapa anterior. O mais detalhado deles é MapDetail_RandomScenery. Adicione isso ao seu mapa agora.

Observação: tenha cuidado para não usar nenhum detalhe do mapa com a palavra “Descontinuado” ao lado. Em termos de desenvolvimento de jogos, “Reprovado” significa que esta opção não é mais suportada e foi substituída por outra. Algumas das funções obsoletas do editor de mapas ainda estão presentes, mas este tutorial se concentrará apenas naquelas ainda destinadas a serem usadas.

A primeira configuração em RandomScenery é whereToSpawn, e existem três opções:

  • em toda parte irá gerar cenário em todo o mapa.
  • área especifica permite definir uma área onde o cenário aleatório pode aparecer (assim como InteriorRegion)
  • Locais exatos permite que você escolha ladrilhos específicos onde o cenário sempre irá aparecer.

Esta ferramenta é muito semelhante ao InteriorRegion, conforme explicado acima, mas contém algumas opções adicionais. Mais notavelmente, o cenárioDensity permite que você defina um número entre 0.0 e 1.0 para controlar quanto cenário aleatório é colocado em sua área de spawn. Há também a configuração drawForbidScenery, que permite definir blocos onde o cenário NÃO deve aparecer. Tenha cuidado ao usar esta opção, pois ela bloqueará o cenário gerado não apenas pelo MapDetail atual, mas também todos os MapDetails abaixo do atual na lista de detalhes.

Como você configura seu cenário é com você. Para demonstração, adicionei um detalhe RandomScenery para gerar o cenário interno dentro da minha estrutura e um segundo detalhe RandomScenery para gerar o cenário externo em todos os ladrilhos externos. Eu também desenhei um caminho de ladrilhos proibidos pelas principais pistas do layout do mapa para evitar que eles fiquem muito confusos.

Além disso, vou adicionar um detalhe RandomLamps para gerar lâmpadas dentro da minha estrutura e um segundo detalhe RandomLamps para gerar algumas do lado de fora das portas. Isso funciona exatamente como RandomScenery.


Nosso mapa agora está muito bom! Mas antes de passarmos para as regiões de geração, vamos dar uma olhada rápida nos Detritos.

O que são detritos? Bom, são essas coisas:


Embora possa não parecer importante, algumas habilidades podem incendiá-lo, e o fogo se espalhará entre os blocos de detritos, então isso tem implicações na jogabilidade. Usando MapDetail_Debris, podemos ter algum controle sobre ele. MapDetail_Debris nos dá duas opções: globalDebrisChance e drawDebrisChance. O primeiro padrão é 0.1 e geralmente pode ser deixado assim. drawDebrisChance nos permite pintar azulejos com detritos; semelhante a quando desenhamos a iluminação, a opacidade pode ser definida para definir a probabilidade de os detritos aparecerem nesse bloco. Isso é útil principalmente ao criar a aparência de algo que foi destruído (ou seja, uma seção de parede desmoronada).

Tudo sobre regiões de spawn

SpawnRegions controlam onde os jogadores e os inimigos aparecem. Eles também lidam com coisas como telhas de reforço e telhas de fuga.

Gerações de jogadores

Crie uma SpawnRegion e defina os tiles para exactTiles, então desenhe onde você quer que os heróis apareçam. Para fazer os heróis aparecerem aqui, defina o papel como “atacante” (embora isso possa parecer errado para uma missão de defesa, em todos os tipos de missão o jogador é sempre considerado o atacante).

Você pode escolher desenhar uma grande área de spawn conectada ou várias áreas desconectadas. Se você fizer o último, notará que todos os heróis aparecem em torno do mesmo grupo de peças em vez de se espalhar para todos eles. Para corrigir isso, splitGroupsIntoSeparateRegions deve ser definido como false. Isso também parece contra-intuitivo, mas parece haver um bug com spawns de jogadores onde splitGroupsIntoSeparateRegions faz o oposto do que diz.

Gerações Inimigas

Em seguida, crie outro SpawnRegion, defina tiles para exactTiles e defina o papel para defensor. Esta será a área de desova para os inimigos. Em seguida, clique no botão Dup nesta spawnRegion para duplicá-la. Defina o usePriority da nova spawnRegion para 1. Isso permitirá que você defina uma área de spawn para ser usada com menos frequência, apenas quando houver mais inimigos do que áreas de spawn.

Nota: A dica de ferramenta para usePriority diz que superior prioridade é usada primeiro. Embora isso seja verdade para a maioria dos tipos de missão, um bug nas missões de defesa de incursão faz com que ela use a ordem oposta. Zero é a prioridade mais alta e cada número subsequente tem prioridade mais baixa.

Reforços e Fuga

Quando houver mais inimigos em uma missão do que seria justo lutar, esses inimigos serão mantidos em reserva até que alguns dos inimigos existentes sejam mortos. Esses inimigos surgirão de uma região de Spawn com o uso de retardo de Spawn. Vá em frente e crie outra SpawnRegion, defina seu papel como defensor e use para delaySpawn. Essas áreas geralmente devem estar ao redor da borda do mapa, razoavelmente longe dos spawns do jogador.

Se os heróis estão perdendo a luta, eles têm a opção de recuar alcançando uma ficha de fuga. Crie um SpawnRegion com a função definida como atacante e o uso definido como escape. Essas peças geralmente são encontradas na borda do mapa, e sua distância dos spawns do jogador determinará o quão difícil é para um herói alcançá-las.

Nota: Você pode usar a opção drawForbidScenery em seu detalhe RandomScenery para impedir que o cenário seja colocado em cima desses blocos.

Conclusão

Parabéns! Seu mapa está pronto para jogar! Antes de publicar esse mod e liberá-lo para o mundo, algumas considerações finais:

  • Teste seu mapa: É importante ter uma noção de como seu mapa se sente ao jogar. Mesmo que pareça ótimo do editor, pode haver problemas que você encontre ao reproduzi-lo. Use o guia do Wildermyth Wiki sobre testes para saber como garantir que seu mapa apareça em uma campanha. https://wildermyth.com/wiki/Testing
  • Aprenda com os melhores: Todos os mapas que você joga no jogo estão disponíveis no editor. Se você viu um determinado efeito ou situação em um mapa que deseja usar no seu, carregue o mapa existente no editor e veja por si mesmo. É também uma ótima maneira de aprender como os mapas são feitos; tudo o que escrevi neste tutorial eu aprendi olhando os mapas existentes e usando isso como referência para fazer o meu próprio.
  • Deixar feedback: Se eu esqueci alguma coisa, ou cometi um erro, ou se você tiver mais alguma dúvida, por favor, pergunte abaixo! Fico feliz em atualizar este guia se houver algo que eu possa fazer para torná-lo mais útil.

Feliz edifício!

Deixe um comentário

ArabicEnglishFrenchGermanItalianJapaneseKoreanPortugueseSpanish