Luduvo Contents
Theme
On this page

Getting Started

Every game world in Luduvo consists of places. This tutorial covers creating a first place, navigating the editor, and moving 3D objects around.

What is a place?#

A place is a standalone 3D scene and simulation world. It holds the complete state of one game level: every object, every physical constraint, and every script that governs game logic.

A place is this:

Entity hierarchyTree of instancesParts, meshes, lights, camerasPhysical propertiesGravity, collision matrixRigid bodies at 60 HzEnvironment settingsSkybox, ambient light, fogDirectional sun lightScriptsSandboxed Luau on entitiesTicks, input, network events

The entity hierarchy is a tree of objects called Instances: geometric parts, meshes, point lights, cameras, and user interface canvases. Each instance owns its spatial transform and attached component data. The physical properties hold the parameters of the simulation space, including the global gravity vector, collision matrix filtering, and the rigid bodies that Box3D solves at a fixed 60 Hz rate.

The environment settings hold the background and lighting state that the rendering pipeline consumes: the skybox texture, ambient illumination, atmospheric fog, and the directional sun light. The scripts are sandboxed Luau programs attached to entities; they react to engine ticks, process player inputs, mutate entity properties, and coordinate network events.

When a game launches, the server loads this place definition, steps its physics and scripts, and replicates the state of these entities across the network to connected clients.

Installing and launching the editor#

Download and launch the Luduvo Editor (Studio), then sign in with your account.

Creating a new place from the dashboard gives you an empty world template with two default entities:

  • The Baseplate: A large anchored slab at the origin (0, 0, 0). Gravity is active in the physical simulation, so unanchored objects need a surface to rest on; keep this baseplate, or insert your own, to give them a collision floor.
  • The Spawn Point: A marker entity with a position and orientation. When a player joins the place, the engine creates their character at this transform.

The editor has three main areas:

  • 3D Viewport: The central window rendering your 3D world. Navigate the viewport using standard first-person camera controls: hold the Right Mouse Button and press W, A, S, D to fly through the scene (along with Q and E to fly downward and upward), scroll the mouse wheel to zoom, or hold the Middle Mouse Button to pan the camera across the view plane.
  • Hierarchy (Explorer) Panel: Displays the complete tree hierarchy of all instances in the current place. Selecting an item in the tree immediately highlights it in the 3D viewport.
  • Properties Panel: Shows the raw component fields of the currently selected instance (such as Position, Size, Color, Material, and Anchored). Modifying a value here immediately updates the entity’s underlying data.

Working with 3D objects#

Building a scene starts with placing and arranging 3D shapes. Insert a new primitive (such as a Block, Sphere, or Cylinder) into the entity tree from the editor toolbar.

Selecting an instance activates three transform tools in the viewport:

  1. Translate (Move): Slides the entity along cardinal axes in 3D space. Selecting the move tool displays a 3D gizmo with three colored arrows:
    • Red arrow: Moves along the X axis (left/right).
    • Green arrow: Moves along the Y axis (vertical height/elevation).
    • Blue arrow: Moves along the Z axis (forward/backward). Dragging an arrow shifts the entity’s Position vector.
  2. Rotate: Spins the entity around its local or global coordinate center. Circular gimbal rings appear around the object; dragging a ring updates the entity’s orientation matrix/quaternion.
  3. Scale (Resize): Adjusts the physical dimensions (Size) of the entity. Dragging the bounding handles stretches or shrinks the part along the chosen axis.

Physical bodies respond to gravity and collision impulses by default. Setting Anchored = true configures the entity as a static collision boundary in Box3D, preventing gravity and contact forces from displacing it.

Playtesting locally#

The editor runs the same simulation locally, so you can test a place before you publish it:

  1. Click the Play button in the top toolbar (or press F5).
  2. The editor starts the 60 Hz simulation loop: physics begins stepping, server and client scripts initialize, and the player character spawns on the spawn point.
  3. Walk around with WASD and jump with Space to test the platforming layout, collision boundaries, and camera behavior.
  4. Click Stop (or press Shift+F5) to end the simulation and restore the place exactly as it was before the test.

Where to go next#

Places hold the objects; scripts give them behavior:

  • Read How to write your first script to learn how Luau code attaches to instances and executes within the engine’s instruction budget.
  • Read Instances to understand the underlying tree data structure, component cleanup, and direct entity handles.
  • Explore The Simulation Tick to see how the fixed 60 Hz physics and script execution loop runs.
  • Browse the API Reference for the specification of every class, property, and method exposed to Luau.