Not sure what to do with my game?

I was inspired to create a simulator-ish game (not sure how else to describe it) and now that I’ve created it, I’m not sure what to do next!

I’m a bit stuck on what I could add to the game… I was thinking of allowing players to have their own house & be able to upgrade it, buy furniture, etc. I don’t even know what to call it (if anyone has any ideas, please let me know).

I know there are probably still some bugs or issues that I need to take care of… such as the BillboardGUIs/ProximityPrompts not always appearing for the NPCs.

Anyway, I’d love suggestions on what to add, what to do next, or how to improve it! It would be greatly appreciated!

Here’s the link: Simulator Game - Roblox

1 Like

I just played the game a bit and I think the whole asthenic is really cute and is overall super impressive.
I noticed that you could earn money from doing tasks in different buildings, which is good since it gives the player an insensitive to play the game, but I couldn’t find anywhere to spend that money. Maybe I just didn’t look hard enough to and missed it.

I would recommend adding an item shop so you can spend the money that you’ve earned on stuff like food, plushies, maybe even clothing, etc.

1 Like

I’m always in awe of people who can build which such cool aesthetics. With your NPCs, after you Parent them to the workspace, you need to give the server physics control:
npc.PrimaryPart:SetNetworkOwner(nil)
That will stop them getting jerky near players. The npcs also seem to wait longer between each MoveTo event as time goes on. Are you using MoveToFinishedWait()?

Nice game btw

1 Like

Just played the game, and I gotta say, I really like it! It’s fun, it’s charming, and there are different things to do so you don’t get bored.

This is perfect! Since the game is a roleplaying game, where you can be a barber, an ice cream vendor, and other things, having players spend money to customize their own house is the exact kind of thing that players would want. You can have a furniture store for players to buy furniture, and you can have players invite their friends to their house to hang out.

I’d say that if you don’t know what to do now, you should start on making houses for players.

1 Like

Thank you for your feedback and kindness!

Yes, I do plan on creating a shop of some sorts—the ideas you’ve given are really great and are appreciated :slight_smile: I definitely plan to create a place to spend the money earned from the various jobs (I just haven’t gotten around to it yet). As I mentioned, I plan on having houses for the players as well that they’ll be able to decorate and furnish.

A question I have is whether or not you’d recommend I utilize a multi-place (within the Experience) system? I used it in another one of my games since it was getting laggy with all of the areas I created. However, I’ve noticed that a lot of the players don’t know that they’re able to teleport to different areas (I probably will create a better “lobby” area for that game so that it’s more obvious).

Or should I have the player teleport to a different area within the same Experience? … I guess it might be a pain to game teleport between areas if you were to need more money for an item in the shop and then have to teleport to a whole new game to make money.

OR should I have all of the shops in the same area with the jobs? I just was thinking that might be confusing to some players but I’d love to hear your thoughts!

Thank you soo much for your feedback! Your reply really has motivated me and given me an idea of what I’d like to do next within my game :slight_smile: I greatly appreciate your kindness and time <3

Thank you so much for your feedback & more information about NPCs. The NPCs have actually been a somewhat frustrating part of creating this game.

All NPCs are currently Parented to a Folder titled “NPCs” in the Workspace (all with the name “NPC”). Then I have another folder titled “Destinations” with every part that an NPC will walk to (i.e. “Dest1”, “Dest2”, etc.).
Screen Shot 2022-07-22 at 11.45.41 AM

Here’s one of the NPC scripts as an example:

while true do
	wait (2)
	char = script.Parent
	pathFinder = game:GetService("PathfindingService")

	path = pathFinder:CreatePath()

	path:ComputeAsync(char.HumanoidRootPart.Position, workspace.Destinations.Pizzaria.Dest4.Position)

	for i, wayPoint in pairs(path:GetWaypoints()) do
		char.Humanoid:MoveTo(wayPoint.Position)

		if wayPoint.Action == Enum.PathWaypointAction.Jump then
			char.Humanoid:ChangeState(Enum.HumanoidStateType.Jumping)
		end
		char.Humanoid.MoveToFinished:wait()	
	end
	char = script.Parent
	pathFinder = game:GetService("PathfindingService")

	path = pathFinder:CreatePath()

	path:ComputeAsync(char.HumanoidRootPart.Position, workspace.Destinations.Pizzaria.Dest.Position)

	for i, wayPoint in pairs(path:GetWaypoints()) do
		char.Humanoid:MoveTo(wayPoint.Position)

		if wayPoint.Action == Enum.PathWaypointAction.Jump then
			char.Humanoid:ChangeState(Enum.HumanoidStateType.Jumping)
		end
		char.Humanoid.MoveToFinished:wait()	
	end
	char = script.Parent
	pathFinder = game:GetService("PathfindingService")

	path = pathFinder:CreatePath()

	path:ComputeAsync(char.HumanoidRootPart.Position, workspace.Destinations.Pizzaria.Dest1.Position)

	for i, wayPoint in pairs(path:GetWaypoints()) do
		char.Humanoid:MoveTo(wayPoint.Position)

		if wayPoint.Action == Enum.PathWaypointAction.Jump then
			char.Humanoid:ChangeState(Enum.HumanoidStateType.Jumping)
		end
		char.Humanoid.MoveToFinished:wait()	
	end
	wait(1)
	char = script.Parent
	pathFinder = game:GetService("PathfindingService")

	path = pathFinder:CreatePath()

	path:ComputeAsync(char.HumanoidRootPart.Position, workspace.Destinations.Pizzaria.Dest2.Position)

	for i, wayPoint in pairs(path:GetWaypoints()) do
		char.Humanoid:MoveTo(wayPoint.Position)

		if wayPoint.Action == Enum.PathWaypointAction.Jump then
			char.Humanoid:ChangeState(Enum.HumanoidStateType.Jumping)
		end
		char.Humanoid.MoveToFinished:wait()	
	end
	char = script.Parent
	pathFinder = game:GetService("PathfindingService")

	path = pathFinder:CreatePath()

	path:ComputeAsync(char.HumanoidRootPart.Position, workspace.Destinations.Pizzaria.Dest3.Position)

	for i, wayPoint in pairs(path:GetWaypoints()) do
		char.Humanoid:MoveTo(wayPoint.Position)

		if wayPoint.Action == Enum.PathWaypointAction.Jump then
			char.Humanoid:ChangeState(Enum.HumanoidStateType.Jumping)
		end
		char.Humanoid.MoveToFinished:wait()	
	end
	char = script.Parent
	pathFinder = game:GetService("PathfindingService")

	path = pathFinder:CreatePath()

	path:ComputeAsync(char.HumanoidRootPart.Position, workspace.Destinations.Pizzaria.Dest.Position)

	for i, wayPoint in pairs(path:GetWaypoints()) do
		char.Humanoid:MoveTo(wayPoint.Position)

		if wayPoint.Action == Enum.PathWaypointAction.Jump then
			char.Humanoid:ChangeState(Enum.HumanoidStateType.Jumping)
		end
		char.Humanoid.MoveToFinished:wait()	
	end
	char = script.Parent
	pathFinder = game:GetService("PathfindingService")

	path = pathFinder:CreatePath()

	path:ComputeAsync(char.HumanoidRootPart.Position,workspace.Destinations.Pizzaria.guipart2.Position)

	for i, wayPoint in pairs(path:GetWaypoints()) do
		char.Humanoid:MoveTo(wayPoint.Position)

		if wayPoint.Action == Enum.PathWaypointAction.Jump then
			char.Humanoid:ChangeState(Enum.HumanoidStateType.Jumping)
		end

		char.Humanoid.MoveToFinished:wait()	
	end

	wait(2) ---how much time inbetween loop
end

Screen Shot 2022-07-22 at 11.56.45 AM

I added the wait()'s so that the NPCs wouldn’t be in the same location at the same time as that makes it difficult for the player to use the ProximityPrompt; however, most of the NPCs end up overlapping each other anyway which is why I created a collision group for the NPCs in the studio.

Then when the NPC touches a certain part in a shop, the BillboardGUI, and the Prox.Prompt (which are Parented to the Head) is enabled so that the player can interact with the NPC.

If you have any recommendations for improving the NPCs, I’d really appreciate it as I’d definitely like to improve them

Hi. A quick rework of your script below:

-- SERVICES
local pathFinder = game:GetService("PathfindingService")	-- declare the Service once only

-- VARIABLES
local char = script.Parent
char.PrimaryPart:SetNetworkOwner(nil)	-- Sets Ownership of the NPC to the server
local path = pathFinder:CreatePath()

local Destinations = {	-- Holds a list of Destinations in the order you want them visited
	workspace.Destinations.Pizzaria.Dest4.Position,
	workspace.Destinations.Pizzaria.Dest.Position,
	workspace.Destinations.Pizzaria.Dest1.Position,
	workspace.Destinations.Pizzaria.Dest2.Position,
	workspace.Destinations.Pizzaria.Dest3.Position,
	workspace.Destinations.Pizzaria.Dest.Position,
	workspace.Destinations.Pizzaria.guipart2.Position,
}

-- FUNCTION TO MOVE THROUGH WAYPOINTS
local function moveToPosition(destination)
	path:ComputeAsync(char.HumanoidRootPart.Position, destination)
	for i, wayPoint in pairs(path:GetWaypoints()) do
		char.Humanoid:MoveTo(wayPoint.Position)

		if wayPoint.Action == Enum.PathWaypointAction.Jump then
			char.Humanoid:ChangeState(Enum.HumanoidStateType.Jumping)
		end
		char.Humanoid.MoveToFinished:wait()	
	end
end

-- GAME LOOP
while true do
	task.wait(2)	-- task.wait() is the preferred method now
	--task.wait(math.random(1, 10))	-- An alternative wait with a random time. 1s >> 10s
-- Loop through the list of Destinations and move to each in turn	
	for index, destination in ipairs(Destinations) do
		moveToPosition(destination)
		-- Could add any further required waits in here
	end

	wait(2) ---how much time inbetween loop
end