You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2.7 KiB

Enne2Engine

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:
git clone https://github.com/tuousername/enne2engine.git
cd enne2engine
  1. Installa le dipendenze:
pip install -r requirements.txt

Utilizzo

Avvio della demo

Per avviare la demo con il backend SDL2 (predefinito):

python engine_demo.py

Per avviare la demo con il backend Pyglet:

python engine_demo.py --pyglet

Creazione di un nuovo progetto

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:

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