Guia para iniciantes de Sift Roblox: configuração do Luau e fundamentos da API - Guias

Guia para iniciantes de Sift Roblox: configuração do Luau e fundamentos da API

Aprenda a instalar o Sift para desenvolvimento no Roblox, escolher entre Luau e roblox-ts, usar padrões de dados imutáveis e evitar erros comuns do v0.x.

2026-08-20
Equipe da Wiki do Sift Roblox
Guia rápido
  • Sift Roblox é uma biblioteca de dados imutáveis para projetos em Luau e roblox-ts.
  • As opções de instalação incluem Wally, npm, a Biblioteca do Roblox, Itch.io e releases do GitHub.
  • O suporte a Luau usa tipos nativos sem verificação de tipos em tempo de execução pela biblioteca.
  • O suporte a roblox-ts está disponível por meio do pacote @rbxts/sift, que inclui definições de tipos.
  • Aviso sobre versões: o Sift continua na série v0.x, portanto, releases menores podem incluir alterações incompatíveis.

Guia para iniciantes de Sift Roblox: o que é

Sift Roblox é uma biblioteca para desenvolvedores que trabalham com dados imutáveis em Luau e roblox-ts. Ela não é uma experiência jogável do Roblox, um sistema de personagens ou uma mecânica de progressão. Em vez disso, oferece aos criadores funções utilitárias para atualizar arrays, dicionários e conjuntos sem modificar diretamente os dados originais.

O projeto é fortemente baseado na biblioteca Llama, que não é mais mantida. O Sift segue uma finalidade semelhante, mas utiliza tipos nativos do Luau, testes reorganizados, documentação gerada e definições de tipos integradas para TypeScript. Essas diferenças tornam a biblioteca útil para projetos que precisam de atualizações de estado previsíveis ou utilitários de dados compartilhados.

ÁreaAbordagem do SiftBenefício para iniciantes
Objetivo principalUtilitários de dados imutáveisAtualizações de estado mais seguras
Linguagens compatíveisLuau e roblox-tsFluxos de trabalho flexíveis no Roblox
Principais coleçõesArrays, dicionários e conjuntosAbrange estruturas de dados comuns
Sistema de tiposTipos nativos do LuauMenor dependência de pacotes de tipos em tempo de execução
EstabilidadeSérie de desenvolvimento v0.xRevisar alterações antes de atualizar

A ideia central é simples: em vez de alterar uma tabela no local, crie um resultado atualizado preservando o valor original. Esse padrão pode tornar mais fáceis de entender os dados do inventário, as configurações dos jogadores, os objetos de configuração e o estado replicado.

Arrays

Use utilitários de listas para diferenças, diferenças simétricas, congelamento, verificações de tipo e embaralhamento.

Dicionários

Trabalhe com dados de chave e valor usando entradas, congelamento, congelamento profundo e conversão de entradas.

Conjuntos

Conte valores e calcule diferenças entre coleções sem alterar o conjunto de origem.

Perspectiva para iniciantes

Comece com uma estrutura de dados pequena, como um dicionário de configurações ou uma lista de itens. Aprender atualizações imutáveis em um sistema limitado é mais fácil do que reescrever um projeto inteiro de uma vez.

Opções de instalação para projetos do Roblox

O Sift pode ser adicionado a um projeto de desenvolvimento do Roblox de várias maneiras. A melhor escolha depende de como sua equipe gerencia as dependências. O Wally é adequado para fluxos de trabalho de pacotes via linha de comando, projetos roblox-ts podem usar npm, e a instalação manual funciona quando você prefere colocar o modelo diretamente no Studio.

A documentação de referência identifica o Sift como disponível por meio do Wally, Itch.io, Biblioteca do Roblox e releases do GitHub. Ela também observa que o projeto é gratuito e de código aberto, enquanto uma página no Itch.io pode ser usada para patrocínio opcional.

Método de instalaçãoMais adequado paraAção principalConsideração principal
WallyProjetos Luau com gerenciamento de dependênciasAdicionar o Sift ao wally.toml e executar wally installRequer um fluxo de trabalho com Wally
npmProjetos roblox-tsInstalar @rbxts/siftUsa ferramentas de TypeScript
Biblioteca do RobloxFluxos de trabalho manuais no StudioInserir a biblioteca no StudioAs atualizações são feitas manualmente
Releases do GitHubFluxos manuais ou automatizadosBaixar uma cópia de uma releaseVerificar cuidadosamente a release selecionada
Sincronização com RojoProjetos com controle de versãoSincronizar o modelo do Sift pelo RojoRequer uma configuração existente do Rojo

Configuração do Wally

Em um projeto Wally, adicione a dependência à seção [dependencies] do arquivo wally.toml. O formato documentado usa um marcador de versão v0.x:

[dependencies]
Sift = "csqrl/sift@0.0.X"

Substitua 0.0.X pela versão que pretende usar e execute:

wally install

Mantenha a versão selecionada visível na configuração do projeto. Isso facilita reproduzir o mesmo conjunto de dependências em diferentes máquinas e reduz a confusão quando uma nova release menor altera o comportamento.

Configuração do roblox-ts

A documentação informa que o Sift inclui definições de tipos para TypeScript e pode ser instalado para roblox-ts com:

npm install @rbxts/sift

Uma importação básica e uma operação com dicionário podem ser semelhantes a esta:

import Sift from "@rbxts/sift"

const updated = Sift.Dictionary.merge(
  { a: 1, c: 2 },
  { b: 3, c: Sift.None }
)

O resultado documentado é um dicionário contendo a: 1 e b: 3. O valor Sift.None remove a entrada existente c durante a combinação.

Instalação manual

A instalação manual consiste em obter uma cópia da Biblioteca do Roblox ou de uma release do GitHub e colocá-la no Studio. O modelo do Sift também pode ser sincronizado com o Rojo. Esse método é acessível para pequenos experimentos, mas as equipes devem registrar a versão da release e a data de instalação para manter as atualizações futuras sob controle.

Verificação de versão

O Sift ainda está na série v0.x. A documentação alerta que podem ocorrer alterações incompatíveis quando a versão menor aumenta; portanto, teste as atualizações das dependências antes de usá-las em produção.

Primeira atualização de dados passo a passo

A maneira mais rápida de entender o Sift é praticar uma atualização imutável por vez. Comece com um dicionário pequeno, examine o valor retornado e confirme que a tabela original continua sendo o valor de referência para a lógica da aplicação.

1

Escolha uma estrutura de dados pequena

Comece com configurações, um objeto de configuração simples ou uma lista curta de itens. Evite introduzir o Sift em vários sistemas não relacionados durante o primeiro teste.

2

Selecione a API de coleção correspondente

Use funções de dicionário para registros de chave e valor, funções de array para listas ordenadas e funções de conjunto para coleções de valores únicos. Manter a API alinhada à estrutura de dados melhora a legibilidade.

3

Crie o resultado atualizado

Chame o utilitário relevante do Sift e armazene o valor retornado em uma nova variável. Trate o resultado como o próximo estado, em vez de editar diretamente a tabela original.

4

Verifique o resultado

Confira os dados retornados e teste casos extremos, incluindo chaves ausentes, coleções vazias, valores aninhados e entradas repetidas quando for relevante.

Uma combinação de dicionários é um exemplo inicial útil:

local Sift = require(path.to.Sift)

local original = {
    Coins = 100,
    Title = "Rookie",
}

local updated = Sift.Dictionary.merge(original, {
    Coins = 125,
    Title = Sift.None,
})

Nesse padrão, o dicionário retornado pode representar o próximo estado. O valor de Coins é substituído, enquanto Title é removido por meio de Sift.None. O caminho exato da importação depende do método de instalação e da estrutura do projeto; portanto, use o caminho gerado pelo seu fluxo de trabalho de dependências.

OperaçãoColeçãoUso prático
differenceArray ou conjuntoEncontrar valores presentes em uma coleção, mas não nas outras
differenceSymmetricArray ou conjuntoEncontrar valores exclusivos de um dos lados
freezeArray ou dicionárioImpedir alterações diretas em uma coleção
freezeDeepArray ou dicionárioCongelar arrays ou dicionários aninhados
mergeDicionárioCombinar atualizações e remover chaves com Sift.None
shuffleArrayRetornar elementos em uma ordem aleatória
Ponto de verificação do aprendizado

Se você consegue explicar qual valor representa o estado original, qual valor representa o estado retornado e por que Sift.None remove uma chave do dicionário, então entende o fluxo de trabalho principal.

Comparação dos fluxos de trabalho de Luau e roblox-ts

O Sift é compatível tanto com Luau quanto com roblox-ts, mas a experiência de desenvolvimento ao redor é diferente. Usuários de Luau normalmente trabalham diretamente no Roblox Studio ou em um projeto gerenciado pelo Wally. Usuários de roblox-ts escrevem TypeScript e o compilam em código compatível com o Roblox por meio da ferramenta que já utilizam.

A documentação da biblioteca destaca que o Sift usa tipos nativos do Luau e não executa a verificação de tipos em tempo de execução anteriormente associada à abordagem com a dependência antiga. Isso significa que a correção dos tipos continua sendo uma responsabilidade importante do desenvolvedor.

Fluxo de trabalhoLinguagemComando do pacoteObservação sobre tipos
Luau diretoLuauWally ou instalação manualUsa tipos nativos do Luau
roblox-tsTypeScriptnpm install @rbxts/siftInclui definições de tipos para TypeScript
Studio manualLuauBiblioteca do Roblox ou cópia de uma releaseA estrutura da importação depende da localização
Projeto RojoLuau ou código gerenciado pelo projetoSincronizar o modelo pelo RojoAdequado para fluxos com controle de versão

Escolhendo o melhor ponto de partida

Escolha Luau direto se estiver aprendendo a programar no Roblox ou quiser o caminho mais curto entre o Studio e um exemplo funcional. Escolha roblox-ts se seu projeto já usa TypeScript e npm. Evite mudar de linguagem apenas para usar o Sift; a biblioteca foi projetada para se adaptar a qualquer um dos dois fluxos de trabalho.

Para desenvolvedores Luau, preste atenção à diferença entre orientação estática e comportamento em tempo de execução. Os tipos nativos podem ajudar a descrever os valores esperados, mas dados incorretos ainda podem causar erros em tempo de execução quando as funções recebem entradas inesperadas.

Para desenvolvedores roblox-ts, as definições de tipos podem melhorar o feedback do editor e facilitar a descoberta das APIs. No entanto, o código compilado ainda precisa de testes no nível do projeto, especialmente quando os dados vêm de entradas dos jogadores, dados salvos, rede ou sistemas externos.

Luau primeiro

Melhor para quem está aprendendo no Studio, para pequenos experimentos e para projetos já organizados em torno da programação nativa do Roblox.

roblox-ts primeiro

Melhor para equipes que usam TypeScript, npm e um fluxo de desenvolvimento baseado em compilação.

Mentalidade de migração

Útil ao substituir utilitários antigos baseados no Llama, mas revise as diferenças da API e teste cada atualização de estado.

Lembrete sobre segurança de tipos

O Sift não substitui a validação nas fronteiras do sistema. Verifique os dados carregados de salvamentos, recebidos dos clientes ou montados a partir de entradas externas antes de passá-los aos utilitários de coleção.

Erros comuns e checklist de manutenção

Um fluxo de trabalho do Sift adequado para iniciantes depende menos de memorizar todas as funções e mais de manter clara a propriedade dos dados. Decida qual sistema é responsável por um valor, crie um novo resultado para as atualizações e evite misturar padrões mutáveis e imutáveis sem uma razão clara.

Erros comuns

  • Editar a tabela original depois de criar um resultado com o Sift: Isso pode dificultar o acompanhamento do histórico do estado.
  • Usar uma função de array para dados de dicionário: Selecione a API com base no tipo de coleção, não apenas no resultado desejado.
  • Supor que congelar corrige dados inválidos: As funções de congelamento restringem alterações; elas não validam o conteúdo de uma coleção.
  • Ignorar estruturas aninhadas: Um congelamento superficial e um congelamento profundo têm efeitos diferentes.
  • Atualizar dependências v0.x sem testar: Aumentos na versão menor podem incluir alterações incompatíveis.
  • Não documentar o projeto: Registre como o Sift está instalado e qual versão o projeto espera.
RiscoPor que isso importaResposta recomendada
Os dados originais são modificadosSistemas posteriores podem receber valores inesperadosTrate os resultados retornados como o próximo estado
API de coleção incorretaA operação pode não corresponder ao formato dos dadosIdentifique primeiro se é um array, dicionário ou conjunto
Congelamento superficial mal compreendidoColeções aninhadas podem continuar modificáveisUse congelamento profundo quando for necessária proteção aninhada
Dados inválidos chegam ao SiftPodem surgir erros em tempo de execuçãoValide os dados antes de chamar os utilitários
Alteração de versão não rastreadaUma atualização v0.x pode alterar o comportamentoFixe e teste a release pretendida

Checklist do projeto para iniciantes:

  • Escolha Luau ou roblox-ts antes de instalar o pacote
  • Registre a versão do Sift usada pelo projeto
  • Teste uma operação de array, dicionário ou conjunto
  • Compare a coleção original com o resultado retornado
  • Consulte a documentação oficial do Sift antes de atualizar

Como referência, use a página oficial da documentação do Sift para consultar notas de instalação, orientações sobre a estabilidade do v0.x e os utilitários de coleção disponíveis. Mantenha esse link nas anotações do projeto junto à configuração da dependência.

Hábito de manutenção

Ao atualizar o Sift, teste combinações, congelamentos, diferenças e qualquer utilitário usado por dados salvos ou replicados. Testes pequenos e direcionados podem revelar alterações incompatíveis antecipadamente.

Perguntas frequentes do guia para iniciantes de Sift Roblox

Q: Sift Roblox é um jogo jogável do Roblox?

Não. O Sift é uma biblioteca de dados imutáveis para desenvolvimento no Roblox. Ele oferece utilitários para projetos em Luau e roblox-ts, não recursos de gameplay, avatares, códigos ou progressão dentro do jogo.

Q: Como posso instalar o Sift com o Wally?

Adicione o Sift à seção de dependências do wally.toml usando o formato do pacote csqrl/sift, substitua o marcador de versão pela release desejada e execute wally install.

Q: O Sift oferece suporte a roblox-ts?

Sim. A documentação informa que o Sift inclui definições de tipos para TypeScript. O pacote pode ser instalado com npm install @rbxts/sift.

Q: O que Sift.None faz?

No exemplo documentado de combinação de dicionários, Sift.None remove uma chave existente do dicionário resultante. Ele é útil quando uma atualização precisa excluir um valor em vez de substituí-lo.

O Sift é uma opção prática para desenvolvedores que desejam atualizações imutáveis estruturadas em projetos do Roblox. Comece com um tipo de coleção, use o método de instalação que corresponde ao seu fluxo de trabalho e trate as atualizações v0.x como alterações que exigem testes.

Conclusão

O caminho mais confiável para iniciantes é simples: instale o Sift, pratique uma atualização imutável, verifique o resultado e só amplie o uso quando o fluxo de dados estiver claro.