1.3 The Explorer

The explorer allows you to view everything in the game; arranged into a folder-like hierarchy.

At the top-most level of the hierarchy are what Roblox calls “services.” These are folder-like containers that handle some core functionality of the game.

For instance, if you click on the Lighting service and view the properties window, you will find that there are a number of properties in this service that affect how the light looks in your 3D viewport because this service handles “global” lighting for the game.

If you click on the “ClockTime” property and change the value to 18, this changes the day to dusk.

Usually these functionalities are unique to each service though sometimes there exists overlap. For instance, both the Sound service and the workspace have the ability to play sounds.

Depending on whether the game is running on the “client” or the “server,” some of these services may not be available.

So why is that? And what does that even mean?

To understand that, we need to understand the Roblox client-server replication model.


The Replication Model

When a player fires up a Roblox game, two versions of it are automatically created.

The first version, known as the ‘server,’ runs on Roblox’s own servers. This functions as the central computer in which every player is connected to.

The server is responsible for keeping track of the map and relaying changes to each ‘client,’ handling player data, relaying messages, communicating with clients, and a lot of other things.

Clients are the player’s side of things and each gets their own version of the game. They have their own copy of the map, which the server will attempt to keep in sync with its own version.

Each client has their own camera and is not visible to other clients or the server. Graphical user interface (GUI) elements such as onscreen numbers, names, and camera effects are usually visible only on the client. Clients are also directly responsible for their own character on their machine AND on the server.


Historically, replication was two-way.

Meaning changes a client made on their own machine was automatically replicated to the server and then synced to other clients.

This also meant that it was incredibly easy for bad actors to make unwanted or unwelcome changes locally that would then be synced to other players’ machines.

That all changed when Roblox introduce ‘FilteringEnabled‘ to the client-server model. This mandated that replication of changes happen only in one direction: from the server to clients.

This now meant that clients could not interact directly with other clients.

Instead, if a client wanted to make some change or run a functionality that would also appear on client machines, it had to make a request to the server and if approved, the server then does it on behalf of the client.

And if a client wanted to send a message to another client, it must talk to the server first which is then approved or disapproved.

You, the scripter, will decide if and how these requests are approved.


A Digression on the Usage of the Term ‘Object’

In general usage the term ‘object’ is often used interchangeably with ‘thing’ or ‘item.’

However, in computer science, ‘object‘ has a very specific meaning. In this context, ‘class‘ and ‘instance‘ are also relevant.

‘Class’ is a blueprint describing some “thing” that has a defined structure, data, and behavior associated with it. The class itself, however, is just a blueprint and does not exist.

When the class is implemented by allocating and structuring memory as defined by the class, then that becomes one specific ‘instance’ of the class. The collection of these “things” in memory are ‘objects’ of the class.


Objects are oft used in computer science because they are “self-contained.” Meaning if the object defines some behavior, it will have all of the components necessary for it to carry out that behavior without depending on something external to it.

To use cell phones as an example. The ‘Phone’ class exists in concept only. All physical phones are objects of that class. And your specific phone is one instance of those objects.

Phones are self-contained and have all the components needed to function. So if a device needed to be connected to an external keypad, it would no longer be a phone as defined by the class.

When we get to the object-oriented programming (OOP), we will delve into more detail about classes, objects, and instances.

For now, think of an object as a container in memory that has data, properties, and specific functionality associated with it. The Roblox services are examples of objects.