Yet Another Research Tree (YART)
Yet Another Research Tree replaces the vanilla research tree with a cleaner, far more readable version.
I’m a heavy modpack user running 450+ mods. The problem was that neither the vanilla research tree nor existing research tree mods made it easy to find the one research I actually needed among hundreds of entries. So I started building this mod myself. It has been refined over a long time to let you quickly find the research you want, even in a tangle of hundreds of projects.
- A more compact, readable research tree — node placement is cleaned up so you can grasp the flow at a glance.
- Per-tab or unified view — browse research split by tab like vanilla, or lay out every research project on a single screen.
- Research queue — line up your next projects in advance and keep researching the moment one finishes, with no downtime.
- Parallel research channels — research from mods like the Anomaly DLC and Vanilla Gravship Expanded can be progressed at the same time as your regular research.
- Optimized rendering — zoom all the way out and view hundreds of research nodes at once with zero lag.
- Optimized search engine — search by mod name, item, plant, research name, and more, with instant response even in a heavy modpack.
- Customizable colors & colorblind support
- Built for heavy modpacks — developed and tested in a heavily modded environment, just like the one I play with.
- Anomaly DLC / Vanilla Gravship Expanded — Supported (provides parallel research channels)
- World Tech Level — Supported (research beyond your world tech level is automatically hidden from the tree)
- Semi Random Research — Supported
- Multiplayer – Supported (provides MP adaptor)
- Other research tree mods — Not supported (use only one research tree mod)
- Compatible with existing save files.
A research tree is, at its core, a directed acyclic graph (DAG). Drawing a directed graph cleanly is a problem people have studied for decades, and it’s genuinely hard (NP-hard). YART implements the well-established Sugiyama framework, adapted specifically for RimWorld’s research tree. Here’s the gist:
- Split into columns by era. Each research project is first grouped into an "era band" in the order Neolithic → Medieval → Industrial → Spacer…, and within each band, columns are assigned left to right by following prerequisite relationships.
- Keep it from getting too tall. YART adaptively computes a "height budget" for each column based on the overall size of the graph, pushing research out of overcrowded columns into neighboring ones to spread everything into a pleasant aspect ratio.
- Minimize crossing lines. The number of arrow crossings swings wildly depending on how nodes are ordered top-to-bottom within a column. YART generates several candidate layouts from different starting points and keeps the one with the fewest crossings, then refines it with adjacent-node swapping (wmedian, transpose) — and for small clusters, even brute-forces every permutation (subset DP) — to cut down on tangled lines as much as possible.
- Bundle lines into single channels. Arrows fanning out from the same research are merged so they flow through one shared channel, with a final post-processing pass that smooths and straightens these bundles.
In an environment with hundreds of mods, scanning every research entry on each keystroke would lag on every character you type — there are mod names, research names, items, plants and more to check, which adds up to millions of characters in a large modpack. It’s the classic needle-in-a-haystack problem: searching is slow because you have to comb through the entire haystack. Surprisingly, though, there’s a way to find the needle without searching the whole haystack — a data structure called a suffix array. YART implements its own suffix array to deliver near-instant search results. On top of that, it adds quality-of-life search features for several languages: jamo decomposition for Korean, phonetic (romaji) search for Japanese, pinyin search for Chinese, umlaut-insensitive search for German, and accent-insensitive search for Vietnamese and French — so you can find exactly what you’re after.