public master class Programming { const string Title = void Start () { ... } } “Software Architecture in Video Games” public class Instructor var william = new () { name = “William Skou Heidemann” , age = 25 , gamesCreated = 25, education = “BSc Software Development, ITU” , job = “Software Engineer, The LEGO Group” , sport = “Competitive Algorithms Programming” } { } public class References books = new string [] { “Clean Code by Robert C. Martin” , “Clean Architecture by Robert C. Martin” , “Level up your code with design patterns and SOLID – Unity Blog Post” , } public class References youtubeChannels = new string [] { “git - amend” , // Advanced Programming/Unity Topics “ PracticeAPI ” , // Advanced Programming/Unity Topics “ Tarodev ” , // Advanced Programming/Unity Topics “Sebastian Lague” , // Game Dev Experiments // Game Architecture With Scriptable Object “www.youtube.com/ watch?v =raQ3iHhE_Kk” } public class Motivation { Reliable Code Maintainable Code Scalable Code Disclaimer * } * // Go and make mistakes public class Early Developer Patterns { Everything is accessible Everything is a Monobehaviour /Node Everything is an event/signal Monolithic Architecture Singletons God Objects } public class Cyclic Dependency Graph { } public class Tree Dependency Graph { } public class 3 - Layer Architecture { Separation of concerns Inversion of control Public API design private } Data Logic Presentation public class Data Layer { } public class Data Layer { Logical abstraction of game components Independent of your game Requires careful analysis ($$$) } Data Logic Presentation public class Logic Layer { } public class Logic Layer { Runs functions to manipulate the data Contains game state } Data Logic Presentation public class Presentation Layer { } public class Presentation Layer { Facilitates player interactions Sends requests to the logical layer Reads game state via the logical layer Subscribes to events in the logic layer } Data Logic Presentation public class Case Study { Three Games / Systems will be presented Discuss various architectural solutions } public class Candy Crush { } public class Pokémon Battle { } public class Bloons Tower Defense { } public class Further Research { // Standing out as Tech Lead Architectural Design Version Control Packaging and Dependency Management Naming Conventions Test Driven Development }