Breve Avventura in GameMaker Studio 2



Un po' per frustrazione, un po' per curiosità, ho scaricato Game Maker Studio ed ho provato a farci qualcosina di semplice. Vi racconto un po' com'è andata.

Forse qualcuno si ricorda un mio post di qualche tempo fa. Circa un annetto fa andai allo svilupparty come espositore, per mostrare al mondo un embrione del progetto di Astralis Forgotten Fighters.
Ebbene, dopo un annetto, siamo ancora in alto mare. I programmatori di Wannabee Studios si sono dimostrati particolarmente impegnati con altri progetti e il procedere è stato estremamente lento, praticamente manchiamo di un prototipo funzionante.

Insomma, ho un po' di incazzamento a pelle. Però da povero scrittore, non posso certo contribuire a risolvere questo tipo di problema.
Però in effetti, ho fatto un percorso di studio "leggermente" tecnico. Ingegneria Meccatronica non insegna come si fanno i videogiochi, assolutamente.

Dopo però aver programmato a sbalzo in C, lua e VHDL su un range di programmi come Matlab, Twincat, Quartus II e dopo aver preso una certificazione CLAD Labview, mi son detto "che sarà mai imparare a programmare un gioco? Sarà difficile ed impiccioso sicuramente, ma non credo più di quanto non abbia già fatto in questi anni".

Lo shader da highlights

Quindi mi misi in testa di fare una cosa molto semplice: accroccare 2-3 cose in un prototipo funzionante di un giochino semplice, sfruttando molti degli asset prodotti dal buon Phobox per Astralis. Il dubbio era su cosa usare per programmare. Unreal Engine 4, Unity, Cryengine o altro?
Ho provato ad approcciarmi un attimo all'Unreal Engine 4 e mi è sembrato inutilmente complicato a primo impatto. Troppo da scavare per ottenere qualcosa in 2D di funzionante. In 3D sicuramente è la scelta migliore, ma non volevo perdere così tanto tempo ad imparare qualcosa, avevo bisogno di roba più immediata. Ecco quindi che puntai a GameMaker Studio 2. Il motore grafico per roba 2D che "non richiede esperienza di programmazione in codice".

Tra tutti però è l'unico non gratis. Per poter essere sfruttato al meglio richiede una licenza. La versione di prova però basta per iniziare e capirne le potenzialità. Il metodo di programmazione usato da GameMaker Studio si chiama Drag&Drop, o DnD. All'interno degli oggetti creati dal programmatore, è possibile creare del codice combinando blocchi che eseguono funzioni specifiche. Non pensiate che questo sia un metodo per ebeti e basta, serve comunque testa per capire cosa si sta facendo. Inoltre questo sistema di programmazione, guarda un po', è lo stesso adottato da Labview.

Come primo passo, ho seguito il tutorial offerto dal produttore stesso. L'obiettivo finale era costruire un twin stick shooter, giochi dove si comanda in modo separato il movimento e la direzione di sparo del "protagonista". Il tutorial è ben fatto e spiega tutti i passaggi base, davvero è eseguibile da chiunque e arriva a spiegare molte delle basi. Oltre al tutorial, il forum, reddit e la documentazione ufficiale sono posti dove attingere tantissime informazioni.

Il concetto più importante secondo me da capire, è come Game Maker focalizzi tutto sugli oggetti che non devono per forza essere entità di gioco. Pensare all'astronave che spara proiettili come un oggetto va benissimo, ma un oggetto può anche essere della semplice logica che viene eseguita in una pagina. Questa può creare variabili, spostarle in base a certe azioni o fare altre cose, come gestire transizioni da una stanza all'altra. Una volta colta questa caratteristica del motore, è diventato molto più semplice realizzare ciò che avevo in mente.
L'altro punto importante da capire é come i condizionali step e draw funzionino ad ogni frame, rendendo molto della logica di gioco dipendente dal framerate.

Il sistema a blocchi è si intuitivo, ma diventa grosso facilmente

Già in prima istanza non ho seguito il tutorial alla lettera, ma avevo implementato qualche mia variazione. Da lì decisi di ampliare il gioco e quindi, armato di licenza windows, mi sono avventurato in Game Maker Studio 2 completo, sfruttando funzioni non toccate dal tutorial.
Avevo diversi obiettivi: inserire 2 navi diverse da controllare per il giocatore, con tanto di menu di selezione fatto a modo,  aggiungere un'arma secondaria,  aggiungere powerup alle armi, creare tipologie diverse di nemici,  avere una schermata di game over e  implementare effetti particellari.

A questo punto mi sono scontrato con qualche limite del sistema DnD. Fortunatamente in GMS2 si possono usare a piacimento sia parti a blocchi che parti in codice. Ho sfruttato il codice per creare uno shader personalizzato che disegnasse un contorno colorato sui nomi delle navi nel menu di selezione. Ne ho anche fatto uso per creare gli effetti particellari per le esplosioni dei nemici. Li ho convertiti però in DnD una volta capito bene come fare. L'ho inoltre usato per gestire meglio alcune istanze di causa effetto che trovavo ostiche da implementare con i blocchi. Ho apprezzato molto questa flessibilità. Sul marketplace ci sono molti plug in a pagamento o gratis che possono aiutare a realizzare determinate cose, ma ho preferito gestirle a modo mio (un esempio è prioprio lo shader outline. Potevo usare questo, ma ho fatto da me raccattando codici dai forum e fondendoli).

Avrò speso su questo progetto un 4-5 giorni, ma non ammazzandomi dalla mattina alla sera, ma dedicandoci qualche ora al giorno. Per il risultato ottenuto sono devo dire molto soddisfatto.
Unico difetto è che per fare cose un pelo complesse, il codice scritto in formato DnD diventa abbastanza grosso ed è difficile da analizzare in un sol colpo perché fuoriesce dallo schermo.
Certo, ad un primo approccio GMS2 mi sembra anche abbastanza... limitato. È abbastanza flessibile per realizzare cose interessanti in 2D, ricordiamo che Hyper Light Drifter e Undertale sono stati fatti con questo motore, ma di sicuro se ci si vuole cimentare in cose più complesse, credo che Unity sia più indicato. Però quel che ho visto mi piace, è intuitivo a sufficienza da non doverci sbattere troppo la testa per saltarci fuori, almeno per cose semplici come quello che ho realizzato io.

Il risultato delle mie fatiche lo potete vedere in questo video. Gli artwork non sono assolutamente pensati per un gioco con questa prospettiva ed è al momento sbilanciato nel gameplay, ma l'intelaiatura di base c'è.


Chissà che col tempo non dia luce a qualche altra cosa....


Stay Classy, Internet.

Nessun commento:

Posta un commento

01 09 10