Stavo lavorando a un progetto costruito attorno a un gioco, ma non un gioco mio. Ci avevo messo dentro mesi: un motore di streaming costruito da zero, un'infrastruttura pensata per far girare partite live su internet senza installazioni da nessuna delle due parti. La tecnologia in sé funzionava, e funzionava alla grande. Il problema era tutto quello che c'era intorno: il gioco al centro di questo progetto non era mio, e man mano che diventava sempre più chiaro, c'è stato un punto in cui semplicemente non valeva più la pena provare a costruire qualcosa di serio sopra la proprietà intellettuale di qualcun altro senza un contratto.
Quindi ho fatto la cosa più ovvia e più difficile insieme: ho tenuto l'infrastruttura, che restava preziosa indipendentemente dal suo contenuto, e ho buttato via il gioco che era il fulcro di quel progetto. Invece, ho deciso di costruire qualcosa all'interno di un genere che conosco bene, e costruire qualcosa di completamente nuovo attorno a esso: stavolta, tutti i personaggi sono miei, le meccaniche di gioco sono mie, e non ci sono barriere legali tra me e la costruzione di un buon prodotto perché non c'è nessun altro a cui chiedere un permesso.
Detta in questo modo può sembrare una decisione presa in un pomeriggio. Non lo è stata. C'è una differenza fondamentale tra "modificare quello che già c'è" e "partire da una tabula rasa completa" che ho sentito fisicamente in questi primi giorni: ogni singola decisione che era già stata presa da qualcun altro (come si muovono i personaggi, quanti pulsanti servono, il ritmo di un combattimento) adesso va inventata, e ognuna di quelle decisioni ne fa scattare una dozzina d'altre. Ho passato molto più tempo a scrivere elenchi di decisioni ancora da prendere che a scrivere codice vero e proprio, cosa per cui mi sono sentito in colpa nei primi giorni, come se non stessi "lavorando davvero", ma ho fatto pace con il fatto che quando stai costruendo qualcosa da zero, un buon elenco di decisioni è lavoro tanto valido quanto una riga di codice, e probabilmente di più.
Una parte su cui mi sto concentrando molto in questi ultimi giorni è su quale motore costruire le cose. Nel mio ultimo progetto sono finito a cercare di far comunicare tra loro diversi linguaggi solo per far funzionare un pezzo già costruito, il che ha causato ogni sorta di problema. Stavolta ho la libertà di costruire sopra uno stack molto più semplice fin dall'inizio e sto attualmente valutando alcune opzioni che mi permetteranno di tenere tutto in un unico linguaggio, tra il motore di gioco stesso e l'infrastruttura di streaming. Non ho ancora preso una decisione definitiva e sto bene così: è meglio perdere un po' di tempo adesso che rimpiangere quella decisione più avanti, tra sei mesi.
Non entrerò nei dettagli specifici di cosa esattamente sto costruendo, in parte perché è ancora molto presto nel progetto e in parte perché probabilmente sarà molto più divertente parlarne quando avrò qualcosa di più concreto da mostrare. Quello che posso portarmi a casa finora è che buttare via mesi di lavoro fa male, ma tenere solo le parti che hanno senso e ricominciare altrove è un tipo diverso di fallimento. Più che altro una potatura, forse.