Mahjong Sweet Shop 1.0.0 English Português Español Guia de personalização (inglês)

Mahjong Sweet Shop: Guia do comprador

Mahjong Sweet Shop é um jogo de quebra-cabeça HTML5 de combinar peças com tema de confeitaria. Toque nas peças livres para enviá-las a uma bandeja de 7 lugares: três iguais somem. 60 fases em 4 lojas, uma gatinha confeiteira que reage a cada jogada, tutorial guiado, 14 idiomas, sem anúncios e sem serviços online. Este guia mostra o jogo com capturas reais e explica como instalar, jogar, alterar e publicar.

Visão geral

Capturas reais desta edição do comprador (1280x720 no navegador do computador e no celular em pé). Abra uma imagem para ver em tamanho real.

Celular (em pé)

Instalação

  1. Extraia o ZIP. Abra DOCUMENTATION.html (este guia) e CUSTOMIZATION.html (mudanças passo a passo para quem não programa, em inglês).
  2. Envie somente o conteúdo da pasta game/ para qualquer hospedagem estática em HTTP ou HTTPS (hospedagem compartilhada, servidor próprio, Netlify, GitHub Pages...), mantendo as pastas ao lado de index.html . Pelo FTP, abra a pasta game e envie tudo o que está dentro dela.
  3. Abra o endereço no navegador. Não é preciso banco de dados, PHP, conta nem Node.js para jogar.
  4. Não envie source/ , a documentação nem o ZIP completo para o endereço público do jogo.
  5. Abrir game/index.html direto do disco (file://) não funciona na maioria dos navegadores, porque o jogo usa módulos JavaScript. Use um servidor web ou o npm run serve da seção de Desenvolvimento.

Navegadores, aparelhos e som

Funciona em todos os navegadores atuais, no computador e no celular: Chrome, Edge, Firefox, Safari (macOS, iPhone, iPad), Opera, Brave, Samsung Internet . Versões mínimas: navegadores baseados em Chromium 105+, Firefox 121+, Safari 16+ (iOS e iPadOS 16+). O jogo usa módulos ES, Canvas 2D, Web Audio, unidades de container query do CSS e o seletor :has() .

Mouse e toque funcionam. A primeira tela diz "Toque para começar": esse primeiro toque libera o som no celular. Efeitos e música têm volumes separados nos Ajustes; a vibração pode ser desligada (Android vibra; iPhone dá um toque leve no iOS 18+).

Esta edição foi testada automaticamente no Chromium (o motor do Chrome e do Edge) em tamanhos de celular e computador, jogando fases inteiras; o motor do jogo também foi testado no Firefox e no WebKit (Safari). Como em qualquer jogo web, teste nos aparelhos que você pretende atingir antes de publicar.

Como jogar

Guia da interface (telas numeradas)

Cada número da captura está na lista abaixo dela, com o arquivo que o muda. Mais detalhes no guia de personalização.

Menu

Menu 1 2 3 4 5
# O que aparece Arquivo
1 Logo assets/sweet-shop/logo.webp
2 Botão Jogar text play in src/i18n.js ; picture assets/sweet-shop/botao-play.webp
3 Ajustes assets/ui/btn-gear-inicio.webp ; window in src/app/screen-modals.js
4 Som / volumes assets/ui/btn-som-inicio.webp , assets/ui/speaker.webp
5 Gatinha assets/sweet-shop/gata-direita-*.webp (poses in src/app/worlds.js )

Mapa de fases da Doceria

Mapa de fases da Doceria 1 2 3 4 5 6
# O que aparece Arquivo
1 Logo assets/sweet-shop/logo.webp
2 Moedas icon assets/sweet-shop/moeda.webp ; amounts COINS in src/config.js
3 Fase atual assets/ui/stop-gold.webp ; positions STOP_POS in src/app/data.js
4 Fase bloqueada assets/ui/stop-stone.webp , assets/ui/lock.webp
5 Gatinha assets/sweet-shop/gata-direita-*.webp (poses in src/app/worlds.js )
6 Voltar ao menu assets/ui/back.webp

Fase 1 com o tutorial guiado

Fase 1 com o tutorial guiado 1 2 3 4 5 6 7 8 9 10
# O que aparece Arquivo
1 Número da fase text level in src/i18n.js
2 Moedas icon assets/sweet-shop/moeda.webp ; amounts COINS in src/config.js
3 Pausa assets/ui/gear.webp ; window in src/app/screen-modals.js
4 Som / volumes assets/ui/btn-som-inicio.webp , assets/ui/speaker.webp
5 Desfazer, Dica, Embaralhar icons assets/ui/undo.webp , hint.webp , shuffle.webp ; counts HELPERS in src/config.js
6 Gatinha assets/sweet-shop/gata-direita-*.webp (poses in src/app/worlds.js )
7 Balão do tutorial texts tut1 to tutGo in src/i18n.js ; steps in src/app/data.js
8 Mão do tutorial assets/ui/hand.webp
9 Peças pictures assets/sweet-shop/icones-0.webp to icones-3.webp ; levels src/game/levels.js
10 Bandeja (7 lugares) assets/ui/bandeja.webp ; size TRAY in src/game/rules.js

Ajustes (volumes, idioma, vibração)

Ajustes (volumes, idioma, vibração) 1 2 3 4 5
# O que aparece Arquivo
1 Faixa do título assets/sweet-shop/faixa-janela.webp , faixa-vitoria.webp , faixa-derrota.webp
2 Botão Fechar assets/sweet-shop/botao-verde.webp
3 Volume de efeitos e música src/audio/sfx.js
4 Idioma src/i18n.js
5 Vibração src/app/screen-modals.js

Arquivos e onde mudar cada coisa

O pacote tem três partes principais:

game/                       ready-to-host game: upload THESE CONTENTS
source/                     editable project (plain JavaScript, no dependencies)
  index.html                the page; loads the 4 style files and src/main.js
  css/01-base.css .. 04-theme.css   layered styles (a later file overrides an earlier one)
  src/main.js               entry point
  src/app/                  screens and systems, one small file per subject
  src/game/rules.js         rules of the tray and the tiles
  src/game/levels.js        the 60 levels (tile counts, shapes, how many tile types)
  src/config.js             shops and tile names, helpers, coins, feel numbers, save key
  src/i18n.js               interface texts, 14 languages
  src/render/tiles.js       tiles and tray drawn on the canvas
  src/audio/sfx.js          sound effects and music
  assets/sweet-shop/        artwork of this game (backgrounds, maps, cat, tiles, logo, ribbons, buttons)
  assets/ui/                interface icons and frames
  assets/sfx/, assets/music/, assets/fonts/   sounds, music, Fredoka font
  test/                     rule and language tests
  tools/serve.mjs, build.mjs   local server and the copy-to-game script
documentation/              this guide (index.html, pt.html, es.html), customization.html and img/
DOCUMENTATION.html          opens this guide
CUSTOMIZATION.html          opens the customization guide
THIRD-PARTY-LICENSES/       font license

As receitas passo a passo (imagens, gatinha, peças, sons, textos, cores, fonte, dificuldade, moedas) estão no guia de personalização: CUSTOMIZATION.html

Nomes internos

O motor deste jogo é compartilhado com outros jogos do mesmo estúdio, então alguns nomes de arquivos e do código estão em português ou vêm do motor. Foram mantidos de propósito (renomear não muda o jogo). A tabela diz o que é cada um.

Nome O que é
mascotSrc(), catPoses a imagem da gatinha para cada pose
gata-direita-*.webp poses da gatinha: feliz, acena, aponta, vitoria, triste
fundo-*, mapa-* fundo = cenário da fase, mapa = mapa de fases; -vertical = retrato, -superlargo = ultralargo; 0 a 3 = as quatro lojas
icones-0..3.webp atlas das figuras de peças de cada loja (4 colunas x 3 linhas = 12 peças)
faixa, botao, moeda, peca faixa, botão, moeda, peça
bandeja, toque, balao, brilho bandeja, anel de toque, balão, brilho
brilho-toupeira.webp brilho atrás do mascote na vitória (nome do motor)
clima, .gota clima de fundo e suas partículas (pétalas de sakura, bolhas)
ornamento, separador-bala, enfeite-pirulito, confete-doce enfeites: morangos, separador de bala, pirulito, confete de doces
sweets, icecream, bakery, chocolate ids das quatro lojas em src/config.js
sfx: pegar, passo, caixa-cheia, desfazer, milho, botao, vitoria-sem-trinado, confete, tempo-acabou, clique, janela, moeda, combo, bloqueio sons: pegar, pousar, trio, desfazer, embaralhar, dica, vitória, confete, derrota, clique, janela, moeda, combo, bloqueio
Portuguese function names (fimTut, passoTut, telaInicio, refazHud...) fim do tutorial, passo do tutorial, tela inicial, refazer o topo

Idiomas

A interface do jogo tem 14 idiomas : inglês, português, espanhol, francês, alemão, italiano, holandês, polonês, russo, turco, japonês, coreano, chinês e indonésio. O jogo começa no idioma do aparelho (inglês quando não está na lista) e o jogador troca nos Ajustes. Um link como ?lang=de abre o jogo num idioma. Para mudar um texto ou acrescentar um idioma, altere src/i18n.js e rode npm test : o teste de idiomas confere se todos os idiomas têm todos os textos. Este guia está em inglês, português do Brasil e espanhol (links no topo).

Progresso salvo

O progresso (fases liberadas, estrelas, moedas), os volumes, a vibração e o idioma ficam no navegador (localStorage), em chaves que começam com:

mahjong-sweet-shop.template.save.v1:

O progresso pertence àquele navegador e àquele endereço. Outro navegador, modo anônimo, limpar os dados do site ou mudar o jogo de domínio começa da fase 1. Se você hospedar duas cópias do jogo no mesmo domínio e quiser progresso separado, mude STORAGE_PREFIX em src/config.js numa delas.

Desenvolvimento com Node.js (opcional)

O jogo pronto em game/ não precisa de mais nada. O projeto editável está em source/ : módulos JavaScript e CSS simples, sem dependências e sem compilação . O Node.js 26.13 ou superior (a LTS atual) só serve para rodar os testes, abrir o jogo localmente e copiar os arquivos para game/ .

Nunca usou Node.js? 1) Instale a versão LTS em nodejs.org (instalador para Windows ou macOS) ou pelo gerenciador de pacotes no Linux; precisa ser 26.13 ou superior. 2) Feche e reabra o terminal e digite node -v para conferir. 3) Abra um terminal dentro da pasta source (no Windows: abra a pasta, clique na barra de endereço, digite cmd e tecle Enter). 4) Rode os comandos abaixo um de cada vez.

cd source
node -v
npm ci
npm test
npm run serve
# http://localhost:8080/
npm run build
# copies index.html, css/, src/ and assets/ to ../game

npm ci não instala nada (o projeto não tem dependências; só confere o arquivo de lock). npm test roda os testes de regras e de idiomas. npm run serve abre o jogo em http://localhost:8080/ (Ctrl+C para parar). npm run build copia index.html , css/ , src/ e assets/ para a pasta game ao lado de source ; depois envie o conteúdo de game/ .

Problemas comuns: "node não é reconhecido" quer dizer que o Node.js não está instalado ou o terminal não foi reaberto; "EBADENGINE" quer dizer Node.js anterior ao 26.13; no PowerShell do Windows, se o npm for bloqueado pela política de execução, use o cmd ou rode npm.cmd .

Atualização e limpeza de cache

Licenças

O código do jogo, a arte, os sons e a música são fornecidos sob a licença do item comprado. A fonte Fredoka usa a SIL Open Font License 1.1: o aviso está em THIRD-PARTY-LICENSES/ e ao lado dos arquivos da fonte em assets/fonts/ . O projeto não tem dependências de execução nem de desenvolvimento.

Solução de problemas

Suporte

Para dúvidas, problemas ou mudanças sob medida, escreva para willian@polargames.com.br . Envie a versão do produto (1.0.0), navegador e aparelho, o endereço do jogo, os passos para reproduzir e uma captura de tela.