Skip to content
qcs2017 edited this page Sep 3, 2020 · 17 revisions

Placeables are most objects to place down, as the name may suggest. They can reach from simple decorations up to vending machine or bar selling stuff.

Getting started

Making placeables is rather easy, you'll only need a text editor, the system provided editor will work but we recommend some editor like Notepad++, VSCode, whatever you like that has json highlighting.

Placeables have two important parts, the placeable itself and component configs. Every placeable has to have the main placeable structure to function and can have none or a bunch of component config depending on what the object needs to do in game.

To start, create a ".json" file in the placeables folder. You can either create a new file in a text editor and save it as a ".json" file or create a text file and change the file extension to ".json". Then you can copy the Expensive Bench example and paste it in the .json file you created and edit the file with the information listed below.

For a list of component configs including examples see the Component Configs list.

Structure of a placeable

There's a lot of configurable stuff in a placeable. We'll provide some information on the complicated ones (something like "CreatePrice" should be rather self-explanatory).

Make sure that your placeable has a unique "path" value, this can be pretty much anything but is important for the game for loading, saving and finding the correct placeable, if another mod has a placeable with the same path it'll fail to load and may cause more issues downstream!

Placeable Sounds

The sound that is played when the placeable is placed. (Any number higher than 10 or lower than 0 will play no sound at all)

        OBJ_Place_Generic = 0
        OBJ_Place_Generic_Large = 1
        OBJ_Place_Ceramic = 2
        OBJ_Furniture_Place = 3
        OBJ_AirplaneGate_Place = 4
        OBJ_Place_ATM = 5
        OBJ_Place_MetalDetector = 6
        OBJ_Place_GarbageBin = 7
        OBJ_CounterTopItem_Place = 8
        OBJ_Place_RunWay = 9
        OBJ_Place_WindSock = 10

DisplayCategories

List describing under which UI categories your placeable may be found.

All         = 0
Retail      = 10
Decor       = 20
Comfort     = 30
Operations  = 40
Seating     = 50
Structures  = 60
Tools       = 70
Floors      = 80
Roads       = 90
Fuel        = 100
Baggage     = 110
Food        = 120

TimingDisplayCategory

The category your object should fall into when pax use it.

Uncategorized = 0
Ticketing = 1
Security = 2
Restroom = 3
Rest = 4
Boarding = 5
Hunger = 6
Information = 7
Money = 8
Garbage = 9
Bored = 10
LeaveAirport = 11

RequiredLevels

A list of tech tree levels that are needed to unlock your placeable.

We'll add a list of levels shortly.

RequiredAdministrators

Same as levels but for admin staff (CTO, CFO, etc.).

This is a list given using the names of the admin stuff you need. E.g. "CFO", "CTO", "Foreman".

HourlyPriceCategory

Which category your items cost should fall under, this can only be one category.

Undefined      = 0
Bank           = 1
Infrastructure = 2
Staff          = 3
Retail         = 4
Terminal_Fees  = 5
Runway_Fees    = 6
Airline_Fees   = 7
Land_Purchase  = 8
Transportation = 9
Materials      = 10
Research       = 11
Cheat          = 12
Fuel           = 13
Taxes          = 14
Maintenance    = 15
Advertising    = 16
Grant          = 17

Properties

The properties list describes some basic validations or other properties of your object that are too simple for a component config.

The most important properties:

Wall = 0
StaticObject = 1
Outdoors = 2
Indoors = 3
SecureArea = 4
NonSecureArea = 5
UtilityNetworkProducer = 6
UtilityNetworkConsumer = 7
OnSurface = 8
AttachToWall = 9
Road = 12
TutorialVisible = 18
InvalidDoorPosition = 21
EnclosedSpace = 22
AllowTaxiwayProximity = 28
AboveGround = 30
OnRoads = 31

BlockedBy

Same as properties, but instead of a requirement, this will mean your placeable cannot be placed on the chosen value.

This uses the same list as the properties list does.

StaffRequired

This property will tell the game which staff type is needed to man this object (it is not the amount of workers needed).

Available staff types:

None = 0
Workman = 1
LuggageCar = 2
FuelTruck = 3
Janitor = 5
Staff = 6
Security = 7
Vendor = 8
Admin = 9
Kiosk = 10
Chef = 11
ApronBus = 12

Facing configuration

Since SimAirport is 2D and not 1D, you may want to configure different facings for your object. To do so you'll have to change the facing configuration of your placeable.

There's two important parts to your facing configuration:

  • The rotation type telling the game how many rotations your object has.
  • The facing configs (frontFacing, backFacing, leftFacing, rightFacing) containing the information.

The facing config is further divided in two components, the marker configuration and the sprite configuration. You can have as many sprite and marker configs as you'd like for your object.

Rotate type

Rotate types set how many rotations are needed to completely represent an object from all sides, some simple placeables may look the same from all sides, some may need a custom config for all sides.

None = 4   | No rotation.
Type1 = 0  | 1 Sprite - Front (as Top down view)    : Images are achieved by 90° rotation of the sprite.
Type2 = 2  | 2 Sprites - Front, Left                : Right is obtained by flipping Left horizontally. Back is the same as Front.
Type3 = 1  | 3 Sprites - Front, Left, Back          : Right is obtained by flipping Left horizontally.
Type4 = 5  | 4 Sprites - Front, Left, Back, Right
NotUsed = 3
NotUsed = 3

Marker configuration

The marker configuration is one of the stronger parts of your placeable, for simple decorative objects it can be ignored but as soon as you need interaction with any in game agent (be it a road vehicle or a passenger) you'll have to add a marker to tell them where an action should be done.

Worth of note on the marker configuration are three important properties:

  • ReceiverType, letting the game know what agent this marker is for
  • tag, a short name for the marker which may enable further capabilities
  • blocksConstruction, whether or not this marker blocks construction, this also works if the marker is outside the bounding box of the placeable

Each marker can define an orientation, note that the x value represents left/right (right is positive) while the y value is up/down (up is positive). This means a marker "looking" south will be x, y = 0, -1.

List of ReceiverTypes:

Any = 0
StaffOnly = 1
PaxOnly = 2
PositionOnly = 3

Sprite configuration

Sprite configuration is rather simple, you'll need to set a sprite name for the "sprite" property, this can be a game sprite or a mod sprite.

You have some additional settings like the local position and rotation - you'll need those if you use more than one Sprite on your object or just want to move your sprite around a little, not conforming to the default grid.