From 912e65941788bb09ea7f50971592ec1d363ee611 Mon Sep 17 00:00:00 2001 From: Matteo Benedetto Date: Fri, 16 May 2025 19:09:37 +0200 Subject: [PATCH] Update README.md for clarity and completeness; add requirements.txt for core dependencies --- README.md | 109 ++++++++++++++++++++++++++++++++++++++--------- engine_demo.py | 1 - requirements.txt | 5 +++ 3 files changed, 94 insertions(+), 21 deletions(-) create mode 100644 requirements.txt diff --git a/README.md b/README.md index 15d245a..4d6162e 100644 --- a/README.md +++ b/README.md @@ -1,17 +1,19 @@ # Enne2Engine ![Enne2Engine Logo](logo.png) -Un semplice motore di gioco 2D sviluppato in Python con supporto per SDL2 e Pyglet. +Un semplice motore di gioco 2D isometrico sviluppato in Python con supporto per SDL2. ## Caratteristiche -- Supporto per più backend grafici (SDL2, Pyglet) +- Supporto per più backend grafici - 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à +- Sistema di selezione singola e multipla di entità - Gestione degli asset semplificata +- Supporto per mappe basate su tile con ombreggiatura +- Pathfinding per le unità di gioco ## Prerequisiti @@ -23,11 +25,11 @@ Un semplice motore di gioco 2D sviluppato in Python con supporto per SDL2 e Pygl 1. Clona il repository: ```bash -git clone https://github.com/tuousername/enne2engine.git +git clone https://git.enne2.net/enne2/enne2engine cd enne2engine ``` -2. Installa le dipendenze: +2. Installa le dipendenze con Python 3.13 ```bash pip install -r requirements.txt ``` @@ -36,17 +38,56 @@ pip install -r requirements.txt ### Avvio della demo -Per avviare la demo con il backend SDL2 (predefinito): +Per avviare la demo con il backend SDL2: ```bash python engine_demo.py ``` -Per avviare la demo con il backend Pyglet: -```bash -python engine_demo.py --pyglet +### Sistema di Entità + +L'engine supporta un sistema di entità per la creazione di unità di gioco: + +```python +from Entities.Units.marine import Marine + +# Creazione di un'unità Marine +marine = Marine("knight", x=5, y=10, animation="idle", speed=1, health=100, game_engine=engine) + +# Aggiunta dell'unità al gioco +game.entities.append(marine) + +# Selezionare e muovere l'unità +marine.select_unit() +marine.set_target_cell((10, 8)) # L'unità inizierà a muoversi verso questo punto +``` + +### Sistema Isometrico + +Il motore supporta trasformazioni isometriche per la visualizzazione 2.5D: + +```python +# Trasformazione da coordinate di mappa a coordinate schermo +screen_x, screen_y = graphics.iso_transform(map_x, map_y) + +# Trasformazione da coordinate schermo a coordinate di mappa +map_x, map_y = graphics.inv_iso_transform(screen_x, screen_y) +``` + +### Gestione delle Mappe + +Le mappe sono definite tramite file JSON: + +```json +[ + [0, 1, 2, 3], + [4, 5, 6, 7], + [8, 9, 10, 11] +] ``` -### Creazione di un nuovo progetto +Dove ogni numero rappresenta un indice di tile nel tilesheet. + +## Creazione di un nuovo progetto ```python from enne2engine.sdl2_wrapper import SDL2Wrapper @@ -89,22 +130,50 @@ if __name__ == "__main__": - `pyglet_wrapper.py`: Wrapper per Pyglet - `controls.py`: Sistema di gestione degli input utente - `assets/`: Contiene gli asset di esempio - - `KnightBasic/`: Animazioni del cavaliere + - `KnightBasic/`: Animazioni del cavaliere (Idle, Run, Walk, Die, Attack) - `tiles/`: Tileset di esempio + - `maps/`: Mappe di esempio in formato JSON - `Entities/`: Definizioni delle entità di gioco + - `Units/`: Unità di gioco come Marines - `engine_demo.py`: Demo del motore -## Gestione degli Asset +## Formato delle Animazioni + +Le animazioni sono definite in file JSON con il seguente formato: + +```json +{ + "frames": [ + { + "frame": {"x": 0, "y": 0, "w": 256, "h": 256}, + "duration": 100 + }, + { + "frame": {"x": 256, "y": 0, "w": 256, "h": 256}, + "duration": 100 + } + ], + "meta": { + "app": "https://pixelover.io", + "frameAnimations": [ + { + "name": "Walk", + "fps": 10, + "from": 0, + "to": 10 + } + ], + "direction": 0 + } +} +``` -Il motore supporta il caricamento di spritesheet e tilesheet: +## Rendering e Performance -```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") -``` +Il motore include funzionalità per ottimizzare le performance: +- Rendering di background in texture separate +- Texture targeting per operazioni di disegno efficiente +- Conteggio FPS e regolazione del frame timing ## Licenza diff --git a/engine_demo.py b/engine_demo.py index c2569a9..a9a9b7b 100644 --- a/engine_demo.py +++ b/engine_demo.py @@ -1,5 +1,4 @@ from enne2engine.sdl2_wrapper import SDL2Wrapper -from enne2engine.pyglet_wrapper import PygletWrapper from enne2engine.controls import UserControls import sys import os diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..617ea4f --- /dev/null +++ b/requirements.txt @@ -0,0 +1,5 @@ +# Core dependencies +pysdl2 +pysdl2-dll +pillow +