Skip to content
numbers edited this page Nov 6, 2023 · 4 revisions

MapStart

This is the start of the map. When a player joins, presses 'r', or types /r, they are spawned into the centre of the MapStart. The timer will reset when a player is inside this part and under 18 u/s while touching the ground. Make sure to keep this part CanCollide false.

MapFinish

This is the end of the map. When a player touches this part, their timer ends and the time is saved. Tip: make the MapFinish ever so slightly smaller than part it is on, otherwise the player will finish the map even when hitting the part; they do not need to actually make the jump into the end zone. Make sure to keep this part CanCollide false.

Bonus#Start

This is the start of the bonus area. When a player types /b #, or presses 'r' while in the bonus area, they are spawned into the centre of the Bonus#Start. The timer will reset when a player is inside this part and under 18 u/s while touching the ground. The # is the number of the bonus, e.g: Bonus1Start for the first bonus, Bonus4Start for the fouth bonus, etc. Make sure to keep this part CanCollide false.

Bonus#Finish

This is the end of the bonus area. When a player touches this part, their timer ends and the time is saved. Tip: make the Bonus#Finish ever so slightly smaller than part it is on, otherwise the player will finish the map even when hitting the part; they do not need to actually make the jump into the end zone. The # is the number of the bonus, e.g: Bonus1Start for the first bonus, Bonus4Start for the fouth bonus, etc. Make sure to keep this part CanCollide false.

Spawn#

This is the part the player spawns on top of when hitting a Trigger# or Teleport# part. The # is the number of the spawn, e.g: Spawn1 for the first spawn, Spawn4 for the fouth spawn, etc. Spawns are primarily used at the start of a new stage, as either the starting part of the stage, or above the starting part. By making it the starting part, players will be able to telehop. If you do not want the player to be able to telehop, then you put the Spawn# above the starting part with a SetVelocity directly on top of the Spawn#. If you do this, make sure to keep both the Spawn# and the SetVelocity CanCollide false

SpawnAt#

If a player touches a SpawnAt#, the player's spawn will be updated to the corresponding Spawn# (SpawnAt2 to Spawn2, etc). This is a common solution to trigger skips. Make sure to keep this part CanCollide false.

Teleport#

If a player touches a Teleport#, the player will be brought to the corresponding Spawn# (Teleport5 to Spawn5, etc). This is primarily used to bring the player to the next stage of the map. Crucially, a Teleport# cannot bring a player further back - a Teleport3 will not bring the player from Spawn5 to Spawn3.

ForceTeleport#

A ForceTeleport# works the same as a Teleport#, except a ForceTeleport# can bring a player further back - a ForceTeleport3 will bring a player from Spawn5 to Spawn3.

Trigger#

If a player touches a Trigger#, the player will be brought to the corresponding Spawn# (Trigger3 to Spawn3, etc). This is primarily used as the 'kill block' of maps; mostly the floor and some obstacles. Crucially, a Trigger# cannot bring a player further back - a Trigger1 will not bring a player from Spawn3 to Spawn1. Make sure to keep this part CanCollide true.

ForceTrigger#

A ForceTrigger# works the same as a Trigger#, except a ForceTrigger# can bring a player further back - a ForceTrigger1 will bring a player from Spawn3 to Spawn1. Make sure to keep this part CanCollide true.

Surf

Naming a part 'Surf' will guarantee that the player will glide along it, no matter the orientation of the part. Without naming a part Surf, any part at an angle between 45 and 90 degrees will become a Surf by default, unless the part is named as another map part. Make sure to keep this part CanCollide true.

Platform

Naming a part 'Platform' will guarantee that the player will be able to jump on the part, no matter the orientation of the part. By calling a part 'Platform' the player will automatically get reset back to the last touched Spawn# if the player is not jumping. Make sure to keep this part CanCollide true.

Jump#

Naming a part 'Jump#' will guarantee that the player will be able to jump on the part, no matter the orientation of the part. The # is the amount of times the player can jump on the part until they are reset back to the last touched Spawn# - Jump1 allows a player to jump only once, Jump10 allows a player to jump on it 10 times, and Jump0 does not allow a player to jump on it at all. The jump count is reset when the player jumps on another part, the player's timer resets, or the player gets sent back to any Spawn#. Make sure to keep this part CanCollide true.

SetVelocity

If a player touches a SetVelocity part, the player's u/s in each direction are set to whatever is in the part's AssemblyLinearVelocity (at the bottom of the properties tab). Setting the AssemblyLinearVelocity to 0,0,0 will stop the player completely, setting it to 30,0,0 will set the player to move 30 u/s in the positive x direction, and setting it to 0,0,-10 will send the player 10 u/s in the negative z direction. Make sure to keep this part CanCollide false.

Ladder

If a player touches a Ladder part, they are able to climb up the part like a ladder. Make sure to keep this part CanCollide true.

WormholeIn# and WormholeOut#

If a player touches a WormholeIn#, they are sent to the corresponding WormholeOut# (WormholeIn2 goes to WormholeOut2, etc). This is different from a Teleport# going to a Spawn#, as the player keeps their position relative to the WormholeIn# part. If a player hits a WormholeIn# in the top corner, they are sent to the same top corner of the WormholeOut#. This is primarily used for seamless transitions between areas, usually when wrapping around a pole or a corner. It is crucial to keep the WormholeIn# and WormholeOut# the exact same size and orientation. Changing the size will not make the transition seamless, and changing the orientation will cause the camera to have to turn to face the new direction, both are jarring for the player. Make sure to keep these parts CanCollide false.

Accelerator

If a player touches an Accelerator part, they gain constant acceleration set in the part's AssemblyLinearVelocity while in contact with the part. Touching an Accelerator part with an AssemblyLinearVelocity of 10,0,0 will give the player 10 u/s of acceleration in the positive x axis every second, and so on for the other axes. Make sure to keep this part CanCollide false.

Water

Naming a part 'Water' will allow a player to swim through it with WASD, as well as holding space to rise up. Changing the part's AssemblyLinearVelocity will give the water a current. Touching a Water part with an AssemblyLinearVelocity of 0,0,-20 will give the water a current of 20 u/s in the negative z direction. You can adjust the part's CustomPhysicalProperties (just above AssemblyLinearVelocity in the properties panel. You will have to check the box to be able to drop it down and change the physical properties) Density and Friction to change how the water interacts with the player. Density is 1 by default, and the friction is 0.1 by default. Density ranges from 1 - perfectly buoyant (the player will rise as soon as they come into contact with the water), to 0, where there is no buoyancy and so the player does not rise. Anything below 1 will require the player to jump before it affects them. Friction is the opposing force the player's movement. Setting the friction to 1 will not allow the player to move, and 0 will allow the player to move normally. Adding even the slightest amount of friction will result in the player naturally losing speed if they do nothing, and it puts a soft cap on how many units a player can have as at some point strafing and friction will come into an equilibrium. Make sure to keep this part CanCollide false.

Button# and Interactive#

If a player touches a Button# the corresponding Interactive# ModuleScript is run (Button3 activates Interactive3, etc). There is unfortunately currently no documentation on this, so the function in the script that are required for the physics to work can be found in old scripts written by Quaternions - a model with example buttons can be found here. However, those are only required if you are moving parts in any way - if you just want to edit lighting or make parts invisible, then you do not need to worry about the functions, you can simply do so. If you need help writing a script, @Quaternions on the Roblox Surf/Bhop discord in #map-making with the details of what you are trying to do. This part can be either CanCollide true or false, the button will activate either way - just be sure that it works with the map.

Bounce

If a player touches a 'Bounce' part they are bounced off of the part in the direction they were going, though now moving away from the Bounch part instead of to it. Maker sure to keep this part CanCollide true.

MapAnticheat

If a player touches a 'MapAnticheat' part the player will not be able to set a time, characterised by the big red X in front of their timer. This is primarily used to stop players from going out of bounds or to stop skips in a map. Make sure to keep this part CanCollide false.