Advertisement
Advertisement

More Related Content

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

More from Commit University(20)

Advertisement

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
Advertisement