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

From RimWorld Wiki
Jump to navigation Jump to search
(Added more in-depth info on each step)
(Split part of it into "Setting up a solution")
Line 1: Line 1:
 
{{BackToTutorials}}
 
{{BackToTutorials}}
  
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#.
+
''This tutorial requires you to have [[Modding Tutorials/Setting up a solution|set up a solution]].''<br/><br/>
 +
 
 +
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#.<br/><br/>
  
# Create a new class library project in your [[Modding Tutorials/Recommended software#IDE.27s|IDE of choice]];
 
## Go to File -> New -> Solution;
 
## Go to C# or .NET -> Library or Class Library (NOT portable);
 
## Enter a project name (solution name automatically updated);
 
## Choose a location, preferably:<br/><pre>(RimWorldInstallFolder)/Mods/(YourModName)/Source</pre>
 
## Untick "Create a directory for solution"/"Create a project within the solution directory",
 
# In your project, add references to Assembly-CSharp.dll and UnityEngine.dll:
 
## Copy these files:<br/><pre>(RimWorldInstallFolder)/RimWorld_Data/Managed/Assembly-CSharp.dll&#10;(RimWorldInstallFolder)/RimWorld_Data/Managed/UnityEngine.dll</pre>
 
## Place them in your project:<br/><pre>(RimWorldInstallFolder)/Mods/(YourModName)/Source/(YourSolutionName)/Source-DLLs</pre>
 
## In your IDE project file browser, right-click the "References" folder and "Add reference";
 
## Choose the ".NET Assembly Browser" tab and "Browse", go to the folder you placed the copied DLLs;
 
## Choose both DLLs and click OK,
 
# In your project properties, change the target framework to .NET 3.5:
 
## In your IDE project file browser, right-click Solution (YourSolutionName);
 
## Choose Properties;
 
## Go to the "Compiling" tab, "Output", "Target framework", "Change" and choose ".NET Framework 3.5",
 
 
# Create a new class in a new code file:
 
# Create a new class in a new code file:
 
## In your IDE project file browser, right-click (YourProjectName), Add -> New item -> C# or .NET -> Class;
 
## In your IDE project file browser, right-click (YourProjectName), Add -> New item -> C# or .NET -> Class;

Revision as of 10:46, 22 August 2015

Modding Tutorials

This tutorial requires you to have set up a solution.

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 class in a new code file:
    1. In your IDE project file browser, right-click (YourProjectName), Add -> New item -> C# or .NET -> Class;
    2. Rename the class to what you want the class name to be, e.g DamageWorker_FlameExtension,
  2. You’ll want to add these namespace to the top of each of your .cs 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
    
  3. Write your class;
    1. Decompile source code to take a look at the game's existing code;
    2. If you still get stuck on anything, any modding questions can be asked on the subforum,
  4. Compile your class into a .dll;
    1. Make sure your project's output type is "class library";
    2. Note: 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,
  5. Place the .dll in the YourModName/Assemblies folder of your mod;
  6. Reference the classes in your .dll from the xml data in the YourModName/Defs folder;
    1. Example: Create a new ThingDef with a <thingClass> that points to a class in your .dll,
  7. The game should load your class now;
  8. Optional: Release your source code.
    1. Most mods include a YourModName/Source folder with the full C# project in it for other modders to check out;
    2. Some mods include a Dropbox download link to their source code in the mod's topic. This is also a possibility.

See also