Update README.md for clarity and completeness; add requirements.txt for core dependencies
This commit is contained in:
@@ -1,17 +1,19 @@
|
|||||||
# Enne2Engine
|
# Enne2Engine
|
||||||

|

|
||||||
|
|
||||||
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
|
||||||
```
|
```
|
||||||
|
|
||||||
### Creazione di un nuovo progetto
|
### 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]
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
|
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,23 +130,51 @@ 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
|
||||||
|
|
||||||
Il motore supporta il caricamento di spritesheet e tilesheet:
|
Le animazioni sono definite in file JSON con il seguente formato:
|
||||||
|
|
||||||
```python
|
```json
|
||||||
# Caricamento di un tilesheet
|
{
|
||||||
graphics.load_tilesheet("tiles", "percorso/al/tilesheet.png")
|
"frames": [
|
||||||
|
{
|
||||||
# Caricamento di un'animazione tramite file JSON
|
"frame": {"x": 0, "y": 0, "w": 256, "h": 256},
|
||||||
graphics.load_spritesheet("personaggio", "percorso/al/animazione.json")
|
"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
|
||||||
|
}
|
||||||
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Rendering e Performance
|
||||||
|
|
||||||
|
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
|
## Licenza
|
||||||
|
|
||||||
Questo progetto è rilasciato sotto la licenza [MIT](LICENSE).
|
Questo progetto è rilasciato sotto la licenza [MIT](LICENSE).
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -0,0 +1,5 @@
|
|||||||
|
# Core dependencies
|
||||||
|
pysdl2
|
||||||
|
pysdl2-dll
|
||||||
|
pillow
|
||||||
|
|
||||||
Reference in New Issue
Block a user