Documentação

Categorias do Blog

 

Confira nesta página o manual com a documentação completa sobre a criação de novos jogos. Você também vai encontrar exemplos e uma FAQ com as dúvidas frequentes.

Download do Jogo Exemplo

Baixe os arquivos do jogo “A Masmorra dos Exemplos” e confira em detalhes como a aventura foi montada. É um bom ponto de partida para você planejar a sua!

DOWNLOAD ZIP

Diário de Atualizações (Changelog)

SVG: ankh-light 2023.03.26
SVG: chevron-down-light
SVG: chevron-up-light

Adição de novos tempos verbais a todos os verbos do jogo. Agora é possível utilizar comandos como “ABRA a PORTA”, “USE a CHAVE”, “EXAMINE o ARMÁRIO”, “ para NORTE”, ao invés de apenas “ABRIR PORTA”, “USAR CHAVE”, “EXAMINAR ARMÁRIO”, “IR NORTE”.

Manual de Instruções

SVG: ankh-light Estrutura de um Jogo
SVG: chevron-down-light
SVG: chevron-up-light

O jogo é composto apenas de arquivos no formato JSON, PNG (ou JPG/GIF) e MP3 (ou MP4/M4A/OGG). Os arquivos JSON utilizam uma estrutura de atributo/valor totalmente legível e de fácil interpretação. Uma vez que você compreenda a lógica de funcionamento dos arquivos do jogo, é possível criar aventuras sem a necessidade do conhecimento de linguagens de programação avançadas. A estrutura é dividida em 5 categorias:

Arquivo de configuração: dados-do-jogo.json
É um arquivo único que estabelece todas os parâmetros funcionais do jogo.

Arquivo de itens: items.json
É um arquivo único que traz todos os itens do jogo.

Arquivos de salas: estudio.json, antesala.json, masmorra.json
É um grupo de arquivos que traz todo o conteúdo das salas/local do jogo.

Arquivos de imagem de itens: espada.png, escudo.png, livro.png
É um grupo de arquivo de ilustrações referentes a cada item do jogo. Seu uso é opcional.

Arquivos de imagens de salas: estudio.png, antesala.png, masmorra.png
É um grupo de ilustrações referentes a cada sala/local do jogo. Seu uso é opcional.

Arquivos de áudio: vento-soprando.mp3, grito.mp3, latido.mp3
É um grupo de arquivos de música ou efeitos especiais utilizados em cada sala/local da aventura.

SVG: ankh-light Arquivo DADOS-DO-JOGO.JSON — Configurações Obrigatórias
SVG: chevron-down-light
SVG: chevron-up-light

Dentro do arquivo estrutura-do-jogo.json é obrigatória a configuração dos parâmetros funcionais do jogo. São eles:

{

setup” : {

PASTA_DO_JOGO” : “masmorra-dos-exemplos”,
NOME_DO_JOGO” : “A Masmorra dos Exemplos”,
SLOGAN_DO_JOGO” : “Jogo demonstrativo de funcionalidades”,
AUTOR_DO_JOGO” : “Cospefogo”,
HISTORIA_DO_JOGO” : “Você acordou em uma masmorra. Não lembra quem é. Não sabe como foi parar ali. A única coisa que consegue pensar é em encontrar uma saída. Boa sorte!”,
HISTORIA_DO_JOGO_IMAGEM” : “historia.png”,
LOGO_DO_JOGO_IMAGEM” : “logo.png”,
DICAS_DO_AUTOR” : “Experimente acender a tocha antes de atravessar a sala escura! Ainda: aparentemente o prisioneiro tem fome e sede!”,
DICAS_DO_AUTOR_MENSAGEM” : “Não sabe mais o que fazer?”

},

funcionamento” : {

MAXIMO_NO_INVENTARIO” : 3,
MODO_SOMENTE_TEXTO” : false,
MENSAGEM_DE_NOVO_JOGADOR” : “Digite {OLÁ} para criar seu perfil.”,
MENSAGEM_DE_COMANDO” : “e agora?”,
EXIBIR_NOME_JOGADOR” : true,
EXIBIR_SAIDAS_OBVIAS” : true,
DESTACAR_TERMOS_NO_TEXTO” : true,
SEPARAR_CONTEUDOS_NO_TEXTO” : 2,
SEPARAR_CONTEUDOS_ICONE” : false,
EXIBIR_PREFIXOS_VERBAIS” : true,
SEMPRE_EXIBIR_IMAGEM_DE_ITEM“: true

},

visual“: {

TEMA_VISUAL” : 8,
FONTE” : 1,
CAIXA_ALTA_GERAL” : false,
CAIXA_ALTA_NOS_TERMOS” : true,
SCANLINES” : true,
CARET_EM_BLOCO” : true,
BOTAO_DE_AJUDA” : true

}

}

PASTA_DO_JOGO
Pasta/diretório que figura no URL do jogo:
jogostexto.com.br/aventuras/PASTA_DO_JOGO/

NOME_DO_JOGO
TEXTO: Informe o título do jogo

SLOGAN_DO_JOGO
TEXTO: Informe um slogan/subtítulo do jogo

AUTOR_DO_JOGO
TEXTO: Informe o nome do autor

HISTORIA_DO_JOGO
FALSE ou TEXTO: Informe a história (texto contínuo). Para destacar palavras, escreva entre chaves: {palavra}

HISTORIA_DO_JOGO_IMAGEM
FALSE ou TRUE: Caso verdadeiro busca uma imagem ‘historia.png’, caso falso exibe a imagem ‘titulo.png’

LOGO_DO_JOGO_IMAGEM
FALSE ou TRUE ou IMAGEM.PNG: Caso TRUE exibe o logo padrão do projeto JogosTexto. Caso seja informado um nome de arquivo, irá exibir a imagem referente e caso falso exibe o nome do jogo e o slogan em formato texto tradicional.

DICAS_DO_AUTOR
FALSE ou TEXTO: Informe dicas de jogo (texto contínuo). Para destacar palavras, escreva entre chaves: {palavra}

DICAS_DO_AUTOR_MENSAGEM
FALSE ou TEXTO: Mensagem que precede a exibição das dicas. Para destacar palavras, escreva entre chaves: {palavra}

MAXIMO_NO_INVENTARIO
NUMERAL: Número máximo de itens que o jogador pode carregar. Mínimo: 1 item

MODO_SOMENTE_TEXTO : FALSE ou TRUE: Jogo com ou sem imagens

MENSAGEM_DE_NOVO_JOGADOR
TEXTO: Mensagem que precede o comando na criação de perfil de jogador

MENSAGEM_DE_COMANDO
TEXTO: Mensagem que sucede o título de comando

EXIBIR_NOME_JOGADOR
FALSE ou TRUE: Se exibe ou não o nome do jogador no título de comando

EXIBIR_SAIDAS_OBVIAS
FALSE ou TRUE: Se exibe ou não um resumo automático com as saídas de cada sala

DESTACAR_TERMOS_NO_TEXTO
FALSE ou TRUE: Se destaca ou não palavras marcadas com chaves {palavra} e nomes de itens.

SEPARAR_CONTEUDOS_NO_TEXTO
FALSE ou 1, 2, 3: Explicação abaixo:

false : Sem espaços, modelo literário texto contínuo.
1 : Somente quebra de linha, sem parágrafo.
2 : Com quebra de linha e parágrafo.
3 : Com quebra de linha, parágrafo e legenda indicativa.

SEPARAR_CONTEUDOS_ICONE
FALSE ou TRUE: Ícone visial de bullet nos blocos separados, quando ativo (1, 2 ou 3 acima)

EXIBIR_PREFIXOS_VERBAIS
FALSE ou TRUE: Se exibe ou não um prefixo automático (seguido da mensagem personalizada) ao executar alguns verbos. Por exemplo: PEGOU ITEM, LIGOU ITEM, COMEU ITEM, LEU ITEM.

SEMPRE_EXIBIR_IMAGEM_DE_ITEM
FALSE ou TRUE: Se exibe obrigatoriamente a imagem de um item (se existir) em todas as ações verbais ou se exibe APENAS ao OLHAR e EXAMINAR.

TEMA_VISUAL
NUMERAL: Número indicador do tema visual

1 : cyberpunk: com margens,
2 : pergaminho: com margens,
3 : marinho: com margens,
4 : floresta: com margens,
5 : carmim: com margens,
6 : negativo: sem margens,
7 : fosforo: sem margens,
8 : ciano: sem margens,
9 : vermelho: sem margens,
10 : papel: sem margens,

FONTE
NUMERAL: Número indicador da fonte/tipografia

1 : volter,
2 : nokia,
3 : zx-spectrum,
4 : Reactor 7,
5 : ChronoType,
6 : SteelFight,
7 : LucidaSans,

CAIXA_ALTA_GERAL
FALSE ou TRUE: Se exibe todos os textos da interface em letras sempre maiúsculas

CAIXA_ALTA_NOS_TERMOS
FALSE ou TRUE: Se exibe caixa alta nos termos do jogo (palavras escritas entre chaves {palavra} e títulos de itens)

SCANLINES
FALSE ou TRUE: Se exibe efeito visual de monitor de tudo antigo

CARET_EM_BLOCO
FALSE ou TRUE: Se exibe o tipo de cursor estilo terminal bancário na linha de comando

BOTAO_DE_AJUDA
FALSE ou TRUE: Se exibe um botão na interface que abre a ajuda com clique de mouse (a ajuda também pode ser aberta digitando o comando AJUDA)

SVG: ankh-light Arquivo ITENS.JSON — Anatomia do item
SVG: chevron-down-light
SVG: chevron-up-light

ITENS:JSON
{

chave“: {

article” : “a”,
title” : “Pequena chave metálica”,
room” : “estudio”,
look” : “Muito pequena. Não serve para abrir portas.”,
image” : “chave.png”,
image2” : “chave-abrindo-escrivaninha.png”,
required” : “examinou_poltrona”,
message” : “É realmente leve e pequena.”,
excuse” : “Não vejo isso aqui.”,
usage” : “Parece uma chave de algum mobiliário de escritório.”,
verb” : “usar”,
goal” : “estudio”,
bingo” : “Pronto! Você destrancou a tampa da escrivaninha!”,
discard” : “Você descarta a chave pois a mesma não tem mais uso.”,
setAction” : “usou_chave”,
setObject” : “mapa”,
setCounter” : “cantil@1”,
resetCounter” : “cantil”,
max” : “5”,
limit” : “O cantil está seco. Você não pode mais beber.”,
dec” : “score@5”,
inc” : “score@5”,
placeVerb“: “examinar”,
placeObject“: “chave”,
updateVerb“: “mover”,
updateRoomImage” : “estudio-com-passagem-secreta.png”,
updateRoomDesc” : “O estúdio agora tem uma passagem secreta aberta.”,
resetRoom” : “estudio”,
setEquip” : “bolso-da-calça”

}

}

Parâmetros básicos

article: (Obrigatório) — Artigo/gênero do item, usado nas descrições. Ex: Pegou A chave, largou O elmo
room: (Obrigatório) — Sala inicial onde o item pode ser encontrado
look: (Obrigatório) — Descrição principal do item
message: (Obrigatório) — Mensagem exibida ao pegar (Quando com REQUIRED, exibida APÓS DE CUMPRIR a restrição)

Parâmetros de descrição

title: — Nome bonito do item exibido nas descrições ao olhar quando em janela popup
image: — Imagem principal do item

♦ Caso inexistente, exibe interação em retorno em modo APENAS TEXTO

Parâmetros de restrição para poder pegar

required: — Restrição que precisa ser cumprida para PEGAR o item (e item de inventário só pode ser USADO se for PEGADO anteriormente)
excuse: — Mensagem exibida ao pegar ANTES CUMPRIR a restrição (Uso somente em conjunto com REQUIRED)

Parâmetros de uso do item

verb: — Se usável, é o VERBO DE INTERAÇÃO. Ex: COMER o PÃO, ABRIR a GAVETA, MOVER a ALAVANCA
goal: — Sala onde o VERBO definido acima pode ser EXECUTADO
bingo: — Mensagem de sucesso ao interagir com SUCESSO usando o verbo definido
discard: — Exibe uma mensagem de descarte PERMANENTE de item após INTERAGIR com sucesso

♦ Caso existente, APAGA o item para sempre do JOGO, mas permanece como informação (-1) dentro do motor. Ex: BEBER CERVEJA
♦ Caso não setada, o item CONTINUA no inventário (1) e pode ser usado de novo. Ex: OLHAR MAPA

usage: — Dica de uso ao EXAMINAR o objeto ou ao tentar INTERAGIR com o objeto usando VERBO ERRADO.

♦ Quando EXAMINANDO, este texto é um adendo ao texto geral

image2: — Imagem a ser exibida ao olhar o item APÓS interação verbal

♦ Caso existente e caso o item não tenha sido descartado, essa passa a ser a imagem principal do item em interações futuras
♦ Caso inexistente, utiliza a imagem original

Parâmetros de ações que podem ser setados ao pegar o item

inc: — Incrementa pontos na variável definida. Ex: score@1, score@10, felicidade@5, medo-de-escuro@1, etc
dec: — Decrementa pontos no variável definida. Ex: score@1, envenenamento@10, etc
setAction: — Seta uma ação AO PEGAR o item como TRUE no perfil do jogador.

♦ Só acontece uma vez. Ex: “sabe-sobre-a-chave = 1
♦ SetAction só funciona com PEGAR. Outros verbos não utilizam, pois, ao executá-los, uma action automática é criada. Ex: abriu_arca, usou_computador, moveu_alavanca

setObject: — Adiciona, ao PEGAR ITEM A, um segundo ITEM B no inventário do jogador.

♦ Ex: chave = estudio (estava na sala estúdio) fica chave = 1 (passa para o inventário do jogador)
♦ OBRIGATÓRIO setar um ITEM existente em ITEMS.JSON
♦ Também pode ser usado para REVERTER o estado descartado de um item (-1) de volta para (1)
♦ CUIDADO para extrapolar o limite de itens no inventário

Parâmetros que podem ser setados ao usar o item
(e outros verbos de uso que não pegar e olhar)

setCounter: — Cria uma entrada com a contagem de USO de itens. Ideal para simular durabilidade de um objeto, carga de energia, quantidade de uso, etc

♦ Formato igual às ações INC e DEC. Ex: lanterna@1, comida@1, poção@1
♦ OBRIGATÓRIO combinar com MAX, que determina o número máximo de usos
♦ Funciona somente em ITEM de inventário no verbo USAR e NÃO FUNCIONA COM a ação OLHAR (Olhar/examinar não incrementa a contagem de interação)

max: — Número máximo de vezes que determinado item pode sofrer interação verbal. Usar um número inteiro.
limit: — Mensagem permanente exibida após limite ser atingido. Sobrescreve a mensagem padrão de OLHAR (look).

♦ NÃO USAR com DISCARD — Item esgotado nunca é descartado
♦ Pode-se deixar o item operacional novamente com SETCOUNTER. Ex: Encher o cantil numa fonte com — setCounter : cantil@0 (retorna o cantil para 0 usos, reiniciar o contador do cantil)

resetCounter: — Reseta uma caontagem de USO de item iniciada previamente. Ex: “resetCounter : cantil“.

Parâmetros de sala que podem ser setados ao interagir com um item
(e outros verbos de uso exceto equipar, desequipar e largar)

placeVerb: — Valor obrigatório que informa o verbo a ser usado na função de inserção de um item automaticamente na sala, listada abaixo.

placeObject: — Insere um item na SALA CORRENTE após a execução de uma ação com o VERBO informado acima.

updateVerb: — Valor obrigatório que informa o verbo a ser usado nas funções de update abaixo.

updateRoomImage: — Cria uma entrada no sistema com uma nova imagem para a ONDE É USADO.

♦ Ex. Se a sala ONDE o ITEM É USADO era “estudio.png“, usando “updateRoomImage : estudio-revirado.png” faz a sala usar essa nova imagem como aparência padrão, ou até ser resetado através de “ResetRoom“.

updateRoomDesc: — Cria uma entrada no sistema com uma nova descrição para a sala ONDE É USADO.

♦ Ex. Se a sala ONDE o ITEM É USADO era “estudio.png“, usando “updateRoomDesc” faz a sala usar o novo texto descritivo permanentemente, ou até ser resetado através de “ResetRoom“.

resetRoom: — É possível resetar uma sala alvo a seus valores padrões utilizando “resetRoom: estudio”

Parâmetros de equipamento de item em uma parte do corpo:

setEquip: — É possível setar o local em que o ITEM será EQUIPADO. Isso previne do usuário equipar coisas duplicadas, ex: 2 elmos, 2 botas, etc.

setEquip : peito (Acesse os exemplos abaixo para conferir o funcionamento)
setEquip : bolso-da-calca, setEquip : cabeca, setEquip : apetrecho-de-defesa

SVG: ankh-light Arquivos SALA.JSON — Anatomia de uma sala
SVG: chevron-down-light
SVG: chevron-up-light

ESTUDIO.JSON
{

info“: {

name“: “estudio”,
image“: “estudio.png”,
description“: “Você está no confortável estúdio do Professor Lagarto.___Há uma escada na parede leste.___Você vê etc etc etc”,
music“: false

},
data“: {

exits“: {

norte“: “vestibulo”,
escada“: {

required“: “!medo-de-fantasma”,
target“: “sotao”,
else“: “sotao-com-fantasmas”

},

descer“: {

required“: [“elmo”, “espada”],
target“: “porao”,
excuse“: “É perigoso descer sem armas. Procure por uma espada e um elmo!”

},
alcova“: {

hidden“: true,
target“: “sala-secreta”

},
voltar“: “sala-inicial”

}

},

olhar“: {

tapete“: “Um antigo tapete persa”,
quadro“: {

article“: “o”,
title“: “Quadro na parede”,
image“: “quadro.png”,
message“: “Um enorme quadro com moldura grossa. Contém uma pintura chinesa, óleo em tela.”

},

mesa“: {

article“: “a”,
title“: “Mesa de estudo com tampa”,
image“: “mesa-com-tampa-fechada.png”,
image2“: “mesa-com-tampa-aberta.png”,
required“: “usou_chave”,
message“: “É uma simples mesa de estudos. Foi aberta com uma pequena chave de metal.”,
excuse“: “É uma simples mesa de estudos. Está trancada.”

},

poltrona“: {

article“: “a”,
title“: “Poltrona de veludo”,
image“: “poltrona-com-chave-no-assento.png”,
image2“: “poltrona-sem-chave-no-assento.png”,
required“: “!poltrona_investigada”,
message“: “É uma simples poltrona de veludo azul. Alguém deixou cair uma pequena [CHAVE] de metal entre o encosto e o assento.”,
excuse“: “É uma simples poltrona de veludo azul. Foi aqui onde você encontrou uma pequena chave de metal.”,
setAction“: “poltrona_investigada”,
placeVerb“: “olhar”,
placeObject“: “chave”,
inc“: “score@1”

}

},

examinar“: {

parede” : {

article“: “a”,
title“: “Parede”,
message“: “Esta repleta de musgo. Parece sempre úmida.”,
gone“: “Está sempre molhada.”

}

},
usar“: {

sino“: “O sino faz bóng!”,
bandeira“: {

article“: “o”,
title“: “Bandeira branca”,
message“: “Você desenrola e é uma bandeira da paz.”,
gone“: “A bandeira tremula aberta em suas mãos.”,
updateVerb“: “usar”,
updateRoomDesc“: “Aqui vai um novo texto de descrição na sala, sobrescrevendo o texto original.”,

},

computador“: {

article“: “o”,
title“: “PC-88”,
image“: “pc.png”,
message“: “Você acessa o Gmail”,
bingo“: “Não há mais necessidade de utilizar o PC. Você já encontrou o que procurava.”,
setAction“: “leu_email”,
updateVerb“: “usar”,
updateRoomImage“: “nova-imagem-da-sala.png”,
inc“: “score@10”

}

},

falar“: {

silvana“: {

article“: “a”,
title“: “Silvana”,
1“: “Primeira mensagem”,
2“: “Segunda mensagem”,
3“: “Agora a terceira mensagem”,
4“: “Última mensagem, não tenho mais nada a dizer…”,
rand“: false,
loop“: true,
inc“: “score@1”

},

marines“: {

article“: “a”,
title“: “Marinês”,
1“: “Primeira mensagem”,
2“: “Segunda mensagem”,
3“: “Agora a terceira mensagem”,
4“: “Última mensagem, não tenho mais nada a dizer…”,
rand“: true,
setAction“: “falou_com_marines”

},

velho“: {

article“: “o”,
title“: “Velhote”,
image“: “velho-corcunda.png”,
required“: “livro“,
excuse“: “Cade o livro?”,
1“: “Obrigado pelo livro!”,
2“: “Eu sou um velho velho.”,
3“: “Eu sou um guri velho.”,
4“: “Eu não tenho mais nada a dizer.”,
loop“: false

},

jovem“: {

article“: “o”,
title“: “Jovem mudo”

}

},
abrir“: {

},
fechar“: {

},
mover“: {

},
empurrar“: {

},
puxar“: {

},
ligar“: {

},
desligar“: {

},
amarrar“: {

},
desamarrar“: {

},
ouvir“: {

},
ler“: {

},
comer“: {

},
beber“: {

},

synonyms“: {

tapete“: [“tapete persa”, “capacho”],
quadro“: [“obra de arte”, “pintura”],
mesa“: [“mesinha”, “escrivaninha”, “lousa”],
poltrona“: [“sofá”, “sofa”]

}

}

Parâmetros de dados — Description
(usando quebras de linhas):

Na descrição de texto da sala é possível criar espaço entre parágrafos usando 3 símbolos de underscore juntos, em sequência. Exemplo:

Meu texto, meu texto, meu lindo texto.___Meu parágrafo novo, onde continua meu texto.

Parâmetros de dados — Data
(contém as saídas):

Formato simples:

direção: (Obrigatório) — Sala destino da saída, precisa usar verbos de navegação válidos (e não sinônimos!)

♦ Sinônimos servem para acessar a saída, mas no json precisa ser o verbo

Formato com saída alternativa:

required: (Obrigatório) — Restrição a ser cumprida para poder utilizar a saída
target: (Obrigatório) — Sala destino
else: (Obrigatório) — Sala destino caso não cumpra o restrição => Não usar com EXCUSE!

Formato com excuse:

required: (Obrigatório) — Restrição a ser cumprida para poder utilizar a saída
target: (Obrigatório) — Sala destino
excuse: (Obrigatório) — Mensagem de bloqueio de caminho caso não cumpra o restrição

♦ Não usar com ELSE!

Parâmetros dos verbos gerais
(exceto falar e pegar)

Formato simples:

nome-do-objeto: (Obrigatório) — Descrição do ato verbal

♦ “cadeira” : “A cadeira faz um ruído ao ser movida.”
♦ “sanduíche” : “Está uma delicia, aplaca levemente a sua fome.”

Formato array:

article: Obrigatório Artigo/gênero do objeto, usado nas descrições. Ex: Usou O Computador, Abriu A porta
title: — Nome bonito do item exibido em algumas descrições
image: — Imagem principal do objeto
image2: — Imagem a ser exibida ao olhar o item APÓS interação com o objeto
required: — Restrição a ser cumprida para interagir com o objeto
message: Obrigatório Mensagem exibida ao interagir com o objeto ANTES DE CUMPRIR a restrição

♦ Quando sem REQUIRED, mensagem padrão ao interagir, como no formato simples)

excuse: — Mensagem exibida ao interagir com o objeto APÓS CUMPRIR a restrição

♦ Uso somente em conjunto com REQUIRED)

firstuse: — Mensagem a ser exibibida uma única vez na PRIMEIRA INTERAÇÃO com o item (não tem relação com OLHAR)
gone: — Mensagem a ser exibida permanentemente APÓS a INTERAÇÃO com o ITEM (não tem relação com OLHAR)
inc: — Incrementa pontos no score
dec: — Decrementa pontos no score
setAction: — Seta uma ação interagir com o objeto como TRUE no perfil do jogador. Ex: “sabe_sobre_a_chave = 1” (Só acontece uma vez)
setObject: — Seta um segundo objeto interagir com o objeto no inventário do jogador.

♦ Ex: chave = estúdio (estava na sala estúdio) fica chave = 1 (passa para o inventário do jogador)
♦ CUIDADO para não setar um ITEM não existente em ITEMS.JSON
♦ CUIDADO para extrapolar o limite de itens no inventário

placeVerb — Verbo responsável por executar a inserção como item disponível da sala

Obrigatório informar para que a função de placeObject abaixo tenha efeito

placeObject — Deposita um ITEM existente na lista geral no chão da SALA CORRENTE

♦ Ideal para quando examina algo e encontra uma coisa escondida
♦ Funciona somente com qualquer verbo menos EQUIPAR, DESEQUIPAR e LARGAR 

updateVerb — Verbo responsável por executar o update na imagem e texto da sala

Obrigatório informar para que as funções de update abaixo tenha efeito

updateRoomImage — Atualiza a imagem geral da sala com o novo valor setado

♦ Pode-se usar em qualquer verbo dentro da sala e item do inventário

updateRoomDesc — Atualiza a descrição geral da sala com o novo valor setado

♦ Pode-se usar em qualquer verbo dentro da sala e item do inventário

Chaves do verbo falar

Formato de diálogo linear:

article: (Obrigatório) — Artigo/gênero do personagem
title: — Nome bonito do item exibido nas descrições ao olhar quando em janela popup
image: — Imagem principal do personagem
image2: — Imagem a ser exibida ao olhar o item APÓS conversar com o personagem E CUMPRIR algum requerimento
1: — Primeira frase de diálogo: “Você é novo por aqui?”,
2: — Segunda frase de diálogo: “Quer comer uma pizza?”,
3: — Terceira frase de diálogo: “Ou prefere comer um pastel?”,
required: — Restrição a ser cumprida para FALAR com o personagem
message: (Obrigatório) — Mensagem exibida ao FALAR com o personagem ANTES DE CUMPRIR a restrição

Quando sem REQUIRED, mensagem padrão ao falar, como no formato simples

excuse: — Mensagem exibida ao FALAR com o personagem APÓS CUMPRIR a restrição

Uso somente em conjunto com REQUIRED

Formato de diálogos com looping e aleatórios

Com o uso de parâmetros rand e loop é possível apresentar modelos diferentes de conversação.

rand: false — As mensagens seguem uma ordem aleatória
loop: true — As mensagens recomeçam do início após terem sido esgotadas

Sinônimos
(Palavras equivalentes que o usuário pode digitar para atingir os objetos acima):

O comando ABRIR ARCA também pode ser atingido com o sinônimo BAÚ.

synonyms“: {

tapete“: [“capacho“, “carpete“],
arca“: “baú“,
computador“: [“laptop“, “aparelho“],
sofa“: [“poltrona“, “divã“]

}

SVG: ankh-light Tipos de SAÍDAS e verbos de DIREÇÃO — Salas
SVG: chevron-down-light
SVG: chevron-up-light

Os tipos de saídas disponíveis para uso nas salas são listados abaixo. O jogador pode acessar essas saídas pelo termo principal ou por sinônimos, conforme abaixo:

Direção parâmetroSinônimo possível de navegar

n — norte
s — sul
l — leste
o — oeste
baixo — descer, abaixo, inferior
dentro — entrar, interno, adentrar, interior
fora — sair, externo, exterior
janela — janelão, janelao, janelinha, báscula, bascula
porta — porta, portão, portao, portinhola, umbral
corredor — caminho, tunel, túnel, acesso
escada — degrau, degraus, escadas
buraco — abertura, alçapão, escotilha, rachadura, brecha, fenda, fissura, ranhura
sala — saleta, quarto, aposento, câmara, câmera, camera, cela, camara, galeria, salão, salao, gabinete, estudio, estúdio
voltar — volta, retornar, retroceder, regressar
continuar — continua, prosseguir, avançar
passagem — secreto, escondido, esconderijo
sim — ok, aceito, aceitar, concordo, concordar
não — nao, recuso, recusar, discordo, discordar

Partículas conectoras

Algumas formas de navegação (e outros verbos) aceitam partículas conectoras ao digitar:

n = norte = ir norte = ir para norte = ir ao norte
subir = acima = ir escada = ir para escada = ir acima
passagem = ir passagem = ir para passagem
pegar espada = pegar a espada
ler livro = ler o livro = ler este livro

As partículas conectoras são ignoradas pois tem apenas função estética voltada à digitação do jogador.

Dica: a saída/caminho com o termo VOLTAR fica visualmente mais interessante se inserida no final da lista de saídas da sala. Ao escrever o comando X (ou caminhos) é exibida uma lista de saídas possíveis e — esta lista — é construída na ordem em que o array de saídas está formulado no arquivo da sala.

SVG: ankh-light Tipos de VERBOS de INTERAÇÃO — Itens e Salas
SVG: chevron-down-light
SVG: chevron-up-light

Cada sala pode ter vários verbos disponíveis para interação com seus OBJETOS. Já os ITENS tem verbos específicos que só funcionam com eles. Ao criar uma objeto que pode ser movido em uma sala, deve-se utilizar o parâmetro MOVER. Lembre-se que, o mesmo item também pode ser OLHADO ou EXAMINADO. Também é necessário criar suas respectivas entradas.

olhar“: {

article“: “a”,
title“: “Alavanca de metal”,
message“: “Uma alavanca de metal.”

},

examinar“: {

article“: “a”,
title“: “Alavanca de metal”,
message“: “Está presa em um mecanismo da parede e pode ser movida.”

},

mover“: {

article“: “a”,
title“: “Alavanca de metal”,
message“: “Você move a alavanca e um som distante é ouvido.”,
gone“: “A alavanca não se movimenta mais.”,
setAction“: “abriu_passagem_secreta”

},

Salas:

olhar
examinar
ler
usar
falar
abrir
fechar
mover
puxar
empurrar
ligar
desligar
amarrar
desamarrar
ouvir
comer
beber
atacar

Itens:

O verbo de interação é definido com o parâmetro “verb” : “verbo-de-interação” em cada item no arquivo ITEMS.JSON. Exemplo: a lanterna pode ser usável com o valor “verb” : “usar“. O sanduíche pode ser consumido com “verb” : “comer“. Qualquer interação que não diferente do verbo compatível especificado irá retornar uma resposta negativa.

usar
ler
dar
equipar
desequipar
abrir
fechar
comer
beber

Já os verbos de adição e remoção de itens do inventário são inerentes (automáticos) à sala, não requerem nenhum tipo de configuração.

pegar
largar

Sinônimos:

Todos os verbos interativos também operam com sinônimos. Use sua criatividade na hora em que estiver jogando. Exemplo:

FALAR: conversar, dialogar, etc
LIGAR: acender, ativar, etc
COMER: ingerir, devorar, etc
LER: estudar, decifrar, etc
DAR: doar, entregar, ofertar, etc

SVG: ankh-light Usos do parâmetro REQUIRED — Itens e Salas
SVG: chevron-down-light
SVG: chevron-up-light

O parâmetro REQUIRED é utilizado para checar uma restrição a determinada ação do jogo, podendo ser utilizado conforme a tabela abaixo. É válido tanto para itens quanto para salas:

required” : “lanterna” — Item no inventário ou item existe
required” : “!lanterna” — Sem item e sem ação
required” : “#lanterna@5” — Variável “lanterna” com 5 pontos ou mais
required” : “-lanterna” — Item pegado e obrigatóriamente largado
required” : “-lanterna@room” — Item obrigatoriamente largado na sala X
required” : “+lanterna” — Item pegado (estando ainda no inventário ou largado em qualquer sala)

Dica de uso:

Uma boa dica é usar REQUIRED + setAction. Por exemplo:

♦ Uma poltrona que possui uma chave escondida nela.
♦ Ao examinar a primeira vez, descreve a poltrona com “message” e dá um setAction : poltrona_investigada.
♦ Ao examinar a segunda vez,  verifica a existência de poltrona_invetigada no perfil do jogador e nesse momento apresenta outra descrição com excuse mencionando “… foi aqui onde você encontrou uma chave.”

SVG: ankh-light Uso de imagens — Itens e Salas
SVG: chevron-down-light
SVG: chevron-up-light

A imagens ilustrativas da sala são opcionais. Para efeito retrô com mais ênfase, sugere-se desenhar em baixa resolução e com poucas cores. Na tela de jogo a imagem final é exibida em 540×180 pixels, porém, se provida com menores dimensões, ela será escalonada. Quando usada com scanlines, o resultado será um interessante efeito de tela de computador antigo. No lado direito da imagem de jogo é possível usar um logo quadrado. Pode ser um símbolo da aventura, uma bússola, um logotipo, ou até uma imagem referente ao jogo! Use sua criatividade.

Tamanhos obrigatórios de imagens:

135 x 40 pixels (Ampliado 4X na tela de jogo)
270 x 90 pixels (Ampliado 2X na tela)
540 x 180 pixels (Exibido em tamanho real na tela desktop)

Para o logo, que acompanha a imagem:

45 x 45 pixels (Ampliado 4X na tela de jogo)
90 x 90 pixels (Ampliado 2X na tela)
180 x 180 pixels (Exibido em tamanho real na tela desktop)

SVG: ankh-light Finais de Jogo — Salas
SVG: chevron-down-light
SVG: chevron-up-light

Os finais de jogo são compostos de entradas variáveis. O jogo pode ter múltiplos finais, pois os mesmos são atrelados à salas JSON. Uma sala com uma armadilha mortal pode ter um final ruim, enquando uma sala com a saída do labirinto pode ter um final bom. OS dados de final são atrelados ao grupo DATA do JSON, local onde ficam os caminhos de saída da sala. O final é executado (ouvindo ou não o requerimento) no momento que o usuário acessa a sala.
Também é possível ter finais múltiplos em uma MESMA sala, bastando colocar as entradas de requerimento em formato decrescente, maiores em cima, menores embaixo.

Exemplo:

FINAL.JSON
{

info“: {

name“: “final”,

},
data“: {

ends“: {

melhor-final“: {

required“: [“coroa”, “tesouro”, “score@1000”],
image“: “final-excelente.png”,
title“: “Parabéns!”,
text“: “Você encontrou os tesouros e fez 1000 pontos! É melhor final!”,
showscore“: “score”,
showmoves“: “moves”,
showerrors“: “errors”

},
final-ok“: {

required“: “score@500“,
image“: “final-mais-ou-menos.png”,
title“: “Ok…”,
text“: “Você terminou o jogo, mas não encontrou os tesouros!”,
showscore“: “score”,
showmoves“: “moves”,
showerrors“: “errors”

},
final-ruim“: {

title“: “Que fiasco…”,
image“: “final-ruim.png”,
text“: “Você não conseguiu fazer nada direito no jogo!”,
showscore“: “score”,
showmoves“: “moves”,
showerrors“: “errors”

}

}

}

}

SVG: ankh-light Tem alguma coisa quebrada... O jogo não está funcionando!
SVG: chevron-down-light
SVG: chevron-up-light

Importante:

♦ SEMPRE LEMBRAR DE SETAR O ARTICLE: “o” ou “a”
♦ SEMPRE LEMBRAR DE SETAR O TITLE!

Por que não está funcionando?

♦ Verificar se OBJ ou ITM possuem todos os KEY => VAL em seus ARRAYS
♦ Se faltar um único KEY => VAL obrigatório nada mais funciona
♦ Objetos sem LOOK
♦ Verificar a construção do JSON, não podem haver VÍRGULAS perdidas

Exemplos de Uso

SVG: ankh-light SAÍDAS de uma sala
SVG: chevron-down-light
SVG: chevron-up-light

As saídas das sala ficam no grupo DATA : EXITS.

SAÍDAS em uma SALA.JSON:

Exemplo 1: Saída normal

exits“: {

subir“: “sotao“,
descer“: “porao“,
alcova“: “sala-secreta“,
norte“: “caminho-na-floresta

}

Exemplo 2: Saídas com requerimento

exits“: {

descer“: {

required“: [“lanterna”, “corda”],
target“: “subterraneo“,
excuse“: “É perigoso descer sem uma lanterna e uma corda. Encontre esses utensílios primeiro!

},

subir“: {

required“: “!medo_de_fantasma“, // Com ! na frente significa que NÃO PODE POSSUIR a action setada (ver tabela de usos com required)
target“: “sotao“,
excuse“: “Enquanto você tiver medo de fantasmas, não pode subir ao sótão!

},

subir“: {

hidden“: true // Esconde a exibição desta saída quando o jogador digita “x” ou “caminhos” para ver a lista de saídas
target“: “sala-secreta

},

norte“: {

required“: “facao“,
target“: “caminho-na-floresta-aberto“,
else“: “caminho-na-floresta-bloqueado

}

}

SVG: ankh-light REQUERIMENTO de múltiplas ações para exeminar objeto:
SVG: chevron-down-light
SVG: chevron-up-light

Um antigo livro escrito em idioma estranho.
Requer os itens LUPA e DICIONARIO, no formato array.

OBJETO em uma SALA.JSON:

tomo“: {

article“: “o“,
title“: “Tomo antigo“,
message“: “O tomo revela segredos incríveis! Agora você pode terminar o jogo.“,
required“: [“lupa”, “dicionario”],
excuse“: “Um tomo antigo. A escrita é minúscula e num idioma estranho. Seria interessante uma lupa e um dicionário…

}

SVG: ankh-light EXAMINANDO OBJETO da sala e setando ACTION
SVG: chevron-down-light
SVG: chevron-up-light

Exemplo 1:

Uma nota que, ao ser examinada, revela um segredo.
Usa “setAction” para gravar uma única ação.

OBJETO em uma SALA.JSON:

Exemplo 1: Action única

nota“: {

article“: “a“,
title“: “Nota secreta“,
message“: “A nota foi escrita à mão. Ela mostra a combinação do cofre.“,
setAction“: “sabe_combinacao_cofre

}

Exemplo 2: Múltiplas actions

Uma nota que, ao ser examinada, revela 3 segredos.
Usa “setAction” para gravar um array de ações.

nota“: {

article“: “a“,
title“: “Nota secreta“,
message“: “A nota foi escrita à mão. Ela mostra: a combinação do cofre, o local da chave, o caminho de saída.“,
setAction“: [“sabe_combinacao_cofre”, “sabe_local_chave”, “sabe_caminho_saida”]

}

Nota: Sempre que EXAM qualquer objeto ou item, adiciona uma action “examinou_item || examinou_objeto” no perfil do jogador.

SVG: ankh-light EXAMINANDO OBJETO da sala revela ITEM escondido e o LARGA no local, atualizando a DESCRIÇÃO
SVG: chevron-down-light
SVG: chevron-up-light

Um tapete que, ao ser examinado, revela uma espada escondida embaixo dele.
Usa “placeObject” para automaticamente deixar a espada largada na sala após o tapete ser examinado.

Caso tenha a action EXAMINOU_TAPETE (“examinou_coisa” é criado automaticamente ao “EXAM COISA” ou “OLHAR COISA”)
mostra uma mensagem de “havia uma espada aqui”. Se é a primeira vez que examina, mostra uma mensagem de
“há uma espada aqui” e usando “placeObject” coloca a espada disponível para ser pegada na sala.

OBJETO em uma SALA.JSON:

tapete“: {

article“: “o“,
title“: “Tapete persa“,
required“: “!examinou_tapete“,
message“: “Um tapete persa. Embaixo dele há uma espada otomana.“,
excuse“: “Um tapete persa. Foi onde você encontrou uma espada otomana.“,
placeVerb“: “examinar“,
placeObject“: “espada

}

Nota: Sempre que EXAM qualquer objeto ou item, adiciona uma action “examinou_item || examinou_objeto” no perfil do jogador.
Importante: a condição para o PLACEOBJECT funcionar deve-se sempre informar qual é o VERBO de interação que vai ativá-la.

SVG: ankh-light EXAMINANDO objeto da sala ADICIONA um item ao INVENTÁRIO de forma AUTOMÁTICA (força o jogador a possuir o item sem interação de PEGAR)
SVG: chevron-down-light
SVG: chevron-up-light

Uma pequena mesa com uma CHAVE sobre ela, que, ao ser examinada, insere automaticamente nas coisas do jogador.
Usa “setObject” para inserir no INVENTÁRIO.

OBJETO em uma SALA.JSON:

mesinha“: {

article“: “a“,
image“: “mesa-com-chave-em-cima.png“,
image2“: “mesa-sem-chave-em-cima.png“,
required“: “examinou_mesa“,
message“: “Uma pequena mesa de centro, sem nada em cima. Foi onde você encontrou uma CHAVE.“,
excuse“: “Uma pequena mesa de centro com uma chave em cima. Finalmente você encontrou a chave! Você pega a CHAVE e coloca em suas coisas.“,
setObject“: “chave

}

Nota: importante observar que o item a ser inserido automaticamente no inventário do jogador PRECISA EXISTIR no arquivo de ITEMS.JSON.

SVG: ankh-light Dando UPDATE na IMAGEM e na DESCRIÇÃO de uma sala
SVG: chevron-down-light
SVG: chevron-up-light

Pode-se fazer a imagem geral e a descrição da sala mudar através do parâmetro “updateRoomImage” e “updateRoomDesc”.
Importante: os updates são EXECUTADOS SOMENTE 1 VEZ.
Se trabalhado com required, só são executados quando a ação cumprir a restrição.

EXAMINANDO um OBJETO em uma SALA.JSON:

olhar“: {

quadro“: {

article“: “o“,
image“: “quadro.png“,
message“: “O quadro possui um mapa com a localização da saída pintado nele.“,
setAction“: “descobriu_a_saida“,
updateVerb“: “olhar“,
updateRoomImage“: “sala-com-o-mapa-no-quadro.png“,
updateRoomDesc“: “Novo texto descritivo da sala, nova descrição, mudanças, etc.

}

}

ABRINDO um OBJETO em uma SALA.JSON:

abrir“: {

cortina“: {

article“: “a“,
image“: “cortina.png“,
message“: “Agora a sala está muito mais iluminada.“,
setAction“: “descobriu_a_saida“,
updateVerb“: “abrir“,
updateRoomImage“: “sala-iluminada.png“,
updateRoomDesc“: “Novo texto descritivo da sala, nova descrição, mudanças, etc.

}

}

USANDO um ITEM:

bomba“: {

article“: “a“,
title“: “Bomba“,
room“: “sala“,
message“: “Você pega a BOMBA.“,
verb“: “usar“,
bingo“: “Você explode a bomba perto da parede. Uma passagem se abre!“,
discard“: “A bomba não existe mais.“,
updateVerb“: “usar“,
updateRoomImage“: “sala-com-buraco-na-parede.png“,
updateRoomDesc“: “Novo texto descritivo da sala, nova descrição, mudanças, etc.

}

SVG: ankh-light Resetando todos os UPDATES aplicados a uma sala
SVG: chevron-down-light
SVG: chevron-up-light

Pode ser usado em qualquer objeto em qualquer sala.
Ao ser interagido restaura a imagem e descrição de um sala modificada aos valores iniciais.

mover“: {

alavanca“: {

article“: “a“,
message“: “Um som é ouvido ao longe.“,
gone“: “Agora a alavanca está presa. Não se move mais.“,
resetRoom“: “estudio

}

}

SVG: ankh-light INTERAGINDO com OBJETO da SALA
SVG: chevron-down-light
SVG: chevron-up-light

É possível interagir com objetos da sala usando vários verbos.
Cada interação é vinculada a seu verbo.

USANDO um OBJETO em uma SALA.JSON:

usar“: {

fonte“: {

article“: “a“,
title“: “Fonte Ijuí“,
image“: “fonte.png“,
firstuse“: “Nossa! Posso encher meu cantil aqui!“, // Mensagem exibida uma única vez no primeiro uso
message“: “Você enche seu cantil.” // Mensagem exibida subsequentemente
gone“: “Puxa vida, a fonte secou.” // Mensagem de encerramento. Aparece caso setada. Serve para encerrar uma interação em um contexto informativo

}

}

No caso se usar com “setCounter”, “gone” (se existente) será ignorado em favor da mensagem “limit”.
Logo, “gone” não precisa ser setado em OBJETOS de SALA que tenham contador de interações.

usar“: {

pc“: {

article“: “o“,
title“: “NEC PC-88“,
image“: “pc.png“,
firstuse“: “Nossa! Um PC cheio de jogos.“, // Mensagem exibida uma única vez no primeiro uso
message“: “Você joga um adventure em modo texto.” // Mensagem exibida subsequentemente
setCounter“: “computador@1“, // Incrementa 1 uso no PC
max“: “3“, // Máximo de 3 usos no PC
limit“: “Acabaram os jogos.” // Alcançou o limite

}

}

MOVENDO um OBJETO em uma SALA.JSON:

mover“: {

estante” : {

article“: “a“,
title“: “Estante com caixas“,
image“: “estante.png“,
message“: “Uma passagem secreta se revela atrás dela.“, // O sistema adiciona { Você moveu a estante. } como sufixo.
gone“: “Há um escuro túnel atrás da estante.” // Mensagem permanente no caso de haver outra tentativa de movimento

}

}

Alguns verbos não interagem com o inventário, como no caso, MOVER, PUXAR, EMPURRAR e ESCUTAR.
Estes verbos operam somente a nível de SALA.

SVG: ankh-light USANDO item faz contagem de USOS e exibe mensagem de bloqueio quando ATINGIR UM LIMITE pré determinado
SVG: chevron-down-light
SVG: chevron-up-light

Um cantil com 5 goles generosos dágua. Ao chegar no limite, exibe mensagem de cantil vazio. Não permite mais usar.
Usa “setCounter” para incrementar o número de usos com “cantil@1”.
Usa “max” parar estabelecer o limite máximo de usos.
Usa “limit” para exibir uma mensagem quando chegar no máximo.
Usa “verb” como “usar” para designar o verbo de interação com o item (poderia ser BEBER, COMER, ETC).

Exemplo 1:

Se o contador de usos está sendo considerado, automaticamente o sistema informa o número de usos restantes após cada interação em um bloco de sufixo na descricão.
Se está sendo usado, o sistema exibe a mensagem de BINGO (sucesso de uso) e mais dois blocos adicionais informativos.

Ao OLHAR/EXAMINAR (não contabiliza usos, apenas informa):
Um cantil de couro que armazena água fresca. { Você pode usar por X vezes || Você ainda pode usar por mais X vezes || Você não pode mais usar isto. }

Ao USAR (contabiliza usos):
{ Você usou o CANTIL. } Aah! Que gole delicioso para aplacar sua sede. { Você ainda pode usar por mais X vezes, || Você não pode mais usar isto. }
Como o item tem “image2”, ele exibe essa imagem a cada uso (e também quando o limite é atingido).

ITEM em ITEMS.JSON:

cantil“: {

article“: “o“,
title“: “Cantil“,
room“: “estudio“,
image“: “cantil-cheio.jpg“,
image2“: “cantil-seco.jpg“,
verb“: “usar“,
look“: “Um cantil de couro que armazena água fresca.“,
message“: “Você pega o CANTIL.“,
bingo“: “Aah! Que gole delicioso para aplacar sua sede.“,
setCounter“:”cantil@1“,
max“: “5“,
limit“: “Acabou a água!

}

Exemplo 2:

Se adicionar “setAction” combinado com “setCounter” o funcionamento é independente.
setCounter” funciona somente com os verbos de uso (USAR, MOVER, ABRIR, etc).
setAction” funciona em todos os verbos.

Ao OLHAR/EXAMINAR:
Um cantil de couro que armazena água fresca. { Você pode usar por X vezes || Você ainda pode usar por mais X vezes || Você não pode mais usar isto. }

Ao USAR:
{ Você usou o CANTIL. } Aah! Que gole delicioso para aplacar sua sede. { Você ainda pode usar por mais X vezes, || Você não pode mais usar isto. }
Como o item tem “image2”, ele exibe essa imagem a cada uso (e também quando o limite é atingido).

ITEM em ITEMS.JSON:

cantil“: {

article“: “o“,
title“: “Cantil“,
room“: “estudio“,
image“: “cantil-cheio.jpg“,
image2“: “cantil-seco.jpg“,
verb“: “usar“,
look“: “Um cantil de couro que armazena água fresca.“,
message“: “Você pega o CANTIL.“,
bingo“: “Aah! Que gole delicioso para aplacar sua sede.“,
setAction“: “descobriu_o_cantil“,
setCounter“: “cantil@1“,
max“: “5“,
limit“: “Acabou a água!

}

Nota: Sempre que USAR qualquer objeto ou item, adiciona uma action “usou_item || usou_objeto (comeu_item, moveu_objeto, etc)” no perfil do jogador.

SVG: ankh-light Reiniciando a contagem de usos de um ITEM específico
SVG: chevron-down-light
SVG: chevron-up-light

Exemplo 1:

Utilizando um objeto em uma sala com a entrada “resetCounter“, fazendo voltar ao valor zero a contagem do objeto especificado.
O número de RESETS (recargas) é infinito. Todas as vezes que o OBJETO for usado, reseta o contador do item.

O jogador pode encher seu CANTIL ao usar uma FONTE em alguma sala do jogo.
Ao usar o sistema adiciona na frente da mensagem informações padrão de { Você usa a FONTE. && Você usa a FONTE novamente. }

fonte“: {

article“: “a“,
message“: “Seu cantil está cheio novamente.“,
bingo“: “Pronto! Seu cantil está cheio mais uma vez…“,
resetCounter“: “cantil

}

Exemplo 2:

O jogador pode recarregar seu REVOLVER ao usar um ITEM de caixa de MUNIÇÃO encontrada em alguma sala do jogo.
O número de RESETS (recargas) é único, 1 vez apenas.

Ao usar o sistema adiciona informações padrão:
{ Você usa a MUNIÇÃO. } Sua arma foi carregada. { Este item não tem mais uso. }

munição“: {

article“: “a“,
title“: “Munição“,
room“: “estudio“,
image“: “municao-cheia.png“,
image2“: “municao-vazia.png“,
message“: “Você pega a MUNIÇÃO.“, // Mensagem exibida quando PEGAR a munição (pode disparar setAction, Inc, Dec apenas)
verb“: “usar“,
bingo“: “Sua arma foi carregada.“, // Mensagem exibida ao usar a munição
discard“: “Este item não tem mais uso.“, // Mensagem de descarte, item é removido do jogo (Podendo retornar se feito uso de setObject: municao em outra situacao da aventura)
resetCounter“: “livro“,

}

SVG: ankh-light INTERAGINDO com um item através de um verbo para setar NOVA IMAGEM e NOVA DESCRIÇÃO em uma sala
SVG: chevron-down-light
SVG: chevron-up-light

No exemplo abaixo, o jogador utiliza a ESTATUETA para abrir uma passagem secreta na sala “ALTAR.JSON”

estatueta“: {

article“: “a“,
title“: “Estatueta“,
room“: “hall“, // Sala onde se encontra no início do jogo
goal“: “altar“, // Única sala do jogo onde o “VERB” setado vai funcionar
verb“: “usar“, // Único verbo que funciona com o item
image“: “estatueta.png“,
message“: “Você a acomoda cuidadosamente em suas coisas.“, // Com o prefixo { Você pegou a estátua. } adicionado automaticamente.
bingo“: “A estátua está fixada permanentemente no pedestal.“, // Mensagem permanente que é exibida depois do uso com sucesso
fx“: “fx.mp3“, // Som que toca no uso
updateVerb“: “usar“,
updateRoomImage“: “laboratorio.png“, // Nova imagem permanente para a sala “ALTAR.JSON”
updateRoomDesc“: “Novo texto texto texto texto texto texto.” // Nova descrição permanente para a sala “ALTAR.JSON”

}

SVG: ankh-light EQUIPANDO um item
SVG: chevron-down-light
SVG: chevron-up-light

Dois itens que são equipáveis, mas que NÃO DEVEM ser AMBOS EQUIPADOS AO MESMO TEMPO

elmo“: {

article“: “o“,
title“: “Elmo mágico“,
room“: “deposito“,
image“: “elmo-magico.png“,
message“: “Você pega o ELMO.“,
verb“: “equipar“, // Verbo que deixa o item equipável
bingo“: “Sua cabeça agora está protegida.“, // { Você equipou o ELMO. } + Mensagem exibida ao equipar o elmo
setEquip“: “cabeça

},

capacete“: {

article“: “o“,
title“: “Capacete de eletrecista“,
room“: “deposito“,
image“: “capacete.png“,
message“: “Você pega o CAPACETE.“,
verb“: “equipar“, // Verbo que deixa o item equipável
bingo“: “Sua cabeça agora está protegida da eletricidade.“, // { Você equipou o CAPACETE. } + Mensagem exibida ao equipar o elmo
setEquip“: “cabeça

}

Com ambos usando o parâmetro “setEquip” como “cabeça”, só será possível equipar um por vez.
O jogador pode desequipar um item usando o comando “desequipar item” (ou “remover item”) ou então LARGANDO o item na sala (desequipa automaticamente).

espada“: {

article“: “a“,
title“: “Espada torta“,
room“: “deposito“,
image“: “espada.png“,
message“: “Você pega a ESPADA.“,
verb“: “equipar“, // Verbo que deixa o item equipável
bingo“: “Seu ataque melhorou!“, // { Você equipou a ESPADA. } + Mensagem exibida ao equipar o elmo
setEquip“: “mãos

}

Já a espada pode ser equipada em conjunto com um dos outros dois elmos, pois ela está setada para ser usada nas “mãos”.
NOTA: o verbo EQUIPAR não considera GOAL, ou seja, uma sala “alvo” de uso, no caso, de equipar
Também não considera DISCARD.

SVG: ankh-light CONVERSANDO com NPC em modo simples com diálogo único
SVG: chevron-down-light
SVG: chevron-up-light

Diálogo mais simples possível com um NPC.

padeiro“:

article“: “o“,
title“: “Padeiro“,
1“: “Meus pães são ótimos.” // O diálogo permanece encerrado nesta instância

}

SVG: ankh-light CONVERSANDO com NPC modo simples com diálogo sequencial
SVG: chevron-down-light
SVG: chevron-up-light

Diálogo onde a conversa permanece fixa na última fala da lista estabelecida.

padeiro“: {

article“: “o“,
title“: “Padeiro“,
image“: “padeiro.png“,
1“: “Meus pães são ótimos.“,
2“: “Também são boas minhas cucas.“,
3“: “Ah, mas a pizza, meu grande destaque.” // O diálogo permanece encerrado nesta instância

}

Pode-se também informar rand/loop = false || true:

padeiro“: {

article“: “o“,
title“: “Padeiro“,
image“: “padeiro.png“,
1“: “Meus pães são ótimos.“,
2“: “Também são boas minhas cucas.“,
3“: “Ah, mas a pizza, meu grande destaque.“,
4“: “Desculpe, não tenho mais nada a dizer!” // O diálogo permanece encerrado nesta instância
rand“: “false”,
loop“: “false”

}

O parâmetro loop faz a conversa permanecer em looping, retornando sempre à primeira mensagem e o parâmetro rand embaralha constantemente a ordem das falas do NPC.

SVG: ankh-light CONVERSANDO com NPC COM requerimento e usando MENSAGEM + DESCULPA + SUCESSO
SVG: chevron-down-light
SVG: chevron-up-light

No exemplo o mago requer que o jogador tenha dado um AMULETO em seu inventário. É necessário uma combinação de parâmetros. Configura-se o amuleto com verbo de interação como “DAR” que tem como alvo/goal a sala que está o mago, no caso, a biblioteca.

No arquivo da SALA.JSON onde se encontra o NPC Mago — como exemplo — BIBLIOTECA-DO-FEITICEIRO.JSON

mago“: {

article“: “o“,
title“: “Mago“,
image“: “mago-sem-amuleto.png“,
image2“: “mago-com-amuleto.png“,
required“: “deu_amuleto“, // Requerimento necessário
excuse“: “Onde está meu amuleto? Preciso equipá-lo para recuperar meus poderes!“, // Diálogo de requerimento não cumprido
1“: “Obrigado por devolver meu amuleto. Já está em meu pescoço. Estou forte de novo.“, // Requerimento cumprido, sucesso
2“: “Como agradecimento, vou abrir a passagem da masmorra.“, // Requerimento cumprido, sucesso
3“: “Não temos mais nada a conversar”, // Conversa termina aqui
setAction“: [“mago_equipou_amuleto”, “mago_abriu_masmorra”]

}

No arquivo do ITEMS.JSON:

amuleto“: {

article“: “o“,
title“: “Amuleto de ametista“,
room“: “hospedaria“,
look“: “É feito de ametista num tom verde brilhante.“,
image“: “amuleto.png“,
usage“: “Deve pertencer a algum feiticeiro. Talvez seja interessante devolver a ele.“,
verb“: “dar“,
goal“: “biblioteca-do-feiticeiro“,
message“: “Você acomoda em seu inventário.“,
discard“: “O feiticeiro imediatamente toma o amuleto em mãos e pendura em seu pescoço.“,
inc“: “score@1

}

SVG: ankh-light CONVERSANDO com NPC COM requerimento e usando MENSAGEM + DESCULPA + falas sequenciais que não se repetem
SVG: chevron-down-light
SVG: chevron-up-light

No exemplo, depois de adquirir o ITEM requerido,
o velho fica bêbado (Usando setAction):

velho“: {

article“: “o“,
title“: “Velhote“,
image“: “velho.png“,
required“: “deu_vinho“, // Requer cumprir alguma ação
excuse“: “Estou com muita sede… Mas não quero água!“, // Diálogo exibid enquanto a ação não for cumprida
1“: “Aaah, um Cabernet Sauvignon! Obrigado!“, // Diálogo 1 agradece por cumprir
2“: “Que vinho delicioso, você acertou!“,
3“: “Já bebi quase toda a garrafa…“,
4“: “Acho que bebi demais… Hiccup!“, // O diálogo permanece encerrado nesta instância
setAction“: “velho_ficou_bebado“,
loop“: false // Não executa looping

},

Pode-se fazer exibir diálogos aleatórios após cumprir o requerimento:

guarda“: {

article“: “o“,
title“: “Guarda-Belo“,
image“: “guarda.png“,
required“: “usou_ineta“, // Requer cumprir alguma ação
excuse“: “Zzzzzz… Zzzzz… Ronc… Z….“, // Diálogo exibid enquanto a ação não for cumprida
1“: “OHHH! Você me acordou com essa sineta!“, // Diálogo 1 agradece por cumprir
2“: “Estava tão bom de dormir.“,
3“: “Que sineta barulhenta essa sua!“,
4“: “Continuo com sono!“, // O diálogo entra em looping e volta à instância 1
setAction“: “acordou_guarda“,
loop“: true // Não executa looping

},

SVG: ankh-light Suprimindo mensagem automática ao USAR UM ITEM
SVG: chevron-down-light
SVG: chevron-up-light

Sempre que um item é usado, um prefixo automático é adicionado na mensagem de retorno. Por exemplo, ao LIGAR um COMPUTADOR, o retorno traz:

{ Você ligou o computador. } Seguido então da mensagem estabelecida como “message” no item ou objeto: “Está funcionando normalmente”.

Se desejar SUPRIMIR o prefixo automático (pode ser necessário em alguns contextos), basta indicar com o símbolo % no início da frase. Veja:

tocha“: {

article“: “a“,
title“: “Tocha“,
room“: “sala-escura“,
look“: “É feita de madeira resistente e possui trapos embebidos em óleo inflamável em uma das extremidades.“,
image“: “tocha.png“,
image2“: “tocha-acesa.png“,
usage“: “Você pode acendê-la com fogo.“,
verb“: “ligar“,
goal“: “sala-central“,
message“: “Serve para iluminar ambientes e não é muito pesada.“,
bingo“: “%A chama agora tremula fracamente.“,
inc“: “score@1

}

No modelo acima temos uma tocha que pode ser acesa em uma sala (sala-central) onde há uma fogueira. Para atear fogo ao objeto, usa-se, nos parâmetros do item, o verbo LIGAR (que responde por vários sinônimos como ativar, acender, etc). Como o prefixo automático trabalha com o retorno { Você LIGOU a TOCHA. } (inerente ao verbo principal e não a seus sinônimos) torna-se interessante o uso do % para suprimir tal informação.

Depois de entrar com o comando — ACENDER TOCHA — o jogador receberá então apenas o retorno: “A chama agora tremula fracamente.”, pois o % suprimiu o prefixo automático.

Mensagem com o prefixo automático {Você LIGOU as TOCHA. A chama agora tremula fracamente. } pode soar estranha em algumas situações de jogo.

Participe do Projeto

Se você quer escrever uma história e está interessado em montar um jogo — entre em contato conosco e faça parte da nossa equipe!

Projeto idealizado por Cospefogo