Difference between revisions of "Modding Tutorials/Writing custom code"

From RimWorld Wiki
Jump to navigation Jump to search
m (formatted to look prettier)
Line 5: Line 5:
 
2. In your project, add references to these DLLs:
 
2. In your project, add references to these DLLs:
  
(RimWorldInstallFolder)/RimWorld_Data/Managed/Assembly-CSharp.dll
+
(RimWorldInstallFolder)/RimWorld_Data/Managed/Assembly-CSharp.dll
(RimWorldInstallFolder)/RimWorld_Data/Managed/UnityEngine.dll
+
(RimWorldInstallFolder)/RimWorld_Data/Managed/UnityEngine.dll
  
 
3. In your project properties, change the target framework to .NET 3.5
 
3. In your project properties, change the target framework to .NET 3.5
Line 14: Line 14:
 
5. You’ll want to add these namespace to each of your source files as necessary.
 
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 UnityEngine;  //For all Unity functionality, rendering, resource management
using AI; //RimWorld AI
+
using AI; //RimWorld AI
using Sound;         //RimWorld sound subsystem
+
using Sound;         //RimWorld sound subsystem
using UI; //RimWorld GUI
+
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.
 
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.

Revision as of 05:46, 2 May 2014

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