Editing Modding Tutorials/Writing custom code
Jump to navigation
Jump to search
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 1: | Line 1: | ||
− | + | 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#. | |
− | |||
− | + | # Create a new class library project in your code editor of choice. I use Visual Studio, but MonoDevelop also works well. | |
+ | # In your project, add references to these DLLs:<br/><pre>(RimWorldInstallFolder)/RimWorld_Data/Managed/Assembly-CSharp.dll (RimWorldInstallFolder)/RimWorld_Data/Managed/UnityEngine.dll</pre> | ||
+ | # In your project properties, change the target framework to .NET 3.5 | ||
+ | # Create a new class in a new code file. | ||
+ | # You’ll want to add these namespace to each of your source files as necessary.<br/><pre>using UnityEngine; //For all Unity functionality, rendering, resource management using AI; //RimWorld AI using Sound; //RimWorld sound subsystem using UI; //RimWorld GUI </pre> | ||
+ | # Write your class. Use [http://ilspy.net/ ILSpy] (Download Binaries) to open Assembly-CSharp.dll, which decompiles the game's source code. Any modding questions can be asked on the [https://ludeon.com/forums/index.php?board=14.0 subforum]. | ||
+ | # Compile your class into a .dll. Make sure your project's output type is "class library".<br/>''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.'' | ||
+ | # Place the .dll in the YourModeName/Assemblies folder of your mod. | ||
+ | # 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. | ||
+ | # The game should load your class now. | ||
+ | # 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]] | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
[[Category:Modding tutorials]] | [[Category:Modding tutorials]] |