![Enne2Engine Logo](logo.png) Un semplice motore di gioco 2D sviluppato in Python con supporto per SDL2 e Pyglet. ## Caratteristiche - Supporto per più backend grafici (SDL2, Pyglet) - Sistema di rendering di sprite e tilesheet - Gestione delle animazioni tramite file JSON - Sistema di controllo utente e gestione eventi - Trasformazioni di coordinate isometriche - Sistema di selezione entità - Gestione degli asset semplificata ## Prerequisiti - Python 3.7+ - SDL2 (per l'utilizzo del backend SDL2) - Pyglet (per l'utilizzo del backend Pyglet) ## Installazione 1. Clona il repository: ```bash git clone https://github.com/tuousername/enne2engine.git cd enne2engine ``` 2. Installa le dipendenze: ```bash pip install -r requirements.txt ``` ## Utilizzo ### Avvio della demo Per avviare la demo con il backend SDL2 (predefinito): ```bash python engine_demo.py ``` Per avviare la demo con il backend Pyglet: ```bash python engine_demo.py --pyglet ``` ### Creazione di un nuovo progetto ```python from enne2engine.sdl2_wrapper import SDL2Wrapper from enne2engine.controls import UserControls class MioGioco(UserControls): def __init__(self): super().__init__() self.graphics = SDL2Wrapper(self) # Inizializzazione delle risorse e della logica di gioco self.load_assets() def run(self): running = True while running: event = self.graphics.handle_events() if event == "QUIT": running = False self.graphics.clear_screen() # Logica di rendering self.graphics.present_renderer() self.graphics.quit() def load_assets(self): # Caricamento delle risorse self.graphics.load_tilesheet("tiles", "assets/tiles/my_tiles.png") self.graphics.load_spritesheet("player", "assets/player/player_animations.json") if __name__ == "__main__": gioco = MioGioco() gioco.run() ``` ## Struttura del Progetto - `enne2engine/`: Moduli principali del motore - `sdl2_wrapper.py`: Wrapper per SDL2 - `pyglet_wrapper.py`: Wrapper per Pyglet - `controls.py`: Sistema di gestione degli input utente - `assets/`: Contiene gli asset di esempio - `KnightBasic/`: Animazioni del cavaliere - `tiles/`: Tileset di esempio - `Entities/`: Definizioni delle entità di gioco - `engine_demo.py`: Demo del motore ## Gestione degli Asset Il motore supporta il caricamento di spritesheet e tilesheet: ```python # Caricamento di un tilesheet graphics.load_tilesheet("tiles", "percorso/al/tilesheet.png") # Caricamento di un'animazione tramite file JSON graphics.load_spritesheet("personaggio", "percorso/al/animazione.json") ``` ## Licenza Questo progetto è rilasciato sotto la licenza [MIT](LICENSE).