Utilizzare un'architettura data driven in un gioco sviluppato con Unity, per realizzare un semplice sistema di minimodding, basato sui dati e di facile implementazione. Utilizzeremo gli streaming assets e json per creare una struttura di dati modificabile dagli utenti, al fine di realizzare un sistema di user generated content che possa garantire al gioco maggiore longevità e varietà.
Guida al Computer - Lezione 51 - Il Sistema Operativo Parte 1caioturtle
Goodlier ecco il sistema operativo.
Ti spiego cos'è e quali sono le problematiche relative alle strutture a 32 e 64 bit dello stesso, dei programmi e dei drivers delle periferiche.
Buona Formazione. Stay Tuned... Till death do us part! Ciao.
Libro windows 7 reti sicurezza tecniche avanzateLibro Windows 7
Libro Windows 7 : reti, sicurezza, tecniche avanzate è la guida definitiva per Windows 7. Questo libro su Windows 7 è completo e adatto sia agli utenti finali sia ai sistemisti, programmatori e professionisti dell'IT. Guida Windows 7, libro Windows 7, Manuale Windows 7... tutto questo è Windows 7 reti sicurezza tecniche avanzate. Edizioni FAG Milano Autori: Maltraversi Mrco e Antonio Di Fluri ISBN 978-88-8233-865-7
Guida al Computer - Lezione 51 - Il Sistema Operativo Parte 1caioturtle
Goodlier ecco il sistema operativo.
Ti spiego cos'è e quali sono le problematiche relative alle strutture a 32 e 64 bit dello stesso, dei programmi e dei drivers delle periferiche.
Buona Formazione. Stay Tuned... Till death do us part! Ciao.
Libro windows 7 reti sicurezza tecniche avanzateLibro Windows 7
Libro Windows 7 : reti, sicurezza, tecniche avanzate è la guida definitiva per Windows 7. Questo libro su Windows 7 è completo e adatto sia agli utenti finali sia ai sistemisti, programmatori e professionisti dell'IT. Guida Windows 7, libro Windows 7, Manuale Windows 7... tutto questo è Windows 7 reti sicurezza tecniche avanzate. Edizioni FAG Milano Autori: Maltraversi Mrco e Antonio Di Fluri ISBN 978-88-8233-865-7
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDBSteve Maraspin
Pirma parte del seminario su NoSQL al DiTeDi di Udine del 15/12/2012. Affrontato il caso di studio di un'architettura enterprise, basata su datastore relazionali (PostgreSQL) e non (CouchDB, MongoDB, Redis e OrientDB).
Deploy MongoDB su Infrastruttura Amazon Web ServicesStefano Dindo
Lo scopo della presentazione è quella di fornire una visione a 360 gradi su come realizzare un'architettura MongoDB su un'infrastruttura Cloud Amazon Web Services.
La presentazione è suddivisa in quattro aree:
- Introduzione di base su MongoDB
- Preview delle caratteristiche di MongoDB 3
- Come organizzare architetture Replica Set e Sharding di MongoDB in VPC Cloud di Amazon Web Services
- Introduzione alle logiche di Schema Design di MongoDB
Utilizziamo il Bot Framework per realizzare il nostro primo Bot utilizzabile sulle maggiori piattaforme di Messaging (facebook, telegram, skype, slack e molto altro) e con la potenza dei cognitive rendiamo in grado di analizzare e reagire alle immagini che invieeremo.
Ecco le mie slide su NodeJS al Napoli DevDay . Vedrete praticamente, con l'ausilio di snippet di codice, alcuni dei punti chiave di questo linguaggio.
Per vedere le slide con le gif funzionanti:
https://docs.google.com/presentation/d/1EDsvR99WUDx3IBhygYt51YKM1sA5UA_PJmaRFh9HTa4/edit?usp=sharing
A questo repository troverete gli esempi fatti durante il talk:
https://github.com/musikele/nodeJsExamples
Per testare le API rest io uso Advanced Rest Client, estensione di Chrome. Ricordatevi di settare l'encoding a application/json .
Il motore di database MySQL, suo funzionamento e utilizzo. Le novita' introdotte dalla versione 5.
Talk tenuto da Alessandro Tanasi (http://www.tanasi.it)
Apache Hadoop HDFS Re-documentation taking into account both the source code of both the existing documentation available to https://hadoop.apache.org/ site. They were identified known software patterns that exist between NameNode and DataNode for the distributed file system management.
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...Codemotion
Increased complexity makes it very hard and time-consuming to keep your software bug-free and secure. We introduce fuzz-testing as a method for automatically and continuously discovering vulnerabilities hidden in your code. The talk will explain how fuzzing works and how to integrate fuzz-testing into your Software Development Life Cycle to increase your code’s security.
Pompili - From hero to_zero: The FatalNoise neverending storyCodemotion
It was 1993 when we decided to venture in a beat'em up game for Amiga. The Catalypse's success story pushed me and my comrade to create something astonishing for this incredible game machine... but things went harder, assumptions were slightly different, and italian competitors appeared out of nowhere... the project died in 1996. Story ended? Probably not...
More Related Content
Similar to Ivan Preziosi - Sviluppare un'architettura data driven in unity - Codemotion Rome 2019
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDBSteve Maraspin
Pirma parte del seminario su NoSQL al DiTeDi di Udine del 15/12/2012. Affrontato il caso di studio di un'architettura enterprise, basata su datastore relazionali (PostgreSQL) e non (CouchDB, MongoDB, Redis e OrientDB).
Deploy MongoDB su Infrastruttura Amazon Web ServicesStefano Dindo
Lo scopo della presentazione è quella di fornire una visione a 360 gradi su come realizzare un'architettura MongoDB su un'infrastruttura Cloud Amazon Web Services.
La presentazione è suddivisa in quattro aree:
- Introduzione di base su MongoDB
- Preview delle caratteristiche di MongoDB 3
- Come organizzare architetture Replica Set e Sharding di MongoDB in VPC Cloud di Amazon Web Services
- Introduzione alle logiche di Schema Design di MongoDB
Utilizziamo il Bot Framework per realizzare il nostro primo Bot utilizzabile sulle maggiori piattaforme di Messaging (facebook, telegram, skype, slack e molto altro) e con la potenza dei cognitive rendiamo in grado di analizzare e reagire alle immagini che invieeremo.
Ecco le mie slide su NodeJS al Napoli DevDay . Vedrete praticamente, con l'ausilio di snippet di codice, alcuni dei punti chiave di questo linguaggio.
Per vedere le slide con le gif funzionanti:
https://docs.google.com/presentation/d/1EDsvR99WUDx3IBhygYt51YKM1sA5UA_PJmaRFh9HTa4/edit?usp=sharing
A questo repository troverete gli esempi fatti durante il talk:
https://github.com/musikele/nodeJsExamples
Per testare le API rest io uso Advanced Rest Client, estensione di Chrome. Ricordatevi di settare l'encoding a application/json .
Il motore di database MySQL, suo funzionamento e utilizzo. Le novita' introdotte dalla versione 5.
Talk tenuto da Alessandro Tanasi (http://www.tanasi.it)
Apache Hadoop HDFS Re-documentation taking into account both the source code of both the existing documentation available to https://hadoop.apache.org/ site. They were identified known software patterns that exist between NameNode and DataNode for the distributed file system management.
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...Codemotion
Increased complexity makes it very hard and time-consuming to keep your software bug-free and secure. We introduce fuzz-testing as a method for automatically and continuously discovering vulnerabilities hidden in your code. The talk will explain how fuzzing works and how to integrate fuzz-testing into your Software Development Life Cycle to increase your code’s security.
Pompili - From hero to_zero: The FatalNoise neverending storyCodemotion
It was 1993 when we decided to venture in a beat'em up game for Amiga. The Catalypse's success story pushed me and my comrade to create something astonishing for this incredible game machine... but things went harder, assumptions were slightly different, and italian competitors appeared out of nowhere... the project died in 1996. Story ended? Probably not...
Il Commodore 65 è un prototipo di personal computer che Commodore avrebbe dovuto mettere in commercio quale successore del Commodore 64. Purtroppo la sua realizzazione si fermò appunto allo stadio prototipale. Racconterò l'affascinante storia del suo sviluppo ed il perchè della soppressione del progetto ormai ad un passo dalla immissione in commercio.
Rivivere l'ebbrezza di progettare un vecchio computer o una consolle da bar è oggi possibile sfruttando le FPGA, ovvero logiche programmabili che consentono a chiunque di progettare il proprio hardware o di ricrearne uno del passato. In questa sessione si racconta come dal reverse engineering dell'hardware di vecchie glorie come il Commodore 64 e lo ZX Spectrum sia stato possibile farle rivivere attraverso tecnologie oggi alla portata di tutti.
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...Codemotion
There's a lot of talk about blockchain, but how does the technology behind it actually work? For developers, getting some hands-on experience is the fastest way to get familiair with new technologies. So let's build a blockchain, then! In this session, we're going to build one in plain old Java, and have it working in 40 minutes. We'll cover key concepts of a blockchain: transactions, blocks, mining, proof-of-work, and reaching consensus in the blockchain network. After this session, you'll have a better understanding of core aspects of blockchain technology.
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019Codemotion
When was the last time you were truly lost? Thanks to the maps and location technology in our phones, a whole generation has now grown up in a world where getting lost is truly a thing of the past. Location technology goes far beyond maps in the palm of our hand, however. In this talk, we will explore how a ridesharing app works. How do we discover our destination?How do we find the closest driver? How do we display this information on a map? How do we find the best route?To answer these questions,we will be learning about a variety of location APIs, including Maps, Positioning, Geocoding etc.
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019Codemotion
Eward Driehuis, SecureLink's research chief, will guide you through the bumpy ride we call the cyber threat landscape. As the industry has over a decade of experience of dealing with increasingly sophisticated attacks, you might be surprised to hear more attacks slip through the cracks than ever. From analyzing 20.000 of them in 2018, backed by a quarter of a million security events and over ten trillion data points, Eward will outline why this happens, how attacks are changing, and why it doesn't matter how neatly or securely you code.
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 - Codemotion
IoT revolution is ended. Thanks to hardware improvement, building an intelligent ecosystem is easier than never before for both startups and large-scale enterprises. The real challenge is now to connect, process, store and analyze data: in the cloud, but also, at the edge. We’ll give a quick look on frameworks that aggregate dispersed devices data into a single global optimized system allowing to improve operational efficiency, to predict maintenance, to track asset in real-time, to secure cloud-connected devices and much more.
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...Codemotion
What if Virtual Reality glasses could transform your environment into a three-dimensional work of art in realtime in the style of a painting from Van Gogh? One of the many interesting developments in the field of Deep Learning is the so called "Style Transfer". It describes a possibility to create a patchwork (or pastiche) from two images. While one of these images defines the the artistic style of the result picture, the other one is used for extracting the image content. A team from TNG Technology Consulting managed to build an AI showcase using OpenCV and Tensorflow to realize such goggles.
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...Codemotion
Blockchain (and Cryptocurrency) is an evolution of 20-year old research from scientists like Chaum, Lamport, and Castro & Liskov. Due to the current hype, it's hard to distinguish beneficial aspects of the technology from a desire for a "silver bullet" for device security, verifiable logistics, or "saving democracy". The problem: blockchain introduces new security challenges - and blind adoption without understanding reduces overall security. In this talk, Melanie Rieback and Klaus Kursawe explain the pitfalls and limits of blockchain, so you can avoid making your applications LESS secure.
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...Codemotion
Networking is a core part of computing in the digital world we inhabit. But, how well do you know how it works? Do you understand all the moving parts of the OSI stack inside your computer, and how the network is actually put together? How can this ever work? This guided safari of layers, standards, protocols, and happenstance will bring us close to the copper wire, and up through the layers of CDMA/CD, ARP, routing and HTTP. We will make a few excursions through patchworks that still work forty years later, and cleverly designed mechanisms that show that simplicity is the only way to last.
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...Codemotion
Performance tests are not only an important instrument for understanding a system and its runtime environment. It is also essential in order to check stability and scalability – non-functional requirements that might be decisive for success. But won't my cloud hosting service scale for me as long as I can afford it? Yes, but… It only operates and scales resources. It won't automatically make your system fast, stable and scalable. This talk shows how such and comparable questions can be clarified with performance tests and how DevOps teams benefit from regular test practise.
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019Codemotion
Sascha will demonstrate the opportunities and challenges of Conversational AI learned from the practice. Both Technology and User Experience will be covered introducing a process finding micro-moments, writing happy paths, gathering intents, designing the conversational flow, and finally publishing on almost all channels including Voice Services and Chatbots. Valuable for enterprises, developers, and designers. All live on stage in just minutes and with almost no code.
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019Codemotion
A key challenge we face at Pacmed is quickly calibrating and deploying our tools for clinical decision support in different hospitals, where data formats may vary greatly. Using Intensive Care Units as a case study, I’ll delve into our scalable Python pipeline, which leverages Pandas’ split-apply-combine approach to perform complex feature engineering and automatic quality checks on large time-varying data, e.g. vital signs. I’ll show how we use the resulting flexible and interpretable dataframes to quickly (re)train our models to predict mortality, discharge, and medical complications.
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019Codemotion
Coolblue is a proud Dutch company, with a large internal development department; one that truly takes CI/CD to heart. Empowerment through automation is at the heart of these development teams, and with more than 1000 deployments a day, we think it's working out quite well. In this session, Pat Hermens (a Development Managers) will step you through what enables us to move so quickly, which tools we use, and most importantly, the mindset that is required to enable development teams to deliver at such a rapid pace.
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...Codemotion
Quantum computers can use all of the possible pathways generated by quantum decisions to solve problems that will forever remain intractable to classical compute power. As the mega players vie for quantum supremacy and Rigetti announces its $1M "quantum advantage" prize, we live in exciting times. IBM-Q and Microsoft Q# are two ways you can learn to program quantum computers so that you're ready when the quantum revolution comes. I'll demonstrate some quantum solutions to problems that will forever be out of reach of classical, including organic chemistry and large number factorisation.
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...Codemotion
Chinese food exploded across America in the early 20th century, rapidly adapting to local tastes while also spreading like wildfire. How was it able to spread so fast? The GY6 is a family of scooter engines that has achieved near total ubiquity in Europe. It is reliable and cheap to manufacture, and it's made in factories across China. How are these factories able to remain afloat? Chinese-American food and the GY6 are both riveting studies in product-market fit, and both are the product of a distributed open source-like development model. What lessons can we learn for open source software?
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019Codemotion
The design space has exploded in size within the last few years and Sketch is one of the most important milestones to represent the phenomenon. But behind the scenes of this growing reality there is a remote team that revolutionizes the design space all without leaving the home office. This talk will present how Sketch has grown to become a modern, product designer's tool.
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019Codemotion
Would you fly in a plane designed by a craftsman or would you prefer your aircraft to be designed by engineers? We are learning that science and empiricism works in software development, maybe now is the time to redefine what “Software Engineering” really means. Software isn't bridge-building, it is not car or aircraft development either, but then neither is Chemical Engineering. Engineering is different in different disciplines. Maybe it is time for us to begin thinking about retrieving the term "Software Engineering" maybe it is time to define what our "Engineering" discipline should be.
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019Codemotion
What is the job of a CTO and how does it change as a startup grows in size and scale? As a CTO, where should you spend your focus? As an engineer aspiring to be a CTO, what skills should you pursue? In this inspiring and personal talk, I describe my journey from early Red Hat engineer to CTO at Bloomon. I will share my view on what it means to be a CTO, and ultimately answer the question: Should the CTO be coding?
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Ivan Preziosi - Sviluppare un'architettura data driven in unity - Codemotion Rome 2019
1. Sviluppare un'architettura data driven in
unity, un approccio semplice e leggero al
game modding.
Ivan Preziosi
Rome | March 22 - 23, 2019
2. IVAN PREZIOSI
● Classe 1976
● Di giorno: full stack web
developer
● Di notte: indosso le vesti
del game developer
● Quasi sempre lavoro da
solo
3. HARD TIMES - TEMPI DURI
Hard Times - Tempi Duri è un videogioco survival
urbano, nel quale ci si pone nei panni di un
senzatetto, alle prese con la sopravvivenza, in una
grande metropoli indifferente.
4. GAME MODDING
Un mod (abbreviazione dell'inglese modification,
modifica; in italiano usata sia al maschile sia al
femminile) è un insieme di modifiche estetiche e
funzionali a un videogioco, create da professionisti
oppure da giocatori appassionati, allo scopo di
aggiornare, migliorare o semplicemente rendere diverso il
gioco. (Wikipedia)
Counter Strike - Half Life
mod
PLAYERUNKNOWN's Battle Royale - Arma 3 mod
5. GAME MODDING
Grazie al modding possiamo trasformare il concetto
stesso di endgame: non più accesso a contenuti
sempre più difficili e prima preclusi, ma acquisizione
graduale di competenze utili a traslare il giocatore dal
ruolo di fruitore a quello di creatore.
RimWorld has a great support for modding the game
La creatività è una componente
imprescindibile di qualsiasi
attività ludica: senza di essa
fenomeni come la sospensione
dell’incredulità, l’immersione, la
simulazione, l’immedesimazione
proprie delle esperienze ludiche
non sarebbero possibili.
6. UNA DISTINZIONE (ARBITRARIA) TRA
APPROCCI AL GAME MODDING
DATA DRIVEN MODDING
Un approccio al game modding basato sulla modifica ed estensione
dello strato di dati di un gioco. In fase di progettazione si deve
cercare di rendere le logiche e le meccaniche del gioco modificabili
attraverso l’uso dei dati.
FUNCTIONAL MODDING
Si può modificare lo strato dati del gioco come sopra, ma
meccaniche e logiche vengono estese attraverso sistemi che
prevedano l’interpretazione e/o la compilazione runtime di codice
sorgente o di scripting fornito dall’utente.
7. FUNCTIONAL MODDING:
● Realizzazione di un
sandbox engine
● Maggiore complessità di
uso
● Maggiore flessibilità
● Potenziali problemi di
sicurezza
● Spesso utilizzo di software
proprietario (Unity assets
package/dll/interpreti)
● Documentazione? :(
DATA DRIVEN MODDING
vs
FUNCTIONAL MODDING
DATA DRIVEN MODDING:
● Logiche guidate dai dati
● Esposizione via JSON
● No total conversion
● Minore flessibilità
● Minori rischi di sicurezza
● Maggiore facilità di
implementazione
● Facilità di utilizzo
● Non richiede strumenti
terzi
8. DATA DRIVEN PROGRAMMING
La programmazione basata sui dati (Data Driven Programming)
è un paradigma di programmazione che prescrive una struttura
del software che renda possibile alterare il flusso e la logica
applicativa semplicemente andando a modificare lo strato dati,
senza andare a toccare il codice sorgente.
Si tratta di realizzare un'architettura di modding che esponga e
renda possibile agli utenti finali la modifica, l'espansione e la
manipolazione dell'intero strato dei dati di un gioco. Le
meccaniche di gioco devono essere progettate in modo da
poter essere modificate ed estese modificando
solo lo strato dei dati.
MINIMODDING
(DATA DRIVEN MODDING)
9. MINIMODDING IN HARD TIMES
● FACILITÀ DI IMPLEMENTAZIONE (passo più lungo della gamba!)
● SICUREZZA (non si possono iniettare logiche maliziose nel codice
sorgente)
● FACILITÀ DI UTILIZZO (modificare o aggiungere contenuti
originali al gioco diventa un’operazione semplice che non
richiede elevate competenze tecniche)
● NESSUNA NECESSITÀ DI SOFTWARE ESTERNI (il sistema si basa
su file json, png ed ogg, bastano un blocco note e degli editor
liberi come Gimp o Audacity)
● FACILITÀ DI DISTRIBUZIONE (i mod così realizzati sono auto
contenuti in uno zip, sono costituiti da formati semplici - testo e
dati -, non contengono codice e per importarli è sufficiente
scompattarli nella giusta cartella)
10. JSON SERIALIZATION
In informatica, la serializzazione è un processo per salvare un
oggetto in un supporto di memorizzazione lineare (ad esempio,
un file o un'area di memoria), o per trasmetterlo su una
connessione di rete. La serializzazione può essere in forma
binaria o può utilizzare codifiche testuali (ad esempio il formato
JSON) direttamente leggibili dagli esseri umani. Lo scopo della
serializzazione è di trasmettere l'intero stato dell'oggetto in
modo che esso possa essere successivamente ricreato nello
stesso identico stato dal processo inverso, chiamato
deserializzazione.
11. Full Serializer
<<Full Serializer is an easy to use and robust JSON serializer that just
works. It'll serialize pretty much anything you can throw at it and work
on every major Unity platform, including consoles.>>
12. PLAYER EFFECTS
Un esempio di come l’approccio al
modding data driven sia usato
nello sviluppo del gioco: i
PlayerEffects.
Tutte le interazioni tra il
personaggio e l’ambiente
circostante vengono mediate
dall’entità PlayerEffects, ovvero
effetti che si applicano al
personaggio modificandone le
statistiche. Tali entità sono
progettate per cercare di
descrivere il loro comportamento
attraverso i dati con cui sono
inizializzate.
14. STREAMING ASSETS IN UNITY
La maggior parte delle risorse in Unity vengono
combinate nel progetto quando viene creato. Tuttavia,
a volte è utile mettere i file nel normale filesystem sul
computer di destinazione per renderli accessibili
tramite il proprio path.
Qualsiasi file inserito in una cartella denominata
StreamingAssets verrà copiato letteralmente in una
determinata cartella sul computer di destinazione. È
possibile recuperare la cartella utilizzando la proprietà
Application.streamingAssetsPath.
(Unity Manual)
15. USO DEGLI STREAMING ASSETS
BOOTSTRAPSTREAMING ASSETS FILES
LOAD
VANILLA
LOAD BASE
LANG
LOAD USER
MODS
VANILLA MOD
BASE LANG
PERSISTENT DATA PATH
EXTRA LANG
USER MODS
LOAD MODS
LANG
16. MOD DATA FILESYSTEM
Anatomia di un Mod
All’interno della cartella del singolo Mod, è possibile
trovare la struttura contenente tutte le varie entità che
si possono manipolare tramite la modifica e l’aggiunta
di file json.
Application.persistentDataPath
MyMod
17. STRUTTURA RELAZIONALE MOD
CRAFTING
FURNITURE
Lo strato dati del gioco viene impostato rifacendosi al
concetto di database relazionale. Tutte le entità (items,
furniture, doors, scenes, ecc, ecc) sono organizzate in classi
Manager che ne tengono una lista aggiornata e, per ognuna,
una definizione data driven. Come se fossero tabelle e record
in relazione tra loro.
RECIPE
COLLECTION
ID_COLLECTION ITEMS ID + TYPE
REQUIRED ITEMS
RESULTING
ITEMS
18. STRUTTURA RELAZIONALE MOD
Oltre che dai dati le meccaniche di
gioco sono definite anche dalle
relazioni tra di essi. Il data layer
funziona un po’ come un database
relazionale.
19. INIZIALIZZAZIONE MOD ENGINE
Come se fosse un sistema di fixture in un
database, il motore di modding caricherà
ogni mod in fase di bootstrap.
Tale operazione è di fatto un’operazione di
import dati analoga al caricamento di una sql
fixture in fase di inizializzazione
dell’applicazione.
Lo strato dati del gioco viene interamente
popolato in questa fase.
20. INIZIALIZZAZIONE MOD ENGINE
BOOTSTRAP
LOAD MODS
SIGNATURE
VALIDATE MODS
SIGNATURE
LOAD ACTIVE
MODS DATA
DATA LAYER IS
READY
START GAME
La mods signature
descrive mod attivi ed
ordine di caricamento.
Viene conservata
localmente in un
PlayerPref
Cambiamenti fatti ai mod
attivi o aggiunte di nuovi
mod rendono necessario
un restart.
Tramite delle API
possiamo gestire il
download dei mod
sottoscritti e modificare i
mod attivi
L’ordine di caricamento dei
mod influisce sul loro
funzionamento. I mod
caricati dopo, possono
sovrascrivere i precendenti
Vanilla, il gioco base,
viene sempre caricato per
primo. Eventuali mod
successivi possono
sovrascriverne i valori.
21. INIZIALIZZAZIONE MOD ENGINE
BOOTSTRAP
MOD DATA - FILE SYSTEM GAME DATA LAYER
PNG SPRITES
JSON FILES
OGG AUDIO
LOAD MOD
DATA
CHECK MODS
AVAILABILITY
FULL
SERIALIZER
DESERIALIZE
DATA LAYER
MANAGERS
CONTENT
INITIALIZATION
RAM
POOLING
GAME
22. ORDINE DI CARICAMENTO
Un fattore importante nell’architettura di un sistema di mod è
quello di prevedere in che modo gestire il caricamento dei vari
mod, e come il loro ordine di caricamento influisca sul loro
funzionamento.
23. APPROCCIO ADDITIVO
vs
APPROCCIO SOSTITUTIVO
(un’altra distinzione arbitraria)
I vari manager oltre a mantenere una lista aggiornata di entità
(record) gestiscono anche le logiche di aggiornamento e
caricamento incrementale dei dati (aggiunta dei dati e/o
sovrascrittura degli stessi qualora si renda necessario).
24. APPROCCIO ADDITIVO
In Hard Times si è scelto di utilizzare, il più delle volte, un
approccio di tipo additivo. I dati caricati vanno, quando
possibile, ad aggiungersi ed a fondersi con quelli caricati in
precedenza.
Tuttavia, quando ciò non è possibile od auspicabile, essi
sovrascrivono eventuali impostazioni definite
precedentemente.
Per questo è di fondamentale importanza tenere a mente e
controllare l’ordine in cui i vari mod si caricheranno durante le
operazioni di bootstrap.
25. ESEMPIO ADDITIVO
Aggiungendo un nuovo
oggetto nella categoria
ClothingItem, stiamo
procedendo ad
un’operazione di aggiunta
additiva, in quanto
l’elemento si aggiunge
agli altri presenti nella
categoria.
26. ESEMPIO ADDITIVO
ITEMS
VANILLA
LOAD MOD
DATA
ITEMS_CATEGORY
ITEM 1
(Vanilla)
ITEM 2
(Vanilla)
ITEM 3
(Custom Mod)
ITEM 4
(Custom Mod)
ITEMS_CATEGORY
ITEM 1
(Vanilla)
ITEM 2
(Vanilla)
ITEM 3
(Vanilla)
CUSTOM MOD
ITEMS_CATEGORY
ITEM 3
(Custom Mod)
ITEM 4
(Custom Mod)
LOAD
VANILLA
DATA
LOAD
CUSTOM
MODS DATA
27. APPROCCIO SOSTITUTIVO
In taluni casi si procede ad utilizzare un tipo di approccio
sostitutivo nel caricamento di determinate entità.
Ad esempio, inserendo un WeatherDescriptor nel nostro mod
package, esso andrà a sovrascrivere eventuali istruzioni ed
impostazioni presenti in altri WeatherDescriptor che fossero
stati caricati precedentemente.
28. ESEMPIO SOSTITUTIVO
Nel caso del WeatherDescriptor
si è scelto di mantenere l’unità
e la coerenza interna del
componente. Si è ritenuto che
altrimenti potessero emergere
comportamenti anomali o
disorientanti nel caso in cui
fossero stati fusi tra loro due
descrittori, prendendo parte
delle impostazioni da un file e
parte dall’altro.
29. ESEMPIO SOSTITUTIVO
ITEMS
VANILLA
LOAD MOD
DATA
ITEMS_CATEGORY
ITEM 3
(Custom Mod)
ITEM 4
(Custom Mod)
ITEMS_CATEGORY
ITEM 1
(Vanilla)
ITEM 2
(Vanilla)
ITEM 3
(Vanilla)
CUSTOM MOD
ITEMS_CATEGORY
ITEM 3
(Custom Mod)
ITEM 4
(Custom Mod)
LOAD
VANILLA
DATA
LOAD
CUSTOM
MODS DATA
30. MOD REPOSITORY
PER MOD REPOSITORY SI INTENDE UNA
PIATTAFORMA ADIBITA ALLA RACCOLTA,
VALUTAZIONE, DISTRIBUZIONE DEI MOD. ESSA
PUÒ ANCHE OFFRIRE SERVIZI SOTTO FORMA DI
ACCESSO A DELLE API (MOD SUBSCRIPTION,
VOTI, UPLOAD, TAG, ECC)
31. MOD REPOSITORY
Scegliere il corretto approccio e la corretta
piattaforma per le proprie esigenze è molto
importante!
Nel mio caso ho preso in considerazione diverse
opzioni, valutandone pro e contro:
● Piattaforma proprietaria sviluppata ad hoc
● Steam Workshop
● ModDb.com
● Mod.io
32. Piattaforma proprietaria sviluppata ad hoc
● Costruita su misura per le mie esigenze
● Sicurezza da implementare
● Possibilità di integrazione e creazione API ad hoc
● Impegno elevato in termini di tempo e lavoro
● Trattamento di dati personali e privacy
● Possibilità di bug o problemi di solidità (!!!111!1!)
MOD REPOSITORY
33. ● Proprietario e disponibile solo per utenti
Steam
● Sicurezza già parzialmente implementata
● API integrabili con il proprio gioco
● Non richiede un impegno elevatissimo in
termini di integrazione
● Diffuso e familiare tanto per gli utenti quanto
per gli sviluppatori
MOD REPOSITORY
34. ● Indipendente e platform agnostic
● Sicurezza non pervenuta
● Non possiede API
● Non permette integrazione, si usa solo
tramite interfaccia web
● Diffuso e familiare
MOD REPOSITORY
35. ● Indipendente e platform agnostic
● Sicurezza: Antivirus Integrato
● Possiede un esteso sistema di API ed
integrazioni per l’autenticazione
● Integrazione piuttosto semplice
● Possibilità utilizzo anche via web
● Progetto relativamente nuovo e ancora poco
rodato (solo 10 giochi lo integrano)
● Strumenti di gestione del repository:
moderazioni, commenti, voti, sottoscrizioni,
donazioni ecc
MOD REPOSITORY