New: BloxMaps v4 is out: our biggest upgrade yet. Full Roblox games from one prompt, new Build A ___ Empire games, music in every game
Guide

How to make a simulator game in Roblox

Simulators are built on one action that keeps getting bigger: swing, mine, lift, fish, earn, upgrade, unlock the next zone, rebirth, repeat. This guide builds that loop in Roblox Studio: the currency, upgrades, zones, pets with fair odds, rebirth, saving and a shop.

Updated ยท by the BloxMaps team

The simulator loop

  1. Do the action (click, swing, mine) to earn a resource.
  2. Spend it on a better tool that earns more per action.
  3. Unlock a new zone where everything is worth more.
  4. Hatch pets that multiply what you earn.
  5. Rebirth: reset for a permanent multiplier, and go round again, faster.

The numbers grow fast on purpose (10, then 1,000, then 1 million). Seeing them grow is the reward, so show them big on screen and format them nicely (1.2K, 3.4M).

1. The action and the currency

Pick an action that feels good to repeat, and give every player two values: the resource they collect and the coins they sell it for. A server Script in ServerScriptService:

local Players = game:GetService("Players")

Players.PlayerAdded:Connect(function(player)
	local leaderstats = Instance.new("Folder")
	leaderstats.Name = "leaderstats"
	leaderstats.Parent = player

	local coins = Instance.new("IntValue")
	coins.Name = "Coins"
	coins.Parent = leaderstats

	player:SetAttribute("Power", 1)      -- what one action earns
	player:SetAttribute("Multiplier", 1) -- pets and rebirths raise this
end)

The action itself is usually a Tool. When the player clicks, the Tool's LocalScript fires a RemoteEvent; the server decides what they earn. Never let the client send the amount:

-- Script in ServerScriptService, with a RemoteEvent called "Swing" in ReplicatedStorage
local swing = game.ReplicatedStorage.Swing
local lastSwing = {}

swing.OnServerEvent:Connect(function(player)
	local now = os.clock()
	if lastSwing[player] and now - lastSwing[player] < 0.3 then
		return -- too fast: ignore (stops auto-clickers from earning 100 times a second)
	end
	lastSwing[player] = now
	local earned = player:GetAttribute("Power") * player:GetAttribute("Multiplier")
	player.leaderstats.Coins.Value += earned
end)

2. Upgrades

Make a list of tools with prices and powers in a ModuleScript, so all your numbers are in one place:

return {
	{ name = "Wooden Pickaxe", price = 0, power = 1 },
	{ name = "Stone Pickaxe", price = 100, power = 3 },
	{ name = "Iron Pickaxe", price = 1000, power = 12 },
	{ name = "Gold Pickaxe", price = 15000, power = 60 },
}

A shop button asks the server to buy the next one; the server checks the price, takes the coins and sets Power. A good rule of thumb: each upgrade should take a bit longer to afford than the last, but never so long that players feel stuck.

3. Zones

Zones give players somewhere new to go. Build each area with its own look, and block it with a door part that has a price. When a player can pay, the server takes the coins and lets them through. A simple way: make the door CanCollide false for that player only, from a LocalScript, after the server confirms the purchase, and save which zones they own. Things to collect in a later zone are worth more, so moving forward always feels worth it.

4. Pets and eggs

Pets are the heart of most simulators. An egg costs coins and gives a random pet; each pet adds to the multiplier. Pick the pet on the server with weighted odds:

local EGG = {
	{ pet = "Puppy", weight = 60, boost = 1.1 },
	{ pet = "Kitten", weight = 30, boost = 1.25 },
	{ pet = "Fox", weight = 9, boost = 1.6 },
	{ pet = "Golden Dragon", weight = 1, boost = 3 },
}

local function hatch()
	local total = 0
	for _, entry in EGG do
		total += entry.weight
	end
	local roll = math.random() * total
	for _, entry in EGG do
		roll -= entry.weight
		if roll <= 0 then
			return entry
		end
	end
	return EGG[#EGG]
end

Show the odds on every egg (here 60%, 30%, 9%, 1%). It's fair to players, and Roblox requires the odds of paid random items to be shown before purchase, so it's a good habit everywhere. Store owned pets as a list of names in the player's save, show equipped pets following the player, and cap how many can be equipped so there's a reason to hatch better ones.

5. Rebirth

Rebirth resets coins, tools and zones in exchange for a permanent bonus, so the next run goes faster. Ask for a big but reachable amount of coins, then:

local function rebirth(player)
	local rebirths = (player:GetAttribute("Rebirths") or 0) + 1
	player:SetAttribute("Rebirths", rebirths)
	player.leaderstats.Coins.Value = 0
	player:SetAttribute("Power", 1)
	-- the multiplier = pets' boosts x (1 + rebirths * 0.5)
end

Each rebirth's price should grow, and the bonus should be easy to feel: "+50% coins forever".

6. The HUD

A simulator's screen holds a lot, so keep it organised:

  • Currency counters in one corner, big and readable.
  • A short column of buttons (Shop, Pets, Rebirth) on one side, each with an icon and a word.
  • Boosts and timers small and out of the way.
  • Size with Scale and test on a phone: many simulator players are on mobile.

The UI Designer can lay out a full simulator UI from a description, if you'd rather not build every frame by hand.

7. Saving and the shop

Save coins, power, zones, pets and rebirths in one table per player with DataStoreService, wrapped in pcall, on leave and on server shutdown.

Simulator shops usually sell game passes (2x Coins, Auto Swing, +1 Pet Equipped, Lucky Eggs) and developer products (coin packs, a short luck boost). Our game passes and developer products guide shows how to make them and grant them safely. Keep the game fun without buying: players who enjoy it for free are the ones who might buy later.

Generate a simulator

The simulator is one of the BloxMaps Game Maker's most finished formats. From one sentence it builds the action and currency, better tools, eggs and pets with the odds shown, zones behind doors, rebirth, the HUD and a shop with passes and products, in one Roblox Studio file. Any subject works: mining, lifting, fishing, bubbles, magic.

a pet simulator with eggs in a candy world

Try this prompt
Fluffy Heroes, a pet simulator made with the Game Maker by the BloxMaps team, seen from its spawn
Fluffy Heroes, a pet simulator the BloxMaps team made with the Game Maker.
The My Pets menu of Fluffy Heroes, made with the Game Maker: equipped pets, storage, best multiplier and an Equip button
Its pets menu.

Building and previewing is free; exporting the finished game costs $14.99 once. Looking for a subject? See simulator ideas.

Questions

What is a simulator game on Roblox?

A game built around one repeated action that gets faster and bigger: earn, upgrade, unlock the next zone, rebirth, repeat.

Do simulator eggs have to show the odds?

Roblox requires games to show the odds of paid random items before purchase. Showing the odds on every egg is the safe habit. Check Roblox's current rules on paid random items.

How do pets work?

A pet is usually a model that follows the player and gives a multiplier. You keep the list of owned pets in a table and save it with a DataStore.

Will my game make Robux?

Nobody can promise that. A shop, game passes and developer products give players a way to support your game, but how many people play and buy depends on your idea, your thumbnail, your updates and luck.

Is BloxMaps free?

Making and previewing is free: 3 previews a day on the Free plan. You pay only to export. You only pay to export the finished Roblox Studio file (.rbxl): $14.99 once per game, or included with the Studio plan. See pricing.

Make a Roblox game from one sentence

Describe your idea. Get the map, UI, shop and gameplay in one Roblox Studio file. Free to build and preview.

Make a gameFree to try