Performance em uma aplicação de RPG
Interprete os benchmarks, reutilize planos, escolha a projeção de resultado e meça o fluxo completo do seu jogo.
Throughput é uma parte da experiência
No benchmark reproduzível, o Dice Core processou dezenas de milhares de expressões simples por segundo no Node.js. Os três pacotes comparados foram mais rápidos nessas operações. A medição é útil para dimensionar um servidor, mas uma rolagem real envolve validação, regras, persistência, transporte e, às vezes, animação 3D. Meça o caminho que seu jogo executa.
Uma chamada completa de rollRpgDice retorna o total e também dados individuais, grupos, eventos e metadados de replay. Esses campos ajudam a explicar a rolagem na interface e reproduzi-la depois. Compare bibliotecas também pelo contrato de dados que sua aplicação usa.
Reutilize um plano para fórmulas recorrentes
Se a mesma fórmula é rolada muitas vezes, você pode compilá-la uma vez e passar o plano para as rolagens seguintes:
import { compileRpgDice, rollRpgDice } from '@erpg/dicecore/core'
const ataque = compileRpgDice('2d20kh1+5')
function rolarAtaque() {
return rollRpgDice(ataque)
}
O experimento separado do harness mede esse modo com 4d6kh3. Ele representa um fluxo diferente da tabela comparativa, que usa uma expressão repetida com o cache padrão do Dice Core. Se as expressões mudam a cada requisição, meça também o custo de compilá-las.
Solicite a projeção necessária
O Core oferece resultados com níveis diferentes de detalhe. Escolha de acordo com a tela:
| API | Quando usar |
|---|---|
rollRpgDice |
Quando precisa do resultado completo, incluindo grupos e eventos |
rollRpgDiceDetails |
Quando precisa dos dados, sem grupos, eventos ou texto de saída |
rollRpgDiceSummary |
Quando precisa do resumo, sem dados e eventos |
import { rollRpgDiceSummary } from '@erpg/dicecore/core'
const resumo = rollRpgDiceSummary('2d6+3')
console.log(resumo.total)
Essas APIs têm contratos distintos. Escolher a projeção certa reduz a quantidade de dados consumida pela aplicação; não assumimos ganho de throughput sem medir seu caso.
Valide antes de executar entradas livres
Para caixas de notação abertas ao público, inspectRpgDiceNotation informa validade e custo estimado sem rolar. Defina limites de custo adequados ao seu produto:
import { inspectRpgDiceNotation } from '@erpg/dicecore/core'
const inspection = inspectRpgDiceNotation('4d6kh3')
if (!inspection.isValid) {
console.error(inspection.error.code)
} else {
console.log(inspection.cost.totalStaticDice)
}
Inspecionar e depois rolar custa mais que uma rolagem isolada; use esse passo quando validação prévia for necessária para a interface ou para uma política de limites.
Seed, replay e fonte aleatória
Sem seed, Dice Core obtém entropia com crypto.getRandomValues. Uma seed fornecida permite resultados reproduzíveis; um descritor de replay reproduz uma rolagem e valida a fórmula. Esses modos têm custos diferentes. O benchmark publica a API padrão na comparação e mede uma seed fixa em experimento separado, sem misturar os números.
const result = rollRpgDice('2d20kh1', { seed: 'sessao-42' })
const again = rollRpgDice(result.input, { replay: result.replay })
Para uma aplicação, o teste final deve incluir o dispositivo ou servidor alvo, as notações mais frequentes, a serialização do resultado e o custo visual do Dice View. Veja como o benchmark foi construído antes de interpretar seus números.