Anzeige
Anzeige

Más contenido relacionado

Similar a Component Design Pattern nei Game Engine.pdf(20)

Más de Commit University(20)

Anzeige

Component Design Pattern nei Game Engine.pdf

  1. Component Design Pattern nei Game Engines 23/02/2023
  2. HELLO WORLD! Marco Secchi Web: marcosecchi.it
  3. ● Ingegneria Informatica - Politecnico di Milano ● Freelancer - 2005/Present ● NABA Lecturer - 2016/Present ● NABA Lead Advisor - 2022/Present ● AIV - 2022/Present ● Teacher: ○ ZuruTech ○ DigitalBros Game Academy ○ HDEMIA Santa Giulia ● Envato Reviewer - 2009/2015 Il resto lo trovate su LinkedIn… https://www.linkedin.com/in/secchimarco/ BIO
  4. I GAME ENGINE Qualche nozione prima di cominciare
  5. UN GAME ENGINE E’ UNA COSA COMPLESSA ● Centinaia (o migliaia) di asset, di diversi tipi: ○ Grafica 2D (texture, sprite) ○ Modelli 3D (geometria, scheletri) ○ Animazioni e sequenze animate (cut scenes) ○ Suoni, musica e voice-over ○ Testi ○ Parti di livello (props, blueprints, prefabs) ○ Livelli ○ Etc. ● E non dimentichiamoci del codice…
  6. Un game engine è composto da due componenti principali Rilevo evento Editor Gira sul PC dello sviluppatore Serve per creare e organizzare gli assets Rilevo evento Runtime Gira sull’hardware del giocatore “Esegue” gli assets sotto forma di applicazione EDITOR E RUNTIME
  7. Utente Input Output Game INTERAZIONE CON L’UTENTE
  8. Get Input Update Quit Init Render GAME LOOP
  9. ● Input ○ Rilevamento delle interazioni del giocatore (gamepad, tastiera, mouse) ○ Analisi dei dati in funzione della situazione ● Update ○ Calcolo del movimento del giocatore e della telecamera ○ Simulazione dei nemici e della fisica ○ Applicazione della logica di gioco ● Render ○ Output 3D della visuale dal punto di vista della telecamera ○ Output audio in 2D/stereo ESEMPIO: SPACE SHOOTER
  10. ● Il Game Loop continua a ripetersi, anche in assenza di interazioni da parte del giocatore. Ci sono operazioni che non possono aspettare: ○ Di gioco: fisica, nemici, altri giocatori, effetti visuali, etc. ○ Non di gioco: interfaccia utente, gestione network, etc. TIME WAITS FOR NOBODY
  11. COMPONENT PATTERN Siamo qui per questo…
  12. “Allow a single entity to span multiple domains without coupling the domain to each other.” INTENT
  13. MOTIVATION ● Gli oggetti gestiti da un game engine necessitano di comportamenti complessi combinati tra di loro ● Per progetti di medie/grosse dimensioni risulta impossibile implementare queste logiche semplicemente tramite ereditarietà ● Spesso risulta impossibile conoscere quali capacità avrà un determinato oggetto se non a runtime ● L’idea dietro questo pattern è avere la possibilità di aggiungere comportamenti differenti (e disaccoppiati) ad un oggetto in modo da renderlo più complesso e funzionale
  14. PATTERN ● Una singola “entità” può comprendere più domini (collisioni, audio, logica di movimento, etc.) ● Per mantenere ogni dominio isolato, il codice viene implementato in un componente ● L’entità diventa un semplice contenitore di componenti
  15. UNITY E COMPONENTI ● In Unity il pattern viene implementato tramite: ○ GameObjects: oggetti vuoti il cui compito è contenere componenti ○ Sottoclassi di MonoBehaviour: i componenti veri e propri ● Un GameObject possiede sempre almeno il componente Transform che contiene le informazioni di Posizione/Rotazione/Scala dell’oggetto
  16. Game Programming Patterns by Bob Nystrom https://gameprogrammingpatterns.com/ APPROFONDIMENTI
  17. AL LAVORO! Apriamo Unity e cominciamo a creare i nostri componenti
Anzeige