Bulk buying
Buying several of an item at once, with the batch priced as one sum.
On this page
Bulk buying lets the player buy several of an item at once, with the batch priced as a sum. Under exponential costs the sum is a geometric series, and inverting it gives the most a player can afford1. Games differ in what they charge:
- Universal Paperclips labels batches of drones with the sum of their single prices and charges each in turn, so the label is the price2.
- Cookie Clicker labels a batch with the closed-form sum, rounded once, but charges each building’s rounded price in turn:
buy()charges each unit's rounded-up price in turn and ignores the shown total: 10 Grandmas from zero cost 2,035, not 2,031, and 2,030 cookies still buy 9.3. - Antimatter Dimensions’ max-buy charges only the most expensive set of ten4. Its “buy until 10” is exact, because the price is flat within a set5.
- One at a timeCookie Clicker (2013). Buy 1, 10, or 100; the label is the geometric sum rounded once, and the purchase rounds each building.6,7,3Universal Paperclips (2017). Drones by 10, 100, or 1,000, labeled with the exact sum of the single prices.2
- Last price onlyAntimatter Dimensions (2016). Max-buy charges only the most expensive set.5,4
Games
| Game | Year | How | Note |
|---|---|---|---|
| Cookie Clicker | 2013 | One at a time | buy 1, 10, or 100; the label is the geometric sum rounded once, and the purchase rounds each building |
| Universal Paperclips | 2017 | One at a time | drones by 10, 100, or 1,000, labeled with the exact sum of the single prices |
| Antimatter Dimensions | 2016 | Last price only | max-buy charges only the most expensive set |
Every claim about this mechanic, by game (8)
References
- ^For a plain exponential (base , rate , and owned), Pecorella gives the most you can buy with currency as .Dev blogPecorella 2016
How we know
$max = floor(log_r(\frac{c(r-1)}{b(r^k)}+1))$
“BONUS CONTENT!” · archived copy ↗ Checked against the evidence by its author, an AI model, 2026-10-20.
- ^ abThe drone panel prices 10, 100, and 1,000 drones as the exact sum of their single prices, and a purchase pays each drone's price in turn.CodeUniversal Paperclips main.js
How we know
p10h = p10h + Math.pow(h,2.25)*1000000;
main.js#L2516-L2530 · archived copy ↗ for (x=0; x<amount; x++){
main.js#L2460-L2468 · archived copy ↗ Checked against the evidence by its author, an AI model, 2026-10-21.
Checked by a second AI model, 2026-10-21.
- ^ ab
buy()charges each unit's rounded-up price in turn and ignores the shown total: 10 Grandmas from zero cost 2,035, not 2,031, and 2,030 cookies still buy 9.VerifiedCookie Clicker main.js v2.058How we know
if (Game.cookies>=price)
main.js#L8125-L8152 · archived copy ↗ Game.ObjectsById[what].buy();
main.js#L8898-L8901 · archived copy ↗ Measured by a script. It fails if the result disagrees with the claim.
The numbers come from the run; its author, an AI model, checked the script measures what the claim says, 2026-10-20.
Checked by a second AI model, 2026-10-27.
- ^ abMax-buy (
getMaxBought) counts the whole sets affordable but charges only the most expensive set × 10, about 0.1% under the sum at ×1,000 per set.VerifiedIvarK/AntimatterDimensionsSourceCodeHow we know
NOTE! this assumes you only have to pay for the most expensive thing you get when you buy in bulk.
src/core/math.js#L387-L429 · upstream ↗ 331 dimension.currencyAmount = dimension.currencyAmount.minus(Decimal.pow10(maxBought.logPrice));src/core/dimensions/antimatter-dimension.js lines 320–331 at 5409e32 · upstream ↗ Measured by a script. It fails if the result disagrees with the claim.
The numbers come from the run; its author, an AI model, checked the script measures what the claim says, 2026-10-20.
Checked by a second AI model, 2026-10-27.
- ^ ab“Buy until 10” charges price × purchases left in the set (
costUntil10), exact since the price is flat within a set.CodeIvarK/AntimatterDimensionsSourceCodeHow we know
389 return this.cost.times(this.remainingUntil10);src/core/dimensions/antimatter-dimension.js lines 388–390 at 5409e32 · upstream ↗ src/core/dimensions/antimatter-dimension.js#L227-L242 · upstream ↗ Checked against the evidence by its author, an AI model, 2026-10-20.
Checked by a second AI model, 2026-10-27.
- ^ abThe shown bulk price (
getSumPrice) is the geometric sum , discounted and rounded up once: 20.30× the next single price for 10, and 7.83 million× for 100.VerifiedCookie Clicker main.js v2.058 · Pecorella 2016 · Cookie Clicker Wiki, “Building”How we know
price+=this.basePrice*Math.pow(Game.priceIncrease,Math.max(0,i-this.free));
main.js#L8096-L8105 · archived copy ↗ $cost = b * \frac{r^k(r^n-1)}{r-1}$
“BONUS CONTENT!” · archived copy ↗ \text {Price of Buy 10} = \text {Price} \times 20.303718238
Building Prices · archived copy ↗ Measured by a script. It fails if the result disagrees with the claim.
The numbers come from the run; its author, an AI model, checked the script measures what the claim says, 2026-10-20.
Checked by a second AI model, 2026-10-27.
- ^Bulk options are 1, 10, and 100; “All” works only in sell mode and means 100 in buy mode.CodeCookie Clicker main.js v2.058
How we know
if (Game.buyMode==1 && Game.buyBulk==-1) Game.buyBulk=100;
main.js#L8816-L8825 · archived copy ↗ Checked against the evidence by its author, an AI model, 2026-10-20.
Checked by a second AI model, 2026-10-27.
Sources
Code
- Lantz, Frank. 2022. “Universal Paperclips, main.js (Wayback capture of 5 January 2022).” Version the version captured 2020-11-12 through 2022-01-05. original · archived · licence, all uses
- Kerajärvi), Hevipelle (Ivar and Antimatter Dimensions contributors. 2026. “Antimatter Dimensions source code.” Commit 5409e32. IvarK/AntimatterDimensionsSourceCode @ 5409e32 · licence, all uses
Primary
- Pecorella, Anthony. 2016. “The Math of Idle Games, Part I.” Kongregate Developers Blog. Kongregate. original · archived · licence, all uses