Version: 0.4.7-beta RimWorld Version: 1.6 Status: Beta Release Author: wcbryant
LandingZone helps you find the perfect settlement location by filtering world tiles based on climate, terrain, resources, and geographic features.
This is a beta release. While heavily tested with a wide range of popular mods, there are likely things to add, edit, remove, and improve. I will rely heavily on your feedback in Workshop or via https://github.com/wbryanta/RM-LZ
One-click configurations for different playstyles and in-game experiences:
- Special Presets (4): Elysian (perfect paradise), Exotic (ultra-rare features), SubZero (frozen challenge), Scorched (volcanic nightmare)
- Playstyle Presets (8): Desert Oasis, Defense, Agrarian, Power, Bayou, Savannah, Aquatic, Homestead
All presets can be modified, and you can create and save your own custom presets.
50+ filter criteria organized across 5 tabs:
- Climate: Temperature, rainfall, growing days, pollution
- Geography: Hilliness, coastal access, movement difficulty, swampiness
- Resources: Stones, forageability, plant/animal density, fish, grazing
- Features: Map features (mutators), rivers, roads, biomes
- Results: Result count, strictness, fallback tiers
Real-time tile count estimates and restrictiveness warnings as you configure filters help you understand search scope before running.
Progressive loosening when your ideal configuration has zero results. Presets targeting ultra-rare features (like Exotic or Scorched) automatically try fallback tiers to ensure you get results.
Save and name interesting tile locations for later comparison and reference. Bookmarks persist across sessions and can be viewed on the world map.
Efficient filtering and ranking of thousands of tiles in seconds:
- Apply Phase: Critical filters eliminate 90-95% of tiles instantly using game cache lookups
- Score Phase: Fuzzy membership scoring ranks remaining candidates with continuous [0,1] preferences
- Performance: Searches complete in seconds on standard worlds (handles 150k+ settleable tiles)
- Subscribe on Steam Workshop (coming soon) or download from Releases
- Extract to
RimWorld/Mods/LandingZone - Enable in RimWorld mod list (requires Harmony)
- Launch game and start new world or load existing save
- Generate or load a RimWorld world
- Click "Filters" button in bottom panel on "Select Starting Site" screen
- Choose a preset or configure filters manually
- Click "Search Landing Zones" to start search
- Click "Top (20)" to view results
- Click any result to jump to that tile on the world map
- 12 curated presets covering common playstyles (Temperate Paradise, Arctic Challenge, Desert Survival, etc.)
- Visual preset cards showing description and rarity target
- Quick Tweaks panel for minor adjustments without switching to Advanced mode
- Save custom presets from your current filter configuration
- 5-tab interface organizing 50+ filters by category
- Per-item importance for stones, rivers, roads, biomes, map features (Critical vs Preferred)
- AND/OR operators for multi-select filters
- Live Preview panel showing active filters, conflict warnings, and fallback tier preview
- Search box for quickly finding specific filters
- 1.0 = Perfect match - all criticals excellent, all preferreds met
- 0.8-0.9 = Very good - strong critical matches, good preferred matches
- 0.6-0.7 = Good - solid criticals, some preferred misses
- 0.4-0.5 = Acceptable - marginal criticals or weak preferreds
- <0.4 = Poor - at least one critical severely unmet
Worst critical membership acts as a penalty multiplier - a tile with 9 perfect criticals but 1 terrible critical will score poorly.
python3 scripts/build.py # Debug build (default)
python3 scripts/build.py -c Release # Release buildBuilds project and copies DLL to Assemblies/ directory for RimWorld to load.
- Create
Source/Core/Filtering/Filters/YourFilter.csimplementingISiteFilter - Choose
FilterHeaviness.Light(cheap data) or.Heavy(expensive APIs) - Register in
SiteFilterRegistry.RegisterDefaultFilters() - Add properties to
FilterSettings.cs(importance, ranges, etc.) - Wire up UI in
DefaultModeUI.csand/orAdvancedModeUI_Controls.cs
Core Components:
- Game Cache (
Find.World.grid) - Single source of truth for cheap tile data - TileDataCache - Lazy computation for expensive RimWorld API calls
- FilterService - Two-phase pipeline orchestrator (Apply → Score)
- MembershipFunctions - Trapezoid, distance decay, binary membership computations
- ScoringWeights - Penalty term, global weights, final score calculation
Filter Pattern:
public class ExampleFilter : ISiteFilter
{
public FilterHeaviness Heaviness => FilterHeaviness.Light; // or Heavy
public IEnumerable<int> Apply(FilterContext context, IEnumerable<int> inputTiles)
{
// Hard filtering: eliminate tiles that don't meet Critical importance
return inputTiles.Where(id => MeetsCriteria(id));
}
public float Membership(FilterContext context, int tileId)
{
// Soft scoring: return [0,1] membership for Preferred importance
return ComputeMembership(tileId);
}
}- CoastalLakeFilter and AdjacentBiomesFilter use neighbor heuristic (may not perfectly match icosahedral grid)
- MapFeatureFilter uses reflection to access RimWorld 1.6+ Mutators (graceful degradation on older versions)
Inspiration: Prepare Landing (MIT License) by neitsa, m00nl1ght, and contributors. LandingZone is a from-scratch rewrite with new architecture and scoring system.
Development: Built with Claude Code assistance for forensic analysis, architecture design, and implementation.
License: MIT (see LICENSE file)
- Issues: GitHub Issues
- Source: GitHub Repository
- Steam Workshop: Coming soon
- Draggable in-game panel - LandingZone panel on world map can now be dragged by title bar to avoid blocking Accept button
- Visual hint shows ≡ handles on hover, position persists during session
- Results UI redesign - Compact cards (40% smaller) with visual score bars replacing text labels
- Dynamic gate scoring - MustHave gates now contribute to score (3/3 gates shows ~85%+ instead of ~9%)
- Progressive disclosure - Result sections collapsed by default, expand on click
- Landmark filter fix - Fixed reflection to find non-public Landmark property
- Performance fixes - Reflection caching, array reuse in scoring, fallback state handling
- Dialog fixes - Fixed Save Preset dialog height jumping when overwrite confirmation appears
- Bookmark validation - Trim whitespace from labels/notes to prevent empty entries
- Code hygiene - Nullable annotations and redundant sort removal
- Bucket View workspace mode with hidden filter safeguards
- Biome multi-select with ribbon unification
- Dynamic ore detection and mutator coverage improvements
- Dev tools enhancements
- In-game world map support (opt-in beta) - Use LandingZone when planning caravans
- Biome multi-select and ribbon UI unification
- 12 curated presets organized as 4 special + 8 playstyle themes
- Advanced Mode redesign with 5-tab organization (Climate, Geography, Resources, Features, Results)
- Guided Builder mode - interactive wizard for creating custom presets based on playstyle goals
- Live selectivity feedback with real-time tile count estimates
- Intelligent fallback tiers for presets targeting ultra-rare features
- Bookmarks system for saving and comparing interesting tiles
- Conflict detection warns when filter combinations are impossible or restrictive
- Mod icons added (Preview.png 16:9 format + ModIcon.png for world generation)
- Repository cleanup - removed internal development docs from public repo
- Branding - Author: wcbryant, Package ID: wcb.landingzone
- Added preset system with 4-column grid layout
- Implemented probabilistic rarity scoring based on canonical world data
- Added user preset save/load system with duplicate name detection
- Added rarity badges to results window (Rare → Epic → Legendary → Mythic)
- Fixed Default/Advanced mode toggle buttons
- Added Max Candidate Tiles setting (25k-150k, default 100k)
- Added Stop button to cancel running searches
- Mod settings: Scoring presets, logging levels
- UI consolidation to bottom panel
- Temperature display honors Celsius/Fahrenheit setting
Completed (v0.4.x-beta):
- ✅ 12 curated presets with fallback tiers
- ✅ Advanced Mode with 5-tab organization and Bucket View
- ✅ In-game world map support (opt-in beta)
- ✅ Visual score bars with smooth color gradient
- ✅ Draggable panel for in-game world map
- ✅ Dynamic gate scoring system
- ✅ Biome multi-select with ribbon unification
- ✅ Bookmarks system with validation
- ✅ Performance optimizations (reflection caching, array reuse)
Planned (v0.5.0+):
- 📋 Steam Workshop release
- 📋 Heatmap overlay visualization on world map
- 📋 Additional preset themes
MIT License - see LICENSE file for details.