Greybox a Playable Area


Greyboxing an environment, also known as massing out or blocking your environment, is the process of adding simple shapes to the 3D space to figure out how users will experience gameplay before investing time into scripting the gameplay or creating complex assets. This process can save you a lot of time in finding any issues in your layout, and it's much easier to make adjustments to basic parts than it is to adjust any high-quality meshes that you import into Studio.

Using basic parts and solid modeling operations, this section of the tutorial teaches you how to greybox the sea stack platforms that make up the playable area of the experience. Once you complete the environment, you will learn how to create the gameplay for the experience using Luau scripts.

Plan the Playable Area

In the final version of the experience, players need to collect coins on the island and sea stack platforms in order to upgrade their jumping power and reach higher platforms. You will configure scripts to add this behavior in the next section of the tutorial, but it's important while you're starting to greybox your environment to plan for the difference in height between platforms. For example, the difference in height between platforms should slowly increase for each height level in order to encourage players to collect coins to progress through the level.

As a guide, the sample Island Jump - Building .rbxl file includes seven different levels of height, with the first level sunk into the island to expose only a few studs of height. This allows players to only need to collect a few coins at the beginning of the experience in order to progress to the next platform. The subsequent height differences between each level then increase to 8, 20, 35, 55, 81, and 110 studs, providing players a sense of progress as they make their way through your experience.

A distant view of the sample island jump experience's greybox geometry. Each level of height difference between sea stacks is highlighted.

Add the Platforms

Now that you have a plan for the difference in height between platforms, it's time to add in placeholder Part objects to represent the sea stack platforms. Parts are Roblox's basic building blocks with properties you can modify to customize their physical appearance, such as their shape, size, and color.

While you can use almost any part shape to represent your sea stack platforms, it's recommended to greybox your environment with cylinder parts because they offer a flat surface for you to land on when you playtest jumping from platform to platform, and because they are similar in shape to the sea stack meshes you will use in the final section of the tutorial.

A comparison between the sample Island Jump experience's greybox and final geometry
The sample Island Jump experience's greybox geometry.
The sample Island Jump experience's final geometry.

Create an Organization Structure

Before you insert placeholder parts into the 3D space, it's important to create an organization structure for your assets in the Workspace. This process ensures that your Workspace remains organized and easy to scan, especially as you venture into creating experiences with a significant amount of assets that you need to manage.

There are two types of containers you can use to group assets together: Folder and Model objects. Folders are useful for storing many objects of different types, and models are useful for storing geometric groupings of parts. The following instructions teach you how to use both container objects to store all assets for your 3D world.

To create an organization structure:

  1. In the Explorer window, hover over the Workspace and click the icon. A contextual menu displays.

  2. From the contextual menu, insert a Folder object. A folder object displays that you will use to contain all assets for the 3D world.

    Studio's Explorer window with both the Workspace's plus icon and Folder object highlighted.
  3. Rename the new folder World.

    1. Right-click the folder object. A contextual menu displays.

    2. From the contextual menu, click Rename, and enter World for the folder's name.

  4. Hover over the World folder and click the icon.

  5. From the contextual menu, insert a Model.

    Studio's Explorer window with both the World folder's plus icon and Model object highlighted.
  6. Rename the model to Blockout_Parts.

    Studio's Explorer window with the new Blockout_Parts model highlighted under the World folder.

Insert Parts

Now that you have an organizational structure to contain your assets, you can now begin inserting parts into the 3D space to represent your sea stack platforms.

To insert a cylinder part for your first platform:

  1. In the menu bar, select the Home tab.

  2. In the Insert section, click the Part dropdown arrow, then select Cylinder. A cylinder part displays in the viewport.

    Studio's Home tab with both the Part tool's dropdown arrow and Cylinder object highlighted.
  3. In the Explorer window, click and drag the new Part to the Blockout_Parts model. The part becomes a child of the model.

    Studio's Explorer window with the new Part highlighted under the Blockout_Parts model object.
  4. Navigate back to the Home tab, then use the Move, Scale, and Rotate tools to position, scale, and rotate your cylinder until it's a large, flat surface in the middle of your island. For more information on these tools, see Manipulating Parts.

    Studio's Home tab with the Move tool highlighted. Studio's Home tab with the Scale tool highlighted. Studio's Home tab with the Rotate tool highlighted. A large cylinder object partially sticking out of an island surrounded by water.
  5. Using the same process, add and configure at least seven more sea stack platforms with increasing levels of height into the Blockout_Parts model.

    Many large cylinder objects partially sticking out of an island surrounded by water, and the water itself.
  6. In the Explorer window, select the Block_Out model.

  7. In the Home tab, navigate to the Edit section, and click the Anchor icon. This ensures that the physics system doesn't move your parts when the experience starts.

    Studio's Home tab with the Anchor tool highlighted.

Align Parts

As you add more sea stack placeholder parts off the island, it's easier to manage the height differences between levels if you use varying sizes for these parts instead of different positions. You can achieve this by aligning the base of each platform so that all vertical size differences are reflected in differing heights, and parts of the same size are on the same level.

The Align Tool aligns parts on either the minimum, center, or maximum edge according to a specific axis. For the purposes of this experience, you need to align the bottom edge in the Y axis so that all of the parts are partially submerged in the water.

To align parts:

  1. In the Explorer window, select all of your platforms.

  2. In the menu bar, navigate to the Model tab, then click the Align Tool. The Align Tool window displays.

    Studio's Model tab with the Align tool highlighted.
  3. In the Align Tool window,

    1. Set Mode to Min.
    2. Set Align In to World, Y.
    3. Keep Relative To on Selection Bounds.
  4. Click the Align button. All parts align on the Y axis according to the part with the lowest Y Part.Position value.

    An underwater view of many cylinders that are aligned along their bottom edge.
    All platforms align their bottom edge

Create a Hollow Tunnel

Aside from using parts as-is to block out your playable areas, you can also apply solid modeling operations to join parts in unique ways to form more complex shapes, such as a hollow tunnel within one of the sea stacks. This technique provides more visual interest and variation in how players interact with your environments.

There are four solid modeling tools:

  • Union – Joins two or more parts together to form a single solid union.
  • Intersect – Intersects overlapping parts into a single solid intersection.
  • Negate – Negates parts, which is useful for making holes and indentations.
  • Separate – Separates the union or intersection back into its individual parts.

For the purposes of creating a hollow tunnel, you only need to use the Union and Negate tools. For a full breakdown of all of the tools, see Solid Modeling.

Studio's Model tab with the solid modeling tools highlighted.

To create a hollow tunnel:

  1. Insert and position a cylinder part above one of your sea stack platforms. The sample Island Jump - Building experience positions this part above the Level_4b platform with the following values:

    NameSizeCFrame.PositionCFrame.Orientation
    Tunnel24, 65, 69137, 77, 690, 0, 90
  2. Insert and position a block part to represent the hollow portion of your tunnel that's at least as tall as the cylinder part, and a suitable width for players to walk through. The sample Island Jump - Building experience positions this part within the previous cylinder with the following values:

    NameSizeCFrame.PositionCFrame.Orientation
    Hollow_Part24.5, 72, 22134.5, 77, 710, 135, 90
    A close-up view of a gray block sticking out of a gray cylinder.
  3. In the Explorer window, select the block part.

  4. In the Model tab, navigate to the Solid Modeling section, then click the Negate button. The part turns translucent.

    A close-up view of a partially translucent pink block sticking out of a gray cylinder.
  5. In the Explorer window, select both the negated part and the cylinder tunnel part.

  6. In the Model tab, navigate back to the Solid Modeling section, then click the Union button. The negated part is cut out from the overlapping tunnel cylinder.

    A close-up view of a gray cylinder with an open tunnel through itself. The tunnel does not have a roof.
  7. Rename the new union to something that reflects its height level and position, such as Level_4b_Union.

  8. Duplicate the sea stack platform underneath your new union, and position it so that it's on top of the tunnel. The sample Island Jump - Building experience positions the duplicate Level_4b platform above the union with the following values:

    NameSizeCFrame.PositionCFrame.Orientation
    Level_4b_Top74, 65, 69137, 126, 690, 0, 90
    A close-up view of a tunnel through a cylinder.

Playtest

After you finish greyboxing your playable areas, you must playtest the layout of your environment to ensure the experience is both fun and functional, and so that you can catch small issues before they turn into much larger projects the further you are in the development process. For example, your experience's gameplay needs players to steadily upgrade their jumping power according to the amount of coins they collect, so it's important to verify that players are able to jump between platforms in relation to the Humanoid.JumpPower you expect players to have at varying platform height levels.

The following step-by-step instructions teach you how to playtest your experience with different Humanoid.JumpPower values. As you playtest, ask yourself the following questions:

  • Are players able to successfully jump to each platform?
  • Does the difference in height between platforms slowly increase for each height level in order to encourage players to progress?
  • What am I enjoying or getting frustrated about the layout or gameplay?

To playtest your experience:

  1. In the menu bar, click the Play button. Studio enters playtest mode.

    Studio's Home tab with the Play button highlighted in the menu bar.
  2. In the Explorer window, select the arrow next to your character model that displays your Roblox username. All of your character model's children objects display.

  3. Select Humanoid.

    Studio's Explorer window with the Humanoid object highlighted. The hierarchy of the Workspace to CharacterModel to Humanoid is also highlighted.
  4. In the Properties window, navigate to the Jump Settings section, then enable UseJumpPower. The JumpPower property displays with a default value of 50.

  5. Set JumpPower to 0. This ensures your character is unable to jump, emulating the same starting state for players after you script the gameplay.

    Jump Settings with the JumpPower and UseJumpPower properties highlighted.
  6. As you reach new levels, set JumpPower to multiples of 30 to simulate jumping upgrades.

In the next section of the tutorial, you will learn how to script the overall gameplay of the experience.