Prima uno, poi cinque: come cresce questo gioco 🪨
Chi guarda la nostra lista di versioni trova 29 release in poco più di cinque settimane, dalla 0.1.0 del 20 giugno alla 0.9.0 di ieri. Come si fa? Di certo non sedendosi a costruire una funzione completa in un colpo solo. Costruiamo per fasi: prima la versione più piccola che funzioni davvero, poi, quando è stabile e divertente, la fase successiva. Proprio ora gli asteroidi lo mostrano meglio di qualunque altra cosa.
Fase 1: esistono, punto. Quando gli asteroidi sono arrivati nel gioco, contava una sola domanda: atterrare, camminare e scavare funzionano su un corpo minuscolo che si gira intorno in un paio di minuti? Un asteroide non è un piccolo pianeta: ha una propria classe di dimensioni, una gravità diversa, un orizzonte diverso. Era la fase 1, e tutto il resto era volutamente secondario. Per questo esisteva esattamente un tipo: era scritto nel codice e, siccome non aveva un elenco di superfici possibili, ogni singola colonna veniva coperta di cristallo. Ogni asteroide dell'intera galassia aveva lo stesso aspetto. L'unica variazione era la circonferenza e dove capitavano i crateri.
Fase 2: ora può essere diverso. La fase due è finita da ieri e arriverà nel gioco con il prossimo aggiornamento. Ci saranno cinque famiglie di asteroidi, e ogni roccia estrae la propria a sorte con pesi diversi. Quella rocciosa è il cavallo da lavoro: porta ferro, silicato, rame e stagno. Quella metallica è quasi tutta metallo: titanio dappertutto, cobalto, tungsteno e platino più in profondità. Quella ghiacciata sta a −95 °C e porta sostanze volatili invece di metalli: carbonio, litio, zolfo. Quella ricca di carbonio è nera come fuliggine, piena di grotte, e nasconde uranio e diamante molto in basso. E quella cristallina, esattamente ciò che erano prima tutti gli asteroidi, ora è la rarità. In più ogni corpo ha il proprio rilievo di crateri: densità, larghezza dei bacini, profondità, altezza dei bordi e quanto è ondulata la polvere tra l'uno e l'altro. Prima erano cinque numeri fissi per tutto l'universo, ed è per questo che ogni corpo senza atmosfera sembrava identico. Ne approfittano anche le lune, tra l'altro, perché passano per lo stesso percorso nel codice.
Il vero guadagno viene dopo. Il bello di una seconda fase costruita bene è la terza: una sesta famiglia non è più un lavoro di programmazione, ma una voce in un file di dati: nome, superfici, minerali, frequenza, fatto. «Qualcuno dovrebbe inserirla» è diventato «potremmo provarla una sera». Ecco perché la ricostruzione ne vale la pena.
Perché facciamo sempre così. Tre motivi, tutti imparati a caro prezzo. Primo: non sai in anticipo se un'idea è divertente. Una piccola prima versione si può provare con Justus in una sera, e poi si sa se l'ampliamento vale la pena, oppure se l'idea era in realtà noiosa. Secondo: un piccolo passo si può rivedere, testare e, se serve, annullare. Una funzione gigante che tocca cinquanta punti insieme si può solo sperare che vada bene. Terzo, e più importante per noi: questo gioco lo giocano i bambini. Per loro una funzione gigante a metà è peggio di una piccola che funziona in modo affidabile.
Lo stesso schema ovunque. I blocchi all'inizio erano cubi; rampe, scale e sfere sono arrivate dopo, poi la colorazione, poi le sfumature fini dei bordi perché niente sembri più una scatola di cartone. I pianeti sono partiti come un sasso grigio; veri mari, sistemi di grotte, clima in base all'altitudine e vulcani sono venuti dopo, poi i mari ghiacciati sui mondi freddi, e ora gli asteroidi. Nella sicurezza dei bambini c'era all'inizio solo un comando di segnalazione nella chat, poi i ban con motivazioni e pause, e da ultimo la modalità osservatore invisibile. E anche i nostri banditi, appena rilasciati, sono ancora fase 1: ti colpiscono con un effetto di prossimità invece che con veri proiettili in volo. Non è una dimenticanza, è scritto nel piano: fase 2, quando la fase 1 si sarà dimostrata valida.
Quanto costa questo modo di lavorare. Due cose, sinceramente. Primo, i mondi esistenti cambiano: poiché il tipo di un corpo celeste viene ricalcolato a ogni caricamento e non viene mai salvato, gli asteroidi dei tuoi vecchi mondi riceveranno con il prossimo aggiornamento famiglie diverse e un rilievo diverso. I blocchi che hai costruito restano, ma potrebbero all'improvviso fluttuare liberi o ritrovarsi incastrati nella roccia. Per questo cose simili finiscono sempre nelle note di rilascio. Secondo, anche la prima fase va costruita in modo che la seconda sia possibile. Per gli asteroidi significa che ora esiste esattamente un punto nel codice che risponde a «questo è un asteroide?», e un test che verifica, per ogni famiglia generata, che venga davvero classificata come tale. Se dimentichi un solo chiamante, torna un vecchio brutto bug: una roccia in cui non si riesce a estrarre nemmeno un blocco.
E ancora una volta i test ci hanno salvati. Mentre costruivamo le nuove famiglie, è scattato un controllo vecchio di tempo: verifica che su ogni mondo con giacimenti si possa raggiungere la ricetta del cavo. Tre delle cinque nuove famiglie non avevano proprio il rame: i giocatori sarebbero rimasti bloccati lì nella progressione. Nessun essere umano se n'è accorto; l'ha fatto un test scritto qualche settimana prima. Ora tutte le famiglie hanno rame e silicato.
Il prossimo passo sarà un'altra di queste fasi, da qualche parte tra piante, animali e banditi. Quale sarà, di solito lo decide Justus. 🌟
Commenti