Módulo Sift para Roblox: guía de configuración para Luau y roblox-ts - Plataforma

Módulo Sift para Roblox: guía de configuración para Luau y roblox-ts

Aprende a instalar y usar el módulo Sift para Roblox en flujos de trabajo de datos inmutables con Luau y roblox-ts, con pasos de configuración, patrones y consejos de mantenimiento.

2026-08-20
Equipo de Wiki de Sift Roblox
Guía rápida
  • El módulo Sift para Roblox proporciona utilidades de datos inmutables para proyectos de Luau y roblox-ts.
  • La configuración recomendada utiliza Wally, npm, Roblox Creator Store o una copia sincronizada desde GitHub.
  • El beneficio principal son las actualizaciones de estado predecibles sin mutar la tabla original.
  • La compatibilidad con TypeScript está integrada, con una API diseñada para coincidir con la versión de Luau.
  • Nota de mantenimiento: el repositorio ya no recibe mantenimiento activo, así que revisa cuidadosamente los forks.

¿Qué es el módulo Sift para Roblox?

El módulo Sift para Roblox es una biblioteca de datos inmutables diseñada para el desarrollo con Luau y roblox-ts. Está pensada para proyectos de Roblox que necesitan transformaciones más seguras de tablas y diccionarios, especialmente al gestionar estados, objetos de configuración, datos de jugadores o colecciones que no deberían modificarse directamente.

Sift está basado en gran medida en la biblioteca Llama, pero utiliza tipos nativos de Luau en lugar de depender de la comprobación de tipos en tiempo de ejecución. Este diseño hace que Sift sea útil en bases de código donde la información de tipos se gestiona durante el desarrollo y se verifica mediante el lenguaje o la cadena de herramientas, en lugar de hacerlo mediante una capa independiente en tiempo de ejecución.

La biblioteca no es un juego, experiencia, personaje ni sistema de progresión de Roblox. Es una utilidad para desarrolladores que pasa a formar parte del árbol de código fuente de un proyecto o de sus dependencias de paquetes.

ÁreaFunción de SiftUso práctico
LenguajeLuau y roblox-tsCompartir conceptos de transformación de datos entre ambos flujos de trabajo
Diseño principalGestión de datos inmutablesCrear valores actualizados sin modificar la tabla original
Integración con RobloxWally, Creator Store, versiones de GitHub, RojoAñadir la biblioteca a Studio o a un proyecto sincronizado
Compatibilidad de tiposTipos nativos de Luau y compatibilidad integrada con TypeScriptMejorar la retroalimentación del editor y del compilador
Estado del proyectoYa no recibe mantenimiento activoEvaluar los forks antes de adoptarlos a largo plazo

Actualizaciones inmutables

Crea una tabla nueva a partir de los datos existentes en lugar de modificar directamente el valor original. Esto puede facilitar el seguimiento de las transiciones de estado.

Luau como prioridad

Sift utiliza tipos nativos de Luau y evita requerir una biblioteca independiente de comprobación de tipos en tiempo de ejecución para sus propias operaciones.

Listo para TypeScript

La API de roblox-ts está diseñada para coincidir con su equivalente de Luau, lo que ayuda a los equipos a utilizar patrones similares en ambos lenguajes.

Consejo del editor

Considera Sift como una capa de utilidades de datos. No sustituye tu arquitectura de estados, modelo de red, reglas de validación ni estructura de carpetas del proyecto.

Un modelo mental útil es considerar que cada operación produce un valor de reemplazo. Tu código puede conservar la tabla anterior para realizar comparaciones, implementar lógica de deshacer, depurar o comprobar referencias, mientras asigna la tabla devuelta al siguiente estado.

Este enfoque es especialmente valioso en proyectos grandes de Roblox. La mutación directa puede dificultar la identificación del sistema que modificó una tabla compartida. Las operaciones inmutables establecen límites más claros: los datos de entrada entran en una función, sale un resultado transformado y el valor original sigue disponible para su inspección.

Opciones de instalación del módulo Sift para Roblox

Sift puede añadirse a un proyecto de Roblox mediante varios métodos de distribución. La mejor opción depende de si tu equipo utiliza Wally, roblox-ts, Rojo o un flujo de trabajo manual en Studio.

Método de instalaciónMás adecuado paraAcción principalNotas
WallyProyectos de Luau con gestión de paquetesAñadir Sift = "csqrl/sift@x.x.x" a wally.toml y ejecutar wally installMantiene las dependencias definidas en la configuración del proyecto
npmProyectos de roblox-tsEjecutar npm install @rbxts/siftProporciona la interfaz del paquete de TypeScript
Creator StoreFlujos de trabajo centrados en StudioCopiar la biblioteca al proyecto desde Roblox Creator StoreEs útil cuando las herramientas de paquetes no forman parte del flujo de trabajo
Versiones de GitHubInstalación manual o controlada desde el código fuenteDescargar una versión y colocarla en el proyectoRevisar el estado del repositorio antes de seleccionar una versión a largo plazo
Sincronización con RojoDesarrollo basado en archivosSincronizar el modelo o código fuente de Sift con Studio mediante RojoFunciona bien con repositorios gestionados fuera de Studio
1

Elige el flujo de trabajo del proyecto

Decide si el proyecto utiliza principalmente Luau, roblox-ts, Studio, o una sincronización mediante Rojo. Usa Wally para un proyecto de Luau gestionado mediante paquetes y npm para roblox-ts.

2

Añade la dependencia

Para Wally, coloca la dependencia de Sift en wally.toml. Para roblox-ts, instala @rbxts/sift desde la terminal del proyecto. Los usuarios que trabajen manualmente pueden obtener la biblioteca mediante Creator Store o las versiones de GitHub.

3

Instala o sincroniza los archivos

Ejecuta el comando del gestor de paquetes cuando corresponda. Si utilizas un archivo de modelo, colócalo en Studio o configura Rojo para sincronizar la biblioteca en la ubicación esperada.

4

Verifica la importación

Abre un pequeño módulo de prueba e importa una utilidad de Sift. Confirma que el editor, el compilador o el entorno de Studio reconoce la dependencia antes de integrarla en sistemas de producción.

5

Documenta la versión elegida

Registra la versión del paquete y el método de instalación seleccionados en la documentación del proyecto. Esto facilita la revisión de futuras actualizaciones o migraciones a forks.

Para los usuarios de Wally, la declaración de la dependencia debe permanecer en la configuración del proyecto controlada por el sistema de control de versiones. Evita instalar un paquete manualmente y olvidar añadirlo al manifiesto del proyecto, ya que otro desarrollador podría no recibir la misma dependencia durante la configuración.

Para los usuarios de roblox-ts, el nombre del paquete es @rbxts/sift. La API de TypeScript está pensada para reflejar la API de Luau, lo que facilita traducir ejemplos entre ambos entornos.

Advertencia de mantenimiento

El repositorio de Sift indica que ya no recibe mantenimiento activo. Antes de incorporar una nueva dependencia a un proyecto, revisa el repositorio, el historial de versiones y cualquier fork propuesto para comprobar su compatibilidad y las expectativas de soporte.

La fuente de instalación no cambia el propósito principal de la biblioteca. Wally, npm, Creator Store, GitHub y Rojo son métodos de distribución; no son versiones independientes del modelo de datos de Sift.

Patrones de datos inmutables y operaciones con diccionarios

Sift resulta más útil cuando un proyecto necesita transformaciones coherentes sobre diccionarios u otros datos estructurados. El principio central es sencillo: conservar la entrada, crear un resultado y utilizarlo como el siguiente estado.

Una operación básica de combinación puede unir varios diccionarios mientras excluye una clave mediante Sift.None:

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

El diccionario resultante es { a: 1, b: 3 }. El ejemplo demuestra dos ideas importantes: los valores de un diccionario posterior pueden participar en el resultado y Sift.None puede eliminar una clave existente durante la combinación.

PatrónIdea de entradaResultadoPor qué ayuda
Conservar el originalEl estado existente permanece sin cambiosEl nuevo estado se asigna por separadoFacilita la depuración y la comparación
Combinar diccionariosUnir varias fuentes de pares clave-valorUn diccionario compuestoÚtil para valores predeterminados y sobrescrituras
Eliminar con Sift.NoneMarcar una clave para excluirlaLa clave no aparece en el resultadoEs más limpio que eliminar directamente en un estado compartido
Transformación tipadaAplicar estructuras conocidas de Luau o TypeScriptResultado compatible con el editorAyuda a detectar datos incompatibles durante el desarrollo
Separar responsabilidadesMantener la transformación en una función de utilidadLos llamadores reciben un valor nuevoReduce los cambios ocultos entre sistemas

Al utilizar utilidades inmutables, asigna nombres claros a los valores intermedios. Un nombre como nextConfig, updatedState o mergedProfile comunica que la variable representa un reemplazo y no una referencia modificada.

Un flujo práctico de actualización de estado tiene este aspecto:

  1. Lee la tabla actual.
  2. Pásala a una transformación.
  3. Guarda la tabla devuelta.
  4. Compara o publica el nuevo valor.
  5. Conserva el valor anterior cuando sea importante poder revertirlo o inspeccionarlo.

Este patrón funciona bien para las capas de configuración. Comienza con los valores predeterminados, combina los ajustes específicos del entorno y después aplica las sobrescrituras del jugador o de la sesión. Si es necesario eliminar un valor, utiliza el marcador de eliminación compatible con la biblioteca en lugar de depender de una mutación no controlada en otra parte de la base de código.

Estado

Mantén la tabla actual como entrada y evita tratarla como un área temporal de trabajo global.

Transformar

Coloca la lógica de combinación o de diccionarios dentro de una función enfocada, con una entrada y una salida claras.

Validar

Utiliza las herramientas de Luau o TypeScript para obtener información sobre los tipos y añade una biblioteca de validación independiente cuando se necesiten comprobaciones en tiempo de ejecución.

Publicar

Asigna o devuelve la tabla nueva solo después de que la transformación se haya completado y sea comprensible.

Patrón recomendado

Utiliza Sift en los límites donde cambian los datos: reductores de estado, composición de configuraciones, actualizaciones de perfiles y otras funciones que se beneficien de valores de reemplazo explícitos.

Sift no realiza comprobaciones de tipos en tiempo de ejecución por sí mismo. Si un juego necesita validar durante la ejecución los datos recibidos de clientes, almacenamiento persistente o sistemas externos, añade por separado una biblioteca de validación adecuada. La inmutabilidad y la validación resuelven problemas diferentes.

La documentación del proyecto identifica GreenTea y t como ejemplos de bibliotecas que se pueden instalar manualmente para necesidades de comprobación de tipos. Selecciona una herramienta de validación según los requisitos reales del proyecto en tiempo de ejecución, en lugar de asumir que Sift cubre la validación de entradas.

Luau, roblox-ts y mantenimiento del proyecto

Sift admite dos vías de desarrollo estrechamente relacionadas. Los equipos de Luau pueden utilizar tipos nativos de Luau y flujos de trabajo de paquetes diseñados para el desarrollo en Roblox. Los equipos de roblox-ts pueden utilizar el paquete npm y una API compatible con TypeScript.

Tipo de proyectoRuta del paqueteEstrategia de tiposRevisión sugerida
Luau con Wallycsqrl/sift mediante WallyTipos nativos de LuauConfirmar la resolución del paquete y la estructura del código fuente generado
Luau con RojoModelo o archivos de código fuente sincronizadosTipos nativos de LuauComprobar que las rutas de Studio coincidan con la estructura del repositorio
roblox-ts@rbxts/sift mediante npmTipos integrados de TypeScriptConfirmar la salida del compilador y las rutas de importación
Studio manualCopia de Creator Store o GitHubEstrategia de tipos definida por el proyectoDocumentar la versión copiada y el proceso de actualización

La API debería mantener una coherencia conceptual entre Luau y TypeScript. Esta coherencia resulta útil para equipos cuyos sistemas están divididos entre código de servidor, código de cliente, herramientas o scripts generados.

Sin embargo, una API idéntica no significa que la cadena de herramientas que la rodea también lo sea. Las importaciones, los comandos de compilación, la salida generada, los archivos de bloqueo de paquetes y los ajustes de sincronización siguen perteneciendo al flujo de trabajo específico de cada lenguaje.

Antes de adoptar Sift en una nueva base de código de producción, revisa estas preguntas de mantenimiento:

  • ¿El proyecto necesita correcciones activas por parte del equipo original?
  • ¿La versión seleccionada es compatible con la cadena de herramientas actual de Luau o roblox-ts?
  • ¿El equipo está dispuesto a asumir la responsabilidad de corregir errores si se necesita un fork?
  • ¿Las versiones de los paquetes están fijadas en el control de versiones?
  • ¿El proyecto está preparado para reemplazar Sift si aparece un caso límite no compatible?

El repositorio se distribuye bajo la licencia MIT y su página pública incluye información sobre versiones, colaboradores y paquetes. Utiliza el repositorio de Sift en GitHub como referencia principal para consultar detalles del paquete, revisar el código fuente y conocer su estado actual de mantenimiento.

Consejos para la migración

Si dependes de un fork, registra la URL de su repositorio, el identificador del commit o de la versión y cualquier cambio en la API. Una breve nota de migración puede evitar incertidumbres cuando el paquete original deje de actualizarse.

Revisión del proyecto Sift:

  • Elegir Wally, npm, Creator Store, GitHub o Rojo para la instalación
  • Fijar y documentar la versión de la dependencia
  • Verificar una importación de Luau o roblox-ts en una prueba pequeña
  • Confirmar si se necesita una validación en tiempo de ejecución por separado
  • Revisar las expectativas de mantenimiento antes de adoptarlo en producción

Flujo de trabajo práctico para una nueva integración de Sift

Una prueba pequeña y aislada es el punto de partida más seguro. No empieces reemplazando todas las operaciones con tablas de un proyecto grande. Primero selecciona un objeto de configuración, un reductor de estado o una transformación de perfil, y compara el comportamiento anterior con el nuevo.

FaseAcciónIndicador de éxito
DescubrimientoIdentificar una transformación de diccionario repetidaLa entrada y la salida esperada están claramente definidas
InstalaciónAñadir Sift mediante la ruta normal de dependencias del proyectoEl paquete se resuelve sin correcciones manuales
PrototipoRecrear la transformación con operaciones inmutablesLa entrada original sigue disponible para compararla
PruebasComprobar adiciones, sobrescrituras y eliminacionesLos resultados coinciden con el contrato de datos previsto
AdopciónTrasladar las transformaciones relacionadas a utilidades compartidasLos equipos utilizan un patrón coherente

Comienza con datos predecibles. Los diccionarios de configuración suelen ser más fáciles de probar que las cargas de red o los perfiles persistentes, porque su estructura se conoce antes del tiempo de ejecución.

Después, prueba las colisiones de claves. Si dos diccionarios contienen la misma clave, define qué fuente debe prevalecer y verifica que el resultado siga esa regla. A continuación, prueba el comportamiento de eliminación utilizando el marcador compatible Sift.None cuando corresponda.

Por último, prueba el sistema que rodea la transformación. Un resultado inmutable aún puede asignarse incorrectamente, enviarse al consumidor equivocado o almacenarse bajo la clave incorrecta. Sift hace que las transformaciones sean más claras, pero el proyecto todavía debe definir la propiedad de los datos y su flujo.

Consejo sobre el flujo de trabajo

Mantén limitada la primera integración de Sift. Una utilidad enfocada y con pruebas claras es más fácil de revisar que una reescritura amplia de lógica de tablas no relacionada.

Entre los errores comunes se encuentran tratar Sift como un framework de validación, instalar los paquetes de Luau y TypeScript sin un motivo claro, o copiar una dependencia en Studio sin documentar su procedencia. Estas decisiones pueden generar confusión incluso cuando las operaciones subyacentes funcionan correctamente.

Para los equipos que migran desde Llama, compara cuidadosamente cada operación existente. Sift está basado en gran medida en Llama, pero tiene sus propias decisiones respecto a tipos y documentación. Confirma las importaciones, los tipos de retorno, las pruebas y el comportamiento en casos límite en lugar de asumir que todas las convenciones del proyecto anterior se transfieren automáticamente.

Preguntas frecuentes sobre el módulo Sift para Roblox

Q: ¿Para qué se utiliza el módulo Sift para Roblox?

Sift es una biblioteca de datos inmutables para Luau y roblox-ts. Ayuda a los desarrolladores a crear diccionarios y valores estructurados actualizados sin modificar directamente la tabla original.

Q: ¿Cómo puedo instalar Sift en un proyecto de Roblox?

Puedes utilizar Wally, npm para roblox-ts, Roblox Creator Store, las versiones de GitHub o una copia sincronizada mediante Rojo. Elige el método que coincida con el flujo de trabajo de tu proyecto y documenta la versión seleccionada.

Q: ¿Sift proporciona comprobación de tipos en tiempo de ejecución?

No. Sift utiliza tipos nativos de Luau y no incluye comprobación de tipos en tiempo de ejecución. Si tu proyecto debe validar datos durante la ejecución, instala y configura una biblioteca de validación independiente.

Q: ¿Sift sigue recibiendo mantenimiento activo en 2026?

El repositorio indica que Sift ya no recibe mantenimiento activo y sugiere considerar un fork para realizar contribuciones. Revisa el repositorio oficial y cualquier fork antes de utilizarlo en un nuevo proyecto de producción.

Comprobación final

Antes de publicar un proyecto que dependa de Sift, verifica la compatibilidad del paquete, prueba las actualizaciones inmutables y decide cómo gestionará tu equipo el mantenimiento futuro.

El mejor uso de Sift es deliberado y específico: instálalo mediante un flujo de trabajo documentado, utiliza transformaciones inmutables allí donde aclaren los cambios de estado y mantén separadas la validación y la responsabilidad a largo plazo sobre las dependencias. Este enfoque permite que los equipos de Luau y roblox-ts se beneficien de utilidades coherentes para diccionarios, al tiempo que mantienen un plan realista de soporte del proyecto.