Editing Modding Tutorials
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 5: | Line 5: | ||
<hr> | <hr> | ||
− | This is the | + | This is the table of contents for the modding tutorial. Here, you'll learn step by step how to create mods of gradually increasing complexity. |
− | + | In light of little official documentation, most of the knowledge here was gained by experience, trial-and-error, decompiling and learning from the source. Keep in mind that RimWorld is a big game that underwent substantial code changes during its alphas. While most of this wiki was updated for 1.0, some information you find may be outdated. | |
− | |||
− | |||
----- | ----- | ||
− | == | + | ==What's a mod?== |
− | + | A mod is a folder containing data the game reads/loads. Mods can add, remove or alter the content of other mods (including the Core mod) in the broadest sense of the word. For more info, see also [[Modding]]. | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | ==Introduction to modding== | |
− | * [[ | + | # [[Modding Tutorials/First Steps|First Steps and Some Links]] |
− | * [[ | + | # [[Modding Tutorials/Essence| Essence of Modding]] |
− | * [[ | + | # [[Modding Tutorials/Folder structure|Exploring the Folder Structure]] |
− | * | + | # [[Modding Tutorials/Mod folder structure|Mod Folder Structure]] |
− | * | + | #* [[Modding Tutorials/Mod folder structure#The About folder|About folder]] |
− | * | + | #* [[Modding Tutorials/Mod folder structure#The Defs folder|Defs folder]] |
− | * | + | #* [[Modding Tutorials/Mod folder structure#The Source and Assemblies folders|Assemblies folder]] |
+ | #* [[Modding Tutorials/Mod folder structure#The Languages folder|Languages folder]] | ||
+ | #* [[Modding Tutorials/Mod folder structure#The Textures and Sounds folders|Textures folder]] | ||
+ | #* [[Modding Tutorials/Mod folder structure#The Textures and Sounds folders|Sounds folder]] | ||
+ | #* [[Modding Tutorials/Mod folder structure#The Patches folder|Patches folder]] | ||
+ | # [[Modding Tutorials/Recommended software|Recommended Software]] | ||
+ | # [[Modding Troubleshooting Tips and Guides]] | ||
− | + | ==General modding== | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
* [[Modding Tutorials/Testing mods|Testing Mods]] | * [[Modding Tutorials/Testing mods|Testing Mods]] | ||
** [[Modding Tutorials/Testing mods#Development mode|Development Mode]] | ** [[Modding Tutorials/Testing mods#Development mode|Development Mode]] | ||
Line 81: | Line 36: | ||
* [[Modding Tutorials/Assets|Decompiling Texture/Sound Assets]] | * [[Modding Tutorials/Assets|Decompiling Texture/Sound Assets]] | ||
* [[Modding Tutorials/Compatibility|Compatibility]] | * [[Modding Tutorials/Compatibility|Compatibility]] | ||
− | * [[Modding_Tutorials/Distribution|Distribution]] | + | * [[Modding_Tutorials/Distribution|Distribution]]</br> |
+ | |||
+ | ==Must-knows== | ||
* [[Modding_Tutorials/Modifying defs|Modifying Defs]] | * [[Modding_Tutorials/Modifying defs|Modifying Defs]] | ||
* [[Modding_Tutorials/Troubleshooting|Troubleshooting mods]] | * [[Modding_Tutorials/Troubleshooting|Troubleshooting mods]] | ||
− | + | ===Steam Workshop Specifics=== | |
− | + | * If you want to upload your mod to the Steam Workshop you must own the game on Steam. Owning it on Epic or GoG etc is not enough, both Steam and Tynan have confirmed this. | |
− | + | * Your Preview.png must be under 1MB to upload to the Steam Workshop otherwise you will see ''"Error : Limit Exceeded"'' | |
− | + | * Steam mod descriptions don't use markdown, they use a form of BBCode. There is a [https://steamcommunity.com/comment/Guide/formattinghelp guide]. | |
+ | |||
+ | ==Updated guides== | ||
+ | These guides have been made with the most recent version of Rimworld in mind and are being updated to reflect changes in the game. | ||
+ | # [[Modding_Tutorials/Geting_started_with_mods|Getting Started With XML]] | ||
+ | # [[Modding_Tutorials/Xml_Adding_Weapons_Traits_Research|Adding a New Weapon, Trait and Research to the game]] | ||
+ | # [[Modding_Tutorials/Xml_Patches|Making Patches using Xml]] | ||
− | + | ==XML tutorials== | |
− | + | # [[Modding Tutorials/XML file structure|XML File Structure]] | |
− | + | # [[Modding Tutorials/XML Defs|Introduction to XML Defs]] | |
− | + | #* [[Modding Tutorials/Compatibility with defs|XML Def Compatibility]] | |
− | ** [[Modding Tutorials/ThingDef|ThingDef explained]] | + | #* [https://7tsvn.github.io/RimWorld-AutoDocs Auto Documentation] |
− | + | # In-depth XML Def tutorials | |
+ | #* [[Modding Tutorials/ThingDef|ThingDef explained]] | ||
+ | #* [[Modding Tutorials/Weapons Guns|Weapons_Guns.xml explained]]. Slightly dated. | ||
+ | # [[Modding Tutorials/PatchOperations|PatchOperations]], replace specific xml elements of core files while keeping the rest untampered. Uses xpath. | ||
− | + | ==C# tutorials== | |
− | + | # [[Modding_Tutorials/Setting up a solution|Setting up]] | |
− | + | # [[Modding_Tutorials/Hello World|Hello World]] | |
− | + | # [[Modding_Tutorials/Decompiling source code|Decompiling Source Code]] | |
− | + | # [[Modding_Tutorials/Writing custom code|Writing Custom Code]] | |
− | * [[Modding_Tutorials/Modifying classes|Adding fields and methods to classes]] | + | # [[Modding Tutorials/Linking XML and C#|Linking XML and C#]] |
− | * [[Modding Tutorials/ModSettings|Mod settings]] - Add settings to your mod | + | # [[Modding_Tutorials/Harmony | Alter Code at Runtime with Harmony]] - this is a best practice for modifying game code, replacing C# code injection to reduce Mod Conflicts |
− | * [[Modding Tutorials/DefModExtension|Def mod extensions]] - Add (custom) fields to Defs | + | # The wonderful things you will want to do with C# |
− | * [[Modding Tutorials/Custom Comp Classes|Custom Comp Classes]] - A quick overview of what types of Comps there are, and what they're suited for. | + | #* [[Modding_Tutorials/Modifying classes|Adding fields and methods to classes]] |
− | * [[Modding_Tutorials/ThingComp|ThingComp]] - Learn all there is to know about ThingComps. | + | # Useful things: |
− | * [[Modding Tutorials/GameComponent|Components]] - GameComponents, WorldComponents, and MapComponents | + | #* [[Modding Tutorials/ModSettings|Mod settings]] - Add settings to your mod |
− | * [[Modding_Tutorials/Def classes|Introduction to Def Classes]] | + | #* [[Modding Tutorials/DefModExtension|Def mod extensions]] - Add (custom) fields to Defs |
− | * [[Modding_Tutorials/Compatibility_with_DLLs|Using Harmony to optionally patch other mods for the sake of compatibility]] | + | #* [[Modding Tutorials/Custom Comp Classes|Custom Comp Classes]] - A quick overview of what types of Comps there are, and what they're suited for. |
− | * [[Modding Tutorials/TweakValue|TweakValues]] - Change values on the fly (handy for quick iteration!) | + | #** [[Modding_Tutorials/ThingComp|ThingComp]] - Learn all there is to know about ThingComps. |
− | * [[Modding Tutorials/ExposeData|ExposeData]] - Save stuff | + | #** [[Modding Tutorials/GameComponent|Components]] - GameComponents, WorldComponents, and MapComponents |
− | * [[Modding Tutorials/BigAssListOfUsefulClasses|The big ass list of useful classes]] - A non-exhaustive list of classes you'll use most | + | #* [[Modding_Tutorials/Def classes|Introduction to Def Classes]] |
− | * [[Modding Tutorials/GrammarResolver|Grammar Resolver]] - PAWN_objective, PAWN_possessive? Find out what it all means here. | + | #* [[Modding_Tutorials/Compatibility_with_DLLs|Using Harmony to optionally patch other mods for the sake of compatibility]] |
− | * [https://github.com/Mehni/ExampleJob/wiki ExampleJob] - Mehni's top to bottom breakdown of Jobs. | + | #* [[Modding Tutorials/TweakValue|TweakValues]] - Change values on the fly (handy for quick iteration!) |
− | * [[Modding_Tutorials/ConfigErrors|Config Errors]] - Provide configuration issues to the user on startup. | + | #* [[Modding Tutorials/ExposeData|ExposeData]] - Save stuff |
− | * [[Modding Tutorials/DebugActions|Debug Actions]] - Call methods from the debug menu | + | #* [[Modding Tutorials/BigAssListOfUsefulClasses|The big ass list of useful classes]] - A non-exhaustive list of classes you'll use most |
− | + | #* [[Modding Tutorials/GrammarResolver|Grammar Resolver]] - PAWN_objective, PAWN_possessive? Find out what it all means here. | |
+ | #* [https://github.com/Mehni/ExampleJob/wiki ExampleJob] - Mehni's top to bottom breakdown of Jobs. | ||
+ | #* [[Modding_Tutorials/ConfigErrors|Config Errors]] - Provide configuration issues to the user on startup. | ||
+ | #* [[Modding Tutorials/DebugActions|Debug Actions]] - Call methods from the debug menu | ||
+ | # [https://www.arp242.net/rimworld-mod-linux.html Getting started with RimWorld modding on Linux] | ||
− | + | ==Art Tutorials== | |
* [https://spdskatr.github.io/RWModdingResources/artstyle Artstyle] - Officially unofficial guide to RimWorld's Artstyle | * [https://spdskatr.github.io/RWModdingResources/artstyle Artstyle] - Officially unofficial guide to RimWorld's Artstyle | ||
* [https://www.reddit.com/r/RimWorld/comments/5tn1pi/rimworldstyle_sprite_tutorials/ Ekksu's guide to creating RimWorld animals] | * [https://www.reddit.com/r/RimWorld/comments/5tn1pi/rimworldstyle_sprite_tutorials/ Ekksu's guide to creating RimWorld animals] | ||
Line 126: | Line 96: | ||
* [https://github.com/seraphile/rimshare/wiki/Colouring-in-Images Seraphile's guide to masks] | * [https://github.com/seraphile/rimshare/wiki/Colouring-in-Images Seraphile's guide to masks] | ||
− | + | == Under construction == | |
+ | These tutorials are under construction. | ||
− | + | * [[Modding Tutorials/Quests]] - Creator: [[User:NightmareCorporation]] | |
− | + | * [[Modding Tutorials/Troubleshooting/Finding Exceptions]] - Creator: [[User:NightmareCorporation]] | |
− | * [[Modding Tutorials/Quests]] | ||
− | * [[Modding Tutorials/Troubleshooting/Finding Exceptions]] | ||
− | |||
− | |||
+ | ==Examples== | ||
* [[RimWorld 1.3: XML Mod Creation]] | * [[RimWorld 1.3: XML Mod Creation]] | ||
* [[Modding Tutorials/Assembly Modding Example|Assembly Modding]] | * [[Modding Tutorials/Assembly Modding Example|Assembly Modding]] | ||
Line 140: | Line 108: | ||
* [[Modding Tutorials/Xenotype template]] originally by Ryflamer | * [[Modding Tutorials/Xenotype template]] originally by Ryflamer | ||
+ | ===Dangerously Outdated=== | ||
* [[Modding Tutorials/Smelter]] | * [[Modding Tutorials/Smelter]] | ||
* [[Modding Tutorials/Items]] | * [[Modding Tutorials/Items]] | ||
+ | * [[Modding Tutorials/Weapons]] | ||
* [[Modding Tutorials/Furniture]] | * [[Modding Tutorials/Furniture]] | ||
+ | * [[Plague Gun/Introduction|The Plague Gun]] based on the Plague Gun tutorial by Jecrell, updated for 1.0. {{LudeonThread|33219}}. | ||
+ | # [[Plague Gun/Required Items|Required Items]] | ||
+ | # [[Plague Gun/XML Stage|XML Stage]] | ||
+ | # [[Plague Gun/Connecting XML and Csharp|Connecting XML and C#]] | ||
+ | # [[Plague Gun/Csharp Assembly Setup|C# Assembly Setup]] | ||
+ | # [[Plague Gun/Csharp Coding|C# Coding]] | ||
+ | # [[Plague Gun/Localisation|Localisation]] | ||
− | == | + | ==See also== |
* [https://github.com/roxxploxx/RimWorldModGuide/wiki Roxxploxx's set of modding tutorials] | * [https://github.com/roxxploxx/RimWorldModGuide/wiki Roxxploxx's set of modding tutorials] | ||
* [https://spdskatr.github.io/RWModdingResources/ RimWorld Modding Resources - A hub for guides, modders, practical tips] | * [https://spdskatr.github.io/RWModdingResources/ RimWorld Modding Resources - A hub for guides, modders, practical tips] |