Mapa e Movimentação

De MysteryRealms
Revisão de 13h17min de 11 de abril de 2025 por Rodrigogml (discussão | contribs) (Conexão)
Ir para navegação Ir para pesquisar

A PlayTale Engine oferece suporte para dois tipos complementares de movimentação do jogador: entre Localidades e dentro de uma Localidade. Cada um desses modos utiliza lógicas distintas, mas coerentes com a Estrutura de Localização.

Mapa Global (Entre Localidades)

O mapa global é representado por uma malha cartesiana de coordenadas inteiras (formato [x;y]), onde cada ponto representa uma Localidade.

  • Cada célula corresponde a uma área de 10 km² (10 km × 10 km).
  • As coordenadas são usadas apenas internamente, para validar cálculo de distância e deslocamento. Elas nunca são exibidas ao jogador.
  • A distância entre dois pontos pode ser calculada com o Teorema de Pitágoras, com base nas coordenadas inteiras.
  • É recomendado que o jogo exiba ao jogador sempre a distância entre dois pontos em termos relativos:
  • Exemplo: "2 dias de caminhada para o sul", "1 dia e meio a cavalo para o leste", ou esmo em distância: "15Km daqui", "2km a oeste de X".


Exemplo

  • [10;15] está a 10 km a oeste de [11;15]
  • Distância entre [10;15] e [12;18]:

(1210)2+(1815)2×10=4+9×10=13×1036km


Navegação

Toda a navegação do jogador no jogo ocorre exclusivamente entre Zonas e Ambientes. Esses são os únicos dois níveis da Estrutura de Localização que possuem representação visual direta no jogo (como imagens e ilustrações específicas). Ou seja, são os únicos "lugares" que o jogador realmente vê e nos quais interage diretamente no sentido espacial e navegável.

Apesar de Zona e Ambiente serem categorias distintas para fins organizacionais e narrativos, no contexto da navegação, ambas têm exatamente a mesma função. A distinção entre elas é estrutural: a Zona representa o local principal (geralmente externo ou de acesso geral), enquanto os Ambientes são subdivisões internas ou pontos específicos de interação dentro dessa Zona.

O jogador pode se mover:

  • De uma Zona para outra Zona;
  • De um Ambiente para outro Ambiente dentro da mesma Zona;
  • Também é tecnicamente possível mover-se entre Ambientes de Zonas diferentes — o sistema não restringe isso — embora não seja uma prática comum, sendo usada apenas em situações excepcionais (ex: passagens secretas, túneis, edifícios interconectados, etc.).

Toda Zona é um ponto navegável, mesmo sem possuir Ambientes internos. Da mesma forma, uma Zona pode (e frequentemente deve) conter Ambientes para estruturar melhor os pontos de interação específicos, mas sua navegação como lugar não depende da existência desses ambientes. Ambientes e Zonas são ambos elementos navegáveis independentes, com ou sem presença um do outro.

Por padrão, ao entrar em uma Zona, o jogador será posicionado no ambiente definido como ponto inicial (caso haja ambientes), ou permanecerá na própria Zona como ponto visual e narrativo direto. A engine trata esse comportamento automaticamente, permitindo que scripts e eventos definam se a entrada ocorre direto em um ambiente ou na Zona geral.

Todas as interações visuais, eventos locais, gatilhos de entrada e saídas, ativação de scripts narrativos e movimentação ocorrem sempre dentro de Zonas ou Ambientes. As estruturas superiores (como Localidades, Regiões ou Domínios) são abstrações de organização mundial, sem navegação direta pelo jogador.

A partir da Zona ou Ambiente em que o jogador se encontra, é possível determinar toda a estrutura superior da localização. Ou seja, os níveis como Localidade, Região, Domínio, Continente e Mundo são automaticamente inferidos com base no lugar atual. Isso significa que o sistema não precisa rastrear em qual Localidade o jogador está diretamente: basta saber a Zona ou Ambiente atual, pois todos os níveis superiores são uma consequência hierárquica dessa posição. Essa abordagem garante consistência e simplicidade na lógica de navegação e localização global.

Conexão

O conceito de Conexão representa a ligação navegável entre duas Zonas ou Ambientes. Toda movimentação no jogo depende de conexões definidas entre os pontos visuais do mundo. As conexões são o elo entre os lugares navegáveis e compõem a malha de deslocamento do jogador.

Atributos da Conexão

  • Origem: A Zona ou Ambiente de onde parte a conexão.
  • Destino: A Zona ou Ambiente de destino, com possibilidade de múltiplos caminhos encadeados por prioridade:
  • Exemplo: Túnel Oculto > Passagem Norte > Trilha Principal
  • O sistema tentará o primeiro destino acessível, com base nas condições de acessibilidade da Zona de destino. Se a primeira não for acessível, tentará a seguinte, e assim por diante.
  • O uso de destinos encadeados não é obrigatório.
  • Como boa prática, utilize sempre esse sistema de navegação quando zonas tiverem condições de acessibilidade, sempre terminando em um destino que não tenha condições (para que a rota não fique sem um destino ao jogador). Se a conexão for bidirecional, o ponto de origem também deve ser livre de condições.
  • Bidirecional: Sim | Não – Indica se o fluxo também é permitido no sentido inverso.
  • Classificação: Pacificado | Hostil | Selvagem – Indica o risco inerente da rota.
  • Condições de Acesso: Texto descritivo com requisitos para acessar a conexão (ex: “Porta trancada à noite”).
  • Notas Narrativas: Observações narrativas e ambientações relevantes.

Cálculo da Distância

A distância entre os pontos conectados é calculada automaticamente com base na posição geográfica absoluta da Origem e Destino, e ajustada por um fator de penalidade que representa desvios, curvas, obstáculos e caminhos não lineares.

  • Penalidade de Rota (%): Valor entre 0.00 e 0.02 – representa um acréscimo percentual sobre a distância base.
  • Fórmula:

Distânciakm=(x2x1)2+(y2y1)2×10×(1+Penalidade)

Coerência de Distâncias

Ao definir conexões entre lugares, é essencial manter a coerência entre as distâncias para evitar contradições lógicas no deslocamento do jogador. O sistema considera que, ao mover-se entre pontos, o jogador sempre seguirá o trajeto de menor custo possível.

Portanto, se existir uma conexão entre A → B com distância X, e outra entre B → C com distância Y, a soma X + Y representa o caminho acessível de A até C via B. Diante disso, qualquer conexão direta entre A → C deve possuir uma distância menor ou igual a X + Y. Caso contrário, o sistema poderá interpretar a rota via B como a mais eficiente, invalidando o uso da conexão direta.

Nada impede que a conexão direta entre A → C seja mais curta que a soma dos caminhos indiretos — esse é justamente o caso de trilhas ocultas, túneis secretos ou passagens privilegiadas. Contudo, não deve ser mais longa, a fim de preservar a consistência espacial e evitar que caminhos mais custosos se tornem preferenciais apenas por erro de modelagem.

O sistema de navegação da engine sempre prioriza o trajeto de menor custo (menor distância ajustada), buscando otimizar o uso de energia, tempo e riscos para o jogador durante a locomoção entre os pontos do mapa.


Interrupções

Durante o deslocamento por uma conexão, podem ocorrer Interrupções, que representam qualquer tipo de evento inesperado (hostil, amigável, ambiental, anormalidades, encontros, acidentes, etc.).

  • Chance de Interrupção por Km (%): Valor entre 0 e 100 – define a chance de uma interrupção ocorrer a cada 1 km percorrido.
  • Tabela de Interrupções: Tabela com a referência das Interrupções que podem ocorrer nesta conexão. A tabela deve conter as seguintes colunas:
  • ID da Interrupção: Identificador único da interrupção na tabela referenciada.
  • Multiplicadores de Intensidade: Valor entre -1.00 e +1.00. Multiplicador utilizado para intensificar (ou desintensificar) as chances da interrupção ocorrer nessa conexão. O valor 0 mantém a propabilidade global padrão. Valores positivos intensificam a propabilidade de ocorrência (em relação a definição global), enquanto que valores negativos diminuiem.

Essa estrutura permite adaptar tabelas globais de interrupções a diferentes contextos locais com extrema precisão, reforçando a ambientação e o risco envolvido em cada trajeto.


Cálculo de Interrupções

A verificação de interrupções durante a locomoção do jogador por uma conexão é feita com base na distância restante total até o destino. O processo ocorre de forma iterativa, e não segmentada, o que significa que não se testa "cada quilômetro" diretamente, mas sim se o jogador consegue avançar 1 km no trajeto a partir da situação atual.

Para avançar 1 km:

  • Realiza-se um teste de interrupção, com base na Chance de Interrupção por Km da conexão.
  • Se o teste for bem-sucedido (nenhuma interrupção ocorre), o jogador avança 1 km no trajeto, e a distância restante é reduzida em 1 km.
  • Se o teste falhar (interrupção ocorre):
  • Rola-se um 1d100 para determinar o percentual do km atual em que o evento ocorreu (ex: 40% = evento após 0,4 km).
  • O jogador avança apenas essa fração de 1 km, e a distância restante é reduzida proporcionalmente.
  • Após a resolução do evento, o jogador decide se deseja continuar o trajeto — se sim, um novo teste será realizado para tentar avançar o próximo km.

Quando a distância restante for inferior a 1 km:

  • Ainda será feito um teste, mas a chance de interrupção será reduzida proporcionalmente à fração restante:

Chanceajustada=Chancebase×Distância RestanteKm

Essa abordagem permite múltiplas interrupções reais e contextualizadas em conexões longas, simula eventos com precisão e dá ao jogador o controle estratégico de sua jornada após cada ponto de interrupção.


Seleção da Interrupção

A seleção do tipo de interrupção segue a lógica padrão da Tabela de Interrupções: é feita calculada com base no peso global do evento combinado ao multiplicador de intensidade local definido na conexão. E somando o peso de todas as interrupções, sorteamos um número da interrupção que ocorrerá.


Interrupções Automáticas

Além das interrupções causadas por eventos aleatórios do ambiente, o sistema também prevê Interrupções Automáticas baseadas no estado físico e fisiológico do jogador durante a locomoção por uma conexão longa.

Essas interrupções não são testes de eventos aleatórios, mas sim gatilhos sistemáticos que interrompem o trajeto para notificar o jogador e permitir decisões contextuais, como:

  • Comer ou beber;
  • Descansar ou dormir;
  • Tratar efeitos debilitantes (doença, ferimento, envenenamento);
  • Reavaliar a jornada (voltar, acampar, buscar abrigo, etc.).

Gatilhos possíveis para essas interrupções automáticas incluem:

  • Redução de 10% (ou mais) em indicadores como Fadiga, Sede ou Fome;
  • Atingir limiares críticos desses mesmos indicadores (ex: abaixo de 25%);
  • Perda súbita de atributos físicos ou mentais.

Essas interrupções são essenciais para garantir que o jogador esteja ciente de sua condição e possa reagir a ela estrategicamente antes de sofrer penalidades severas. Os parâmetros exatos para esse sistema ainda serão definidos em detalhes, mas seu conceito já está integrado à lógica da jornada longa.

Recomendação de Documentação da Mapeamento

Para documentar a navegação e conexões do mundo de jogo, sugerimos criar uma página específica chamada Navegação dentro da documentação do jogo (em Story Telling Mystery Realms).

A estrutura da página deve obedecer aos seguintes níveis hierárquicos:

  • = Nome da Região = (nível 1) – Apenas título, sem conteúdo textual.
  • == Nome da Localidade == (nível 2) – Apenas título, sem conteúdo textual.
  • === Nome da Zona === (nível 3) – Aqui são listadas as conexões da Zona.
  • ==== Nome do Ambiente ==== (nível 4) – Aqui são listadas as conexões do Ambiente, se existirem.

Cada Zona e Ambiente deve listar suas conexões diretas utilizando o seguinte formato padronizado:


  • Bidirecional: Sim|Não
  • Condições: (A ser definido melhor)
  • Classificação: Pacificado|Hostil|Selvagem
  • Notas Narrativas: (Informações narrativas relevantes)

É obrigatório que conexões bidirecionais estejam descritas em ambos os pontos conectados, garantindo clareza e rastreabilidade da malha de navegação.

Exemplo de Uso

= Terras Centrais =

== Langur ==

=== Praça das Vozes ===
* Para [[#Taverna Asa Quebrada]] – 35m
:* '''Bidirecional:''' Sim
:* '''Condições:''' Nenhuma. Livre passagem a qualquer hora do dia.
:* '''Classificação:''' Pacificado
:* '''Notas Narrativas:''' A entrada da taverna é discreta, quase escondida entre duas casas de pedra antiga. Lanternas fracas iluminam a porta de madeira escura.

=== Taverna Asa Quebrada ===

==== Salão Principal ====
* Para [[#Cozinha]] – 12m
:* '''Bidirecional:''' Sim
:* '''Condições:''' Apenas acessível quando a porta interna está destrancada (normalmente aberta durante o expediente).
:* '''Classificação:''' Pacificado
:* '''Notas Narrativas:''' A cozinha pode ser vista parcialmente do balcão, com cheiros constantes de ensopados e carne assada.

==== Cozinha ====
* Para [[#Salão Principal]] – 12m
:* '''Bidirecional:''' Sim
:* '''Condições:''' Ver acima.
:* '''Classificação:''' Pacificado
:* '''Notas Narrativas:''' Pequena e bem organizada, com uma porta lateral que leva ao beco dos fundos (não documentada ainda).