Alt-F4 #3 - Tronparty

Scritto da JD-Plays, T-A-R, Raiguard, editato da Therenas, nicgarner, tradotto da Frank_si_narra il 04-09-2020

Tabella dei Contenuti

Benvenuti nella terza edizione di Alt-F4. Questo fine settimana, sarà fatto un tentativo per superare il numero più alto di sempre di giocatori su un singolo server di Factorio; qui sotto i dettagli su come entrare e divertirsi. Ci sarà anche il rapporto sulla festa d’innaugurazione dei Grandi Giochi della Comunity, che avremmo dovuto coprire la settimana scorsa. (Tutta colpa di Therenas). Infine Raiguard ci mostrerà una delle sue mod. Iniziamo!

PS: Cerchiamo persone motivate per tradurre tutte le edizioni di Alt-F4. Se siete interessati, potete trovare più informazioni alla fine di questa edizione. Grazie!

Event: Molten Silicon JD-Plays

Il fine settimana è alle porte, avete qualche piano? Giocherete come al solito a Factorio per 25 minuti, per poi realizzare che il sole è già tramontato e sta sorgendo di nuovo? O volete solo giocare a Factorio con un paio di amici?

Beh, abbiamo delle buone notizie. Questo fine settimana, un paio di nostri amici stanno organizzando qualcosa di molto semplice: fondere completamente il processore del nostro server! Unitevi a noi per il Molten Silicon event dove il nostro solo obbiettivo è radunare quantì più giocatori possibile sullo stesso server e lanciare un razzo. Oh, e fondere la CPU del server allo stesso tempo ovviamente! Ci sarà da fare per tutti i player, da costruire la base a scacciare i biters con altri Mantelli Cremesi (I Cacciatori). Anche il nostro acerrimo nemico e sarà presente perciò avremmo bisogno che alcuni di voi entrino a far parte dei Boscaioli.

Perciò se avete qualche ora libera questo fine settimana e avete intenzione di aiutarci a battere il precedente record di 521 giocatori in contemporanea, entrate a far parte del nostro server alle 11am UTC questo Sabato, 5 Settembre. Sarà facile da trovare, perché sarà il più garnde server online!


Le informazioni sul server saranno fornite poco prima dell’inizio dell’evento sul canale #information del nostro Red Circuit Discord. Per più informazioni generali, visitate il nostro sito.

Per favore non rompete i giocattoli nuovi T-A-R

La prima puntata di Alt-F4 è stata una geniale idea nata qando Venerdì 21 Agosto il mio cervello testardo è andato su Factorio.com, sapendo che non ci sarebbe stato un nuovo FFF #361 ad aspettarmi. Ho deciso di voler supportare questa iniziativa, e il modo migliore era di agire rapidamente. Perciò, qui segue il rapporto sui nuovi “not-a-bug”-bug reports della versione 1.0.

La seconda cosa migliore dopo il party per il rilascio ufficiale a Praga, sarebbe un vecchio caro server multiplayer. Molteplici party per il rilascio sono stati fatti quel Venerdì, tutti ospitavano nuove mappe con tanti ingegneri da tutte le parti del mondo riumiti per posare dei nuovi ambiziosi main bus. Il Discord dei Big Community Games è riuscito ad ottenere un picco di 201 giocatori, un dato soddisfacente siccome per beneficiare della feature migliore della 1.0 (Indizio: Spidertron!) avrete bisogno di un bel po’ di science pack.

Ricco di depositi minerari densi e un’inteligiente suddivisione dei compiti (assegnando colori e incarichi ai team), il server è cominciato come una colonia di formiche iperattive con la naturale inclinazione per le colonne di smelting.Il messaggio lasciato al punto di spawn ha permesso di organizzare magnificamente il sempre crescente numero di ingegneri.All’inizio è stata costruita una fabbrica separata da quella per la ricerca, al solo scopo di rifornire i Mantelli Cremesi di armi, armature e munizioni. Questo ha fornito sia ai soldati che ai costruttori una scorta per difendere e far crescere la fabbirca.

Ed è cresciuta! Ci sono volute 11 ore per sfornare il primo razzo, assieme a circa 20 Spidertron, una caterva di equipaggiamento, armi, proiettili ed esplosivi. Stando ai segnali lasciati dagli esperti ingegneri sulla mappa, a tre luoghi erano stati dati dei nomi: L’Italia, Baia di Bilka e Lago Twinsen.

Nonappena è iniziata la produzione degli Spiderton è divenuto subito chiaro come quelle zampe dessero una strana sensazione di potere. L’intrigante visione di poter agilmente camminare su qualsiasi superficie e macchinario ha lentamente fatto diventare le ricognizioni d’esplorazione un puro test delle capacità dei nuovi giocattolini da distruzione. I nastri trasportatori si sono presto rivelati essere d’interesse per gli Spiderton che gironzolavano nella mappa. L’euforia di gruppo ha presto trascinato anche gli admin del server che si sono apprestati ad unirsi alla festa, facendo diventare quello che era un semplice party per il rilascio del gioco un vero e proprio rave di Spiderton. Una pista da ballo arlecchina è subito stata allestita per far scatenare le zampe dei ragni di ferro:

Una combinazione di nastri trasportatori orientati in direrzioni opposte e dei buchi nel terreno hanno fatto sì che le zampe del nuovo Spiderton si dividessero in modo ridicolo all’infinito. Beh, si direbbe sia tempo di avvisare gli sviluppatori con un frechissimo bug report della 1.0. È finito per essere uno dei bug report più visti, ma è prontamente stato segnalato come duplicato: not-a-bug. Lo sviluppatore V453000 aveva già risposto a uno dei primi bug report della 1.0 (30 minuti dopo il rilascio dell’update) dicendo che restringere i movimenti dei ragni metallici non sarebbe stato giusto e che i loro esemplari stessero facendo semplicemente il loro lavoro. Ma il fatto che possiamo farlo non vuole necessariamente dire che “dobbiamo”…

Abbiamo comunque finito per divorarci il playtrhough ed innamorarci di Spiderton. È uno di noi ora.

Mod spotlight: Editor Extensions Raiguard

Tutti conoscono la modalità creativa. Ti permette di ottenere diversi oggetti ‘infiniti’ che puoi usare per provare i progetti della tua fabbrica. È in giro da tempo, ed ha servito il pubblico con onore nel corso degli anni.

Ma, utilizzando la modalità creativa per un po’ di tempo si possono cominciare a notare dei picchi di lag qui e là. Continuandola ad utilizzare sempre di pù aumenteranno di frequenza anche questi picchi. Dopo abbastanza tempo, il gioco inizierà a rallentare significativamente.

Un anno e mezzo fa ho iniziato a vedere lag nel mio mondo in creativa. Avevo appena rilasciato la mia prima mod al tempo, perciò avevo un po’ di esperienza con l’API. Per curiosità, ho iniziato a scavare nel codice sorgente della Creative Mod per cercare di scoprire cosa succedesse.

Ciò che ho scoperto è: la Creative Mod è fatta davvero bene… per il tempo che ha. La mod è stata pensata per la 0.13, quando l’API per il modding era molto più ristretto e limitato. Perciò doveva riuscire a fare tutte quelle cose magnifiche con un piccolo repertorio di comandi a sua disposizione. Ma ora l’API è drasticamente più completo e con molte più potenzialità. Mi sono quindi messo a lavoro per realizzare un aggiornamento della Creative Mod che sfruttasse tutte queste nuove funzioni disponibili, riducendo perciò l’impatto sulle prestazioni.

Ma alla fine sono giunto alla conclusione che aggiornare la Creative Mod non fosse fattibile. Avrebbe richiesto troppi cambiamenti radicali per ammodernarla, ho quindi deciso di creare una mod da capo. La mod è stata rilasciata inizialmente sotto il nome di Infinity Mode, nome poi cambiato in Editor Extensions per vari motivi.

Editor Extensions non rimpiazza il map editor del gioco come la Creative Mod e la Infinity Mode facevano — lo migliora. Ergo, la EE non ha una finestra dei “cheat” analogamente alla Creative Mod e alla Infinity Mode. L’editor ha tutte quelle funzionalità — e tante altre — nascoste nei vari menu.

La caratteristica di punta della EE è la performance — è molte magnitudini più veloce della Creative Mod. Seguono alcuni dei metodi che ho usato per ottenere ciò.

Elettricità

La prima cosa da fare era creare fonti di energia e risucchiatori di energia. La Creative Mod (CM da qui in poi) riesce a farlo usando dei biler e riempendoli di energia ogni tick usando uno script. Ora però il gioco ha un’entità apposta che fa questo automaticamente: chiamata Electric Energy Interface (EEI). Quest’entità può magicamente produrre e consumare elettricità dal nulla, con aprametri impostabili.

C’erano due cose che volevo migliorare della EEI — l’interfaccia (GUI da qui in poi) e la priorità dell’utilizzo. La GUI della EEI è funzionale, ma confusionaria, ed ogni entità può avere solo una priorità assegnata alla volta. Ovviamente, posso risolvere il primo problema creando una GUI personalizzata, ma il secondo va risolto in maniera più complicata.

Quella che viene visualizzata come infinity accumulator è una delle cinque possibili entità, ciascuna con il proprio livello di priorità. A seconda di come viene configurata nella GUI, un piccolo script scambierà l’entità con un’altra dall’aspetto identico, ma con una diversa priorità di utilizzo. Questo permette ad una singola “entità” di fare tutto: produrre, consumare, e immagazzinare una quantità modificabile di energia fino a (999 yottawatt!).

Chest

Il prossimo problema che volevo risolvere erano le chest. La CM ha una pletora di chest che possono generare, duplicare o eliminare oggetti. Per fare ciò usa però script per ognuna delle funzionlità, gravando notevolmente sulla CPU piazzando anche solo poche ceste.

Nella 0.16, al gioco è stata fortunatamente aggiunta la infinity chest, che può fare tutto questo e altro. Funziona impostando degli infinity filters, che forniscono nativamente le funizioni “al minimo”, “al massimo” ed “esattamente”. questo scarica tutta la manipolazione degli oggetti al gioco stesso, azzerando totalmente il peso dello scripting!

La EE va oltre le semplici infinity chest aggiungendo varianti logistiche, e implementandone un tipo speciale chiamato aggregate chest. La aggregate chest è molto simile alla creative chest — contiene uno stack di ogni oggetto nel gioco. Un piccolo script imposta gli infinity filter quando viene piazzata e al resto pensa il gioco. Anche di questa chest esistono le varietà standard e quelle logistiche.

Combinando le infinity e le aggregate chest puoi ottenere esattamente il risultato desiderato per testare i tuoi progetti.

Nastri trasportatori

Spesso succede di volere caricare degli oggetti velocemente e con facilià su un nastro, per testare le varie configurazioni di macchinari. In vanilla si può afre con una infinity chest e un loader (un’entità nascosta ottenibile tramite il map editor). Questi loader sono però molto basilari, se si vuole per esempio piazzare oggetti su entrambi i lati del nastro bisogna utilizzare un altro loader ed un’altra infinity chest speculari agli altri. Un totale di ben quattro entità, senza contare anche di dover configurare le chest singolarmente, portando via ancora più tempo.

Per risolvere questo problema, mi sono basato su un’altra mod — Miniloader. Molti preconcetti sono in comune fra il Miniloader e l’infinity loader, perciò questa spiegazione vi fornirà uno sguardo anche sul funzionamento di quella mod.

L’infinity loader è l’unione di almeno cinque oggetti.

Da sinistra a destra, abbiamo l’entità del loader stesso, un’infinity chest, due stack inserter con filtro e un constant combinator. Tutte queste entità giocano un ruolo nel funzionamento dell’infinity loader.

Quando piazzi un infinity loader, ciò che stai realmente posizionando è un “combinatore fantoccio”. Quest’ultimo altro non è che un constant combinator camuffato da loader. Qundo viene piazzato, uno script distrugge immediatamente quel combinator e lo rimpiazza con una copia invisibile. Quest’ultimo è quello con cui il player effettivamente interagisce, ed è anche possibile salvarlo in un progetto mantenendo il filtro impostato. A questo punto viene aggiunto il loader assieme un’infinity chest invisibile e almeno due stack inserter con filtro al massimo della velocità.

Quando il filtro del loader viene modificato tramite la GUI, ciò che viene effettivamente modificato sono i filtri dei due inserter invisibili e dell’infinity chest. Questi inserter estraggono gli oggetti dalla chest e li mettono sul nastro ad un’incredibile velocità, facendo sembrare che compaiano dal nulla.

Ma è vero anche il contrario — se si ruota un’infinity loader per fargli consumare gli oggetti, gli inserter prenderanno gli oggetti in arrivo mettendoli nella infinity chest, dando l’impressione che stiano magicamente scomparendo. Tutto ciò si svolge dietro le quinte e sfrutta delle funzioni vanilla. Uno script viene usato per “impostare” il loader, ma da lì in poi, non interviene alcuno script, azzerando un’altra volta il carico sulla CPU dato dall’utilizzo di questi loader.

Ovviamente per semplificare il più possibile le cose, il tutto è ridotto al solo oggetto chiamato infinity loader. Il loader modificherà automaticamente la belt al suo interno a seconda di quella che gli viene messa attaccata, anche gli inserter aumenteranno e diminuiranno per permettere al nastro di essere sempre pieno. In più, siccome ci sono due blocchi speculari di inserter, ciascuna parte del nastro può avere un filtro indipendente.

Il risultato è un’entità semplice da usare e molto versatile, che può produrre e consumare oggetti diretamente su un nastro, senza influire significativamente sulle performance.

Cheat del personaggio

Nonostante la Editor Extensions sia pensata per essere utilizzata dal map editor, è anche relativamente utile quando gestita da un personaggio. Utilizzando la cheat mode (a cui si accede inserendo il comando /cheat o /cheat all nella consolle), si ha accesso a tutti i tool di cui abbiamo parlato prima.

Alcuni di quelli che non ho menzionato includono l’equipaggiamento supercaricato:

Utilizzando questo equipaggiamento puoi diventare immortale, correre super veloce e vedere chiaramente al buio. Il super roboporto, in combo con i super robot da costruzione, ti permettono di costruire e smantellare velocemente. Il risultato è che puoi accedere a molti dei poteri illimitati che avresti nell’editor, rimanendo nel tuo confortevole corpo in carne e ossa. Se in futuro rimuoverai poi la EE dal salvataggio, l’equipaggiamento semplicemente scoparirà, lasciando il reach infinito come unica traccia della passata esistenza della mod.

Conclusioni

La Editor Extensions è il risultato di più di un anno di prove, sia in gioco che del codice stesso. Ci sono molte, molte cose che qui non ho incluso — ad esempio uno shortcut per la visualizzazione dell'editor, la sincronizzazione dell’inventario, gli infinity pipe, ed uno scenario per il testing — ma renderebbero il post più lungo di quanto già non sia. Spero vi sia piaciuto l’articolo e che abbiate capito qualcosa di più sul dietro le quinte del fantastico API di Factorio.

Gli sviluppatori di Factorio ci viziano con tutte le potenzialità di questo gioco, senza menzionare che l’API migliora ad ogni aggiornamento. Grazie per la lettura, e grazie agli sviluppatori per rendere tutto ciò possibile!

Contributo

Siamo sempre in cerca di persone che hanno qualcosa di interessante da raccontare alla comunity di Factorio. Se sei una di loro, entra nel server Discord (o prendi parte al progetto su GitHub) per iniziare a lavorare. Quasi tutti gli argomenti vanno bene, quindi non avere premura!

Abbiamo anche intenzione di iniziare le traduzioni degli articoli questa settimana, il che renderebbe la rubrica di Alt-F4 disponibile per molte più persone rispetto a quante ne toccherebbe la versione inglese. Abbiamo già mesos in piedi il sito per gestire il tutto, perciò ora abbiamo solo bisogno di persone che facciano le effettive traduzioni. Se sei interessato, entra a far parte del Discord e dai un’occhiata nel canale #translation.