Skip to content
Cälum edited this page Jan 3, 2020 · 11 revisions

Getting started

We won't get too deep into the how to program a script mod but to get started you need a couple of things:

  • Some IDE like Visual Studio, a normal text editor does the job too but it's way harder.
  • Unity (check your log file for the current version, it's one of the first lines).
  • The SimAirport.Modding library (we currently have no binary, either download or clone this repository).
  • The guts and will to do so.
  • Experience with c# class libraries and .net framework.

To get started up you'll need to create a Class library in .Net Framework, once loaded up add a reference to the SimAirport.Modding library and to the UnityEngine library (usually found under <unity install dir>\Editor\Data\Managed),

If you don't or can't compile the SimAirport.Modding library, download the latest binaries here:

Default Branch -

Your first class must derive from the BaseMod class we provide, only this class will be used as entry points for your mod. Set the necessary properties like mod name and author name.

Example of your derived BaseMod class:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using SimAirport.Modding.Base;
using SimAirport.Modding.Settings;

namespace SimAirport_Script_Mod_Example
{
    public class Mod : BaseMod
    {
        public override string Name => "Example Mod"; // Script Name

        public override string InternalName => "you!.ExampleMod"; // Script Internal Name

        public override string Description => "An example script mod."; // Description

        public override string Author => "you!"; // Author

        public override SettingManager SettingManager { get; set; } // Leave this, game will sort this out.

        public override void OnTick()
        {
           // What the game does every tick. 1 tick = ten millionth of a second
           // Usually, place your if key down stuff in here.
           // You can pause this with Thread.Sleep();
        } 
    }
}

There are more methods that you can find out about.

For the InternalName property it is recommended to use something along the lines of <authorName>.<modName>, it is used to identify the mod, conflicting names may lead to issues!

If you want a direct link to the game, and not the limited api. Refrence AssemblyCSharp.dll from the Steam\steamapps\common\SimAirport\SimAirport_Data\Managed folder. Warning, this is unstable and makes your script non-compatible with default if you are on the edge version of the game and if you are on the default version... vice versa.

Settings

You can use the SimAirport.Modding.Settings classes to provide in game configurations for your mod. The settings will appear in the mod settings menu under settings.

Any setting is automatically saved by the game and loaded again when loading mods, you do not need to save them by yourself.

Proxies

Proxies are classes that provide direct access to game variables, we won't list all methods here since each method is documented in code, see that documentation or ask us if you need guidance.

All proxy classes are Singletons and will be created by the game to ensure the internal methods are correctly applied.

If you think there's a proxy missing or a proxy needs an additional method for your mod please create an issue with a proposal for the Prox / Method(s), what value they should work on and why you'll need them.

List of proxies

  • EventSystem: Events that happen in-game or change the game state.
  • Game: General information about the current played game.
  • GameTime: Information about the current time.
  • Graphics: Access to the internal SpriteManager for internal and custom Sprites.
  • Map: Information about the map.
  • I18n: Access to the I18n system for translation.