Ecco una idea che mi è venuta provando a Brutal Doom: miscelare 3D (ambienti) e 2D (sprite pixellosi) ha una strana alchimia che sembra non morire mai. La correttezza matematica della terza dimensione che cerca di andare a braccetto con la magia della animazione 2D.
Fare una FP cam con il classico WASD+[jump] non costa nulla; gli asset 3D non devono essere super complicati (risorse CC0 3D come quelle di Kenny già potrebbero bastare... con qualche ritocco), mentre il 2D lo si puo pre-progettare grazie al 3D rendering e rotoscoping (usi i render 3D per la "massa" delle animazioni mondane come l'idle, walk ecc.... ma poi passi al "disegno a mano puro" solo per i frame che fanno la magia del 2D). Ecco quello che ho impacchettato tra una cosa e l'altra:
Ma credo che eliminerò il corpo quando si guarda in basso; ci sono ancora alcune cose da valutare, come ad esempio la sincronizzazione tra mani e corpo (quando si corre, quando si atterra ecc...) mentre ancora non ho trovato un modo ottimale di controllare la telecamera.
Primo problama: la telecamera è animata (respiro in idle, balza su e giù quando corre: ho messo la sferetta bianca al centro per tracciare il movimento. La sferetta bianca è immobile fissa: è la telecamera che va su e giu).. ma non può essere animata quando si guarda lo sprite del corpo in basso (essendo un'immagine 2D, romperebbe l'illusione); e non ho ancora trovato un modo performante per avere entrambe le cose (la telecamera si muove solo se si guarda con una certa inclinazione in alto, quando si guarda lo sprite del corpo si ferma).
Secondo problema:
Avevo in mente di fare in modo che gli sprite 2d avessero una animazione extra per quando li si guarda dall'alto. Nonostante avevo già fatto il codice, non sono ancora riusto a trovare un modo efficace per "fondere" le due animazioni (dalla gif animata noterete che la luce cambia: questo perché la seconda animazione "sprite visto dall'alto" usa un tipo di billboard che non tiene conto dell'inclinazione di nessuna asse (neppure la Y). Questo mi serve perchè lo sprite billboard deve essere necessariamente visto "senza inclinazioni").
Inoltre avere gli sprite da una inclinazione addizionale aumenta in modo esponenziale il numero di frame (raddoppiano).
Se non temete un codice Brutale (nel senso di brutto); potete trovarlo qui:
https://gitlab.com/FortoJ/brund
Se vi interessa fare una prova spicciola, qui c'è il l'export eseguibile per Linux e Windows
Brund.tar.gz ~28MB
Grazie a Godot potete mettere mano al codice senza dover installare o preparare alcun IDE; vi basta prendere una delle build unofficial e buttargli la cartellina GitLab dentro.