feat: add medals, music, sound effects and the narrator - #14
Merged
Merged
Conversation
Member
Author
|
Revisão de código passada sobre o diff inteiro, com o
Os dois que a revisão achou enquanto o branch andava — o relógio de cruzamento da música calando a faixa que entrava, e |
This reverts commit dfab536.
NicolasArthurDev
force-pushed
the
feat/medals-music-and-sound
branch
from
September 14, 2026 00:02
c9ecd20 to
b3207aa
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fecha o que faltava entre o material pronto e o jogo: as dezessete medalhas
desenhadas, as três músicas, os nove efeitos e as quatro vozes do narrador
estavam no repositório e nenhum deles chegava ao navegador.
docs/medals.mdjá era a especificação completa, eKillEvent/applyKilljátinham sido desenhados para recebê-la — o docblock de
applyKillprevialiteralmente
applyKill(...) + awardMedals(...).medalhas
packages/core/src/medals/,com teste de mesa. As cinco que dependem de mecânica ausente (
knife,backstab,on-the-rope,collateral,360-no-scope) entram com a regraescrita e inerte: o campo que elas leem fica no valor neutro, e
killEvent.tsdiz em cada um qual mecânica o destrava.awardMedalsroda antes deapplyKill, e a ordem é a decisão queimporta: as condições leem a sequência da vítima, a contagem da partida e a
janela de multikill, e
applyKillmuda as três.match.pointsPerKill, que já era 100.docs/medals.mdfora escrito supondo 10; o documento foi corrigido, e a frase do GDD que as
medalhas revogam também.
o hud, em dois lugares
número. Uma de cada vez — três medalhas na mesma kill entram em fila, e a
fila é atraso de css, não relógio em javascript.
+350na diagonal de cima, com o nome do queo rendeu logo abaixo. É o que explica um total que não é múltiplo de kill.
uma animação por raridade
Não é o mesmo efeito com número maior — são quatro coisas diferentes:
ease-in), para seco, estoura de luz e solta uma onda de choqueA primeira versão disto foi reprovada por parecer igual nos quatro, e a lição
está no documento: o olho trava no pixel mais brilhante e mais rápido, e
esse era idêntico em todos. Escala e halo são canais terciários.
Duas mecânicas caem daí: a luz se recorta na silhueta do escudo
(
mask-imagesobre o mesmo webp), porque de 49% a 66% da caixa do ícone é artee o resto é transparência; e ela soma em vez de pintar por cima
(
mix-blend-mode: plus-lighter), o que mantém a filigrana do metal visívelenquanto ele esquenta.
áudio
abaixando enquanto o narrador fala.
Chrome_Perimeterno menu,Blackout_Velocityna partida,Protocol_Sevenno último minuto — casada com a falamatch-final-minute—,e de volta ao tema do menu no fim.
e corte por raridade: nunca duas falas sobrepostas.
a sincronia saiu de medição, não de ouvido
Envelope de energia a cada 20 ms sobre cada wav de origem:
shot-reloadé tiro e ferrolho no mesmo take — tiro em 0,1 s, cliques doferrolho de 0,9 s a 1,6 s. Como
boltCycleSé 1,3 s, o último clique caía0,3 s depois de o ferrolho já ter fechado. O tiro passou para o
shot-sniper, que é seco, e o ferrolho virou disparo à parte recortado apartir de 0,9 s e centrado na janela.
reloadtem a inserção do carregador no pico, a 1,02 s, num arquivo de1,39 s dentro de uma recarga de 2,4 s: soava com o carregador ainda saindo.
Atrasado para cair nos sete décimos do gesto.
próprio de andar soava mal e saiu da lista de pré-carga.
Os atrasos derivam de
boltCycleSereloadS: afinar qualquer um deles naconfiguração reacompanha o som sozinho (ADR 0005), e há teste travando que os
cliques cabem na janela do ferrolho e que a inserção nunca cai depois do fim da
recarga. O agendamento usa o relógio do
AudioContexte nãosetTimeout—um timer de javascript erra dezenas de milissegundos quando o quadro atrasa, e
é disso que o alinhamento depende.
configurações
Volume de música, efeitos e narrador, mais a escolha de voz. A voz é o primeiro
ajuste de escolha do jogo, e coube num campo opcional
choicesnoPlayerSettingSpec— faixa, passo e "para nas pontas" continuam valendo semnenhum caso especial.
assets
Dois scripts novos no molde dos que já existiam, e o registro de licença que a
ADR 0004 exige:
Os ícones foram 128 px primeiro, e estava errado: aquele número vinha de um
toast de 48 px, e com o toast em 236 virou upscale de 1,7×.
orçamento do pilar 2
Nada de áudio nem de ícone entra no caminho crítico: a música toca por
streaming, os efeitos são pré-carregados no primeiro gesto do jogador, só a voz
escolhida é baixada, e os ícones entram depois que o jogador ganha o controle.
Medido contra o
dev:scripts/measure-bundle.mjsnão enxergava.webmnem.opus; passa aenxergar, senão o áudio cresceria invisível para a medição de que depende o
gatilho de revisão da ADR 0001.
verificação
npm run verifyverde, 100% de cobertura mantida (1068 testes).listados em comentário neste PR.
gesto, pré-carga dos efeitos, manifesto do narrador, música tocando, as
quatro animações de medalha e o registro da retícula.
jogou.
fora de escopo, de propósito
Tela de fim de partida, placar do tab com pontos, e as mecânicas que destravam
as cinco medalhas inertes.