L’Advisor Leader dell’area Game di NABA, Marco Secchi, ti insegnerà come migliorare la gestione degli oggetti in-game e la loro comunicazione utilizzando Unity Engine e Design Pattern Component.
Report
Share
Report
Share
1 of 17
Download to read offline
More Related Content
Similar to Component Design Pattern nei Game Engine.pdf
FAST è una raccolta di tecnologie, basate su Web Components e su Web Standards moderni, che ci aiuta ad affrontare in modo efficiente alcune delle sfide più comuni nella progettazione e nello sviluppo di siti ed applicazioni Web.”
FAST ci aiuta a creare interfacce si adattano facilmente a qualunque Design System e che possono essere utilizzate con qualsiasi framework!
Per approfondimenti sullo sviluppo applicazioni Android: http://www.synesthesia.it/sviluppo-mobile-applicazioni-android-iphone-ipad-ios-web http://www.synesthesia.it/sviluppo-mobile-applicazioni-android-iphone-ipad-ios-web
Enrico Bacis, ricercatore presso l'Università degli studi di Bergamo ed esperto di sicurezza, presenta di Capture the Flags: competizioni di sicurezza informatica nelle quali le squadre devono identificare problematiche di sicurezza da sfruttare per attaccare i sistemi delle squadre avversarie. L'obiettivo principale è quello di insegnare concetti di programmazione sicura e di buona progettazione di sistemi, mostrando gli errori da non commettere, in veste ludica. Questa presentazione vuole illustrare la panoramica di tipologie e categorie delle sfide che si possono trovare in questo tipo di competizioni.
Design of G.E.M.I.X.: Game Engine Movie Interaction eXperienceAntonio Notarangelo
G.E.M.I.X. (Game Engine Movie Interaction Experience) è un’applicazione progettata e sviluppata come soluzione al problema dell’utilizzo dei game engine nell’ industria
cinematografica, più precisamente nel campo delle pre-visualizzazioni.
Il suo scopo è quello di comprovare l’effettiva efficacia di un motore grafico, Unreal Engine 4 nello specifico,
nella creazione di pre-visualizzazioni, ottenendo il massimo rendimento dalle sue caratteristiche principali:
il rendering in tempo reale e le modifiche al volo delle scene.
È uscita la release 1.0 da pochi giorni e non è chiaro se è una meteora o qualcosa che resterà sul mercato e ritaglierà una fetta della torta...ma proviamo a capire insieme cosa offre questo nuovo runtime per Javascript che vanta maggiore sicurezza rispetto a Node e la possibilità di utilizzare TypeScript...e non solo!
MR:ROBOT è un robottino open source tutto da realizzare con le stampanti 3D, negli “Atelier Creativi” delle scuole e in tutti i FabLab o Maker Space. Gli studenti delle scuole possono cimentarsi con la modellazione 3D, con il making attraverso Elettronica e Stampa 3D, infine con il cooding. Il progetto è nato grazie alla sperimentazione degli studenti con il progetto MrNone (arToys Open Source). Nasce infatti dall’idea di inserire un arduino dentro il toys e rendendolo così programmabile.
Slides del talk "My life with Android" tenuto da Francesco Ronchi di Synesthesia srl al JUG Torino (29 febbraio 2012) sullo sviluppo applicazioni Android
http://presentz.org/jugtorino/201202_android
http://www.synesthesia.it/
Andrea Cartotto - Le "carte vincenti" nel software libero: cittadinanza digit...Andrea Cartotto
Il mio intervento in occasione del Webinar del 4 maggio 2020, organizzato da LibreItalia e PA Social, in cui ho dialogato (come membro di LibreItalia e The Document Foundation) con Giordano Alborghetti sul tema della cittadinanza digitale e della privacy, rapportati all'uso del software libero. Saluti istituzionali del Presidente di LibreItalia Enio Gemmo e del Presidente di PA Social Francesco Di Costanzo.
Introduzione alla realizzazione di videogiochi - Presentazione del corsoPier Luca Lanzi
Slide del corso "Introduzione alla realizzazione di videogiochi" tenuto per gli studenti delle scuole superiori presso la sede di Cremona del Politecnico di Milano.
Desdinova Engine: Motore grafico 3D per rendering di ambienti outdoor in temp...Daniele Ferla
L’obiettivo di questa tesi (a cura di Daniele Ferla) è la realizzazione di una componente ad alto livello in grado di gestire la visualizzazione a video di ambienti 3D esterni. Si è quindi dovuto ricorrere alla creazione di quello che in gergo viene definito “motore grafico” e cioè una serie di classi, funzioni e quant’altro possa essere utile ad un programmatore che voglia avvicinarsi allo sviluppo di un videogioco e di una applicazione grafica in generale, senza essere a conoscenza di tutte le regole e le formule che ne derivano. Il motore quindi si occupa di tutte le metodologie inerenti il rendering della scena e la sua gestione.
Il progetto del motore grafico denominato Desdinova Engine risale a qualche hanno fa, precisamente nel maggio del 2000 quando venne iniziato il suo sviluppo in Visual C++ tramite le librerie OpenGL, in quel periodo molto in auge e utilizzate da parecchi produttori di grafica 3D. Con il passare del tempo però queste librerie hanno perduto il loro “fascino” anche perché poco aggiornate e utilizzate solo in ambiti specifici (rimangono comunque le librerie cross-platform più usate) e quindi la realizzazione del motore grafico si è diretta verso l’utilizzo delle più performanti, documentate e semplici Microsoft DirectX nella versione attuale 9.0c
Seppur a livello molto alto, le librerie della multinazionale di Redmond, non offrono tutto il necessario per la realizzazione di un prodotto finito semplice ed intuitivo ma, anzi, risultano essere “aperte” a nuove ottimizzazioni e utilizzi. Per questo, dunque, in questa tesi è stata sviluppata una libreria ancora più ad alto livello, avente come base le DirectX, ma finalizzate all’utilizzo più intuitivo e semplice del programmatore quale utente finale.
La seguente tesi (in bozza) non è mai stata pubblicata e non è un documento valido a fini pubblici in quanto non è mai stata discussa e valutata dalla commissione accademica.
Quante volte abbiamo aperto una pagina web sul nostro browser e ci siamo lamentati di quanto il nostro strumento di navigazione sia "pesante" o "divoratore di risorse"? Sappiamo quanta fatica fa un browser per renderizzare una semplice pagina web e quante sfide deve affrontare? Beh, di recente mi sono posto queste domande e ho tentato di capire di più come è fatto un browser e quali sfide deve affrontare per far sì che le nostre pagine web (o applicazioni) possano oggi essere così interessanti come le pensiamo. Conoscerlo meglio ci aiuterà a realizzare forse un web migliore e magari rendere la vita più facile al browser stesso ed al nostro amato computer. Proverò a dare anche a voi un po' di ciò che ho capito e che mi ha aiutato a stare più attento e responsabile come artigiano del web!
Similar to Component Design Pattern nei Game Engine.pdf (20)
Oltre l'hype: vulnerabilità e limiti dell'intelligenza artificiale.pdfCommit University
Non è tutto oro quello che luccica, in questa presentazione esploreremo le principali criticità e i rischi associati all'intelligenza artificiale (IA). Come si può attaccare un sistema informatico allo stesso modo esistono gli attacchi ai modelli di machine learning, come l'avvelenamento dei dati e gli esempi avversariali, che minano l'integrità dei sistemi. Inoltre, si evidenzia come i bias nei dati di addestramento possano portare a decisioni discriminatorie, influenzando settori cruciali come la giustizia e l'occupazione. La necessità di una spiegabilità nell'IA viene sottolineata per garantire trasparenza, fiducia e un uso etico della tecnologia. L'obiettivo è fornire una visione equilibrata, sottolineando l'importanza di una vigilanza continua e di miglioramenti costanti per sfruttare il potenziale dell'IA in modo responsabile.
Come funzionano i Retrieval-Augmented Generators (RAG) e quanto i database vettoriali sono fondamentali per poter memorizzare e utilizzare le sorgenti dati aziendali e personali?
Crea il tuo assistente AI con lo Stregatto (open source python framework)Commit University
Open source, in Python, compatibile con vari LLM ed estendibile tramite plugin: queste sono solo alcune delle potenzialità del framework Cheshire Cat AI!
Breaking REST Chains_ A Fastify & Mercurius Pathway to GraphQL Glory.pdfCommit University
This document contains slides from a presentation by Luca Del Puppo about building GraphQL servers using Fastify and Mercurius. The presentation introduces GraphQL and its advantages over REST APIs. It then discusses why Mercurius is a good choice for building GraphQL servers on Fastify and outlines some features it provides out of the box. The presentation concludes by providing resources for learning more about Fastify, Mercurius and building GraphQL servers.
Collaborazione, Decisionalità e Gestione della Complessità nel Tempo: cosa ...Commit University
Vuoi migliorare la gestione dei progetti a lungo termine con team multidisciplinari e prendere decisioni rischiose in modo sicuro e ponderato? Non perderti il nostro workshop gratuito!
Antonio Dell’Ava, Frontend Developer di eDreams Odigeo, condividerà strategie per aiutarti a ottimizzare la collaborazione nel tuo team, scegliere gli strumenti giusti per ogni situazione e garantire l’evoluzione del progetto nel tempo
A volte essere pigri è una qualità, evita (quasi) tutte le richieste di personalizzazioni lasciando "finestre aperte" nei tuoi componenti generici.
Gli slots sono un modo per passare il contenuto a un componente in Vue.js. Permettono di definire una sezione nel template di un componente che può essere sostituita dall'esterno.
È inoltre possibile assegnare un nome o uno "scope" agli slots, garantendo così maggiore controllo e personalizzazione sul contenuto. I "named slots" consentono di definire più slots nello stesso componente, assegnando dei nomi specifici.
Gli "scoped slots" ti consentono di accedere dall'esterno ai dati interni del componente.
Quante volte mi è capitato di migliorare applicazioni lente e difficili da ottimizzare, ma poi ho scoperto Qwik e tutto è cambiato.
Con il suo nuovo modello mentale è in grado di fare la differenza e scalare facilmente qualsiasi applicazione.
Non conosci questo framework? Nessuna paura...andiamo a scoprirlo assieme!
Backstage l'Internal Developer Portal Open Source per una migliore Developer ...Commit University
Backstage is an open source platform for building developer portals that unifies all tooling, services, apps, data, and documentation with a single consistent UI. It allows developers to focus on their work by providing a centralized location to create software, manage what they own, and explore the entire software ecosystem. Backstage has a customizable, extensible plugin architecture built with modern technologies to make it easy to develop for and contribute to developer portals in a cloud-agnostic, vendor-neutral way.
Nella giungla degli ORM node, Prisma sta prendendo sempre più piede. Ha migliorato la Developer Experience, si integra perfettamente con Typescript e funziona dannatamente bene con diversi provider. In questo talk, vedrai come Prisma può migliorare il tuo lavoro quotidiano e come ti permette di avere un maggior controllo della tua code base aiutandoti a prevenire fastidiosi errori nella tua applicazione nodejs.
Decision-making for Software Development Teams - Commit UniversityCommit University
Ti senti bloccato quando si tratta di prendere decisioni critiche su aspetti tecnologici? Vuoi conoscere i processi decisionali collaborativi e come applicarli al tuo team?
Francesco Strazzullo, Chief Operating Officer di Claranet Italia, ti insegnerà gli elementi chiave per prendere decisioni critiche su aspetti tecnologici, gestire i requisiti non funzionali e lavorare con processi decisionali collaborativi.
La prototipazione è un’attività fondamentale per “capire facendo”. Lo scopo della prototipazione non è costruire partendo da un progetto definito ma, piuttosto, acquisire dati preziosi per essere poi più consapevoli di prendere la giusta direzione. Alla base delle attività di prototipazione ci sono spesso strumenti low code e no code. Esistono ormai da diversi anni e ultimamente stanno guadagnando sempre più attenzione nella community per la loro immediatezza e velocità. Abbiamo definito meglio le loro qualità e le opportunità che ci sono nel loro utilizzo.
Durante il talk abbiamo approfondito perché è importante prototipare e come questa attività migliora i nostri progetti. In particolare, abbiamo approfondito l’utilizzo AWS Step Functions Workflow Studio, strumento low code prodotto da AWS. Workflow Studio ci permette di imbastire una state machine basata su step functions con uno strumento visuale drag & drop che semplifica moltissimo il nostro lavoro. Abbiamo analizzato cosa lo contraddistingue da altri strumenti e quali sono i suoi punti di forza. Infine siamo passati alla pratica facendo una piccola esercitazione con AWS Step Functions.
KMM survival guide: how to tackle struggles between Kotlin and SwiftCommit University
Kotlin Multiplatform Mobile (KMM) è un SDK per lo sviluppo di applicazioni Android ed iOS che consente agli sviluppatori di condividere la business logic mantenendo UI/UX native.
Ogni SDK/framework cross/multi platform ha i suoi pro ed i suoi contro, e purtroppo KMM non è l'eccezione che conferma la regola.
Se sei uno sviluppatore Android potresti pensare che tutto funzionerà correttamente, ma purtroppo non sarà così quando dovrai confrontarti con Swift.
Se sei uno sviluppatore iOS saprai che Swift è simile a Kotlin, ma non in tutto, dovrai quindi conoscere alcune sue caratteristiche.
In questo talk vedremo quali sono i problemi che si possono riscontrare nell'interoperabilità tra Kotlin e Swift, i motivi che li causano, e come risolverli.
Stai perdendo la testa cercando di convertire il tuo state manager da Vuex a Pinia?
Ecco una guida step-by-step per affrontare questo task senza difficoltà.
I micro-frontend sono uno degli argomenti più interessanti nel mondo frontend dell'ultimo periodo ma nonostante la loro popolarità, non esistono delle linee guida comuni per svilupparli. micro-lc risponde a questa esigenza e permette di raccogliere in un unico applicativo tanti micro-frontend, orchestrandoli e rendendoli parte della stessa applicazione e non più componenti singoli, scollegati e sconnessi.
Fastify è il web framework del momento e diverse aziende in tutto il mondo lo stanno utilizzando in produzione da anni.
Costruito da zero per essere il più veloce possibile, con un overhead minima e una potente architettura a plugin, Fastify fornisce la migliore esperienza di sviluppo, senza sacrificare prestazioni e sicurezza.
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
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
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
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