endFrame per ultimo
pressed e mouse.wasPressed restano veri fino a endFrame. Leggi
l'input nell'update della scena e chiama endFrame dopo. Se lo chiami prima, Space risulta già
consumato e il salto parte a caso.
Logo Ufficiale BeeEngine
BeeEngine JS è un motore leggero per giochi HTML5 su Canvas: camera, layer di disegno, particelle, collisioni e culling, senza dipendenze. ⚠️ **Nota:** La documentazione è attualmente in fase di sviluppo e aggiornamento continuo.
npm install beeengine
audio/
core/
Facade e core loop src/core/BeeEngine.html start stop pause, scene vs addEntity, tween/timer/prefab/pathfinder.
Nodo dello scene graph con coordinate, figli, moto e un collider rettangolare.
Posizione, rotazione e scala locali, composte col genitore per le coordinate mondo.
Delta del frame, scala del tempo e pausa, letti da un punto solo.
Conta i secondi e chiama una funzione una volta, oppure a ogni giro.
Registra le scene, passa da una all'altra e aggiorna le entità di quella attiva.
Carica immagini e suoni per nome e può riprodurre una copia del suono.
Scrive e rilegge JSON in localStorage con il prefisso BeeSave:.
Griglia di celle con lettura, scrittura e disegno delegato a una funzione.
Cerca un percorso su una griglia di celle e lo restituisce un passo alla volta.
Modello di entità già configurato: lo cloni in scena senza ricopiare il costruttore.
Porta un valore da un numero a un altro in un tempo dato: posizione, alpha, scala.
Mette in fila tween, attese e callback. Una sequenza resta un oggetto solo.
Scaffale di oggetti già creati. Li prendi, li usi e li restituisci.
gameplay/
Cammina e salta in mode platformer, oppure si muove libero. Conta punti e vite.
Pattuglia in orizzontale con velocita per dt e inverte il verso ai bordi.
Nemico che rimbalza sui bordi del canvas e spara un proiettile.
Piattaforma disegnata con un colore o con la texture indicata.
Cade di velocita pixel a ogni update e, sotto il bordo, torna in cima.
Menu disegnato sul canvas: Invio, Spazio o click passano alla scena game.
graphics/
Clip da spritesheet: play / update / draw, finished per l’animator.
Ordine di disegno, y-sort per il top-down e un layer di UI fermo sopra la scena.
Segue un bersaglio, trasla il canvas e dice se un rettangolo è inquadrato.
Stati e clip su uno sprite: idle, corsa, salto, e il passaggio dall'uno all'altro.
Avanza i fotogrammi di un foglio sprite e disegna il riquadro corrente.
Disegna una mappa a tessere e dice quali celle sono solide.
Disegna una stringa sul canvas e una barra con titolo, punteggio e vite.
Emette cerchi colorati che si spostano e spariscono quando la vita arriva a zero.
input/
Tastiera e mouse: tenuto premuto, oppure solo per il frame corrente.
Stick virtuale: direzione e intensità, da leggere come vettore o da scrivere sui tasti.
Pulsanti sul canvas che scrivono le frecce e lo spazio in BeeInput.
Pulsante di gioco sul canvas, con hover, pressione e una funzione onClick.
ui/
Base di un controllo: rettangolo, hover, focus e l'evento di attivazione.
Contenitore. I figli restano dentro il suo rettangolo.
Impila i figli in verticale o in orizzontale e distribuisce lo spazio.
Testo di interfaccia, allineato nel rettangolo del controllo.
Pulsante nel layout della UI. Sta nel pannello, non sparso sul mondo.
Bordo a nove parti: il centro si allarga, gli angoli restano nitidi.
physics/
Un passo di simulazione: velocità, gravità e i contatti di quel frame.
Massa, velocità e il tipo di risposta: fermo, oppure si muove.
Celle che tengono solo i corpi vicini, così il test AABB non gira su tutta la scena.
Gruppi AABB e regole solid o overlap, risolte nell'ordine in cui le registri.
Hitbox rettangolare agganciata a un'entità, con test di overlap e di punto.
Proiettile che si sposta di vx e vy per dt e si distrugge fuori dal rettangolo di gioco.
plugins/
Il motore non importa questi file. Li carichi dal gioco, solo se ti servono.
La forma che un plugin deve rispettare per agganciarsi al gioco senza entrare nel core.
Stringhe per lingua. Il testo in gioco chiede una chiave, non una frase fissa.
Slot, aggiunta e rimozione di oggetti. Resta fuori dal core: non ogni gioco ha un inventario.
Cose che la firma del metodo non dice, e che si scoprono al secondo pomeriggio.
pressed e mouse.wasPressed restano veri fino a endFrame. Leggi
l'input nell'update della scena e chiama endFrame dopo. Se lo chiami prima, Space risulta già
consumato e il salto parte a caso.
BeePlayer e BeeNemico moltiplicano per dt: i numeri sono pixel al secondo. BeeCollectible
somma velocita a y e ignora dt, quindi a 30 fps scende più piano
che a 60. Un'entità nuova va scritta con la stessa convenzione del resto della scena.
BeeCollisionSystem risolve prima i contatti solidi, poi gli overlap, nell'ordine in cui hai chiamato
add. Se la moneta si raccoglie solo a mezz'aria, la regola di overlap sta nel punto sbagliato
di quella lista.
BeePool e i burst di particelle rendono se gli oggetti esistono già. Creare lo scaffale dentro il primo
emit sposta le allocazioni nel frame in cui esplode qualcosa: è lì che il gioco si blocca un
attimo sul telefono.
Panel, stack, label e nine-slice vanno su un layer che non segue BeeCamera. Sul layer del mondo il menu scorre insieme al giocatore, e il pulsante esce dall'inquadratura appena cammini.
L'overlay disegna le hitbox a ogni frame. In locale è il modo più rapido per vedere un AABB spostato di otto pixel. Sulla build che metti online va disattivato: quei rettangoli li vede il giocatore, e li paghi comunque.
import * as Bee from 'beeengine';
// Crea il gioco e aggiungi le tue entità.
// Esempi completi e API nella documentazione:
// https://beeenginejs.com/