Skip to content

Balance the game in sheets that sit inside the design.

The harvest economy, the XP curve and the loot tables are real spreadsheets with formulas, inside the documents that explain their rules. A formula reads another sheet of the same document, a chart draws the curve, and the drop-rate panel says what a loot table means for players.

The Saltmarrow harvest economy spreadsheet opened full width in Nodary: yields per tide by window, crew and rake rate, with computed salt, crystals and shell values, a total row, a cell note on the neap crystals and the formula of the selected cell, which reads prices from another sheet.
Saltmarrow is a sample project: its studio, team and game are fictional.

Formulas for curves, costs and odds, and the chart that shows them

Type = and a cell computes. Beside SUM, IF, VLOOKUP, XLOOKUP, INDEX and MATCH, the sheet knows the functions a balance pass needs: POWER, MOD, FLOOR and CEILING for a cost curve, SUMPRODUCT, MEDIAN, STDEV and PERCENTILE for a reward table, COMBIN and FACT for odds. When a formula breaks, it says in words what to fix and which cell it comes from. A chart block draws any range of a sheet as a line, bars, an area or points, and redraws as the numbers change.

  • Excel’s spellings work too: STDEV.S, PERCENTILE.INC, CEILING.MATH
  • Read another sheet of the document by name: Stats!B2 or 'Loot table’!A1:B9
  • Start a blank sheet as a loot table or an XP curve that already computes
  • Comment on a cell; the note stays on it when rows are sorted

What it does not do This is not all of Excel: no macros or pivot tables, and a formula or a chart reads the sheets of its own document only, not another document’s.

Tuning

Change a value: every formula and the chart follow. Select a cell to read its formula.

Restoration!B4=ROUND(Tuning!B1*POWER(Tuning!B2,A4-1),0)
LevelCost (shells)Tide income (shells)Tides to afford
1
2
3
4
5
6
Restoration cost against tide income
05001K1.5K123456Cost (shells), 1: 150Cost (shells), 2: 233Cost (shells), 3: 360Cost (shells), 4: 559Cost (shells), 5: 866Cost (shells), 6: 1342Tide income (shells), 1: 310Tide income (shells), 2: 356Tide income (shells), 3: 402Tide income (shells), 4: 449Tide income (shells), 5: 495Tide income (shells), 6: 542
  • Cost (shells)
  • Tide income (shells)
Data
LabelCost (shells)Tide income (shells)
1150310
2233356
3360402
4559449
5866495
61342542

Read a loot table in players, not percentages

Press Drop rates on a sheet with items and weights. The panel gives each item’s chance per pull and within 10, 50 and 100 pulls, the pulls on average, and the pull by which half, nine in ten and 99 in 100 players have it. Add a pity rule on one item to see what a guarantee changes, and read how long collecting the whole table takes.

  • Weights computed by formulas count, and the panel follows every change
  • Collecting them all is exact up to 12 items, then simulated from a fixed seed
  • Download the results as CSV
  • Try the same maths without an account at /tools/drop-rate-calculator

What it does not do The pity rule is a hard guarantee on one item. Soft pity, where the odds rise with each pull, and draws without replacement are not modelled.

The Drop rates panel on Saltmarrow’s crystal seam table: each crystal’s chance per dive, the dives until half, nine in ten and 99 in 100 players have it, and a pity rule guaranteeing a Drowned lens on dive 150.

Bring sheets in from Excel, send them out to the engine

Import an .xlsx or CSV file with a preview: pick the sheet, check each column’s type, and keep formulas live or keep the results Excel saved. Give columns rules, such as a list of choices, a number range or a required cell, and highlights that colour what needs attention. Then point the build at the sheet: a data key reads its computed values as JSON or CSV at a fixed address, and an unchanged sheet answers 304.

  • A formula Nodary cannot compute keeps Excel’s stored result, cell by cell
  • Column rules flag values to check without blocking anyone’s typing
  • A data key only reads and can be limited to one project
  • String tables use the same feed, as JSON, CSV, .po or XLIFF

What it does not do No .xls, .ods or protected workbooks, and an import replaces the whole sheet. A sheet holds up to 50,000 cells, and a data key makes up to 120 requests a minute.

Saltmarrow’s string table in Nodary: keys, context and maximum lengths with English, French, German, Japanese and Brazilian Portuguese columns, the progress of each language, and how many strings each language has left to fix.
A string table is a sheet too: the same data feed hands it to the build.

Agents balance cell by cell, and show the maths first

Over MCP, an agent reads a sheet as computed values with the formula behind each cell, runs the same drop-rate analysis as the panel, and writes single cells without rewriting the document. After each write it is told what every changed cell now computes and which formulas broke. The balance review prompt reads a loot table or a curve and proposes changes before touching anything. MCP is included in every plan.

Connect an agent

You askIn Saltmarrow’s Drop tables, how many dives does it take nine players in ten to get a Drowned lens? If it is more than 200, propose new weights that bring it under, show me the numbers, and write them once I agree.

Tools it calls
  • search_documents
  • get_sheet
  • analyze_drops
  • set_cells
  • get_document
  • add_comment

Questions

Which spreadsheet functions does Nodary support?

Arithmetic, comparisons and & to join text, with SUM, AVERAGE, MIN, MAX, COUNT, ROUND, ABS, IF, IFERROR, AND, OR and NOT, the lookups VLOOKUP, HLOOKUP, XLOOKUP, INDEX and MATCH, and COUNTIF, SUMIF and AVERAGEIF with their IFS forms. For balancing: MOD, POWER, SQRT, EXP, LN, LOG, LOG10, INT, TRUNC, ROUNDUP, ROUNDDOWN, FLOOR, CEILING, SIGN, PI, PRODUCT, SUMPRODUCT, MEDIAN, STDEV, STDEVP, VAR, VARP, PERCENTILE, QUARTILE, LARGE, SMALL, COMBIN and FACT. For text: LEN, LOWER, UPPER, TRIM, CONCAT, LEFT, RIGHT and MID.

How do I calculate drop rates from a loot table?

An item’s chance per pull is its weight divided by the sum of all weights, and its chance of at least one in n pulls is 1 - (1 - p)^n. In Nodary, the Drop rates button on a sheet works this out for every item, with a pity rule and the pulls to collect them all. Without an account, the free calculator at /tools/drop-rate-calculator runs the same maths.

Can I import my Excel balance sheet?

Yes, from .xlsx or CSV, with a preview before anything changes. Formulas are recalculated where Nodary’s functions cover them; the others keep the result Excel saved, and the import lists what cannot follow, such as macros, pivot tables, merged cells and charts. Older .xls and .ods files are not read.

Can Unity, Unreal or Godot read the balance data?

Yes, by address: a data key reads a sheet’s computed values as JSON or CSV over HTTPS, so a build script or the game fetches them. Each answer carries an ETag, and an unchanged sheet answers 304 with no body. There is no engine plugin; the feed is plain HTTP.

Does the drop-rate panel handle pity?

It handles a hard pity on one item: if the item has not dropped before pull n, it drops on pull n. The panel then gives the average pulls and the pull by which nine players in ten have it under that guarantee. Soft pity, with odds that rise over pulls, is not modelled, and the estimate for collecting everything leaves pity aside.

Can an AI agent balance my spreadsheet?

An agent connected over MCP reads the sheet’s computed values and formulas with get_sheet, analyses a loot table with analyze_drops and writes cells with set_cells, without rewriting the document. After each write it is told what each written cell now computes and which formulas broke. MCP is included in every plan.

Put the loot table next to the rules it serves.

Start free with two members, one project and ten documents, no card needed. Or try the drop-rate calculator first.

Free for two members and ten documents. No card.