WorldWeaver — Exemplos do Dialeto

Olá! Bem-vindos ao WorldWeaver. Nosso objetivo é ajudar autores a escreverem histórias interativas usando um dialeto simples. Você pode criar direto na plataforma sem precisar de banco ou escrever no Word/Bloco de Notas e colar aqui: a linguagem é interpretada do texto puro.

Ideia central: tudo é um arquivo de texto com passagens e comandos legíveis. Se quiser, salve na plataforma; se não quiser, exporte/importe quando precisar — o texto por si só já roda.
Sumário

Estrutura do arquivo

Um único texto contendo a história e, ao final, o catálogo de entidades.

@world tavern
:: inicio
Texto da cena…

@world ruinas
:: entrada
Outra cena…

@entities
character Helm:
  apelido: "Helm"
  name: "Willahelm"
  descricao: "Caçador taciturno."
@endentities

Use apenas letras, números, _ e - em IDs (mundos, passagens, entidades).

@world — Mundos

Agrupa passagens (capítulos/mapas). Sem @world, o motor usa um mundo padrão.

@world tavern
:: inicio
Você está na taverna.

@world ruinas
:: entrada
Eco frio nas fendas.

:: — Passagens

Cada cena navegável começa com :: nome. A primeira costuma ser :: inicio.

:: sala
A sala é ampla e iluminada.

Texto & parágrafos

Escreva normalmente. Linha em branco cria um novo parágrafo.

Chovia quando você entrou.

O cheiro de pão recém-assado veio da cozinha.

@ID — Referências de entidades

Insira dados do catálogo no meio do texto.

@Helm ajusta a capa.
@Helm/apelido observa você.
@Helm?apelido|name sorri.

«choice» — Bloco de escolhas

Cria um menu e salva a escolha numa variável.

<<choice Bebida as Bebida1>>
- Cerveja
- Vinho do Mar Recurvo
<</choice>>

<<if Bebida1 == "Vinho do Mar Recurvo">>
O aroma é doce.
<<else>>
A espuma amarga reconforta.
<</if>>

O player pausa a renderização na primeira interação (choice/link/input). O restante aparece depois da ação.

Variáveis, {{interpolação}} e «set»

<<set energia = 10>>
<<set nome = "Ky">>
Você tem {{energia}} de energia, {{nome}}.

Tipos: booleano (true/false), número, string entre aspas, ou copiar de outra variável.

«goto» — Saltos

<<goto sala>>
<<goto ruinas/entrada>>

«if/else» — Condicionais de bloco

Mostra/oculta trechos, menus e saltos.

<<if tem_chave>>
A fechadura gira com um clique.
<<else>>
Sem a chave, o portão não cede.
<</if>>

Não há elseif nativo. Emule com if dentro do else, ou use condições combinadas.

«input» — Campo de texto

Coleta um valor digitado pelo leitor e salva numa variável. Aceita placeholder, required, min, max e pattern.

<<input "Como você quer se chamar?" as nome placeholder:"Digite seu nome" required min:1 max:30 pattern:"^[A-Za-zÀ-ÿ\\s'-]+$">>

Prazer em te conhecer, {{nome}}.

@entities — Catálogo

Ficha de personagens, lugares, itens etc. (usados pelas referências @ID no texto).

@entities
character Helm:
  name: "Willahelm"
  apelido: "Helm"
  descricao: "Caçador taciturno de Monte Dourado."

place MonteDourado:
  nome: "Monte Dourado"
  clima: "chuvoso"
@endentities

Troca de mundos

Use mundo/passagem no destino do link ou do <<goto>>.

@world tavern
:: inicio
[[Ir às ruínas -> ruinas/entrada]]

@world ruinas
:: entrada
[[Voltar à taverna -> tavern/inicio]]

Condições avançadas (and/or/not, parênteses)

Disponível para links com | if: e para <<if ...>>.

<<set tem_chave = true>>
<<set bebida = "Vinho">>
<<set sigilo = false>>

[[Abrir -> sala | if: tem_chave and (sigilo or bebida == "Vinho")]]
[[Bater -> beco  | if: not tem_chave or bebida == "Cerveja"]]

<<if tem_chave and not (bebida == "Cerveja")>>
A fechadura gira e o aroma do vinho acompanha você.
<<else>>
Você hesita na porta.
<</if>>

Comparação de string sempre com aspas: var == "texto".

Padrões úteis

Choice que decide e avança sem botão

"Se molhou muito?"

<<choice Molhado? as Var_Molhado1>>
- Pouco
- Mais ou menos
- Bastante
<</choice>>

<<if Var_Molhado1 == "Bastante">><<goto toalhas>><</if>>
<<if Var_Molhado1 == "Pouco" or Var_Molhado1 == "Mais ou menos">><<goto entrada>><</if>>

Vários links juntos (sem choice)

[[Mercado -> cidade/mercado]]
[[Portão Leste -> cidade/portao | if: tem_chave]]

Debug rápido

Escolha: {{Var_Molhado1}}
Chave? {{tem_chave}}

Lembre: a primeira interação na tela (choice/link/input) pausa o restante da passagem nesta etapa.

Dicas de debug


WorldWeaver é um projeto sem fins lucrativos. O foco é autonomia do autor: seu texto é o seu arquivo. 💙