1. How to Get Started
PolyWorld! is a sandbox social platform inspired by classic retro 3D game engines. You can play community-made games, hang out with friends, or build your own stuff in their custom editor.
To get started:
- Head over to their website at polyworld.games.
- Create an account using the Register button (or jump in temporarily as a guest via Play as guest).
- Go to the Download tab and grab the desktop app.
- Check out the other tabs: Catalog, Creations/Toolbox, and Forum/Discord.
2. How to Play and Controls
The controls stick to standard PC layout:
- Movement: WASD or Arrow keys.
- Jump: Spacebar.
- Camera: Hold right-click and move your mouse to orbit. Scroll wheel to zoom.
- Interact: Press E or F to talk to NPCs or open doors.
- Items: Left-click to use held items.
For your avatar, head to the Catalog tab to swap face textures, wear custom 3D accessories (.obj models), and tweak body colors.
3. Creator Guide (PolyWorld! Studio)
PolyWorld! Studio is the editor where all building happens.
1. Building and Parts
You build using basic blocks (Parts). Try keeping Toolbox models under 512 parts to avoid lag. You can also import custom image textures and .obj meshes.
2. Scripting Basics
Studio relies on Luau with Roblox-style API syntax.
Example 1: Lava / Kill Part
local killPart = script.Parent
killPart.Touched:Connect(function(hit)
local humanoid = hit.Parent:FindFirstChildOfClass("Humanoid")
if humanoid then
humanoid.Health = 0
end
end)
Example 2: Simple Chasing NPC
local killer = script.Parent
local function getClosestPlayer()
local closestCharacter = nil
local shortestDistance = math.huge
for _, player in pairs(game.Players:GetPlayers()) do
if player.Character and player.Character:FindFirstChild("HumanoidRootPart") then
local dist = (killer.Position - player.Character.HumanoidRootPart.Position).Magnitude
if dist < shortestDistance then
shortestDistance = dist
closestCharacter = player.Character
end
end
end
return closestCharacter
end
task.spawn(function()
while true do
local target = getClosestPlayer()
if target and target:FindFirstChild("HumanoidRootPart") then
local direction = (target.HumanoidRootPart.Position - killer.Position).Unit
killer.Position = killer.Position + direction * 0.5
end
task.wait(0.05)
end
end)
killer.Touched:Connect(function(hit)
local humanoid = hit.Parent:FindFirstChildOfClass("Humanoid")
if humanoid and humanoid.Health > 0 then
humanoid.Health = 0
killer.Position = Vector3.new(0, 50, 0)
end
end)
3. Saving and Publishing
Go to File -> Save to PolyWorld in Studio. Open your game settings, add a name, description, and thumbnail, then set visibility to Public.
4. Where to Find Help
Join their official Discord linked at the bottom of polyworld.games for help, scripts, and updates.
Good Game - Bronek=D