BeeEngine 2D – README & Struttura
Documentazione ufficiale e panoramica dell’architettura del motore.
π Motore di gioco 2D BeeEngine (v2.2.0 Professional)
BeeEngine Γ¨ un motore di gioco 2D leggero, modulare e altamente ottimizzato scritto in puro JavaScript
moderno (ES Modules) per HTML5 Canvas.
La versione 2.2 espande il motore introducendo controlli touch nativi e joystick virtuale per
smartphone, architettura pronta per la distribuzione tramite NPM, ottimizzazioni avanzate per il
risparmio della CPU e un sistema di collisioni centralizzato.
π Struttura del Progetto Aggiornata
BeeEngine-V2.2/
βββ index.html # Punto di ingresso HTML e configurazione Canvas
βββ main.js # Demo, gestione scene e punto d’avvio del gioco
βββ BeeEngine.js # Il CUORE del motore (Core Loop & System Coordinator)
βββ README.md # Documentazione ufficiale e specifiche tecniche
βββ package.json # Manifest di configurazione per la pubblicazione NPM
βββ tsconfig.json # Configurazione TypeScript per i controlli dell’IDE
βββ index.d.ts # Definizioni di tipo globali per IntelliSense e TypeScript
βββ assets/ # Gestione centralizzata e ordinata delle risorse
β βββ audio/ # Effetti sonori (.mp3) e musiche di sottofondo
β βββ images/ # Texture dei personaggi (.png), sprite e sfondi
πDi seguito /src/π
βββ src/ # Tutti i moduli logici del motore
βββ BeeAssetManager.js # Caricamento asincrono e cache di immagini/audio
βββ BeeBullet.js # Gestione dei proiettili 2D attivi
βββ BeeButton.js # Pulsanti interattivi per menu su Canvas
βββ BeeCamera.js # Telecamera 2D con supporto al bounding box visivo
βββ BeeCollectible.js # Oggetti raccoglibili (monete, miele)
βββ BeeCollisionSystem.js # Gestore centralizzato e ottimizzato delle
collisioni
βββ BeeEnemyShooter.js # Nemico avanzato a 4 direzioni con sparo automatico
βββ BeeEntity.js # Classe base per tutte le entitΓ di gioco
βββ BeeGrid.js # Griglia di sfondo / debug spaziale
βββ BeeInput.js # Gestione input (tastiera, mouse, comandi)
βββ BeeJoystick.js # NUOVO: Leva analogica virtuale integrata per mobile
πLogica di Gioco & Sistema
βββ BeeMenuScene.js # Scena nativa del menu principale
βββ BeeNemico.js # Nemico base con movimento a pattuglia
βββ BeeParticleSystem.js # Sistema di particelle per effetti grafici
βββ BeePlayer.js # Personaggio giocabile (ModalitΓ : ‘platformer’ o ‘free’)
βββ BeeRectCollider.js # Collisore geometrico rettangolare AABB
βββ BeeSave.js # Salvataggio dati persistenti in LocalStorage
βββ BeeSceneManager.js # Gestore dei cicli di vita e transizioni delle scene
πGrafica & Tilemap
βββ BeeSprite.js # Renderizzatore di fogli di sprite e texture
βββ BeeSpriteSheet.js # NUOVO: Gestore e ritaglio avanzato degli sprite
sheet
βββ BeeText.js # Disegno di testi e rendering della barra HUD nativa
βββ BeeTilemap.js # Mappe a blocchi ottimizzate con culling riga/colonna
βββ BeeTilemapLoader.js # NUOVO: Caricatore asincrono per mappe di tessere
βββ BeeTimer.js # Gestore eventi basati sul tempo (Cooldown)
πInterfaccia & Controlli Touch
βββ BeeVirtualDPad.js # NUOVO: Pulsantiera direzionale virtuale a 4/8 vie
βββ BeeTouchButton.js # NUOVO: Pulsante tattile programmabile con etichetta
βββ BeeTouchControls.js # NUOVO: Controller completo per input su schermo
π NovitΓ e ottimizzazioni professionali nella v2.2.0.
Controlli Mobile e Joystick Virtuale (`BeeJoystick` & `BeeTouchControls`)
Supporto nativo: Gestione integrata per tutti gli schermi touch.
Attivazione rapida: Attiva il joystick analogico e i pulsanti programmabili con un solo comando.
Codice:`gioco.enableJoystick()`
π NUOVO: Componenti Interfaccia Touch Avanzati
Nella v2.2.0 sono state introdotte due nuove classi specifiche esportate per una
gestione granulare dell’input mobile:
`BeeVirtualDPad`: Una pulsantiera direzionale configurabile a 4 o 8 direzioni (`eightWay:
false/true`), ideale per movimenti precisi stile retro-game o platform.
`BeeTouchButton`: Un pulsante tattile rotondo completamente personalizzabile nel raggio e nel
testo dell’etichetta (es. “A” per saltare, “B” per sparare).
π Gestione Sprite e Mappe Avanzata (`BeeSpriteSheet` & `BeeTilemapLoader`)
Ritaglio tessere: Semplificato il caricamento e il ritaglio da fogli di sprite complessi.
Asincronia: Gestione fluida e asincrona dei livelli di gioco durante i caricamenti.
π Sistema di Collisioni Centralizzato (`BeeCollisionSystem`)
Gruppi logici: Registro centralizzato per dividere le entitΓ in gruppi.
Fisica ottimizzata:** Risoluzioni fisiche solide (`solid`) e interazioni ad eventi (`overlap`) ad alta
efficienza.
π Risparmio CPU tramite Frustum Culling (`BeeCamera`)
Sfoltimento grafico: Algoritmo per saltare il rendering delle entitΓ fuori dallo schermo.
Performance: Mantiene i 60 FPS stabili anche con centinaia di oggetti in gioco.
π Distribuzione NPM & Type Definitions (`index.d.ts`)
*Modulo ES6: Distribuzione ufficiale sul registro NPM ottimizzata per i moduli
moderni.
Autocompletamento: Definizioni di tipo aggiornate per l’IntelliSense e i suggerimenti in VS Code.
π Distribuzione NPM & Type Definitions (`index.d.ts`)
Aggiornata la documentazione e il layout Markdown.
π Esportate nuove classi touch in `index.js` per una perfetta integrazione con il pacchetto.
Testata e verificata la reattivitΓ al tocco in tempo reale su dispositivi
mobili.
π Esempio d’Uso Rapido (v2.2.0)
import { BeeEngine, BeeVirtualDPad, BeeTouchButton } from ‘beeengine’;
Inizializzazione Motore
const gioco = new BeeEngine(“testCanvas”, 800, 600);
gioco.enableAutoResize(800, 600, 100);
π Attivazione controlli mobile nativi (v2.2)
gioco.enableJoystick();
π Configurazione opzionale D-Pad e Pulsanti Touch personalizzati
const dPad = new BeeVirtualDPad({
canvas: gioco.canvas,
x: 100,
y: 500,
size: 120,
eightWay: false
});
const pulsanteSalto = new BeeTouchButton({
canvas: gioco.canvas,
x: 700,
y: 500,
radius: 35,
label: “SALTA”
});
πRegole Collisioni Avvio Ciclo di Gioco
gioco.collisions.setGroup(‘solidi’, piattaforme);
gioco.collisions.setGroup(‘giocatore’, [giocatore]);
gioco.collisions.solid(‘giocatore’, ‘solidi’);
gioco.start()