Studio Lite lets you build, script and publish games just like Roblox Studio, but simpler and mobile friendly!
This is a collection of Tips and solutions to Frequently Asked Questions:
1. Publishing - create an API-key :
To publish your Studio Lite game to your Roblox profile, there are a few one-time steps to create an API key. When you FILE, Save… your game, checkmark () the Publish checkbox, and Save. The “Help” button on the Publish screen will show these 11 steps.
If your game’s name and description don’t appear on your published game, you might have missed something in step 9 above.
2. Can't paste API key :
Pasting the API key works on mobile for most people. Some keyboard apps on mobile move your screen too far up to paste. If that happens, turn your screen the tall way to see and paste the key.
3. All Ages :
You can improve your published game’s visibility by completing Roblox’s Audience Questionnaire in the Creator Hub. On mobile tap More (. . .) then Create (</>), tap your game, then tap the “☰” and find Audience, Questionnaire. Based on your answers, you might get the “All Ages” rating so everyone can see it.
4. No Undo :
Be sure to save your work often (every 10 minutes) just in case of a power or internet failure, or something else bad happens. And save a backup copy to a second game position. Then only “Publish” when you have a good working version of your game.
5. Spawn any model from the Roblox catalog (store) :
You can spawn and position any model or mesh from create.roblox.com/store. Note this will error in Play mode, but works in the published game.
(1) Find the model you want at create.roblox.com/store and press “Get Model” to add it to your inventory.
(2) Copy the model’s asset_Id number from the store address bar between slashes (something like store/asset/123456/).
(3) Place this script in ServerScriptService with the asset you copied:
local a = game.InsertService:LoadAsset(123456) --replace with asset_Id.
a.Parent = workspace
a:PivotTo(CFrame.new(0,5,70) * CFrame.Angles(0,math.rad(90),0)) --First CFrame is position, second is rotation.
6. Make a walking NPC (R15) that looks like anyone :
Insert either a soldier or zombie depending on the walking animation you want. Delete the script inside it called NPC or zNPC. And put this script inside the model:
local h = script.Parent:WaitForChild("Humanoid")
local hd = game.Players:GetHumanoidDescriptionFromUserId(312736171) --Anyone's UserId. This is a Tiger avatar.
h:ApplyDescription(hd)
while true do
h.WalkToPoint = Vector3.new(20,0,10)
wait(3)
h.WalkToPoint = Vector3.new(-20,0,-10)
wait(3)
end
7. Animation: Make all players walk like Zombies :
Replace the player’s animation with any animation codes shown at the end of this document: Using Animations | Documentation - Roblox Creator Hub Put this Script (not local) in StarterCharacterScripts. Or put it in a Zombie model to make them walk Stylish (change the numbers according to the link above):
wait(1)
local animateScript = script.Parent:WaitForChild("Animate")
animateScript.run.RunAnim.AnimationId = "rbxassetid://616163682"
animateScript.walk.WalkAnim.AnimationId = "rbxassetid://616168032"
animateScript.idle.Animation1.AnimationId = "rbxassetid://616158929"
animateScript.idle.Animation2.AnimationId = "rbxassetid://616160636"
if animateScript.idle:FindFirstChild("Animation3") then
animateScript.idle.Animation3.AnimationId = "rbxassetid://885545458"
end
8. Output window of any published game :
You can see the Output window of any published game on Roblox by chatting “/console”. It’s a good way to check for script errors in a live game. Anyone can see Client messages, but only the creator can see Server messages.
9. Alt Keyboard :
A common problem can happen if you use the Alt Keyboard (your device’s keyboard instead of the small blue keyboard). Your device’s keyboard probably has autocorrect. That can cause problems for scripts. For example, if you want “local abc = game.Workspace” most autocorrects will insert a space after the period, or they might capitalize the first word in the sentence. Another easy mistake is in an “if” statement, if you want to compare something for equal, use ==.
10. Too many models :
If you reach the 4MB limit in your game, and you have many copies of the same model (like Zombies for example), then you can reduce your game storage size by having just one Zombie in Workspace and use this script in ServerScriptService to clone and reposition it multiple times when your game starts:
local z=workspace:WaitForChild("Zombie")
for i=1,20 do
local zz=z:Clone()
zz:PivotTo(CFrame.new(40,4,i*10))
zz.Parent=workspace
end
11. Badges :
Badges docs with sample scripts you can copy and paste: Badges | Documentation - Roblox Creator Hub
The Badge Service will cause an Error in the Studio Lite Play/test mode, but should work fine in your published game.
12. Gamepasses :
Gamepass docs with sample script you can copy and paste: Passes | Documentation - Roblox Creator Hub
Your Gamepasses will not be accessible while Play/testing in Studio Lite, but should work fine in your published game.
13. Welds :
To weld two parts together, first make sure the parts have unique names (like PartA and PartB). Then insert a WeldConstraint inside one of them. Next you need to set two properties of the weld constraint: Part0 and Part1. Tap the Part0 property value (the blank area), and in Explorer tap the first part you want included in the weld (PartA for example). Its name will show up in the weld constraint Part0 property. Then do the same with the Part1 property value and PartB.
14. HD Admin or similar scripts :
To get HD Admin in your published game (won’t work Play/testing in Studio Lite): First find it in the Roblox Store https://create.roblox.com/store/asset/857927023/HD-Admin
and tap “Get Model” to add it to your inventory. Then make a Script in ServerScriptService and paste:
game.InsertService:LoadAsset(857927023).Parent = workspace
15. Sample Cutscene :
Works in Play/test mode and Published. Paste this into a LocalScript in StarterCharacterScripts. Experiment with different target position and rotation numbers.
local cam=workspace.CurrentCamera
local ts=game:GetService("TweenService")
cam.CameraType=Enum.CameraType.Scriptable
local target=CFrame.new(70,50,0)*CFrame.fromOrientation(math.rad(-30),math.rad(90),math.rad(0))
local tween=ts:Create(cam,TweenInfo.new(3),{CFrame=target})
tween:Play()
tween.Completed:Wait()
cam.CameraType=Enum.CameraType.Custom
16. Morph :
You can find some morph models here https://create.roblox.com/store/models?keyword=morph and insert them using Tip#5 above.
OR. . . Morph to the avatar of any Player’s UserId by placing this script into an anchored Part that represents where the avatar will appear. To find a player’s UserId, you can view their Roblox profile using a browser (instead of the app). The UserId will be a number in the URL at the top of the browser. For example: ScottSpiritWalker - Roblox
--MORPH to a UserId appearance with Proximity Prompt.
--Place this script into an anchored Part that represents where the avatar will appear.
local morphPos = script.Parent
local hd = game.Players:GetHumanoidDescriptionFromUserId(312736171) --Anyone's UserId. This is a Tiger avatar.
local model = game.Players:CreateHumanoidModelFromDescription(hd, Enum.HumanoidRigType.R15)
model:SetPrimaryPartCFrame(morphPos.CFrame)
model:WaitForChild("HumanoidRootPart").Anchored = true
model.Parent = workspace
model.Name = "Morph"
local pp = Instance.new("ProximityPrompt")
pp.ActionText = "Morph"
pp.Parent = model
pp.Triggered:Connect(function(player)
local newAvatar = model:Clone()
local char = player.Character or player.CharacterAdded:Wait()
newAvatar:SetPrimaryPartCFrame(char.PrimaryPart.CFrame)
for _,j in pairs(char:GetChildren()) do
if j.ClassName == "Tool" or j:IsA("LuaSourceContainer") then
j.Parent = newAvatar
end
end
newAvatar.Name = player.Name
player.Character = newAvatar
newAvatar.ProximityPrompt:Destroy()
newAvatar.Parent = workspace
newAvatar:WaitForChild("HumanoidRootPart").Anchored = false
end)
morphPos.Transparency = 1
morphPos.CanCollide = false
17. Accessories :
Here is an example of how to add accessories to players, glasses in this case. You just need the accessory assetId. You don’t have to have it in your inventory. Works in Play/test mode and Published. Layered clothing requires a few more variables. More info here: Character Appearance | Documentation - Roblox Creator Hub
------------------------------------------------------------------------------
--ProximityGiveGlassesScript - When a player walks near this script's --
-- parent part, they will be prompted to get/remove a glasses accessory.--
------------------------------------------------------------------------------
local pp = Instance.new("ProximityPrompt")
pp.ActionText = "Glasses On/Off"
pp.Parent = script.Parent
pp.Triggered:Connect(function(player)
if player and player.Character then
local h = player.Character:FindFirstChild("Humanoid")
if h then
local desc = h:GetAppliedDescription()
-- Multiple face accessory assets are allowed in a comma-separated string
local cnt = 0
desc.FaceAccessory, cnt = desc.FaceAccessory:gsub("2535420239","") --already equipped? remove it.
if cnt == 0 then
desc.FaceAccessory = desc.FaceAccessory .. ",2535420239" --not equipped? add it.
end
h:ApplyDescription(desc)
end
end
end)
18. Terrain :
We hope to add a terrain editor in the future. But, in the meantime, you can build terrain with script.
workspace.Terrain:Clear() --Clear terrain, then fill a position and size with a material.
workspace.Terrain:FillBlock(CFrame.new(0,0,20), Vector3.new(20,6,20), Enum.Material.Water)
workspace.Terrain:FillBlock(CFrame.new(20,0,20), Vector3.new(20,6,20), Enum.Material.Grass)
More info: Terrain | Documentation - Roblox Creator Hub