#BDDGZProject

Matteo Bilotta :fediverso:byloth@mastodon.uno
2025-04-11

No, non ho abbandonato il progetto. GIAMMAI!

Anzi... Sono sempre più determinato a volerlo portare a termine.
Il Mondo ne ha bisogno! 😌

Scherzi a parte...
La mia #OCD nel voler fare le cose perfette, mi ha costretto a sperimentare molte strade differenti.
L'ultima che ho imboccato, mi ha portato dritto dall'architettura #ECS: en.wikipedia.org/wiki/Entity_c

L'ho studiata e ho riscritto tutto seguendone i sacri dettami, permettendomi qualche piccola modifica affine ai miei gusti (#OOP).

#BDDGZProject

Matteo Bilotta :fediverso:byloth@mastodon.uno
2024-11-28

Dopo il consiglio di ieri (sempre di ALTISSIMO livello) da parte del buon @shurizzle, in cui mi suggeriva di lasciar perdere i `Proxy` e trovare una strada alternativa, mi son buttato in alcuni test di performance.

Risultato: l'esecuzione tramite `Proxy`, richiede oltre il 220% del tempo impiegato da una funzione classica! 🤯

Poiché l'ottimizzazione è LA Priorità, ho cercato una soluzione diversa e altrettanto valida che non comportasse alcun overhead.

Alla fine l'ho trovata. 😏

#BDDGZProject

La definizione in TypeScript di una "semplice" classe che instanzi un oggetto callable / function-like tramite l'uso del `bind` e del `setPrototypeOf` ma che sia -contestualmente- anche type-safe.
Matteo Bilotta :fediverso:byloth@mastodon.uno
2024-11-27

Mai definito un oggetto #Callable o #FunctionLike in #Python? 🤔

Niente di più facile: basta implementare il metodo built-in `__call__` nella propria classe e... Fatto. That's it. 😌

Mai provato -invece- a farlo in #JavaScript o -peggio- in #TypeScript?

Sì... È possibile farlo anche in JS! 😏
È necessario ereditare da `Function` e strutturare il costruttore in maniera un po' "particolare", affinché restituisca un oggetto `Proxy`...

Uno strumento POTENTISSIMO, per la cronaca...

#BDDGZProject

La definizione in Python di una semplice classe che instanzi un oggetto callable / function-like tramite l'implementazione del metodo built-in `__call__`.La definizione in JavaScript di una "semplice" classe che instanzi un oggetto callable / function-like tramite l'uso della classe built-in `Proxy`.
Matteo Bilotta :fediverso:byloth@mastodon.uno
2024-11-14

"Come lo feci" di @byloth Von Frankenstein

#TileMap & #Mipmap: non vanno d'accordo...
Online è una cosa risaputa; «Everyone knows it!» - mi han risposto, in un forum!

«#YesBut... Why?» - e cadeva il silenzio...

Qualcuno ha provato a darmi delle risposte che -sul momento- ho preso per buone... In seguito, rivelatesi errate!

Ci ho messo 2 settimane...
Ma potrò lasciare ai posteri il mio retaggio: come usare tilemap e mipmap insieme.

discourse.threejs.org/t/seams-

«Si può fare!» 🤯

#BDDGZProject

Fermo immagine dal film "Frankenstein Junior" di Mel Brooks del 1974.

Un primo piano di Gene Wilder che -nel film- interpreta Frederick, il nipote del famoso barone Von Frankenstein, durante l'iconica scena in cui esclama la fatidica frase: «Si può fare!».
Matteo Bilotta :fediverso:byloth@mastodon.uno
2024-11-13

Migrazione a #ThreeJS.

Il primo problema è che -la libreria- non dispone di un componente già pronto per la gestione delle #TileMap (a differenza di #BabylonJS).

Online non ho trovato nulla che facesse al caso mio...
Mi metto -quindi- di buona lena ad implementarlo.

Un banale piano, una texture da caricare e qualche riga di #TSL da scrivere... E le famose #Mipmap?

Le abilito ma -anche il mio #Shader, come quello di Babylon- non le gestisce correttamente.

Qui il risultato. 😞

#BDDGZProject

Matteo Bilotta :fediverso:byloth@mastodon.uno
2024-11-12

#BabylonJS è un ottimo strumento!

Estremamente potente e molto più dev-friendly, rispetto a #ThreeJS!
In particolar modo, per tutto quello che riguarda la grafica #3D.

Dal loro sito -dopotutto- si evince in maniera chiara!

Altro vale per il #2D, invece, dove lo trovo ancora un po' acerbo...
Ma -suppongo- non ci sia proprio l'interesse, da parte del core-team, a spingere in questa direzione!

Peccato!
Ho dovuto fare marcia indietro e passare a Three.js.

Si riparte da capo! 🥲

#BDDGZProject

Matteo Bilotta :fediverso:byloth@mastodon.uno
2024-11-07

Alla fine, ho optato per #BabylonJS.

Per quale motivo?
1. È una libreria interamente scritta in #TypeScript.
2. Ha già un motore di rendering stabile basato su #WebGPU.
3. Offre nativamente alcune funzionalità molto interessanti, come la #GlobalIllumination e la gestione della fisica #Ragdoll.
4. Include il motore fisico #Havok: usato anche nei giochi AAA.
5. È ben documentata e con molti esempi.
6. È parecchio mantenuta, con nuove release e fix ogni pochi giorni.

#BDDGZProject

Matteo Bilotta :fediverso:byloth@mastodon.uno
2024-11-06

Che #GameEngine avrei dovuto scegliere per realizzare questo #Videogame? 🤔

Avevo pochi e semplici requisiti, ma fondamentali:
1. L'engine doveva essere #OpenSource.
2. Il gioco finale deve poter girare in un browser.
3. Dovrò poterci integrare l'SDK di #Discord per le app embedded senza bestemmiare troppo.

Dopo varie idee, confronti e considerazioni, ho ristretto le opzioni a 3 candidati:
#Godot
#ThreeJS
#BabylonJS

Quale avrò scelto, alla fine? 😏

#BDDGZProject

Matteo Bilotta :fediverso:byloth@mastodon.uno
2024-11-05

Mai giocato a #Zombicide? 🧟

È già un anno, da quando son caduto in questo profondissimo rabbit-hole...

Gioco splendido. Davvero!
Ha solo un problema: ci vuole UN SACCO per preparare la partita e ritirare il tutto, una volta finito.

Sarebbe BELLISSIMO se esistesse una versione digitale da giocare con un click... Magari online, per giocarci con gli amici, su #Discord! 🥰

---

In foto: la mia collezione di scatole ed espansioni del gioco da tavolo.

#BDDGZProject

Un muro di scatole da gioco di Zombicide, di varia forma e dimensione, disposte in maniera ordinata, le une sopra alle altre.

Client Info

Server: https://mastodon.social
Version: 2025.04
Repository: https://github.com/cyevgeniy/lmst