Modding Tutorials/Writing custom code

From RimWorld Wiki
Revision as of 05:46, 2 May 2014 by Jpwrunyan (talk | contribs) (formatted to look prettier)
Jump to navigation Jump to search

In addition to creating data for the game to use, you can also write code. You could probably write in any .NET language, but I’ve only tested C#.

1. Create a new project in your code editor of choice. I use Visual Studio, but MonoDevelop also works well and has the advantage of being free.

2. In your project, add references to these DLLs:

(RimWorldInstallFolder)/RimWorld_Data/Managed/Assembly-CSharp.dll
(RimWorldInstallFolder)/RimWorld_Data/Managed/UnityEngine.dll

3. In your project properties, change the target framework to .NET 3.5

4. Create a new class in a new code file.

5. You’ll want to add these namespace to each of your source files as necessary.

using UnityEngine;  	//For all Unity functionality, rendering, resource management
using AI;		//RimWorld AI
using Sound;	        //RimWorld sound subsystem
using UI;		//RimWorld GUI

6. Write your class and compile it into a .dll. Note that by default, Visual Studio will compile all the references of the project as well, so you’ll get a copy of UnityEngine.dll and Assembly-CSharp.dll and some others. You don’t need these. Just take YourModName.dll.

7. Place the .dll in the YourModeName/Assemblies folder of your mod.

8. Reference the classes in your .dll from the xml data in the YourModName/Defs folder. For example, you could create a new ThingDef with a <thingClass> that points to a class in your .dll.

9. The game should load your class now.

10. If you wish, you should also release your source code in the YourModName/Source directory.


You can find a small tutorial project here: Modding Tutorials/Assembly Modding Example