Devlog
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.
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.
Ž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řed | po |
|---|---|---|
| New York | 48 m 58 s | 48 m 58 s |
| Londýn | 7 m 53 s | 49 m 05 s |
| Tokio | 33 s | 49 m 05 s |
| Měsíc | 17 s | 49 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
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ý exponent | Londýn | Tokio | Měsíc |
|---|---|---|---|
| 0,00 — žádné škálování (ta chyba) | 7 m 53 s | 33 s | 17 s |
| 0,50 — odmocnina | 20 m 11 s | 3 m 12 s | 33 s |
| 0,75 — tři čtvrtiny | 31 m 28 s | 11 m 59 s | 3 m 12 s |
| 1,00 — plný faktor | 49 m 05 s | 49 m 05 s | 49 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.
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.
Advertisement
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.
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á.
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.