Para muchos desarrolladores, el desafío fundamental de adaptarse a la programación de Roblox es la importancia de la ubicación del archivo y la propiedad Script.RunContext.Dependiendo del introducirscript, la ubicación en el Explorador y el contexto de ejecución, los scripts pueden comportarse de manera muy diferente.Ciertas llamadas de métodos pueden fallar, los objetos en tu experiencia pueden ser inaccesibles o los scripts pueden no ejecutarse en todos/todas.
La razón de esta complejidad es que las experiencias de Roblox son multijugador por defecto.Los scripts necesitan la capacidad de ejecutarse solo en el servidor, solo en el cliente o compartirse en ambos.La evolución de la plataforma Roblox con el tiempo ha complicado aún más la situación.
Tipos de scripts
Roblox tiene tres tipos de scripts:
- Script - Código que se ejecuta en el servidor o en el cliente, dependiendo de su ubicación y Script.RunContext propiedad.
- LocalScript - Código que solo se ejecuta en el cliente. No tiene un contexto de ejecución.
- ModuleScript - Código que puedes reutilizar en otros scripts. No tiene un contexto de ejecución.
Cuando creas un Script, su contexto de ejecución predeterminado es Legacy , lo que significa que a) es un script del lado del servidor y b) solo se ejecuta si está en un contenedor de servidor, como Workspace o ServerScriptService .
- Si cambias el contexto de ejecución del script a Server, ahora también se puede ejecutar en ReplicatedStorage, pero no se recomienda.El contenido de esa ubicación se replica a los clientes, por lo que es una ubicación pobre para los scripts del lado del servidor.
- Si cambias el contexto de ejecución del script a Client, se puede ejecutar en ReplicatedStorage.También se puede ejecutar en StarterCharacterScripts y StarterPlayerScripts.Sin embargo, los contenedores de inicio se copian a los clientes, por lo que el guión original y la copia se ejecuta, lo que no es deseable.
Para cambiar un contexto de ejecución de script, selecciónelo en la ventana Explorador y cambie el valor en la ventana Propiedades.

Recomendaciones
El uso de Server y Client valores para RunContext elimina la ambigüedad de cómo se ejecutan los scripts y puede ayudar a mantener organizado tu proyecto.Los mejores casos de uso para valores no predeterminados RunContext son:
- Scripts de cliente que desea ejecutar desde ReplicatedStorage o ReplicatedFirst .
Para compartir código entre scripts del servidor y del cliente, utilice ModuleScripts en ReplicatedStorage.
Usa LocalScripts en StarterCharacterScripts , StarterPlayerScripts , StarterGui y StarterPack .
Ubicaciones de scripts
Ubicación | Descripción :--- | :--- Espacio de trabajo | Representa el mundo del juego.Esta ubicación funciona bien para los scripts del servidor que se adhieren directamente a los objetos y controlan su comportamiento.ReplicatedFirst | Contiene objetos que se replican al cliente antes que cualquier otra cosa.Esta ubicación es ideal para el conjunto mínimo absoluto de objetos y scripts de cliente necesarios para mostrar una pantalla de carga.ReplicatedStorage | Contiene objetos que se replican tanto al cliente como al servidor.Esta ubicación es ideal para Class.ModuleScript\|ModuleScripts que quieres usar tanto en el servidor como en el cliente.Class.LocalScript\|LocalScripts no corra de esta ubicación, pero Class.Script\|Scripts con un contexto de ejecución de Client lo hace.ServerScriptService | Contiene scripts del servidor.Esta ubicación es ideal para scripts que necesitan acceder a la funcionalidad o a los objetos del lado del servidor, como la lógica del juego y el almacenamiento en la nube.ServerStorage | Contiene objetos del lado del servidor.Esta ubicación es ideal para objetos grandes que no necesitan ser replicados inmediatamente a los clientes cuando se unen a una experiencia.Los scripts no se ejecutan desde esta ubicación, pero puedes almacenar el lado del servidor Class.ModuleScript\|ModuleScripts aquí.StarterPlayer.StarterCharacterScripts | Contiene Class.LocalScript\|LocalScripts que se ejecuta cuando se genera el personaje.StarterPlayer.StarterPlayerScripts | Contiene Class.LocalScript\|LocalScripts scripts de propósito general que se ejecutan cuando el jugador se une a la experiencia.StarterGui | Contiene elementos de interfaz de usuario que el cliente muestra cuando carga el juego.Class.LocalScript\|LocalScripts puede correr desde esta ubicación.Esta ubicación es ideal para scripts que modifiquen la interfaz de usuario del juego, como agregar botones, menús y ventanas emergentes.Paquete de inicio | Generalmente solo contiene Class.Tool\|Tools , pero también puede incluir Class.LocalScript\|LocalScripts para configurar mochilas de jugador.
Esta imagen muestra qué ubicaciones de ventana del explorador pueden contener scripts del cliente.Recuerde, ReplicatedFirst y ReplicatedStorage pueden contener Scripts con un RunContext de Client , mientras que los contenedores Starter[] deben usar LocalScripts .

Estructura de proyecto de ejemplo
El proyecto de referencia Planta muestra cómo podrías organizar tu código en una experiencia grande y compleja.
De particular nota es cómo almacena la gran mayoría de su código como reutilizable ModuleScripts en ReplicatedStorage y ServerStorage .