Roblox Scripting Assistance - Resources

Join our Discord!

Service usages

< Back to overview
< View all authors
< View all categories

The explorer in Roblox Studio contains a lot of “top level services”, all of those services have a specific function and are sometimes not used correctly. I’m going over all these services and define what they are supposed to be used for.

Workspace

Probably doesn’t need a whole lot of explaining, the Workspace is the visual representation of the game, this is where you put all the instances that have to be rendered in the actual game.

Players

This container holds all of the player instances at runtime, this service should not be used for anything else.

Lighting

This container holds all information about the game it’s lighting information, back in the day this service was often used to store random pieces of game information, however in present day we have ReplicatedStorage for this. The only things that should be stored in Lighting are:

MaterialService

This service is part of the Custom Materials API. Note that this is currently in BETA and does not work in live games

This should be used to insert custom materials you want to use in your game.

ReplicatedFirst

This service is similar to ReplicatedStorage except that the contents of ReplicatedFirst always are replicated before ReplicatedStorage.

This service is ideal for making things that must run directly at the game startup, mainly loading screens.

Theoretically any asset can be placed in here but take care about what you place in here, not everything has to be given this kind of priority.

ReplicatedStorage

This service is your general “dump” container, you can store anything you want in here. Note that this service unlike ServerStorage is available to both the server and the client.

Examples are:

ServerScriptService

This service is used to hold all of your Scripts that have to run. I’m not going deep into whether you should put your scripts into here or in the Workspace, but my recommendation is keep anything that doesn’t have to interact with the game inside ServerScriptService and anything related to the physical world (e.x. Touched interactions) inside Workspace.

You can also store all of the ModuleScripts in here, ServerStorage or ReplicatedStorage if you want but again this is a design choice, just keep in mind how your module itself replicates based on the service it’s in.

ServerStorage

This service is your general “dump” container, you can store anything you want in here. Note that this service unlike ReplicatedStorage is available to only to the server.

Examples are:

StarterGui

This container is used to store all of the GUIs your game uses. These are:

Nothing else should be put into this container, often people store LocalScripts in here aswell but we have StarterPlayerScripts for this.

Note: The contents are cloned to Players/{Player}/PlayerGui

StarterPack

This container holds all of the tools that all players obtain when they spawn in. Therefore this container should only contain tools, nothing else.

There’s also a subfolder inside the Player called StarterGear, this is used in combination with StarterPack and is able to provide player specific gear.

Note: The contents are cloned to Players/{Player}/Backpack

StarterPlayer

This service accomodates two subfolders which have two respective tasks, however this service itself also has a couple of functions. Firstly it defines all of the settings related to players when they spawn in, for example camera settings, standard walking speed and jump power, movement modes and much more.

Additionally you can also insert two instances into here.

StarterPlayerScripts

This is a subservice of StarterPlayer and contains LocalScripts which start to run when the player joins the game.

Note: The contents are cloned to Players/{Player}/PlayerScripts

StarterCharacterScripts

This is a subservice of StarterPlayer and contains LocalScripts which start to run everytime you respawn.

Note: The contents are cloned to Workspace/{Player} (the player character)

Teams

This service it’s sole purpose is to define Teams. Teams subdivide the players into groups of players. Nothing else should be put into this service.

SoundScape

This service contains sounds for the game that play independently of the Workspace, for example this can be used for cinematic background music that plays regardless of where you are on the map.

You can insert SoundGroups and Sounds into here, SoundGroups are used to control settings like the Volume of all Sounds directly below it.

Every Sound and SoundGroup is then able to include one or more SoundEffects.

Chat

This service is used to modify/extend the Lua Chat System.

Normally you shouldn’t have to edit anything inside of here as the chat modules are all inserted at runtime, you can however copy the chat system and manually place it inside Chat in order to fork it and make changes, do note that this means you will lose out on any updates Roblox makes to it.

The chat system allows you to extend it by using ChatModules, there’s two folders called ChatModules and ClientChatModules. You can insert these folders into the Chat and then provide custom extensions for the chat system.

Important: Make sure you create a BoolValue called InsertDefaultModules inside these two folders and set it’s value to true or none of the default chat modules Roblox provides will be loaded!


Other services that may appear

There are some more vague services that can appear in the list which I will give a quick mention aswell.

NetworkClient

This only appears in Team Create instances and is only used to connect developers together to enable them to build together, this service can be ignored otherwise.

LocalizationService

This service can be used to insert LocalizationTables. These tables can either be manually uploaded through Studio but the intended use is to use the localization portal in the website.

TestService

This service is used by Roblox Engineers to perform analytical testing on the game. It can be used by developers but the functionality is very limited. The idea is you insert scripts into TestService which can be executed to check if certain conditions are correct.


Remarks

Note that if you want to insert anything into the explorer you can use the plus symbol next to whatever you’re trying to insert to and Roblox will give you one or more recommendations to insert into the given container, keep an eye on this as this will help you find the correct place to store your instances in.


Links


Author: Thodor12
Category: Studio
Date: 14 January 2022

< Back to overview
< View all authors
< View all categories