Checkpoint+ - A new way to make a Checkpoint System

Checkpoint+

What is Checkpoint+?

Checkpoint+ is a new module that allows you to setup a Obby like Checkpoint System within seconds which is Customizable through Particles, Data Saving and you can even customize your own Checkpoint Model. To see an example of how the system works, please see the ‘Showcase’ section below.

How to Install?

Checkpoint+ is 100% free and open-source. Everyone can get it from the ROBLOX library. Get the model now: Checkpoint+ (v1.0) - Roblox

To set it up, place the respective scripts into the correct places as labeled in the folder you’ll acquire when inserting the model. Once finished, Checkpoint+ is now installed and can be configured.

To configure Checkpoint+, expand the Checkpoint+ Script in ServerScriptService, now you should see another ModuleScript named Settings. Open this file and please see the ‘How to configure’ section below to see how to configure it and/or see the ‘Showcase’ section below to see the showcase of this module.

How to configure?

Checkpoint+ is very self-explanatory in terms of configuring it. You’ll only need to configure one script which is the Settings script. This can be found in ServerScriptService > Checkpoint+.

This is how it should look like:

local Settings = {
	["CheckpointFolderLocation"] = game:GetService("Workspace"):WaitForChild("Checkpoints"); -- The Location of your Checkpoint Folder
	["CheckpointParticlesEnabled"] = true; -- Should there be Particles when the Player reaches a new Checkpoint
	["DataSaves"] = false; -- Should the Checkpoint Number save when the player leaves
	["LeaderstatsEnabled"] = true; -- Should the System display the Checkpoint Number on the Player List
	["LeaderstatsName"] = "Stage"; -- What should the Checkpoint Number be called on the Player List
}

return Settings

Default Settings:

  • CheckpointFolderLocation = Should be the path to your Checkpoint Folder, it might be smart to include WaitForChild so the system waits till the Folder is fully loaded in. (Ex. game:GetService("Workspace"):WaitForChild("Checkpoints"))
  • CheckpointParticlesEnabled = Should there be Particles when the Player reaches a new Checkpoint (Ex. true)
  • DataSaves = Should the Checkpoint Number save when the Player exits the game or the game is shutdown. (Ex. false)
  • LeaderstatsEnabled = Should the system display the Checkpoint Number in the Player List (Ex. true)
  • LeaderstatsName = What should the Checkpoint Number be called in the Player List (Ex. Stage)

Showcase

Checkpoint+ Showcase Game

Example Settings Script
local Settings = {
	["CheckpointFolderLocation"] = game:GetService("Workspace"):WaitForChild("Checkpoints"); -- The Location of your Checkpoint Folder
	["CheckpointParticlesEnabled"] = true; -- Should there be Particles when the Player reaches a new Checkpoint
	["DataSaves"] = false; -- Should the Checkpoint Number save when the player leaves
	["LeaderstatsEnabled"] = true; -- Should the System display the Checkpoint Number on the Player List
	["LeaderstatsName"] = "Stage"; -- What should the Checkpoint Number be called on the Player List
}

return Settings
15 Likes

Looks really well done. Thanks!

Thank you for the feedback. :slight_smile: Glad you like it.

wow it’s a good script :slightly_smiling_face: was it difficult to do it?

No, not really. I made it in an hour. Glad you like it. :slight_smile:

I created a checkpoint system for an obby a while back. One of its features was a GUI that would pop up to say “Checkpoint!” and play a little chime. Optionally, it would tell the player what stage they reached. I could also configure it to not show at every stages and only show at every 5 stages, for example.

I think it might make a nice addition to your Checkpoint+.

That’s a good idea, I’ll think about it.

Does this use ProfileService to save data? If not, I would recommend changing it as the default DataStore service is horrible and could cause severe data loss in bigger games

Simple, yet effective. Very nice :star2: !

It does not, it is just a simple system and therefore I didn’t bother.

I’m glad you like it, appreciate the feedback.

Hey there, how would I make a “Skip To End” developer product?

Edit: best way i’ve found is to set the player’s stage stat to “30” if you have 30 stages, but it’s pretty annoying to change that everytime you add more stages

1 Like

What I would recommend is setting the stage stat to the amount of checkpoints there are. You can achieve this by doing the following:

local lastStage = #game:GetService("Workspace"):WaitForChild("Checkpoints"):GetChildren()
playerPath:SetAttribute("Checkpoint", lastStage)
1 Like

Hey how can add more checkpoint and is there a way to go back in stage?

To add more checkpoints just duplicate the existing ones and change the “CheckpointNum” attribute to the new stage number.

To go back a stage you’d need to do the following:

playerPath:SetAttribute("Checkpoint", playerPath:GetAttribute("Checkpoint") - 1)

Thanks man! appreciate you! it worked.