JavaFX è simpatico ma non ci vivrei

In questo post parlerò di un esperimento che ho deciso di portare avanti per LHEngine, il motore di Langobardia Horribilis: in Trebia . 

Da Hardcode a Softcode

Il mondo di gioco in LH in Trebia è letteralmente un file json che contiene un "Mondo", cioè una mappa di "Stanze". Le Stanze sono quelle in cui il personaggio si muove, e quelle di esse che non sono "fisse" vengono determinate casualmente. In questo modo ogni partita ha un Mondo dove la maggiorparte delle Stanze sarà diversa dalla partita precedente in termini di posizione.

L'idea era sviluppare un editor carino con UI per poter modellare in modo coerente questo file di Mondo.   

L'arte perduta delle applicazioni desktop

Questa intestazione un po' pretestuosa è in realtà una metafora delle ultime mie esperienze lavorative, che ovviamente valgono quello che valgono in quanto esperienza personale. È che in quasi 10 anni di lavoro ho sviluppato solo una volta per desktop, e peraltro con Electron.js.

Si, ma era meglio usare Swing?

JavaFX è il "successore spirituale" di Swing, la (forse) più nota libreria per sviluppo di applicazioni desktop in Java. Nei miei primi esperimenti di sviluppo di giochi in Java lo utilizzai per la Ui e l'editor di livelli di Arkolour, senza sapere che già allora era disponibile JavaFX.

Meglio tardi che mai 

Ignorai l'esistenza di JavaFX fino a poco tempo fa

Ziocàn le dipendenze

Chiamatemi pure sciocco, ma l'idea di utilizzare le classi del modulo core dell'LHEngine per popolare i campi dell'editor mi sembrava una cosa intelligente. Ovviamente ho dovuto piangere e piegarmi al dio Gradle per capire come configurare il tutto correttamente. Ho risolto referenziando il core.jar in questo modo 

implementation '../'

Visto che procedendo nello sviluppo ho scoperto di dover leggere e scrivere file .json, e non volendo appoggiarmi alla libreria di LibGDX, ho provato a utilizzare Jackson. Mi sono arreso e me li scrivo io, anche perché mi sono rotto le palle delle dipendenze, dei moduli e delle madonne. 

FXML e Annotazioni

Questa è una cosa veramente bella. La UI in JavaFX utilizza un formato di markup chiamato FXML, e può referenziare funzioni Java tramite le Annotazioni. Se si arriva da sviluppo di applicazioni web HTML e Javascript questa parte scorre in modo molto naturale.

Per il design della UI ho utilizzato Scene Builder, uno strumento grafico che permette di progettare le Scene tramite drag and drop. 

Tutto questo lavoro per...

... abbandonare il progetto. JavaFX è divertente, ma inutilmente complicato per quello che avevo in mente e, dopo un aggiornamento dell'IDE, di Gradle e della JDK, ha dato ancora problemi e mi sono semplicemente stancato di portarlo avanti. Visto la destinazione a semplice tool di supporto alla LHEngine, lo riscriverò come pagina html con Javascript e Alpine.js.

Commenti

Post più popolari