尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗RPG por turnos em pixel art onde cada golpe é decidido no pedra, papel e tesoura. Você é o Caçador: atravesse a Floresta Maldita, invada a mansão, derrote Kastle e depois enfrente o Reino das Sombras até Morgana, a Rainha Banshee.
Campanha
Corridas
Arena dos Caçadores (multiplayer online)
Ranqueada (troféus), Casual, 2x2, Chefe Cooperativo, Torneio Relâmpago (4 a 8 caçadores) e Rei da Arena
Só jogadores de verdade (sem bots); dá para assistir as partidas de quem está online
Deck de 8 cartas (16 cartas, limite por raridade), 6 caçadores, histórico dos poderes do adversário
Avatar com o rosto de um caçador ou desenhado no Ateliê (editor de pixel art 16x16), com moldura
Missões diárias, Ecto, loja de molduras e expressões, temporadas mensais com recompensas
Trilha sonora composta em partituras Scrimshaw, tocada ao vivo
Funciona no navegador, no desktop e no celular
O jogo é estático (HTML + ES modules, sem build). Basta servir a pasta:
npm run dev
Depois abra http://localhost:5173. (O tools/devserver.py desativa o cache para você ver as mudanças na hora.)
Testes das regras do jogo:
npm test
Multiplayer local: veja server/README.md.
| Tecla | Ação |
|---|---|
1 2 3 | Estaca, Aspirador, Cruz |
A / S / B | Armas / Loja / Monstruário |
Tab ou toque no monstro | Trocar de alvo |
Esc | Pausar / fechar |
index.html telas (DOM) por cima do canvas 1280x720
styles/ CSS por área (base, componentes, telas, batalha, multiplayer)
src/
main.js monta serviços, interface e cenas
config/ dados do jogo: armas, monstros, itens, fases, balanceamento
domain/ regras puras e testáveis (batalha, IA, atributos, campanha, corridas, saves, monstruário)
core/ motor: loop e cenas, renderizador pixel-perfect, tweens, partículas, áudio, música
world/ personagens animados, efeitos, cenários laterais e palco de batalha em perspectiva
scenes/ Menu, Mapa, História, Diálogo, Batalha (campanha e corridas), Resultado,
Arena (lobby), Duelo (1x1/2x2/espectador) e Chefe Cooperativo
ui/ HUD da batalha, cartas, modais (saves, opções, monstruário, oficina, relíquias,
desafio do dia, deck, missões, loja, arena), toasts
net/ cliente Socket.io do multiplayer
vendor/scrimshaw/ motor de partituras Scrimshaw (Apache 2.0)
assets/
sprites/ SVGs 64x64 gerados (personagens, inimigos, ícones, efeitos, UI, tiles)
fonts/ fonte pixel JokenPixel (gerada)
music/ trilha sonora em partituras .scrim
audio/ efeito de impacto
tools/
sprites/ gerador das sprites (pixel art desenhada em código)
font/ gerador da fonte JokenPixel
music/ verificador das partituras (node tools/music/check.mjs)
server/ servidor multiplayer (Node + Socket.io, deploy no Render)
tests/ testes do domínio (node --test)
legacy/pygame/ versão original em Python/Pygame
A regra principal: domain/ não conhece tela nenhuma. A batalha (domain/battle.js) decide o que acontece
e devolve um resultado; a cena (scenes/BattleScene.js) só anima esse resultado. O "modo" da batalha
(scenes/battleModes.js) diz se é uma fase da campanha ou uma corrida, sem a cena precisar saber.
Melhorias, relíquias e dificuldade são modificadores (domain/loadout.js) que viram um único objeto de
atributos lido pela batalha. As corridas (domain/run.js) usam geradores com semente e registram cada jogada,
então o servidor refaz a corrida do Desafio do Dia com o mesmo código (server/src/shared.js).
Todas as sprites seguem o padrão 64x64 px (animações são folhas horizontais de frames 64x64) e são desenhadas em código com uma paleta única, então o jogo inteiro tem o mesmo estilo. Para alterar ou criar arte:
tools/sprites/art/ (hunter.mjs, enemies.mjs, icons.mjs, fx.mjs, ui.mjs, tiles.mjs)npm run assets (gera os SVGs, o bundle.json e o manifesto src/config/sprites.generated.js)A fonte JokenPixel (com acentos do português) é desenhada em tools/font/glyphs.mjs.
Use tamanhos múltiplos de 8px (16, 24, 32...) para ela ficar nítida.
Cada música é um texto em assets/music/*.scrim (formato Scrimshaw: vozes, padrões e play/loop).
O jogo compila a partitura e toca com os instrumentos sintetizados do Scrimshaw, então as músicas
pesam poucos KB. Para compor ou testar, cole o arquivo no editor do
Scrimshaw Jukebox e confira com
node tools/music/check.mjs.
Cada tela diz a sua trilha (music() em scenes/); o jogo troca ao entrar na tela e mostra um aviso
discreto "Tocando: nome da música" (dá para desligar em Opções). Janelas com trilha própria, como o
Ateliê, tocam por cima da tela e devolvem a música dela ao fechar. O botão de nota no canto de cima à
direita, presente em todas as telas, liga e desliga só a música (a escolha fica salva).
| Arquivo | Onde toca |
|---|---|
menu | menu principal |
mapa | mapa |
conto | histórias e diálogos |
batalha | batalhas do Ato I e o começo das corridas |
sombras | batalhas do Ato II |
chefe | chefes |
rainha | Morgana |
lobby / duelo | Arena e duelos online |
atelie | Ateliê (editor de avatar) |
vitoria / derrota | vinhetas de resultado |
vercel.json). legacy/, tools/, tests/ e server/ ficam fora do deploy.server/ como raiz.
O endereço fica em src/config/multiplayer.js. Detalhes em server/README.md.MIT — veja LICENSE.