Skip to content

bod09/UMT-Factory-Optimizer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

388 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

UMT Factory Optimizer

A community-built tool for Ultimate Mining Tycoon (Roblox) that helps you build the most profitable factory possible.

Live Site: bod09.github.io/UMT-Factory-Optimizer

For accurate, up-to-date game data, visit the UMT Wiki. If you find incorrect data here, please help by updating the wiki first - our automated updater will pull the changes in.

Features

Factory Optimizer

  • Select any ore and see the most profitable processing chains ranked by $/ore
  • Interactive DAG graphs with automatic layout (dagre/Sugiyama), pan/zoom, click-to-highlight
  • Accurate quantity propagation: demand-based with supply constraints, combine machine halving (prismatic 2:1, alloy 2:1), fan-out scaling
  • Accounts for all prestige items (Philosopher's Stone, Ore Upgrader, Transmuters, Duplicator, Nano Sifter)
  • Optimal duplicator placement — exhaustively tests ore-level, all combiner inputs, and nested combiners
  • Chance machine annotations — prospectors/sifter show produced gems/ores with click tooltips for processing path
  • Byproduct chain with excess routing — surplus items route to QA/Seller
  • Polisher applied to byproduct items (ceramic, glass, etc.) with correct ordering (flat before %)
  • Batch mode and "Best Possible" toggle

Progression Guide

  • Stage-by-stage factory progression from fresh start to prestige
  • Best factory chain at each budget with node graphs
  • Accounts for starting money from prestige upgrades
  • Prestige cost table

Item Database

  • All machines with inputs, outputs, effects, and costs
  • Machine connection map
  • Ore and gem stats with depth ranges

Data-Driven

All calculations run from data/machines.json — no hardcoded chains. The solver automatically discovers the best processing path for every item type using a universal applyEffect() function that handles all machine effects (multiply, flat, set, combine, chance, preserve). Adding a new machine = adding to machines.json only.

Automated Wiki Updates

A GitHub Action checks the UMT Wiki weekly for game changes:

  • Updates machine data (name, cost, description) without overwriting optimizer-specific fields
  • Creates a PR with a diff report for review
  • Detects active game events and their machines

Data Accuracy

Game data comes from the UMT Wiki. If you notice incorrect values:

  1. Update the wiki - it helps everyone and our updater will sync it
  2. Edit data/machines.json for optimizer-specific fixes
  3. Submit a PR or open an issue

Tech Stack

Pure HTML/CSS/JavaScript hosted on GitHub Pages. One external dependency: dagre (~15KB, CDN) for automatic graph layout.

Architecture

data/machines.json            ← Source of truth for all machines
        ↓
js/chain-solver.js            ← ChainSolver: memoized recursive value maximization
        ↓                        Universal applyEffect() for all machine types
        ↓                        Exhaustive duplicator placement optimization
        ↓
js/graph-builder.js           ← Two-pass graph construction:
        ↓                        Pass 1: Build structure (nodes + edges, qty=0)
        ↓                        Pass 2: Demand propagation → supply constraints
        ↓                          Phase A: Top-down demand (reverse topo sort)
        ↓                          Phase A2: Forward supply (combine halving)
        ↓                          Phase B: Byproduct push (ratio + chance)
        ↓                          Phase C: Excess routing to QA/Seller
        ↓
js/graph-layout.js            ← dagre wrapper (Sugiyama layered DAG layout)
        ↓
js/visualizer.js              ← SVG rendering, pan/zoom, click-to-highlight,
                                 chance machine tooltips, edge labels

Supporting: js/graph.js (MachineRegistry), js/optimizer.js (config wrapper), js/app.js (UI), js/data.js (game constants).

Attribution & License

Game Data: Sourced from the UMT Wiki under CC BY-SA 4.0. The wiki is hosted on Miraheze - consider donating to support it.

Code: MIT License

Game: Ultimate Mining Tycoon is developed by Innovation Inc (Rolijok & Madattak). This is a community fan project - not affiliated with the developers.

Contributing

  1. Help the wiki - Update umt.miraheze.org with accurate game data
  2. Fix data - Edit data/machines.json and submit a PR
  3. Report issues - Open an issue on GitHub

Releases

No releases published

Packages

 
 
 

Contributors