Research Tree

MOD Desc
A better research tree.

– automatically generated to maximize readability*.
– shows research projects, buildings, plants and recipes unlocked by each research project.
– projects can be queued, and colonists will automatically start the next project when the current research project completes.
– search functionality to quickly find research projects.

Can I add/remove this from an existing save? You can add it to existing saves without problems. Removing this mod will lead to some errors when loading, but these should not affect gameplay – and will go away after saving.

Why is research X in position Y? Honestly, I have no idea. The placement of projects (nodes) is automated to minimize the number of crossings between dependancies (edges), and reduce the total length of these edges. There are many possible scenarios in which this can lead to placements that may appear non-optimal. Sometimes they really are non-optimal, sometimes they just appear to be so. See also the technical section below for more information.

Can I use this with mod X Most likely, yes. Added researches and their requirements are automatically parsed and the tree layout will be updated accordingly. ResearchPal implements a lot of the same functionality as this mod, and the research queue will likely not work correctly if both mods are loaded.

This looks very similar to ResearchPal Yep. ResearchPal is based on a legacy version of this mod that was kept up-to-date by SkyArkAngel in the HCSK modpack. I haven’t worked on this mod in a long time, but I recently had some spare time and decided to give it another go. Feel free to use whichever you like better (ResearchPal has an entirely different layout algorithm). You can run both mods side by side to check out the different tree layouts, but be aware that the research queue will not work correctly if both mods are loaded.

– Layouts are not perfect, if you have experience with graph layouts – please do feel free to look at the source code, and/or implement a Sugiyama layout algorithm for me that runs in C


So how does this all work?

Creating an optimal layout is a known problem in the area of Graph Theory. There’s serious mathematicians who’ve spent years of their live trying to figure out this problem, and numerous solutions exist. The group of solutions most relevant to our research tree (a directed acyclic graph, or DAG) is that derived from Sugiyama’s work. Generally speaking, these algorithms have four steps;

– layering (set the x coordinates of nodes, enforcing that follow-up research is always at a higher x position than any of its prerequisites, this is a fairly straightforward heuristic)
– crossing reduction (set the y coordinates of nodes such that there is a minimal amount of intersections of connections between nodes)
– edge length reduction (set the y coordinates of nodes such that the length of connections between nodes is minimal)
– horizontal alignment (set the y coordinates of nodes such that the connections between nodes are straight as much as possible)

The final step is the hardest, but also the most important to create a visually pleasing tree. Sadly, I’ve been unable to implement two of the most well known algorithms for this purpose;

– Brandes, U., & Köpf, B. (2001, September). Fast and simple horizontal coordinate assignment.
– Eiglsperger M., Siebenhaller M., Kaufmann M. (2005) An Efficient Implementation of Sugiyama’s Algorithm for Layered Graph Drawing. Luckily, the crossing reduction and edge length reduction steps partially achieve the goals of the final step. The final graph is not as pretty as it could be, but it’s still pretty good – in most scenarios.

– Templarr: Russian translation
– Suh. Junmin: Korean translation
– rw-chaos: German translation
– 53N4: Spanish translation
– Silverside: Fix UI scaling bug for vertical text
– shiuanyue: Chinese (traditional) translation
– notfood: Implement techprint requirements
– HanYaodong: Add simplified Chinese translation

Please read this guide before creating a bug report, and then create a bug report here[]

All current and past versions of this mod can be downloaded from GitHub[].

All original code in this mod is licensed under the MIT license[]. Do what you want, but give me credit. All original content (e.g. text, imagery, sounds) in this mod is licensed under the CC-BY-SA 4.0 license[].

Parts of the code in this mod, and some content may be licensed by their original authors. If this is the case, the original author & license will either be given in the source code, or be in a LICENSE file next to the content. Please do not decompile my mods, but use the original source code available on GitHub[], so license information in the source code is preserved.


Become a supporter and show your appreciation by buying me a coffee (or contribute towards a nice single malt).


This is version 3.17.534, for RimWorld 1.1.2654.[]

I had a thought for an enhancement. Currently the mod tries to sort ‘all’ research by dependency which can tend to generate a somewhat ‘random’ looking tech tree if the player has a whack-ton of mods installed (guilty as charged). What if instead it separated research into logical groupings based on an alphabetical list of mods with Core obviously being sorted to the top to avoid confusion. So each mod that adds research would be broken into a horizontal tree of their own and when dependency on research from another tree exists there could be a ‘bubble’ or ‘tag’ which when hovered would show the dependencies and the mod name that it is from. This could (I think) reduce time that it takes to ‘reduce crossings’ and also make for a more consistent experience from playthrough to playthrough. Anyway it’s just a thought, I’m sure the logistics of it are a nightmare that I’m oblivious to, but if you would like a visual example of what I’m thinking I could make a mockup.

hi fluffy, thanks for the mod :)heres some quick stats for you and a question please…i only played about 9 days so far, but after the first in game year i got carried away adding mods that sounded compatible :)about 250 mods enabled (loading time ~5mins to main menu, from a usb ssd (exfat)+ 1min to click on load screen and have a save game loaded+ about 5 seconds to generate world map (about 30% default size)+ about 5mins to generate the research tree.a request:is is possible for you to tweak the path high-lighting, so that it always high-lights the path even if we zoom out?for example, if i zoom in, i can mouse over something, and it shows a highlighted path to a previous requirement, that i needed (or need) to unlock.but, this is often way off the screen, and when i zoom out a few times, its hard to keep track of where i was, since the highlighting no longer hghlights on mouse over unless we are fully zoomed there anything you can do from yourside?

Leave a Reply

Your email address will not be published. Required fields are marked *