Alt-F4 #51 - Experiment Tekuté Elektřiny  05-11-2021

Napsal stringweasel, upravil Nanogamer7, Conor_, Therenas, Firerazer,
přeložil oof2win2

Obsah

Pro 51. vydání Alt-F4, dlouhodobý příspěvce a mág stringweasel nás potěší s historií módů, které se snažily udělat elektřinu v Factoriu více realistickou. Všechny z nich mají vlastní problémy a kompromisy, což je důvod proč vytvořil svou vlastní implementaci řešení k tomuto problému, se skvělými výsledky!

Experiment Tekuté Elektřiny stringweasel

Již od začátku mého vzdělání v elektronickém inženýrství, vidím tok elektřiny kdekoliv se podívám. Zpětně cestující vlna aut posouvající se vpřed je v mých očích pohyb elektronů. Ještě zajímavější je jak podobný tok elektřiny je k pohybu tekutin. Když splachuji záchod a vytvoří vodní vír, vidím induktor, který je nabíjen kondenzátorem. Když zničeho nic zavřu kohoutek a slyším vodu, která bije v trubkách, vidím špičku v napětí induktoru, která je používána pro zvyšováky napětí. Nebylo by zajímavé toto chování mít v elektřine v Factoriu?

Proč je to těžké?

Zaprvé, v vanilla Factoriu, elektřina se chová ideálně - to znamená, že není žádný odpor ve vedení. Vašě elektrická síť je schopna přenášet nekonečně mnoho energie přes nekonečnou vzdálenost. Je to jako kdyby pověsili kryogenicky chlazené supervodiče na levné, dřevěné tyče. Toto funguje velmi dobře pro cíle a omezení hry, a perfektně se vejde do většiny hracích stylů. Vždy ale existuje pár hráčů, kteří by chtěli trochu větší výzvu, tací se polud by elektřina mohla být více realistická. Třeba hráči, kteří by chtěli použít transformátory, aby se vyhnuli snížení napětí přes vzdálenost.

Rekreace více realistického chování elektřiny je (diskutabilně) mimo rozsah pro vanilla Factorio a nejspíše se nikdy nestane - takže je na módech, aby vyplnily tuto slabě sadistickou skulinku. V Factoriu, módy jsou schopny modifikovat pouze některé předem určené aspekty hry, a možnosti pro elektřinu jsou velmi limitované. Proto si moddeři našli pár zajímavých řešení. Jeden z největších problémů je, že jakmile jsou dva elektricé sloupy spojeny měďeným drátem, hra bude automaticky rozesílat elektřinu interně, což nemůže být manipulováno módy. Jediný reálný způsob pro změnu elektrické síťe je použitím Rozhraní Elektrické Energie (dále pod jménem EEI), ale to nemění způsob, jak je elektřina rozesílána.

Další možnost je manuální odstranění měďených drátů z elektrických sloupů pro manuální ovládání elektřiny, ale to vždy bude také odstraňovat vizualizaci spojení daným drátem, což bude vypadat divně. Také vás bude nutit, aby jste počítali přenos energie v kódu módu, stejně jako by to normálně dělala hra. Problém je, že výpočty dělané módem budou vždy násobně pomalejší, než kdyby hra dělala to samé. Toto je proč vývojár Rseding91 měl následující k slovu pár let dozadu, poté co se někdo zeptal pro mód, který by implementoval progresivní snižování napětí.

[Napětí] není jediná věc, o kterou se budete starat, že se snižuje. Vaše UPS bude ZNIČENO jakmile postavíte více než pár čehokoliv, pokud by jste používali takový mód :P

[Voltage is] not the only thing you’re going to be worrying about dropping. Your UPS will TANK once you build more than a few of anything if you used such a mod :P

Rseding91, vývojář Factoria

Toto ale neznamená, že to není nemožné, i kdyby hra poté neběžela tak svižne, jako vanilla Factorio. Moddeři našli krásné cesty kolem mnoho překážek, včetně těchto limitací, a vytvořili všemožné způsoby herních mechanik, o kterých si lidé mysleli, že jsou nerealistické.

Krátká Historie Elektrických Změn

Jeden z prvních módů, který se dotkl elektřiny byl nejspíše Flow Network - dělán v dobách Factorio 0.13. Zkrátce, neviditelné akumulátory byly položeny pod každý sloup, což vytvořilo kompozitní entitu, trik, který je často používán v módech. Měďěné dráty jsou poté odstraněny a nahrazeny červenymi dráty aby se zastavila vanilla distribute energie, ale vizualizace spojení pořád existovala. Energie je poté distribuována manuálné mezi těmito schovanými akumulátory s vlastním skriptem. Naneštěstí, jako jsem předtím řekl, toto je velmi pomalé, protože všechny výpočty energie jsou dělané v módu a nejsou vyřizovány Factoriem samotným. Má to ale výhodu toho, že to je velmi přispůsobitelné

Příkůlad distribuce elektřiny z FlowNetwork, ukazující napětí v sloupu, tok elektřiny zkrz sloup, a snížení napětí v sloupu.
Příkůlad distribuce elektřiny z FlowNetwork, ukazující napětí v sloupu, tok elektřiny zkrz sloup, a snížení napětí v sloupu.

Další pokus přišel s Factorio 0.15 pod jménem Vysoké Napětí. Toto je docela zajímavý mód, s mnohho pohybujícími součástky. Elektřina je distribuována buď s vysokým nebo nízkým napětím, kde transformátory a další zařízení jsou buďto akumulátory nebo EEI. Distribuce elektřiny přes vysoké napětí je poté vypočítáno manuálně s vlastními formulami - docela podobné tomu, co FLow Network dělalo. Toto umožnilo autorovi přidat vlastní mechaniky do hry, jako třeba nutnost času, aby se transformátory zapnuly. Normánlí napětí na druhou stranu distribuováno měďeným drátem, stejně jako ve vanille, což znamená, že žádné výpočty od módu nejsou nutny. Autor ale přidal snížení napětí přes vzdálenost, což je jenom výpočet dělán, když se postaví elektrický sloup. Když je sloup postaven moc daleko od transformátoru, nebude moci poskytovat energii Co se stane je, že je elektricý sloup nahrazen sloupem s zásobovací vzdáleností nula, což znamená, že sloup bude pořád připojen k elekřině, ale není schopen distribuovat elektřinu k žádným strojům. Docela briliantní nápad.

Distribuce s Vysokým Napětím, ukazující elektrické sloupy, které jsou vypnuté, pokud jsou moc daleko od transformátoru
Distribuce s Vysokým Napětím, ukazující elektrické sloupy, které jsou vypnuté, pokud jsou moc daleko od transformátoru. Také ukazuje překrytí (modré a červené čáry) když si vybíráte elektrický sloup - velmi podobně k Tekuté Elektřině

Oba z těchto módů měly velký efekt na rychlost hry a nejspíše by nebyly moc dobré s velkými továrnami - a také nikdy nebyly aktualizovány pro novější verze Factoria. Osobně si myslím, že nejlepší moderní řešení je Power Overload od Xorimutha. Zde, cíl je rozdělit elektrickou síť do mnoha podsítí s pomocí transformátorů. Není žádná reálná změna k elektřině která jde zkrz transformátor, a cesta energie je vypočítávána módem samotným. Pokud v dané podsíti existuje sloup, který chce používat více energie než je schopen přenést, má šanci vybuchnout! Co dělá tento mód úžasným je jak čistě vypadá s každým měděným připojením pořád viditelným. Toto je protože většina nutných komponentů, jako EEI, které autor využívá pro manipulaci energie jsou na kompletně jiném povrchu - připojeny transdimensionálními měděnými kabely!

Distribuce energie zkrz transformátor, který vypadá jako vypínač, s módem Power Overload
Distribuce energie zkrz transformátor, který vypadá jako vypínač, s módem Power Overload

Poslední ctihodné uznání by bylo pro Elektrické Transformátory, což je mód, na který jsem narazil zhruba měsíc po vydání Tekuté Elektřiny. Tento mód má podobný přístup jako Power Overload, ale bez explozivních elektrických sloupů, což znamená, že netrestá nepoužívání transformátorů. Autor ale našel způsob, jak stavět transformátory, kde nejsou potřeba žádné výpočty ze strany módu. Každý transformátor je kompozitní entita s boilerem, který tvoří tekutinu z elektřiny, a poté ji generátor mění zpět na elektřinu. Toto znamená, že elektrické sítě jsou rozdělené, ale výpočty mezi síťemi jsou pořád dělány (mnohem rychlejší) hrou.

Distribuce elektřiny zkrz hustý transformátor s módem Elektrické Transformátory.
Distribuce elektřiny zkrz hustý transformátor s módem Elektrické Transformátory.

Tyto módy jsou briliantní, každý svým vlastním způsobem, a jsou schopny vivynout skvělou herní zkušenost. Přemýšlel jsem ale, jestli dokáže elektřina být více realistická? Mohla by blíže mimikovat tekutiny? A jako nejdůležitější - jsme schopni vytvočit mechaniku, která bude trestat za některé elektrické sítě s použitím limitací průchodnosti, a tímpádem vytváření incentivy pro užití transformátorů?

Co jiného jsem udělal?

Naštestí, Factorio má vestavěné simulace tekutin, které jsou vysoce optimalizované a běží v hře samotné. Tato simulace má na starost ropu ve vašich skladovacích nádržích a páru v nukleárních výrobnách elektřiny. Není perfektní a je schopna vytvořit pár bolestí hlavy, ale funguje dost dobře. Tato simulace je přesně to, co je potřeba na mimikování elektřiny, která teče jako tekutina - takže jsem se rozhodl to začít implementovat.

Po hodinách močení se v Factorio data fázi, hrání si s fluidboxy a kompozitními entitami až moc dlouho, konečne jsem se dostal k funkčnímu řešení. Byl jsem schopen spolehlivě měnit mezi elektřinou a tekutinou - kterou jsem pojmenoval tekutá energie - a esenciálně jsem změnil všechny elektrické sloupy v trubky. Níže je příklad parního generátoru zásobující elektrickou pec s Tekutou Elektřinou, ukazující obojí, co vidíte s módem (nalevo) a co se děje v pozadí (vpravo).

Zleva doprava, obrázek ukazuje generaci elektřiny, zvyšování napětí, snižování napětí, a využití elektřiny.

Tekutá elektřina bude téct k ostatním elektrickým sloupům jako tekutina, třeba jako voda nebo cokoli jiného, a odtamtud poteče dát energii vašim entitám. Jednotka této tekuté energie je v Joulech (například 10kJ), což znamená, že energie je distribuována přes sloupy. Jednotka nejspíš mohla být Volty nebo i Coulomby (jako elektrický náboj), ale použití energie integruje velmi lehce s existujícími mechaniky Factoria.

Tato implementace ale potřebuje dva typy sloupů, což jsou normální sloupy a zdrojové sloupy. Zdrojové sloupy jsou postaveny vedle vašich generátorů, a vytváří tekutou energii. Toto je děláno tím, že se postaví miniskulní stroj pod sloupem, který tvoří tekutou energii správnou rychlostí s velmi specickou konzumací energie. Aby jste mohli distribuovat energii mezi vašimi stroji, musíte použít normální sloup, který pod sebou má malý generátor (jako parní generátor) pod nimi, které mění tekutinu zpět na eletřinu. Toto také umožnujě, aby tekutá elektřina tekla zkrz několik sloupů do místa, kde je potřebována, stejně jako můžete dát několik parních generátorů za sebou. Také to znamená, že jsem schopen limitovat kolik elektřiny je jeden sloup schopen distribuovat strojům kolem sebe!

Níže je pseudokód, který zajistí, že sloupy mají správné charakteristiky.

// Výroba elektřiny diktuje konzumaci zdrojového sloupu
vyroba_elektriny = (hodnota_tekuteho_paliva * mnozsvi_na_recept) / vyrobni_doba

// Konzumace elektřiny diktuje spotřební rychlost generátoru normálního sloupu
konzumace_elektriny = hodnota_tekuteho_paliva * konzumace_tekutiny_na_tick * 60

Dále jsou na řadě transformátory, které mají vitální část v souhře módu jako tento, protože jak víme, tekutiny necestují moc daleko moc vysokou průchodností. V reálném světě, transformátor zvýší napětí proudu pro více efektivní (čtěte lehčí) distribuci energie. Tekutá Elektřina nemá žádné napětí, které by se muselo zvyšovat, ale nutná průchodnost může být snížena tím, že se tekutá energie změní na vyšší jednotku. Například, “vysoké napětí” by mohlo být emulováno s jednotkou tekuté energie 1MJ místo 1kJ. Toto znamená, že pro stejné množství tekutiny, více energie bude téci. Co mě hodně baví na této implementaci je jak brutálně lehké tyto transformátory jsou. Všechny módy, které jsem již zmínil, musely manuálně počítat průtok energie přes transformátor, nebo vytvářet komplikované, kompozitní entity, mezitím co já jsem pouze postavil výrobní stroj s specifickým receptem. Tento recept nemění celkové množství energie, ale změní ji na více nebo méně hustou formu. Čas na výrobu tohoto receptu, nebo množství tekutiny, které dokáže měnit, poté může diktovat vstupní a výstupní hodnocení transformátoru!

// Příklad transformátoru zvyšující napětí
1000 jednotek 1kJ tekutiny --> 1 jednotka 1MJ tekutiny

// Hodnocení transformátoru
hodnoceni_transformatoru = mnozstvi_vystupu_tekutiny * jednotka_vystupu / cas_vyroby_receptu

S trochou změn, toto skončilo s poměrně intuitivní a zábavnou hrou. Je to designováno, aby pouze nejnižší napětí mohlo distribuovat energii strojům nebo mohlo akceptovat generovanou energii. Poté co je napětí zvýšeno pro lepší distribuci, tekutina vysokého napětí je schopna cestovat pouze skrz velké elektrické sloupy. Tyto sloupy jsou také limitované, protože nemohou distribuovat energii strojům nebo akceptovat generovanou energii. Toto je nejspíše moje oblíbená část tété implementace. Znamená to, že je incentiva stavět vysoké napěti zkrz vaší továrnou, a kdekoliv chcete využívat elektřinu, musíte využít transformátory.

Příklad hlavního elektrického vedení s vysokým napětím (plná čára v herním překrytí), s transformátory, které snižují napětí pro stroje (pruhovaná čára v herním překrytí). Toto umožňuje pro lehkou distribuci elektřiny.
Příklad hlavního elektrického vedení s vysokým napětím (plná čára v herním překrytí), s transformátory, které snižují napětí pro stroje (pruhovaná čára v herním překrytí). Toto umožňuje pro lehkou distribuci elektřiny.

Nakonec, to, že máte energii mění design akumulátorů. Již to není chytrá entita, která by pouze akceptovala přebytečnou energii, a vypustila svou energii pokud je nutno. Místo toho je to lehká skladovací nádrž, která si hraje na velký, blbý kapacitor. Akceptuje pouze nízké napětí, což znamená, že vaše bateriové banky potřebují mnoho transformátorů. Je možne vytvořit stejné chování s vanilla akumulátory s zajímavými obvody, ale bez obvodů fungují pořád dost dobře, i když trochu neefektivně.

K Závěru

Celkově, byl jsem překvapený a šťastný, že jsem byl schopen najít implementaci, která dodržovala většinu mých cílů a ze své podstaty, vytvořila překážky, v které jsem doufal. A nemusel jsem vytvářet moc limitací hráči, což je přidaný bonus. Pouze jsem vytvořil fundamentální systém, který se sám reguluje! Pouze zneužívám pár mechanik, což přidává pár divných věcí, jako omylné míchání různých napětí, nebo schovávání fyzických měděných připojení, ale je poměrná zábava to hrát.

Otázka ale pořád nastává: jak hratelná je hra s tímto módem? Tento mód vyžaduje mnoho více výpočtů tekutin než vanilla, a využívá pár jiných mechanik. Je vysoce optimalizované Factorio schopno zůstat v taktu, i když bylo řečeno, že takový mód vám zdemoluje vaše UPS? Do vyššího detailu o tomto půjdu příští týden. Abych skončil na cliffhangeru, co jsem našel vás možná udiví. Určitě to udivilo mě.

Odkaz k druhé části.

Přispívání

Jako vždy, hledáme lidi, kteří by chtěli přispět do Alt-F4, ať už příspěvem článku, nebo pomáháním s překlady. Pokud máte něco zajímavého na mysli a chtěli by jste se podělit s komunitou upraveným způsobem, toto je místo, kde můžete učinit. Pokud si nejse úplně jisti o tom, rádi vám pomůžeme diskuzí nápadů a strukturací otázek. Pokud se vám to líbí, přidejte se na Discord aby jste začali!