npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

beeengine

v2.2.0

Published

Motore di gioco 2D modulare per HTML5 Canvas: fisica platformer, scene, input, asset, collisioni e HUD.

Readme

🐝 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
└── 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
    ├── 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
    ├── 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)
    ├── BeeVirtualDPad.js       # NUOVO: Pulsantiera direzionale virtuale a 4/8 vie
    ├── BeeTouchButton.js       # NUOVO: Pulsante tattile programmabile con etichetta
    └── BeeTouchControls.js     # NUOVO: Pulsanti tattili su schermo (Spara/Azione)

🚀 Novità e ottimizzazioni professionali nella v2.2.0

1. 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).

2. 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.

3. 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.

4. 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.

5. 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.

🛠️ Miglioramenti e correzioni

  • Esportate nuove classi touch in index.js per una perfetta integrazione con il pacchetto.

  • Aggiornata la documentazione e il layout Markdown.

  • 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';

// 1. Inizializzazione Motore
const gioco = new BeeEngine("testCanvas", 800, 600);
gioco.enableAutoResize(800, 600, 100);

// 2. 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"
});

// 3. Regole Collisioni
gioco.collisions.setGroup('solidi', piattaforme);
gioco.collisions.setGroup('giocatore', [giocatore]);
gioco.collisions.solid('giocatore', 'solidi');

// 4. Avvio Ciclo di Gioco
gioco.start();

BeeEngine è una libreria open source progettata per offrire un framework 2D fluido, leggero e modulare per lo sviluppo su HTML5 Canvas. 🐝