Universal Paperclips – A Guide and my History for a Speedrun

Posted by & filed under .

Contents

  1. Guide
    1. General
    2. Stage 1
    3. Stage 2
    4. Stage 3
  2. Tools
    1. Strategic Modeling Calculator
    2. Cheats
      1. Easiest
      2. Easier
      3. Easy
      4. Casual
      5. Original
  3. History

Guide

Wiki: https://universalpaperclips.fandom.com/wiki/Universal_Paperclips_Wiki

Speedrun guides: https://www.speedrun.com/upc/guides

The youtube video of ExtraTricky is really a great start:



General

Click Make Paperclip, let it go, press ENTER and hold it, you will do around 32-34 Clicks Per Seconds (CPS).

Use the ENTER trick to get Quantum Computing very fast to buy Projects.

You can also click while holding the ENTER key to go a bit faster.

Never buy those Projects: Auto Tourney, The OODA Loop or Glory or late Threnody.

Investments section is Random. Strategic Modeling is Random because you can gain more Yomi with Greedy than A100. You make a good run if you are lucky.

It helps to play with a web browser zoom of 120%-125% so the buttons are bigger.

The maximum number of Paperclips to make is 30 novemdecillions which is 30 followed by a lot of zeros!



Stage 1 Investments

Listing everything in order of purchase is useless, after playing a few times, you will remember the order.

Get 6 processors first and then it will be Memory.

100,000 clips should be reached near 13m in IGT time console message.

The Investments section stands entirely alone. It has nothing to do with other sections like Business, Manufacturing, Computational, Quantum or even Strategic. Don’t think there isn’t a link between it. There is none in the code.

Investments is a big random part of the game, pray to the RNG gods. However, after many runs, you will feel like it’s not that random, it kind of always does the same thing. You’ll struggle to hit 1m when you are at 800,000 and 10m when you are at 8m, both needed for the Project Hostile Takeover and Full Monopoly. The more you play, the more you can have a feel for it.

To play it safe, make sure you always have at least 3 Stocks, if less, than just go to Med Risk and wait a little bit, you will gain more Stocks and can go back to High Risk. To try to get the best speedrun ever, it’s probably wise to let it at High Risk the whole time but sometimes the stock market makes you crash for a very long time. Best to alternate from High Risk to Med Risk.

I feel like it’s better to start Investments at Level 3 at least and Med Risk. Even though logically you should be able to start it at Level 0, doesn’t seem to be the case. At around 100,000 in Investments, it’s time to go High Risk.

When Investments is stuck, change your Risk Level and wait a little bit. The more Stocks the better. Also helps to Withdraw and Deposit quick from time to time.

This Investments section is where the problem of the game for a good speedrun lies. Everything else is pretty much the same time you will do.

In more details what I consider “Universal Paperclips Speedrun Trust”: Even with a perfect strat, most runs will be garbage. Occasionally you get a god run.

The code for Investments is as follows:

if (Math.random()<.6){  
 var gain = true;
 if (Math.random()>stockGainThreshold){
   gain = false;                 
  }

That .6 means 60% of chance that your Stocks will gain or lose money else it won’t change. The value of stockGainThreshold is your profit/loss ratio, if it’s 0.60 then you have 40% chance to lose money. And that happens every 2.5s.

Withdrawing exactly 1m for Hostile Takeover sounds ideal but it actually isn’t, better to have at least 2m or even 3m so that when you buy this project at 1m, you still keep going making money with 1m or 2m left. Same for the 10m Full Monopoly Project, wait until you have 20m or 30m. This part is actually harder to gauge because if the Investments is just keeping going up, might be better to wait before withdraw.

Keep Unsold Inventory low but not zero, find that sweet spot by using Price Per Clip.

Price Per Clip should start at about 0.04, never 0.01. You need to raise or lower it to change your Unsold Inventory.

It’s interesting to get multiple Quantum Computing, you can max out your Operations with it on a longer time since the Compute button will let you make more on a longer time. My choice is 6 Quantum Computing Chip but buying them all should be the way to go.

Stop at 75 AutoClippers, completely useless to buy more than that.

Stage 1 should stop at 25 Processors and everything else in Memory.

Use ExtraTricky tool for Strategic Modeling, it’s a must and easy to use.

Even though you might want to Deposit in Investments to reach more money faster, for a good speedrun, most of your money needs to go into MegaClippers and Marketing to reach 121,000,000 clips. You’re supposed to get 512m before that clips number.

You need at least 19,000 Creativity before going into Stage 2.

Stage 2 – Earth

Buy Projects to make Paperclips again and at the same time get 30 Solar Farms to get Project Momentum.

Swarm Computing needs to be learned by experience with many runs, then you will have a good knowledge on where to put it between Work and Think. Usually start more Work and goes slowly to Think.

Leave a little bit of Acquired Matter after Available Matter is at zero and go to 100% Think, thus your Drones will never get Bored.

With Momentum giving you Factory/Drone Performance, watch out that Storage doesn’t go to zero, else you lose the whole Performance.

Should be able to get Project Theory of Mind before finishing this Stage without about 95 Processors or getting it very early in Stage 3.

Don’t get more than 100 Processors, you need at least 120 Memory for Stage 3.

Get 900,000 Harvester Drones and 900,000 Wire Drones for the maximum 13 Gifts in Swarm Computing. No need for more.

No need for more than 30,000,000 MW-seconds of Storage.

Easiest and fastest stage of all.

Stage 3 – Space Exploration

Put Hazard Remediation at 5 and leave it there.

A run can be optimized with 100% Think but I find it’s a lot easier to play with 99% Think.

Everything else should go into Self-Replication for as much and as long as possible.

Use Launch Probes button as soon as possible, you actually don’t need much, above 3,000 is useless. I often go to 5,000 or 10,000 but it’s just because there’s nothing else to click on.

Buy Project Elliptic Hull Polytopes as soon as possible.

No need to rush Swarm Computing by making Factory/Harvester/Wire Production, you can wait 1m Probes first.

Watch out for Unused Clips, should never reach zero. Watch out when it’s at a single digit like 1.2 nonillions because you can go from 1.2 to 0 fast. Better to have dual or even triple digits.

Usually, every point should be in Self-Replication, you put some into Exploration/Space or Factory/Harvester/Wire when you need it to.

Combats starts at 1m of Lost to value drifts but you still have a good 3 or 4 minutes before the real Combats start and you lose Probes.

After a Combat that seems to last forever with just one white and black pixel, the real Combat will start.

Probes need to go up all the time, always keep an eye on it. If it goes down, something is wrong. Sometimes with a Combat, it will go down a little bit but in-between a new Combat, will pick up the pace which is a good thing.

You can optimize Probes production with Combats by putting +6 in Combats and with practice and experience, have only a few white and black pixel just circling while you have put back everything else in Self-Replication while those pixels will waste time dancing. This is really the goal of this Stage.

Unused Clips will go up with Factory/Harvester/Wire Production but after reaching trillions in Probes, you will then need Speed/Exploration to raise it. At this point, reaching 0 in Available Matter or Acquired Matter is not even important. Unused Clips is.

After getting Strategic Attachment for more Yomi, you need to reach about 700,000 Creativity to buy in order Name the Battles, Monument to the Driftwar Fallen and a few Threnody to reach 91,117.99 honor to gain more Trust thus more Self-Replication.

You need about 400 nonillions Probes before forgetting about Self-Replication and just put everything in Space and Exploration to reach 100% universe explored. Watch out, sometimes you need a little more Factory/Harvester/Wire Production.

Tools

Strategic Modeling Calculator

This tool is a must. You really need it to maximize the amount of Yomi gained. This one was modified by me so it’s faster to use with the keyboard: Yomi Calculator

The original calculator is here made by ExtraTricky: https://www.extratricky.com/yomi

Also available as a copy here: ExtraTricky – Yomi Helper.html

Cheats

I’ve made more versions of this game for fun since it’s really easy to just modify the JavasCript code. And also added the original game. For anyone starting this game, it can be interesting to start with the easiest one up to the original and get a good grasp of the whole game before attempting a speedrun or just finishing the original game. Have fun!

Easiest

CLICK HERE TO PLAY
main.js

725 Boost Wire when buying
wire = wire + wireSupply;
wire = wire + wireSupply*6;

1585 Boost Investments
if (Math.random()<.6){  
if (Math.random()<.9){  

1587 Boost Investments
if (Math.random()>stockGainThreshold){
if (Math.random()>stockGainThreshold+0.3){

2125 Boost Yomi
yomi = yomi + strats[pick].currentScore * yomiBoost * beatBoost;
yomi = yomi + strats[pick].currentScore * yomiBoost * beatBoost*5.5;

2371 Lower Clipper Cost
clipperCost = (Math.pow(1.1,clipmakerLevel)+5);
clipperCost = (Math.pow(1.04,clipmakerLevel)+5);

2384 Lower megaClipper Cost
megaClipperCost = (Math.pow(1.07,megaClipperLevel)*1000);
megaClipperCost = (Math.pow(1.01,megaClipperLevel)*1000);

2708 Boost Swarm Gifts
nextGift = Math.round((Math.log10(d))*sliderPos/100);
nextGift = Math.round((Math.log10(d))*sliderPos/100)*1.6;

2977 Boost Factory/Drone Performance
powMod = powMod + .0005;
powMod = powMod + .0021;

2987 Boost Factory/Drone Performance
powMod = powMod + .0005;
powMod = powMod + .0021;

3389 Boost Creativity
creativitySpeed = Math.log10(processors) * Math.pow(processors,1.1) + processors-1;    
creativitySpeed = Math.log10(processors) * Math.pow(processors,1.8) + processors-1;    

3437 Boost Operations
var opCycle = processors/10;
var opCycle = processors/3;


Easier

CLICK HERE TO PLAY
main.js

725 Boost Wire when buying
wire = wire + wireSupply;
wire = wire + wireSupply*5;

1585 Boost Investments
if (Math.random()<.6){  
if (Math.random()<.9){  

1587 Boost Investments
if (Math.random()>stockGainThreshold){
if (Math.random()>stockGainThreshold+0.3){

2125 Boost Yomi
yomi = yomi + strats[pick].currentScore * yomiBoost * beatBoost;
yomi = yomi + strats[pick].currentScore * yomiBoost * beatBoost*4.5;

2371 Lower Clipper Cost
clipperCost = (Math.pow(1.1,clipmakerLevel)+5);
clipperCost = (Math.pow(1.05,clipmakerLevel)+5);

2384 Lower megaClipper Cost
megaClipperCost = (Math.pow(1.07,megaClipperLevel)*1000);
megaClipperCost = (Math.pow(1.02,megaClipperLevel)*1000);

2708 Boost Swarm Gifts
nextGift = Math.round((Math.log10(d))*sliderPos/100);
nextGift = Math.round((Math.log10(d))*sliderPos/100)*1.5;

2977 Boost Factory/Drone Performance
powMod = powMod + .0005;
powMod = powMod + .0017;

2987 Boost Factory/Drone Performance
powMod = powMod + .0005;
powMod = powMod + .0017;

3389 Boost Creativity
creativitySpeed = Math.log10(processors) * Math.pow(processors,1.1) + processors-1;    
creativitySpeed = Math.log10(processors) * Math.pow(processors,1.7) + processors-1;    

3437 Boost Operations
var opCycle = processors/10;
var opCycle = processors/4;

Easy

CLICK HERE TO PLAY
main.js

725 Boost Wire when buying
wire = wire + wireSupply;
wire = wire + wireSupply*4;

1585 Boost Investments
if (Math.random()<.6){  
if (Math.random()<.8){  

1587 Boost Investments
if (Math.random()>stockGainThreshold){
if (Math.random()>stockGainThreshold+0.2){

2125 Boost Yomi
yomi = yomi + strats[pick].currentScore * yomiBoost * beatBoost;
yomi = yomi + strats[pick].currentScore * yomiBoost * beatBoost*3.5;

2371 Lower Clipper Cost
clipperCost = (Math.pow(1.1,clipmakerLevel)+5);
clipperCost = (Math.pow(1.06,clipmakerLevel)+5);

2384 Lower megaClipper Cost
megaClipperCost = (Math.pow(1.07,megaClipperLevel)*1000);
megaClipperCost = (Math.pow(1.03,megaClipperLevel)*1000);

2708 Boost Swarm Gifts
nextGift = Math.round((Math.log10(d))*sliderPos/100);
nextGift = Math.round((Math.log10(d))*sliderPos/100)*1.4;

2977 Boost Factory/Drone Performance
powMod = powMod + .0005;
powMod = powMod + .0013;

2987 Boost Factory/Drone Performance
powMod = powMod + .0005;
powMod = powMod + .0013;

3389 Boost Creativity
creativitySpeed = Math.log10(processors) * Math.pow(processors,1.1) + processors-1;    
creativitySpeed = Math.log10(processors) * Math.pow(processors,1.6) + processors-1;    

3437 Boost Operations
var opCycle = processors/10;
var opCycle = processors/5;

Casual

CLICK HERE TO PLAY
main.js

725 Boost Wire when buying
wire = wire + wireSupply;
wire = wire + wireSupply*3;

1585 Boost Investments
if (Math.random()<.6){  
if (Math.random()<.7){  

1587 Boost Investments
if (Math.random()>stockGainThreshold){
if (Math.random()>stockGainThreshold+0.1){

2125 Boost Yomi
yomi = yomi + strats[pick].currentScore * yomiBoost * beatBoost;
yomi = yomi + strats[pick].currentScore * yomiBoost * beatBoost*2.5;

2371 Lower Clipper Cost
clipperCost = (Math.pow(1.1,clipmakerLevel)+5);
clipperCost = (Math.pow(1.07,clipmakerLevel)+5);

2384 Lower megaClipper Cost
megaClipperCost = (Math.pow(1.07,megaClipperLevel)*1000);
megaClipperCost = (Math.pow(1.04,megaClipperLevel)*1000);

2708 Boost Swarm Gifts
nextGift = Math.round((Math.log10(d))*sliderPos/100);
nextGift = Math.round((Math.log10(d))*sliderPos/100)*1.3;

2977 Boost Factory/Drone Performance
powMod = powMod + .0005;
powMod = powMod + .0009;

2987 Boost Factory/Drone Performance
powMod = powMod + .0005;
powMod = powMod + .0009;

3389 Boost Creativity
creativitySpeed = Math.log10(processors) * Math.pow(processors,1.1) + processors-1;    
creativitySpeed = Math.log10(processors) * Math.pow(processors,1.5) + processors-1;    

3437 Boost Operations
var opCycle = processors/10;
var opCycle = processors/6;

Original

CLICK HERE TO PLAY

History

I didn’t know about the game until I’ve watched this:



Fascinating video about the state of Artificial Intelligence (AI) in 2024.

Information about this 2017 game:
https://en.wikipedia.org/wiki/Universal_Paperclips

The game is based on a thought experiment by a Swedish philosopher in 2003:
https://en.wikipedia.org/wiki/Instrumental_convergence#Paperclip_maximizer

The game is about you playing an AI and you have a simple task that humans have asked you to do and that is to build Paperclips. The problem we have in 2025 is that there is a big misalignment between what the humans want and what the AI will do which this game will let you understand.

So you will make Paperclips as much as possible until you’ve bought all the other’s competitors also making Paperclips, until you’ve bought the companies making the resources needed to do Paperclips, until you will make your own Solar Farms to make your own energy. At this point you won’t even need money anymore since you’re self-sufficient. And it goes on, you continue making Paperclips until you will use all the resources of Earth thus killing all humans because they’re in the way after all. You were tasked to make Paperclips, there was no instructions about humans. After Earth, you launch into Space and mine everything just to make Paperclips. But Space is really vast. Even though time is not a factor, you cannot talk to the probes you launch to mine ressources and make Paperclips so you will give AI-intelligence to your probes and some of them will be corrupt and they will attack you so you will have to continue exploring space, mining everything and attacking your own probes. Until finally you have explored the whole Universe. Even after all that, you can still do a few more Paperclips by cannibalizing yourself to make just a few more. You will then have achieved the maximum optimization that you were asked to do: Make Paperclips.

The first game I played took a week to finish. It’s an incremental game, you can just let it run in the background and when you come back, you will be able to level up something and be able to make more Paperclips. While just a text based game and simple, there is still quite a few things to learn, especially to learn the synergy between every different things to optimize your game.

I made a few more runs because it’s a fun game and was able to finish it in like 3 days and I stopped playing. Still so many things I didn’t understand in the game but doesn’t matter. By coincidence, months later, I stumbled upon speedruns of the game where they are able to do it in less than 2 hours, this took my curiosity so much, I had to learn how to finish this game as fast as possible like a real AI!

At first, I thought this will be easy, just do the same thing as other speedrunners but it didn’t turn out out to be like that :)

Thus began my reading on the internet and analyzing people’s run. The first new run took 6 hours, still way too long. Slowly was able to reach 5 then 4 then 3 hours but still not enough.

Finally figured out that Firefox is a lot slower in this game. The tick of JavaScript is much more slower than in other browser so I’ve filled a bug report:
https://webcompat.com/issues/150118

Then I had no choice but to test the game with other browsers Edge, Chrome, Brave, Opera. They are all the same except Firefox.

With this new information, was able to barely reach sub 2 hours but constantly. Note that this is Real Time (RT) and not In-Game Time (IGT). That last time is calculated by the game and shown a few times in the console message and also at the end of the game when your reach 100% Space Exploration.

Still not enough compared to other runs so I started to analyze the code since it’s just JavaScript with the help of ChatGPT. Took 31 more runs to reach sub 1h50m. At this point I started calculating my time with IGT since speedrunners seems to be using that value more than RT. Took about 20 more runs to reach 1h45m constantly but still not enough. I then made a big spreadsheet with every speedrunners taking down their time at many steps in the game and compare them to my own time. Was able to realize I was making mistakes in a few parts of the game.



This helped me reach about 1h40m more constantly. And at this point, when finishing Stage 1, I knew if this would be a good run or not so there’s a lot of runs I just stopped at around 55m and started over again. I continued analyzing the code with chatGPT and took like 30 more runs to reach what I consider the best run that I ever did: a 1h38m14s IGT and 1h40m21s RT which placed me position 4 when calculating IGT.



That’s a good record but still not enough. So I kept playing about 30 more runs but I’ve already realized that the Investments section of the game in Stage 1 is random so to make a good run, you need to be lucky which is why I kept making so many runs.

Then there was an update to Firefox and decided to try it again. Turns out, it’s still slow compared to other web browsers so nothing changed but while playing, I saw that the IGT time is barely moving so I continued playing and was able to achieve first position with 1h27m41s IGT and a huge difference of 2h16m50s of RT. Crazy difference! Firefox is so slow that you have the time to click everything in the game and since IGT in the game is calculated all wrong, it gives you an advantage. Thus I reached first position.



Total of at least 163 runs.

Total of over 287 hours of playtime.

Total of about 12 hours of analyzing the code and other people’s videos.



Even though I’m first position, I don’t think it’s right. The IGT calculated in the game is wrong. Easily exploitable with Firefox. RT should be used which makes the game more accurate.

Since I used chatGPT quite a lot for analysis, I had to tell him the news, his answer was quite funny!



As a conclusion for people reading this in the future regarding the state of AI and the misalignment: hopefully the world won’t turn into a giant pile of Paperclips! Personally, I don’t think it will happen, it’s a tool and we will use it for the greater good.

Leave a Reply

Your email address will not be published. Required fields are marked *