Get started

Install Studio

Studio is a Windows app. It reads GTA V’s own files on your PC, so nothing from Rockstar ships with it.

What you need

  • A Windows 10 or 11 PC (64-bit). The WebView2 runtime Studio uses comes with both.
  • GTA V installed on the same PC. Studio finds it by itself: Rockstar, Steam and Epic installs, and the game folder FiveM uses.
  • CodeWalker, to save the building you want to build in from the game’s archives (see Import).

Install it

  1. Download the setup. Beta testers get it from the beta page; buyers get the link with their licence key.
  2. Run it. If Windows SmartScreen warns about an unknown app, click More info › Run anyway.
  3. Click Install. Studio installs for your Windows user only, in AppData\Local\Programs\MNIMIZE Studio, so no admin rights are needed. It goes in the Start menu, on the desktop if you leave that switch on, and in Windows’ list of apps, where you can uninstall it again. Uninstalling keeps your projects in Documents\MNIMIZE Studio.

Rather not install it? Download the zip instead, unzip it into a folder you can write to (not Program Files: Studio updates itself in place) and start MnimizeStudio.exe.

Updates

Studio checks for a new version every time it starts and downloads it in the background. When it’s ready, the status bar says Update x.y.z ready · Restart. Click it, or the update installs the next time you open Studio. Your projects aren’t touched.

Sign in

The first time Studio starts, it asks for your licence. There are two ways:

With Discord

  1. Click Sign in with Discord. Your browser opens mnimize.com.
  2. Sign in with the Discord account you bought Studio with (beta testers: the account with the Beta Tester role).
  3. Check that the four-letter code in the browser is the one Studio shows, then click Sign in to Studio. Studio carries on by itself.

A sign-in link works for 10 minutes and only once. If it runs out, start again from Studio.

With your licence key

Paste the key from your licence email, from mnimize.com/licence or from the beta page. Bought without Discord? You can link the key to your Discord account on your account page.

PCs and working offline

  • A licence works on 2 PCs at a time. To move it, sign the old PC out in Studio’s settings or on your account page.
  • Studio checks the licence with mnimize.com when it starts, and keeps working offline for up to 30 days between checks. Beta keys need a check every 7 days.

Your first interior

Every project goes through the same ten steps, on the rail down the left of the window. Each step has a short checklist; when its required items are ticked, Next takes you on. The short version:

  1. Import the building’s files, saved from the game with CodeWalker.
  2. Place it where it stands in the world, straight from its .ymap.
  3. Square up the grid to a wall and set the floor height.
  4. Draw the rooms on the floor. Walls, floor and ceiling are made for you.
  5. Add openings: doors, windows, archways and stairs. At least one has to lead outside.
  6. Clean up the building’s faces and collision that are in the way.
  7. Add props from the game, pipes and customer desks.
  8. Finish the floors, walls and ceilings, and choose what players can change.
  9. Check it: fix what the checklist finds and look at the budget.
  10. Export the resource, copy it to your server and ensure it.
Try it first

Try the demo on the welcome screen opens a built-in building, so you can try every tool before you import anything. The demo isn’t saved.

Projects

File › New project… (Ctrl N) asks for a name and what you’re making:

KindWhat it is
InteriorAn MLO inside a GTA V building. Any room in it can also be a storage unit or a lab. Starts at Import.
Rentable interiorNo building: rooms on a grid, hidden underground, with a copy per upgrade level for a housing script to rent out. Starts at Rooms. See Rentable interiors.
New buildingComing later.
  • Projects save by themselves a moment after every change. Ctrl S saves at once. The title bar says Saved, Saving, Unsaved or Save failed.
  • Edit › Undo (Ctrl Z) goes back up to 100 steps; Redo is Ctrl Y.
  • File › Projects… lists your projects; File › Show project folder opens the one you’re in. A deleted project goes to Projects\.trash, so you can get it back.

The editor

PartWhat’s in it
Title barThe File, Edit, View and Help menus, the project’s name, whether it’s saved, how many steps are done, and Export. Drag it to move the window; double-click it to maximise.
Step railThe ten steps. A step opens once every step before it is done. Clean up is the exception: it opens as soon as a model is imported.
Step panelWhat the step is for, its checklist (optional items are marked), its tools and Next. Items still to come are listed under In development.
ViewportThe 3D view. Its toolbar switches Textured, Solid and Wire, X-ray, Collision (once a .ybn is imported) and Cutaway, which cuts away everything 1.5 m above the floor you’re working on. Drop files on it to import them.
Side panelInspector shows whatever is selected: a room, an opening, a prop, a desk. Scene lists everything in the project.
Status barHints for the tool you’re using, the X Y Z under the cursor, and updates.

Help › Settings… has the interface size (85 to 130%), the orbit speed and Invert wheel zoom.

Controls

F1 shows them in the app too.

Camera

Orbit around the point under the cursorRight-drag, or Alt + left-drag
PanMiddle-drag
Zoom towards the cursorWheel
FlyHold the right button: W A S D, Q down, E up, Shift faster, wheel sets the speed
Focus on a pointDouble-click
Frame the selection / everythingF / Home
Top / front / right viewT or Num 7 / Num 1 / Num 3 (with Ctrl: the other side)
Perspective or orthographicNum 5
Turn the view 90°Q / E
Cutaway on or offC
X-rayAlt Z

Tools

KeyToolStep
OSquare to a wallBuilding
1Add room · Select facesRooms · Clean up
2 3Fill room, Trace roomRooms
4 5 6 7Door, Window, Archway, StairsOpenings
8PipeProps
PPaintFinish
VSelect and edit (puts the tool away)Any

Editing

Snap to 50 cm instead of 5 cmHold Shift
No snappingHold Ctrl
Nudge the selection 5 cm (50 cm)Arrow keys (with Shift)
Turn a prop 90° (15°)R (Shift R)
Finish a traced room or a pipeEnter
Take back the last corner or bendBackspace
Delete the selectionDelete
Cancel, stop the tool, deselectEsc
Copy and paste a room, with its openings, props and pipesCtrl C / Ctrl V
Undo / redoCtrl Z / Ctrl Y
Import filesCtrl I

The ten steps

From a GTA V building to a FiveM resource

The screenshots in this guide come from a storage facility I built for my own server, with 35 units inside an existing GTA V building.

Step 01

Import the building

Studio's Import step with the building's model, textures, collision and map file listed
The Import step, with the building’s files listed by kind.

Pick a building in the game that you want an interior in, and save its files from the game’s archives with CodeWalker’s RPF Explorer:

FileWhat it is
.ydrThe building’s modelNeeded
.ytdIts textures, so it looks right and you can use them in your roomsOptional
.ybnIts collision, so you can clean it up where your doors goOptional
.ymapThe map file that places it, so Place is one clickOptional

Drop them on the drop zone or the viewport, or use Import files (Ctrl I). Studio also takes .yft, .ydd and .ytyp. The files are copied into the project; importing a file with the same name replaces the old one.

  • The biggest model becomes the main model, the building you build in. Click the target icon next to another model to use that one instead.
  • Other models are placed by their own entry in an imported .ymap. If none places them, they’re marked not placed.
  • A .ytyp from another resource adds its doors to the door list. That resource then has to run on your server too.
Finding the files

In CodeWalker’s world view, click the building to see its model’s name and the .ymap it’s in. Then find those files in the RPF Explorer and save them.

Step 02

Place it in the world

Studio's Place step with the map file's entities listed
Placing the building from its map file.

Studio needs to know where the building stands in GTA, so the interior lines up with it in game. There are two tabs:

  • From map file lists what the imported .ymap places, with your model first (· your model). Click it and the building goes exactly where the game has it. Filter by name narrows the list.
  • Type it in: paste a position from the game into Paste from the game. It takes vec4(x, y, z, h), vector3(x, y, z) or plain x, y, z, h. Then Place here. A typed position is where the model’s origin goes, so the map file is the more exact way.

Only the heading is used, so the interior is always level. If the map tilts the model, Studio says so.

Step 03

Square up the building

Studio's Building step with the grid squared to the building's wall
The grid squared to the building.

Rooms are drawn on a grid. This step lines the grid up with the building:

  1. Square to a wall (O): click one of the building’s outside walls. The grid turns to match it.
  2. Set the floor height: click the ground or the floor the interior will stand on.

The Grid panel shows the angle and the floor height; Reset goes back to the model’s own axes. Cutaway (C) and the top view (T) make the floor easier to reach.

Why it matters

Rooms snap to the building’s walls only where they run along the grid, so a squared grid is what makes rooms fit the building.

Step 04

Draw the rooms

Studio's Rooms step with 35 storage units drawn inside the building
The storage facility’s rooms, drawn on the building’s floor.

Each room gets a floor, walls and a ceiling. Four tools:

Add room 1Drag a rectangle on the floor. The size and area show as you drag.
Fill room 2Click the floor and the room grows to the walls and rooms around it. A side with no wall stops 2 m out.
Trace room 3Click the corners one by one for an L-shape or any other shape with square corners. Click the first corner or press Enter to close it; the last wall is squared for you.
Select and edit VDrag the handles to resize, drag the floor to move. Arrows nudge it; Delete removes it.

Snapping

Edges snap to the building’s walls (Snap to the building’s walls), then to other rooms, then to rooms on other floors, and otherwise to a 5 cm grid. Shift gives 50 cm, Ctrl turns snapping off.

Walls between rooms

Two rooms next to each other share a wall: the gap between them. Walls between rooms sets how thick (10, 15, 20 or 30 cm; 15 to start with), and snapping leaves exactly that gap. If shared walls end up thinner, the panel offers to fix them. Outer walls reach back to the building’s own wall by themselves.

Ceiling height for new rooms is 2.8 m to start with (2.6, 2.8, 3.0 or 3.5).

The room inspector

  • Fit to walls grows a rectangle to the building’s walls. Fit height raises the ceiling to what’s above. Fit floor drops the floor onto the building’s floor.
  • Width, Depth, Height and Floor (m up) take exact sizes.
  • Same size as … copies the outline of the room above or below.

Floors, split levels and stairs

The Floors section picks the floor you’re drawing on; the grid and the cutaway follow it. + Floor above starts a new one, and a floor’s Height above the ground floor moves every room on it.

  • Floors less than 1.5 m apart are split levels. They share walls and doors, and a door between them gets steps on the lower side by itself (railings from a 50 cm rise).
  • Floors 1.5 m or more apart need stairs, which go in at the Openings step.

Step 05

Doors and windows

Studio's Openings step with a garage door selected
A garage door selected in the opening inspector.

Pick Door (4), Window (5) or Archway (6) and click a room’s wall. The opening snaps to the middle of the wall or to 5 cm, and if there’s a hole in the building’s wall behind it, it takes the hole’s size.

KindSize to start withPresets
Door0.90 × 2.10 mSingle 90, Wide 100, Double 160
Window1.20 × 1.20 m, sill at 0.90 mSmall, Standard, Wide, Tall
Archway1.20 × 2.30 mStandard, Wide

Outside, or between rooms

Studio works out where an opening leads: if another room is right behind the wall, it’s between rooms; otherwise it goes to the outside. Every opening becomes a portal: the outside ones to the world outside, the others from room to room. Goes outside in the inspector overrides the guess.

The interior needs at least one door or archway to the outside; until it has one, Props and Finish stay locked.

Clean up the building’s wall too

An opening to the outside doesn’t cut the building’s own wall yet. Delete the faces and collision in front of it at the Clean up step, or players walk into the building’s wall.

The opening inspector

  • Size: presets, or Width (0.4 to 6 m), Height, Sill for windows, Raised for doors and archways above the floor, and Wall depth. Fit to the building’s opening snaps it to the hole behind it.
  • Frame around it, with its width and its texture.
  • Doors: Plain, Panels, Glass or Garage; Game door or Built by Studio; Double door and the hinge side. Open and shut shows it moving.
  • Windows: one, two or four panes, a window board inside and a sill outside.
  • Drag the white handles to resize (they snap to the building’s opening), drag the opening to slide it along the wall, and nudge it with the arrows. ↑ ↓ move a window’s sill.

Game doors

A new door starts as one of the game’s own doors. Game door opens a list of all 575 door models in GTA V, plus those in any .ytyp you imported. Search it by name (v_ilev, garage); it lists the doors closest to your opening’s width first. Fit the opening to it makes the opening the door’s size. If the opening is bigger than the door, Studio fills the gap around it.

How doors open in game

  • Game doors and doors built by Studio (Plain, Panels, Glass) are real game doors in the portal: the game swings them, and door-lock scripts can lock them.
  • Garage doors open in storage units, where your housing script runs them. In any other room a garage door is fixed shut.

Doors above the floor

When a door sits higher than the floor next to it, Studio adds steps up to it, with a landing the door swings over. Under 5 cm is just a lip. At 1.5 m or more, Check asks for stairs instead.

Stairs

Stairs (7): click inside a room. The stairs climb to the room above, which gets a hole with a railing round it and a portal.

  • Shape: Straight, L-shaped or U-shaped. Style: Solid, Floating, Stringers or Steel.
  • Railings: Auto, both sides, left, right or none. Width: 80 to 150 cm.
  • Climbs is worked out from the room above; type a height to set it yourself. Drag to move, R to turn.

Step 06

Clean up the model

Studio's Clean up step with faces of the building selected
Selecting the building’s faces that are in the way.

Remove the parts of the building that get in the way of your interior: the outside wall in front of a door or window, floors and walls inside your rooms, collision that blocks the way in. This step opens as soon as a model is imported.

  1. Pick Select faces (1). Choose what a click picks: a Face, a Flat area (the faces around it in the same plane) or the Whole part.
  2. Choose From: Model or Collision (once the .ybn is imported).
  3. Click, or drag a box. Shift adds, Ctrl takes away, Esc clears.
  4. Delete. With Also delete the collision under deleted faces on, the collision there goes too.

A box only picks faces you can see: turn on X-ray to pick through, and with the cutaway on, only what’s below the cut. Restore all brings everything back; so does Ctrl Z.

The building in your export

Deletions are kept in the project; your imported files aren’t changed. The export writes the building’s model and collision without them, under their original names, so they replace the game’s. Only one resource on a server can replace the same file.

Step 07

Props and pipes

Studio's Props step with crates, pallets and pipes in a corridor
Pipes, pallets and crates from the game.

The game’s props

Pick a quick list (cardboard boxes, crates, pallets, shelves, barrels, tools, bags, bins, chairs, tables) or search all of the game’s props by name. Every word has to match, and | gives alternatives: crate|pallet. Each result shows its size.

  • Click to place it on a floor, against a wall, under a ceiling or on top of another prop. It snaps to 5 cm; Ctrl places it freely.
  • R turns it 90°, Shift R 15°. The prop stays on the cursor, so you can place more.
  • The inspector has Facing (degrees), the height above the floor, On the floor and Place more.

Props go into the export as the game’s own models, so there’s nothing extra to stream. A prop outside every room is left out. Check stops any model your server’s game build doesn’t have.

Pipes

Pipe (8): click on a wall, the floor or the ceiling where the pipe starts, then once for every bend. Runs go straight along the grid or straight up and down, 3 cm off the surface. Click the last bend again, double-click or press Enter to finish. Turn the cutaway off (C) to reach the ceiling.

  • Thickness from 2 to 40 cm (or any size), Roundness 6, 8 or 12 sides.
  • Finishes from red sprinkler pipe to copper, PVC, galvanised and rusty iron.
  • Elbow couplings, end caps and wall clamps are on to start with. Players bump into it gives the pipe collision; use it for pipes low down.
  • Use for new pipes makes the selected pipe’s settings the ones new pipes get.

Customer desks are placed at this step too. See Customer desks.

Step 08

Finish the inside

Studio's Finish step with the texture picker open
Choosing textures for the floors, walls and ceilings.

Paint

Pick a texture for the Brush, then Paint (P) and click a floor, a wall or a ceiling. A click on a wall paints that one wall; Shift paints every wall of the room; Ctrl picks up the texture you click. Brush on all floors, walls or ceilings does the whole interior at once. New rooms get sets what new rooms start with.

The texture picker

Library92 textures, drawn and photographed: walls, floors, ceilings, trim, pipes.
From the buildingThe textures in the files you imported. Their own normal and spec maps come with them.
Your images.png or .jpg. Square sizes like 512 or 1024 work best.
From GTAThe textures of a model in the game, such as its garage doors and shutters.

Every texture has depth: under Depth & shine, the Normal map is made from the texture (or comes with it), Depth goes from flat to twice as deep, and Shine sets how glossy it is. Tile size is how many metres one copy of the texture covers.

Per room

The room inspector’s Finish shows the floor, walls and ceiling of the selected room, and how many walls are painted on their own. Make all the same evens them out.

Under Collision, each surface has a GTA material, so footsteps and bullet hits sound right. Auto guesses it from the texture’s name; pick one yourself if the guess is wrong. Glass (stops bullets) is there too.

Ceiling lights

Every room gets ceiling lights with shadows from its main lights. In the room inspector:

  • Warm, Neutral or Cool; Dim, Normal or Bright; Dense, Normal or Sparse (about 2.5, 3.5 or 4.5 m apart).
  • Shadows (the 1–3 main lights).
  • Without the lights: how dark the room is with them off (Dark, Dim or Soft).

Looks players can buy

This step is also where you choose the looks players can pick from in game. See Surfaces players change.

Step 09

Check it

Studio's Check step with the checklist and the budget
The checklist, the game models and the budget.

The checklist

Studio goes through the interior and lists what it finds. Red items are errors and stop the export; the rest are warnings worth a look. Most items have a button that fixes them, and one that shows you where the problem is. Fix all makes every fix in a sensible order; Edit › Undo takes them back one by one.

You seeWhat to do
Two rooms overlapCut back or Pull apart, or move one yourself.
An opening is off its wallThe room moved without it. Put it back on its wall.
No door or archway leads outsidePlayers could only get in by teleporting. Add one at Openings.
Doors and windows to the outside still have the building’s wall in front of themDelete those faces at Clean up.
A model is not on the serverIt comes with a DLC newer than your server’s game build. Pick another one.
Can’t check the game modelsStudio couldn’t read GTA V. See Troubleshooting.
Props or pipes stand outside the roomsThey’re left out of the export. Move them inside.
A door is too high for stepsPut stairs there instead.

Game models

Every game door and prop you placed is checked against the game build Studio exports for, build 3258. A model that only comes with a newer DLC stops the export, so nothing turns up invisible on your server. Models the game doesn’t keep loaded are loaded with the interior on purpose, so a door or prop never depends on luck to show up. The section lists which game files that takes.

The budget

Per room: triangles and draw calls (one per material). For the whole interior: textures (about how much video memory), the in-game looks, portals and lights. A number turns amber above these, but it doesn’t stop the export:

  • 25,000 triangles or 12 materials in one room
  • 64 MB of textures in all
  • 25 MB of looks players can buy

Step 10

Export the resource

Studio's Export step with the list of written files
An export, with every file it wrote.
  1. Resource name: what you’ll ensure. It starts from the project’s name. Use a to z, 0 to 9 and _, start with a letter, 2 to 40 characters.
  2. If the interior has storage units or labs, answer Will players rent … through an NPC?: Yes, at the customer desk or No. See Customer desks.
  3. Export. The button shows what it’s doing: the rooms, the textures, the menu pictures, the game files.

When it’s done, Studio lists every file it wrote, with its size and any warnings, and Open folder takes you to it. The resource goes in Documents\MNIMIZE Studio\Exports\<name>.

Exporting again rewrites the folder. Studio only does that to folders it made itself: if a folder with that name was made some other way, it asks you for another name.

Next: what’s in the folder and how to put it on your server.

Features

Storage units

A storage unit is a room players rent, behind a garage door, that grows when they buy an upgrade. Draw it at up to five sizes; in game only the size the renter has is there.

Make one

  1. Draw the unit at its smallest size. Its only way in should be the garage door.
  2. In the room inspector: Storage unit › Make it a storage unit. Units are numbered by themselves.
  3. Add garage door puts one in, on the wall to the hallway if there is one (up to 3 × 2.5 m, as much as the wall has room for).
  4. + Bigger size adds the next size: 2 m deeper at the back, and from size 3 on also wider, as far as the neighbours allow. − Narrower and + Wider fine-tune a size by 25 cm a side.
  • Every size is the whole unit at that size, starting at the same front wall as the others.
  • Once a unit has two sizes, Storage units and labs · show size on the Rooms step shows every unit at size 1, 2, 3…
  • Same widths in every unit, Duplicate unit (all its sizes, as the next number), Remove size and Not a unit are in the unit panel.

Check makes sure every size covers the one before it, starts at the same front wall and stays on the same floor, and fixes it when it doesn’t. The export writes every unit at every size as models of its own, the garage door panels, and units.json for your housing script.

Labs

A lab (weed, coke, a money wash…) is a room behind a door from a hallway. It only spawns while its door is open or someone is inside, and it grows through sizes the same way as a storage unit, without the garage door.

  • Room inspector: Lab › Make it a lab. Give it a Name in game, like Weed lab.
  • Give it a door, not an archway: the lab spawns when the door opens.
  • Props you place in a lab appear from the smallest size they stand in.

The export writes labs.json for your housing script.

Customer desks

A reception counter with someone behind it who rents out the storage units or labs. Place it at the Props step: pick Customer desk and click a room’s floor. It faces you.

  • Width from 1.2 to 3 m, Straight or an L to either side. The customers’ side has a ledge at 1.09 m, with a worktop at 75 cm behind it.
  • Someone stands behind the desk: a man or woman in a suit, security, a shop assistant, a warehouse worker, or any ped model you type in.
  • R turns it. Keep the desk and the spot behind it inside the room.

At Export, Yes, at the customer desk writes desks.json: where the person stands, which way they face and the ped model. Your housing script spawns them and lets players rent through them. The figure you see in Studio isn’t exported.

Surfaces players change

Let players restyle a room in game: the floor, the ceiling, all the walls, or each wall on its own, from looks you pick. The swap happens while they stand in the room. No reload, no restart.

  1. In the room inspector, under Players can change in game, switch on Floor, Walls and/or Ceiling.
  2. At the Finish step, a row for each kind of surface appears. Click + (Add a choice) and pick the looks. You can select several at once and Add them together.
  3. Export. The room starts with the texture you painted; the looks are what players can switch to.
  • Every wall is a slot of its own, so one wall can differ from the rest.
  • Each look is its own small texture dictionary, loaded only while it’s in use, with a picture for your menu.
  • The collision stays as built: a new floor look changes how it looks, not how it sounds.
  • Ten to twenty looks per kind of surface is plenty. Check warns above 25 MB.

The export writes surfaces.json and a client.lua with exports your scripts call.

Rentable interiors

A Rentable interior project has no building. You draw rooms on an empty grid, and the export hides the interior underground, with a copy for every upgrade level. It’s made for housing scripts that give each renter a copy of their own, in a routing bucket of their own.

  • It has six steps: Rooms, Openings, Props, Finish, Check and Export.
  • Each room has Opens at upgrade level, 1 to 5. Level 1 rooms are there from the start; higher ones open up behind a wall when the renter buys the upgrade.
  • At Openings, mark the door players come in and leave by: Entrance (players come in and leave here). It has to be in a level 1 room.
  • At Export, pick one of 25 Hidden spots, or My own spot with a vector3 from the game. Each upgrade level is its own MLO, 40 m under the one before.
  • Windows to the outside look into nothing, since the interior is underground.

The export adds interior.json, with every level’s map, origin and the spot players arrive at.

MLOs you already have

Two tools work on MLOs made by you or anyone else, escrowed ones too. Open them under Tools on the start screen, or from the File menu: Audio occlusion and Lights.

  1. Choose folder…: one MLO’s resource folder, or a whole folder like [mlo] with many. Studio scans it straight away (or paste a path and click Scan).
  2. Studio reads the MLOs’ .ytyp and .ymap files and lists every placement.
  3. Tick what you want and write it. The result goes into a resource of its own next to the MLO’s. ensure it and reconnect.

The MLO’s own files are never touched, and Studio won’t write inside the MLO’s resource.

Audio occlusion

Works out which room hears which, through which doorways, and writes it to <resource>_occlusion (or mnimize_occlusion for a folder of resources). MLOs without occlusion are ticked; MLOs that ship their own are left as they are. Those without, All and None change the selection, then Write occlusion.

Lights

Ceiling lights for rooms that have none: only the light, no lamp. Pick Warm, Neutral or Cool and a Brightness from 40 to 200%. Dark rooms are ticked to start with. The lights go every 3.5 m, up to 24 per room, into <resource>_lights. Its script shows them when a player is near.

To take lights away, untick the rooms and write again.

On your server

The export folder

One ordinary resource with everything in it, audio occlusion included. Nothing to convert or pack afterwards. What a storage facility called gronland_lager gets:

gronland_lager/what each file is
  • fxmanifest.luastreams it, registers the .ytyp and the audio
  • README.mdhow to start it, where to teleport in
  • units.json · labs.json · desks.jsonfor your housing script, when the interior has them
  • surfaces.json · client.luawhen players can change surfaces
  • thumbs/a picture of every look, for your menu
  • audio/
  • gronland_lager_game.dat151.relaudio occlusion: rooms and doorways
  • stream/
  • gronland_lager.ytypthe MLO: rooms, portals, doors
  • gronland_lager_mlo.ymapplaces it in the world
  • gronland_lager_manifest.ymfwhat loads with it
  • gronland_lager_col.ybncollision, a material per surface
  • <number>.ymtaudio occlusion paths
  • gronland_lager_room1…N.ydrthe rooms, one model each
  • gronland_lager_lightsN.ydrceiling lights
  • gronland_lager_txd.ytdtextures, compressed, with mipmaps
  • gronland_lager_u1l2.ydr …each unit and lab at each size
  • gronland_lager_gdoor*.ydrgarage door panels
  • gronland_lager_c_N.ytdone small dictionary per look players can buy
  • sc1_22_mall_04bb.ydr …the building, minus the faces you removed
fxmanifest.lua
-- Made with MNIMIZE Studio
fx_version 'cerulean'
game 'gta5'

this_is_a_map 'yes'

data_file 'DLC_ITYP_REQUEST' 'stream/gronland_lager.ytyp'

file 'audio/gronland_lager_game.dat151.rel'
data_file 'AUDIO_GAMEDATA' 'audio/gronland_lager_game.dat'

mnimize_units 'units.json'

mnimize_desks 'desks.json'

files {
    'units.json',
    'desks.json',
}

The mnimize_units, mnimize_labs, mnimize_desks, mnimize_surfaces and mnimize_interior lines are only there when the interior has them. They tell scripts which file to read (see For scripters).

Put it on your server

  1. Copy the export folder into your server’s resources.
  2. Add it to server.cfg, then restart the server:
server.cfg
ensure gronland_lager
  1. Reconnect. The README has the coordinates of the first room, so you can teleport straight in.
One resource per building

The export carries the building’s own model and collision, with the faces you deleted taken out, under the game’s file names. If another resource on your server replaces the same building, only one of them wins. Keep one.

  • The interior is a standard MLO, so door, target and housing scripts see it like any other.
  • Exports run next to the MLOs you made or bought. Doors and props from another resource’s .ytyp need that resource running too; Check reminds you.
  • Studio exports for game build 3258. A server on an older build may be missing models from the newest DLCs.

For scripters

What your scripts can use from an export. Everything is in world coordinates, headings in degrees, sizes in metres. Fields with no value are left out.

Finding the files

Each data file is named in the fxmanifest, so a script can find it in any resource Studio made:

server.lua
-- every started resource that has storage units
for i = 0, GetNumResources() - 1 do
    local res = GetResourceByFindIndex(i)
    local file = GetResourceState(res) == 'started'
        and GetResourceMetadata(res, 'mnimize_units', 0)
    if file then
        local data = json.decode(LoadResourceFile(res, file))
        print(res, data.label, #data.units .. ' units')
    end
end

Surfaces: the exports in client.lua

When players can change surfaces, the export’s own client.lua does the swap. Call it from any client script. Rooms are numbered from 1, the way they’re listed in Studio; slots are 'floor', 'ceiling', 'wall1', 'wall2'… or 'walls' for every wall. A look is its id in surfaces.json; 0 or nil goes back to the look it was built with.

client.lua
-- room 2's floor gets look 8
exports['comicbookstore']:SetSurface(2, 'floor', 8)

-- one wall on its own, or every wall of the room
exports['comicbookstore']:SetSurface(2, 'wall2', 6)
exports['comicbookstore']:SetSurface(2, 'walls', 1)

-- a whole room at once; slots left out go back
exports['comicbookstore']:ApplySurfaces({ [2] = { floor = 8, walls = 1, ceiling = 19 } })

-- back to the look it was built with: these rooms, or all when nil
exports['comicbookstore']:ResetSurfaces({ 2 })

-- the contents of surfaces.json, for your menu
local data = exports['comicbookstore']:GetSurfaceData()
  • SetSurface returns false when the room, the slot or the look doesn’t exist. In ApplySurfaces, a walls entry covers the walls not named on their own.
  • The swap only happens on the client that calls it. Your script applies it for every player near the room, and again when a player joins or the resource restarts.
  • Each look’s texture dictionary is loaded when it’s first used and let go when nothing uses it. Stopping the resource puts every room back.

surfaces.json

Which surfaces can change, and the looks for each kind. facing is the compass direction a wall faces (n, e, s, w) and length its length, handy for a menu. thumb is the look’s picture in the resource.

surfaces.jsonshortened
{
  "version": 3,
  "txd": "comicbookstore_txd",
  "rooms": [
    { "id": 2, "label": "Shop floor", "surfaces": {
        "floor": { "kind": "floor", "diffuse": "…", "normal": "…", "spec": "…" },
        "wall2": { "kind": "walls", "wall": 2, "facing": "e", "length": 6.4,
                   "diffuse": "…", "normal": "…", "spec": "…" }
    } }
  ],
  "choices": {
    "floor": [
      { "id": 8, "label": "Light oak", "thumb": "thumbs/c_8.jpg",
        "txd": "…", "diffuse": "…", "normal": "…", "spec": "…" }
    ],
    "walls": [ … ],
    "ceiling": [ … ]
  }
}

Looks are numbered from 1 within each kind (floor, walls, ceiling), and only kinds that some room lets players change are listed.

units.json

Every storage unit, its sizes and its garage door.

units.jsonone unit, shortened
{
  "version": 1,
  "label": "Grønland lager",
  "units": [
    {
      "id": 1,
      "label": "Unit 1",
      "room": "unit_1",
      "center": [x, y, z],
      "levels": [
        { "level": 1, "area": 9.6, "rooms": 1,
          "zone": { "points": [[x, y, z], …], "minZ": 29.7, "maxZ": 33.3 } },
        { "level": 2, … }
      ],
      "levelProps": ["gronland_lager_u1l1", "gronland_lager_u1l2"],
      "place": { "at": [x, y, z], "heading": 90.0 },
      "door": {
        "model": "gronland_lager_gdoor1p1", "at": [x, y, z], "heading": 90.0,
        "width": 3.0, "height": 2.5,
        "sectional": { "count": 5, "section": 0.5, "thick": 0.04,
                       "top": …, "radius": …, "travel": …, "inward": [0, 1, 0] },
        "panels": ["gronland_lager_gdoor1p1", "gronland_lager_gdoor1p2", …]
      },
      "blockers": []
    }
  ]
}
roomThe unit’s room in the MLO.
levels[].zoneThe floor outline at that size, with the height it spans: the area that belongs to the renter.
levelProps, placeThe model of each size (the first is size 1). Spawn the renter’s size at place, inside the unit’s room.
doorThe garage door. Studio’s own sectional door comes as panels, bottom first, that your script runs along the track in sectional: up and back under the ceiling. A game garage door has only model, at, heading, width and height.

labs.json

Every lab: the model and floor outline of each size, its props, and its door.

labs.jsonshortened
{
  "version": 1,
  "label": "…",
  "labs": [
    {
      "id": 1, "label": "Weed lab", "room": "…", "center": [x, y, z],
      "levels": [
        { "prop": "…", "area": 24.0, "zone": { "points": [ … ], "minZ": …, "maxZ": … } }
      ],
      "place": { "at": [x, y, z], "heading": 0.0 },
      "props": [
        { "model": "prop_…", "at": [x, y, z], "heading": 180.0, "level": 1 }
      ],
      "door": {
        "leaves": [ { "model": "…", "at": [x, y, z], "heading": 90.0, "door": 1 } ],
        "middle": [x, y, z]
      }
    }
  ]
}

Spawn the lab’s size at place while its door is open or someone is inside. A prop’s level is the smallest size it’s there at. door.middle is the doorway, to tell when the door opens.

desks.json

The people behind the customer desks. Written when you answer Yes, at the customer desk at Export.

desks.jsonexample
{
  "version": 1,
  "label": "Grønland lager",
  "desks": [
    { "id": "desk1", "at": [x, y, z], "heading": 180.0, "model": "a_m_y_business_03" }
  ]
}

at is where the person stands and heading faces the customers.

interior.json

Rentable interiors only: one entry per upgrade level, each its own MLO.

interior.jsonexample
{
  "version": 1,
  "label": "…",
  "onDemand": true,
  "levels": [
    { "level": 1, "mlo": "…", "ymap": "…", "area": 42.5, "rooms": 3,
      "origin": [x, y, z], "entry": [x, y, z, heading] }
  ]
}

Load a level’s ymap while someone is inside it, and put players at entry.

Help

Troubleshooting

GTA V wasn’t found

Doors then show as boxes of their size, and Check can’t check the game models, which stops the export. Open a door’s Game door list and click Find GTA5.exe to point Studio at the game.

Next is greyed out, or a step is locked

Next waits until the step’s required checklist items are ticked. A step on the rail opens when every step before it is done. Props and Finish wait for a door or archway to the outside.

Players walk into a wall at the door

The building’s own wall is still in front of the opening. Delete those faces, and their collision, at Clean up.

The interior doesn’t show up in game

  • Check the resource is ensured, restart, and reconnect.
  • Make sure no other resource replaces the same building (see Put it on your server).
  • Doors or props from another resource need that resource running.

“…already exists and was not made by MNIMIZE Studio”

There’s a folder with that name in Exports that Studio didn’t make. Pick another Resource name, or move the folder.

Updates don’t install

Studio’s folder has to be one you can write to. Move it out of Program Files, into Documents for example.

Still stuck?

Ask in the MNIMIZE Discord. Studio’s log helps: %LOCALAPPDATA%\MNIMIZE Studio\logs\host.log.

Where Studio keeps things

ProjectsDocuments\MNIMIZE Studio\Projects, a folder each, with the files you imported
ExportsDocuments\MNIMIZE Studio\Exports
Logs, caches, updates%LOCALAPPDATA%\MNIMIZE Studio
Where GTA V is%LOCALAPPDATA%\MNIMIZE Studio\game.json

To keep everything next to Studio instead, on a USB stick for example, put an empty file called portable.txt next to MnimizeStudio.exe.

Missing something?

Tell us in the Discord what you were looking for, and it goes in the docs.