diff --git a/TODO.md b/TODO.md index da58200..86989d8 100644 --- a/TODO.md +++ b/TODO.md @@ -2,39 +2,27 @@ ## Balance -- Theory is slow affff +- 0.2.6 (dev) + - c1 c2 alone can easily reach publication without w2 +- 0.2.7 (bependence) + - Early game too slow ## Design -### Mechanics +- Derivative: currency called delta + - Synergy: zeta gains radius as t goes up + - w1: boosts both rho & delta + - [ ] w1 exponent? + - w2: boosts delta only -- Ok so, random crazy idea, make tdot be a function of zeta(s) so that when zeta(s) is big dot is higher and when zeta(s) is small tdot is lower - - Something like tdot = (9 * zeta(s) + 2 ) / 200 - - I just though it might be interesting and makes the theory faster/easier. I don't really know but I thought I'd put it out there and do some work on it (the function I gave was like a linear function that went through (0, 0.01) and (2,0.1) making tdot be 10x faster at zeta(s)=2 then zeta(s)=0 ) -- The black hole idea could be a milestone. We could make it stronger -Exponents obviously is an option but that boring +- Black hole ms: when zeta(s) is small t_dot is lower + - Current formula: z^2 + 0.02 (small attraction radius) + - Reduces t gain (and subsequently delta gain) but preserves c1 c2 growth + - Max speed is the same as no black hole (0.25) to avoid solar swapping + - [ ] Need tiers? -- I don't think we should do something that contrasts with rhodot. It gets ruined by black hole, but idk -- If we do, we could add another term, something like +c3|zeta(s)|. I'm fearing some kind of death solarswap where if zeta(s) gets big, swap. +- [ ] Warp? increases starting t + - Perma upgrade + - Power: 2^n -- The derivative of the zeta function does sound interesting. its with respect to t right? -- We could add w exponent. -- If we use the black hole idea it could be good because at high values of zeta(s) t will be very high and therefore make it move faster increasing delta -- I think the black hole idea is my favourite. We could make it a tiered milestone by changing the numbers - -- Random idea that I'm putting out here: make some w milestones. This can allow you to use milestones to boost delta. Also, might make for interesting ms. Though I'm not sure if we want anymore ms. I like ms, but if we have solarswap in it any more ms will kill everyone. Also, I dont know weather we even need/want more milestones but sharing and idea can't hurt - -- An upgrade that increases t by some amount that increases each time to buy it. something like: :uparrow:t by 2^n and n just keeps going up the more you buy it, so t can reach really high levels as n keeps increases. Maybe programmatically the actual equation could be t = t1 + t2, t1dot = (whatever tdot was), t2 = this upgrade, so it would actually be: t2 = 2^(n+1) - 1. - 1. It's probably a good idea to skip some value of n here because increasing t by 4 isn't going to help anyone. - 2. I also envisioned it as an expensive upgrade, as it feels like it could get out of hand. - 3. It doesn't have to be 2^n it could be 3^n or 10^n or whatever - -### Currencies - -- Decoupling zeta into Re and Im, but it will diverge from our current |z| model. -- Since we have the modulus of z for a currency, how about another for the **argument** (angle)? or **angular velocity** (small omega) - - Scrapped. It's not an interesting property, as it's fairly stable. - -### Milestones - -- Increase t_dot by 4x, but sqrts the |z| portion +- [ ] Speed ms? used to skip slow early sections diff --git a/theory.js b/theory.js index 5527e1d..4fbde92 100644 --- a/theory.js +++ b/theory.js @@ -1,5 +1,5 @@ import { BigNumber } from '../api/BigNumber'; -import { ExponentialCost, FirstFreeCost, LinearCost, StepwiseCost } from '../api/Costs'; +import { ConstantCost, ExponentialCost, FirstFreeCost, LinearCost, StepwiseCost } from '../api/Costs'; import { Localization } from '../api/Localization'; import { QuaternaryEntry, theory } from '../api/Theory'; import { Utils } from '../api/Utils'; @@ -28,7 +28,7 @@ var getDescription = (language) => var authors = 'Martin_mc, Eylanding, propfeds\n\nThanks to:\nGlen Pugh, for ' + 'his implementation of the Riemann-Siegel formula\nSneaky, Gen & Gaunter, ' + 'for maths consultation'; -var version = 0.25; +var version = 0.27; let gameOffline = false; let t = 0; @@ -46,13 +46,10 @@ let quaternaryEntries = ]; const scale = 4; -const HALF = BigNumber.from(0.5); // All balance parameters are aggregated for ease of access const resolution = 4; -const speedMaxLevel = 1; -const getSpeed = (level) => 1 << (level * 2); const getBlackholeSpeed = (z) => Math.min(z**2 + 0.02, 1/resolution); const c1ExpMaxLevel = 3; @@ -65,38 +62,39 @@ const c1ExpTable = BigNumber.from(1.25) ]; const getc1Exp = (level) => c1ExpTable[level]; -const c1Cost = new FirstFreeCost(new ExponentialCost(220, 0.6)); +const c1Cost = new FirstFreeCost(new ExponentialCost(220, 0.7)); const getc1 = (level) => Utils.getStepwisePowerSum(level, 2, 8, 0); -const c2Cost = new ExponentialCost(1400, 2.4); +const c2Cost = new ExponentialCost(1400, 2.8); const getc2 = (level) => BigNumber.TWO.pow(level); const bMaxLevel = 8; -const bCost = new ExponentialCost(1e6, Math.log2(1e8)); -const getb = (level) => BigNumber.ONE + HALF * (level/2); +const bCost = new ExponentialCost(1e6, Math.log2(1e12)); +const getb = (level) => BigNumber.ONE + level/4; const getbMarginTerm = (level) => BigNumber.TEN.pow(-getb(level)); -const w1Cost = new StepwiseCost(new ExponentialCost(150000, 4.4), 10); +const w1Cost = new StepwiseCost(new ExponentialCost(150000, 2.25), 6); const getw1 = (level) => Utils.getStepwisePowerSum(level, 2, 8, 1); -const w2Cost = new ExponentialCost(1, Math.log2(100)); +const w2Cost = new ExponentialCost(1, Math.log2(10)); const getw2 = (level) => BigNumber.TWO.pow(level); const permaCosts = [ - BigNumber.TEN.pow(9), + BigNumber.TEN.pow(8), BigNumber.TEN.pow(14), - BigNumber.TEN.pow(21) + BigNumber.TEN.pow(16) ]; -const milestoneCost = new CompositeCost(2, new LinearCost(2.5, 2.5), -new LinearCost(10, 5)); +const milestoneCost = new CompositeCost(1, new ConstantCost(2.1), +new LinearCost(5, 7.5)); const tauRate = 0.1; -const pubExp = 2; -var getPublicationMultiplier = (tau) => tau.pow(pubExp); +const pubExp = 2.1; +const pubMult = 4; +var getPublicationMultiplier = (tau) => tau.pow(pubExp) * pubMult; var getPublicationMultiplierFormula = (symbol) => -`{${symbol}}^{${pubExp}}`; +`${pubMult}\\times{${symbol}}^{${pubExp}}`; const locStrings = { @@ -678,7 +676,7 @@ var init = () => theory.primaryEquationScale = 0.96; theory.secondaryEquationScale = 0.96; - theory.secondaryEquationHeight = 48; + theory.secondaryEquationHeight = 54; updateAvailability(); } @@ -696,6 +694,9 @@ var isCurrencyVisible = (index) => (index && derivMs.level > 0) || !index; var tick = (elapsedTime, multiplier) => { + if(!c1.level) + return; + t_dot = (blackholeMs.level ? getBlackholeSpeed(zTerm.toNumber()) : 1 / resolution); let dt = t_dot * elapsedTime; @@ -710,8 +711,6 @@ var tick = (elapsedTime, multiplier) => let c2Term = getc2(c2.level); let bTerm = getb(b.level); let z = zeta(t); - if(t<0.25) - log(`t=${t} ${z[0]} + ${z[1]}i`) if(derivMs.level) { let dr = z[0] - rCoord; @@ -807,6 +806,7 @@ var postPublish = () => theory.invalidatePrimaryEquation(); theory.invalidateSecondaryEquation(); theory.invalidateTertiaryEquation(); + theory.invalidateQuaternaryValues(); updateAvailability(); }