Devlog

Měsíc trval sedmnáct sekund

Idle Broker má šest stupňů generátorů a sedm měst. Stupně jsou obchod, po kterém stoupáš; města jsou trvalé násobiče, ve kterých po něm stoupáš. Každé město násobilo příjem šesti. Ani jedno nesáhlo na jedinou cenu. Že je to principiálně špatně, jsem věděl měsíce předtím, než jsem zjistil, jak moc je to špatně v praxi — a odpověď zněla, že poslední město dokončilo celý obchod za kratší dobu, než trvá přečíst tenhle odstavec.

Stížnost, kterou to začalo

Hlášení znělo „pomalá raná hra a pak to uhání“, což je přesně ten typ zpětné vazby, který je zjevně pravdivý a naprosto k ničemu. Pomalá oproti čemu? Uhání kde? Každá idle hra zrychluje — to je ten žánr. Otázka je, jestli zrychluje záměrně.

Tak jsem přestal číst kód a napsal něco, co na to umí odpovědět. lib/economySim.ts je simulátor s diskrétními událostmi, který odehraje celý běh podle zadané strategie — kupuj nejrychlejší návratnost, nebo stoupej po žebříku stupeň po stupni — a hlásí, kdy byl který generátor poprvé koupen, kdy automatizován a kdy běh překročí jednu, dvě, tři a pět hvězd. Podstatné je, že si ekonomiku neimplementuje znovu. Importuje stejný lib/economy.ts, ze kterého ti hra účtuje. Simulátor s vlastní kopií matematiky měří tu kopii.

Co řekl

Žebřík generátorů byl v pořádku. Za prvními dvěma kroky — které jsou záměrně vyrovnané po dřívější opravě obrácené návratnosti — se mezery mezi stupni zhruba zdvojnásobují a nejvyšší stupeň přichází právě kolem první hvězdy: ve 49. minutě proti 52. u hvězdy. To je idle křivka, která dělá svou práci. To „pak to uhání“ nebylo v žebříku vůbec. Bylo v tom, že se žebřík v každém městě zkracoval:

MěstoČas k nejvyššímu stupni — předpo
New York48 m 58 s48 m 58 s
Londýn7 m 53 s49 m 05 s
Tokio33 s49 m 05 s
Měsíc17 s49 m 05 s

Čtyřicet devět minut obchodu v New Yorku. Sedmnáct sekund na Měsíci. Každé město vynásobilo příjem šesti a cenovky nechalo být, takže každý krok po mapě stlačil celý šestistupňový žebřík o dalších šest. V posledním městě už obchod nebyl progrese, ale formalita — koupil jsi všechno naráz, protože všechno bylo zadarmo.

Advertisement

Jeden násobič, na jednom místě

Oprava je malá a ta malost je pointa. Ceny počítají čtyři funkce — generátor, hromadný nákup, automatizace a výpočet „kolik si můžu dovolit“ za tlačítkem MAX — a všechny čtyři berou násobič z jedné funkce. Takže faktor oblasti jde tam, jednou, a zdědí ho každá cena ve hře. Hongkongský desk teď stojí 36× tolik co newyorský a 36× tolik vydělává.

Než jsem se rozhodl pro plný faktor, změřil jsem půlcesty — protože „škálovat ceny trochu“ zní jako ta umírněná, rozumná varianta:

Cenový exponentLondýnTokioMěsíc
0,00 — žádné škálování (ta chyba)7 m 53 s33 s17 s
0,50 — odmocnina20 m 11 s3 m 12 s33 s
0,75 — tři čtvrtiny31 m 28 s11 m 59 s3 m 12 s
1,00 — plný faktor49 m 05 s49 m 05 s49 m 05 s

Cokoliv menšího než plný faktor jen posune zhroucení výš po mapě. Při třech čtvrtinách Měsíc pořád dokončí obchod za tři minuty. Umírněná verze neexistuje: buď ceny nesou násobič města, nebo město obchod dřív nebo později smaže.

Tři věci, na kterých ta oprava tiše stojí

Každá z nich je řádek kódu, který vypadá volitelně a není. Píšu si je sem, protože verze mě, která se k tomu za rok vrátí, si je nezapamatuje.

  • Faktor se aplikuje až za drahokamovým zmanipulováním trhu, nikdy se do něj nezaplete. Zmanipulování trhu je nákup za drahokamy, který ti na zbytek běhu přišpendlí ceny na hluboké slevě. Fázi trhu nahrazuje, ne že by se s ní násobilo — takže kdyby faktor oblasti seděl uvnitř téhož násobiče, manipulace by ho zrušila a dala hráči na Měsíci newyorské ceny proti měsíčnímu příjmu. To je exploit 46 656× za třicet drahokamů a prošel by jako jednořádková chyba v pořadí.
  • Startovní kapitál škáluje s ním. Běh začíná s přesně tolika, aby stačily na jednoho stážistu, protože tlačítko Obchodovat samo o sobě neplatí nic a prázdný desk nemá jak vydělat. Měsíční stážista stojí při zvonění na začátek asi 525 000. Plochých dvacet pět mincí proti tomu není těžký start, ale běh, který se nedá vůbec začít.
  • Spodní hranice věrohodnosti cloudového uložení záměrně neškáluje. Server odmítne uložení, které tvrdí, že vlastní sestavu, na kterou nemohlo mít — a ta hranice se počítá v newyorských cenách. Škálovat ji by bylo aritmeticky úhlednější a odmítlo by to každé uložení zapsané před touhle změnou. Zůstává volnější schválně.

Advertisement

Tak proč se vůbec stěhovat?

Tuhle námitku jsem čekal a je oprávněná. Když se příjem i ceny násobí šesti, je přesun neutrální na kupní sílu. Co jsi za ty hvězdy koupil?

Laťku na hvězdy. Práh prestiže roste ×3 na oblast, zatímco příjem roste ×6, a ta mezera je celá odměna. Obchod se v každém městě hraje stejně dlouho, ale hvězdy přicházejí v každém dalším zhruba dvakrát rychleji. Naměřeno na politice „žebřík“: tři hvězdy trvají 1 h 44 min v New Yorku, 54 min v Tokiu a 30 min na Měsíci.

Ten dvojnásobek na oblast je tempo, ke kterému mapa vždycky mířila. Jen bývalo pohřbené pod šestinásobkem, který místo toho mazal obchod.

Jaké to je, když už jsi hrál

Chci to říct rovnou, ne to schovat. Jestli jsi měl hluboký desk v pozdním městě, je tahle změna jednorázové oslabení a poznáš ho. Mince, generátory ani příjem se ti nehnuly — ale to, co za ně koupíš, ano. Měsíční desk se 120 kusy od každého generátoru býval setinu sekundy od dalšího kusu a teď je od něj asi osm a půl minuty.

To je ten chybějící faktor, který dorazil naráz, a postaví tě přesně tam, kde stojí newyorský hráč stejné velikosti. Je to taky jednorázový náklad, ne průběžný: přesun do dalšího města teď násobí příjem i ceny šesti společně, takže je od téhle chvíle neutrální na kupní sílu — a po jedné prestiži jsou všichni na naměřené křivce.

Žádné uložení se nemazalo a nebylo potřeba. Hranice věrohodnosti dál přijímá každé uložení zapsané před změnou — přesně proto zůstala neškálovaná.

Co bych udělal jinak

Simulátor měl existovat první. Každé číslo v tomhle zápisku bylo k dispozici od prvního dne — cenové funkce tam celou dobu byly a na „příjem škáluje, ceny ne“ nebylo potřeba objevitele mezi testery. Chybělo cokoliv, co by to řeklo nahlas. Balanční problém, který se ukáže až po čtyřiceti hodinách, se hraním nenajde; musí se spočítat.

Simulátor teď běží v testech a dva z těch testů existují jen proto, aby se nevzdálil od hry: jeden tvrdí, že žebřík je nezávislý na oblasti, druhý že cenový exponent simulátoru se pořád rovná tomu, co obchod účtuje. Bez toho druhého by budoucí změna mohla tiše způsobit, že simulátor popisuje hru, která už neexistuje — a to je horší selhání než nemít simulátor vůbec. Praktická verze tohohle všeho je v průvodci prestiží a oblastmi; křivka, na které tohle stojí, je v zápisku o zhroucené křivce prestiže.