Browse Source

Update README.md for clarity and completeness; add requirements.txt for core dependencies

master
Matteo Benedetto 7 months ago
parent
commit
912e659417
  1. 109
      README.md
  2. 1
      engine_demo.py
  3. 5
      requirements.txt

109
README.md

@ -1,17 +1,19 @@
# Enne2Engine # Enne2Engine
![Enne2Engine Logo](logo.png) ![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 ## Caratteristiche
- Supporto per più backend grafici (SDL2, Pyglet) - Supporto per più backend grafici
- Sistema di rendering di sprite e tilesheet - Sistema di rendering di sprite e tilesheet
- Gestione delle animazioni tramite file JSON - Gestione delle animazioni tramite file JSON
- Sistema di controllo utente e gestione eventi - Sistema di controllo utente e gestione eventi
- Trasformazioni di coordinate isometriche - Trasformazioni di coordinate isometriche
- Sistema di selezione entità - Sistema di selezione singola e multipla di entità
- Gestione degli asset semplificata - Gestione degli asset semplificata
- Supporto per mappe basate su tile con ombreggiatura
- Pathfinding per le unità di gioco
## Prerequisiti ## Prerequisiti
@ -23,11 +25,11 @@ Un semplice motore di gioco 2D sviluppato in Python con supporto per SDL2 e Pygl
1. Clona il repository: 1. Clona il repository:
```bash ```bash
git clone https://github.com/tuousername/enne2engine.git git clone https://git.enne2.net/enne2/enne2engine
cd enne2engine cd enne2engine
``` ```
2. Installa le dipendenze: 2. Installa le dipendenze con Python 3.13
```bash ```bash
pip install -r requirements.txt pip install -r requirements.txt
``` ```
@ -36,17 +38,56 @@ pip install -r requirements.txt
### Avvio della demo ### Avvio della demo
Per avviare la demo con il backend SDL2 (predefinito): Per avviare la demo con il backend SDL2:
```bash ```bash
python engine_demo.py python engine_demo.py
``` ```
Per avviare la demo con il backend Pyglet: ### Sistema di Entità
```bash
python engine_demo.py --pyglet 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 ```python
from enne2engine.sdl2_wrapper import SDL2Wrapper from enne2engine.sdl2_wrapper import SDL2Wrapper
@ -89,22 +130,50 @@ if __name__ == "__main__":
- `pyglet_wrapper.py`: Wrapper per Pyglet - `pyglet_wrapper.py`: Wrapper per Pyglet
- `controls.py`: Sistema di gestione degli input utente - `controls.py`: Sistema di gestione degli input utente
- `assets/`: Contiene gli asset di esempio - `assets/`: Contiene gli asset di esempio
- `KnightBasic/`: Animazioni del cavaliere - `KnightBasic/`: Animazioni del cavaliere (Idle, Run, Walk, Die, Attack)
- `tiles/`: Tileset di esempio - `tiles/`: Tileset di esempio
- `maps/`: Mappe di esempio in formato JSON
- `Entities/`: Definizioni delle entità di gioco - `Entities/`: Definizioni delle entità di gioco
- `Units/`: Unità di gioco come Marines
- `engine_demo.py`: Demo del motore - `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 Il motore include funzionalità per ottimizzare le performance:
# Caricamento di un tilesheet - Rendering di background in texture separate
graphics.load_tilesheet("tiles", "percorso/al/tilesheet.png") - Texture targeting per operazioni di disegno efficiente
- Conteggio FPS e regolazione del frame timing
# Caricamento di un'animazione tramite file JSON
graphics.load_spritesheet("personaggio", "percorso/al/animazione.json")
```
## Licenza ## Licenza

1
engine_demo.py

@ -1,5 +1,4 @@
from enne2engine.sdl2_wrapper import SDL2Wrapper from enne2engine.sdl2_wrapper import SDL2Wrapper
from enne2engine.pyglet_wrapper import PygletWrapper
from enne2engine.controls import UserControls from enne2engine.controls import UserControls
import sys import sys
import os import os

5
requirements.txt

@ -0,0 +1,5 @@
# Core dependencies
pysdl2
pysdl2-dll
pillow
Loading…
Cancel
Save