I love it! Found myself doing mental calculations for the most effective thing to buy next, and the next thing I knew I'd written a script to automatically buy it:
var clickBestThing = function(){
var things = [...document.querySelectorAll("#manufacture__container > div")].map(function(e){
var res = {e};
[...e.getElementsByTagName("span")].map(function(s){
res[s.id] = +s.innerText.replace(/[^0-9]/g, '')
})
if(e.id === "item__spudGun" || e.id === "item__potatoLauncher") res.powerGain *= 1000;
res.score = res.cost / res.powerGain;
// res.score = res.cost / res.spudGain;
res.name = e.getElementsByClassName("manufacture__name")[0].innerText;
return res
}).sort(function(a,b){return a.score - b.score})
window.things = things;
var bestThing = things[0];
if(!things[things.length-1].score) bestThing = things[things.length-1]
console.info("clicking " + bestThing.name)
things[0].e.click();
}
var timer = setInterval(clickBestThing, 5000)
Of course it's much easier to `power = 999...`, but this feels more like automation and less like cheating.
You can actually improve this a little with a better scoring function. Suppose we currently produce p, and A costs cA, for a power gain of pA. Likewise for B. Under the assumption that we will buy at least one more of A and B, we can look at whether A then B or B then A is faster, which is:
cA/p + cB/(p+pA) < cB/p + cA/(p+pA)
Solving this, we get cA * (p+pA)/pA < cB * (p+pB)/pB
Since the left side is all in A, if we pick the item minimizing that quantity, it is faster to buy it before any other item. So changing res.score to be res.cost * (cur_power + res.powerGain)/res.powerGain is going to be a bit faster
Ahh of course! I had the thought to take this into account but couldn't wrap my head around the math last night.
cA/p is just the time it would take to earn the money to buy A at the current production level - seems much simpler now.
I think the last term should be `cA/(p+pB)`. When I solve from there[1] I get `cB * pB < cA * pA`, which means that the most optimal item A will have the largest product `cA * pA`.
Does that check out? It seems too simple, and now that I'm thinking more about it I think this would be functionally equal to what I already have. Did I do my inequality[1] wrong?
Typical Noob idiot coming through, first of all i've got to praise you for doing that the amount of effort that took must be high, but being the typical noob idiot I am I have to also wonder how I actually use this?
reply
I might just be tired and dense. But does watts per second make sense here? Shouldn't the accumulated power be in joules (or Watt hours?) and the per second value just be watts?
In our universe, energy would be accumulated (measured in joules or watt-seconds), and each upgrade bought would produce more power (measured in watts or joules per second). But the game might be taking place in an alternate timeline where James Joule and James Watt were switched at birth (also born at the same time).
A really well executed Incremental game[1] and the best part about it is that it has an ending. Even a retro end-game sequence. Well done. I really enjoyed it.
I have no idea how to prevent people from 'hacking' my game, but I don't think I'd try to stop them — it's so fun to see what people are coming up with. I'm learning from it!
Had to save+reset after bumping this up to 100000, but it only took a few seconds and now I have 6 million watts. Dropping my first Tater Tower. Beautiful, elegant cheat.
Took me about four hours, toward the end I was playing it more like a Tamagotchi (click the buttons every now and then and then leave it to rack up more power).
Also [[SPOILERS]] the ending sequence wedged after 'go be a hero', luckily when I refreshed the page it put me back to just before the black hole bit. Maybe it broke because I was on the solar system view and not the planet view or something? It worked the second time anyway.