As a developer it is currently hard to encourage players to buy access to your game(s). As well as that it is hard as a player to know if they want to buy a paid access game because they might not know anything about it, even if they watched a youtube video, the game could be skill based and they might not know how hard the game is if they just watched a youtuber play the game.
If Roblox added an optional demo / trial for paid access games then players could trial the game, see if they like it and make a decision if they should buy the game. Developers would have to enable Paid Access before they can enable a demo / trial mode. If the player is in a demo / trial mode then MarketplaceService
would be partially disabled, meaning the only thing the demo / trial player would be able to be prompted to buy is the game itself. If the player does, for example, click on a “Buy Cash” button then they will be automatically prompted to buy the game instead of the cash!
The developer could change different settings to do with the demo / trial mode, such as:
- The Duration
- Chat: Disabled or Enabled
- Data Stores: Do You want to keep the players data from the free trial
The Duration would be useful for example, an open world game that has no end, you could limit the amount of time the trial / demo player could spend in the game before they are kicked. You won’t have to have a duration as setting it to 0 would result in unlimited time. The developer could make a GUI with a TextLabel in it, the text could be set to the amount of time the trial / demo player has left using a new function called :TimeLeft()
. Developers could use a localscript in the TextLabel to show how much time the player has left:
Code For LocalScript
while wait() do
script.Parent.Text = game.Players.LocalPlayer:TimeLeft()
end
The code above would repetitively set the text of the scripts parent to the time left of the trial / demo, the default format would probably be, 0:37, which means 0 hours and 37 minutes left. In the brackets of :TimeLeft()
the developer could put the parameters Enum.TimeLeftFormat.Mins
, Enum.TimeLeftFormat.Hours
or Enum.TimeLeftFormat.MinsAndHours
(Defualt). I don’t think roblox themself should make a TimeLeftGUI for CoreGui becuase no matter what it looks like or where it is placed on the screen at least 1 developer will be unhappy about it, so that’s why its up for the developer themselves to add a TimeLeftGUI. Even though Roblox won’t make a TimeLeftGUI, roblox will make warning messages saying how long the trial / demo player has left in the game when the trial / demo player is on thier last 15 minutes AND their last 2 minutes. Developers can have the ability to make their own warning messages by disabling the default TimeLeftWarningGUI and using an if statement that checks if TimeLeft is equal to a certain time. Roblox’s defualt (CoreGui) warning messages can be disabled by the developer though using this code:
Hide TimeLeftWarningGUI Code
local StarterGui = game:GetService(“StarterGui”)
StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.TimeLeftWarning, false)
Chat would be useful for if you want the player to be like Guests
were, because essentially that’s what trial / demo players are! I doubt developers would want to disable chat but it will be there if it is needed!
Data stores would be useful for if the game was, for example, a “Survive The Disasters” type of game where the player has coins that they get when they survive a disaster, if the developer wanted to they could persuade the demo / trial player to purchase access to the game buy saying something like “To get coins you need to buy the game”.
There could be a new function called :IsaTrialPlayer()
. This will return true if the player is currently on a trial. This feature would be useful for a speed run game, where the player could only complete the first 3 levels of the game with the trial, so when the player has finished the third level a script would run and it would check if the player is on a trial, if it returns true then the script would :PromptPurchase(player, gameId)
instead of letting the player move onto the next level.
If a developer accidentally :PromptPurchase()
the game for a player who has already bought the game then a bit like a gamepass it would say “You Already Own This Game”.
If this issue is addressed, it would improve my development experience because I would be able to get more people to buy access to my games and I know other developers would love this feature as well as they could also get more into their games!