Forra PixForra Pix
    Depositar
    InícioMissõesDepósitoEntrar

    Provably fair

    Provably Fair

    Visão Geral
    Implementação
    Conversões
    Eventos do Jogo
    Descriptografar Seed do Servidor
    Cálculo

    Floats para Bytes

    O hash hexadecimal de 32 bytes serve como a base para a função de geração de números aleatórios (byteGenerator). Utilizando as diretrizes de implementação detalhadas na seção de cursor, nós aproveitamos conjuntos de 4 bytes desse hash para produzir resultados individuais do jogo. Esses segmentos de 4 bytes sofrem transformação em floats que abrangem o intervalo de 0 a 1. Usar 4 bytes em vez de um garante uma precisão aprimorada durante a geração de floats. Posteriormente, esses floats constituem a saída principal de nosso algoritmo comprovadamente justo, eventualmente se manifestando em eventos de jogo tangíveis.
    // Convert the hash output from the rng byteGenerator to floats
    function generateFloats ({ serverSeed, clientSeed, nonce, cursor, count }) {
    
        // Random number generator function
        const rng = byteGenerator({ serverSeed, clientSeed, nonce, cursor });
    
        // Declare bytes as empty array
        const bytes = [];
    
        // Populate bytes array with sets of 4 from RNG output
        while (bytes.length < count * 4) {
            bytes.push(rng.next().value);
        }
    
        // Return bytes as floats using lodash reduce function
        return _.chunk(bytes, 4).map(bytesChunk =>
        bytesChunk.reduce((result, value, i) => {
            const divider = 256 ** (i + 1);
            const partialResult = value / divider;
            return result + partialResult;
            }, 0)
        );
    };

    De Floats para Ações no Jogo

    Embora o processo de geração de saídas aleatórias permaneça consistente em todas as nossas experiências de jogos, uma abordagem distinta emerge ao converter esses floats em ações no jogo.O primeiro passo nesta conversão envolve a multiplicação do float gerado aleatoriamente pelo número total de resultados potenciais específicos do jogo em questão. Por exemplo, em um jogo que utiliza um baralho de 52 cartas, esse cálculo simplesmente envolve a multiplicação do float por 52. O valor resultante é então mapeado para uma ação no jogo correspondente. Para jogos que exigem múltiplas ações, esse procedimento persiste, iterando através de cada conjunto consecutivo de 4 bytes dentro da cadeia de resultados gerada, conforme produzido pela função byteGenerator mencionada anteriormente.

    Rearranjo de Sequências de Jogos

    O processo de reembaralhar resultados de jogos em títulos como Keno, Mines e Video Poker envolve a aplicação do algoritmo de embaralhamento de Fisher-Yates. Este algoritmo impacta significativamente a tradução de floats em eventos de jogo, pois reduz progressivamente o pool de opções de eventos de jogo com cada etapa de tradução.Considere o video poker como ilustração: inicialmente, há 52 cartas no baralho. Consequentemente, o primeiro evento do jogo é determinado pela multiplicação do float por 52. Posteriormente, com cada carta distribuída, o pool de cartas disponíveis diminui em uma, influenciando as traduções subsequentes. Esse processo iterativo continua até que todos os eventos de jogo necessários sejam gerados.No contexto de Mines e Keno, o procedimento espelha o do video poker, embora com ajustes para acomodar tiles ou locais de grade em vez de cartas. O objetivo permanece consistente: garantir que cada evento de jogo gerado seja único dentro da sequência de resultados, evitando duplicação.