Rethinking Game Architecture with Immutability Jacob Dufault Faculty Advisor: Dr. Phil Bernhard, Dept of Computer Science, Florida Institute of Technology.

Slides:



Advertisements
Similar presentations
Module 13: Performance Tuning. Overview Performance tuning methodologies Instance level Database level Application level Overview of tools and techniques.
Advertisements

Software Architectural Design Software Components Instructor Dr. Lawrence Chung.
Software Frame Simulator (SFS) Technion CS Computer Communications Lab (236340) in cooperation with ECI telecom Uri Ferri & Ynon Cohen January 2007.
CompSci Applets & Video Games. CompSci Applets & Video Games The Plan  Applets  Demo on making and running a simple applet from scratch.
HyperContent 2.0 JA-SIG Winter Conference December 5, 2005 Alex Vigdor, Columbia University.
Intro to Threading CS221 – 4/20/09. What we’ll cover today Finish the DOTS program Introduction to threads and multi-threading.
Technical Architectures
How do games work? Game Workshop July 4, Parts Sprites/pictures Map/background Music/sounds Player character Enemies Objects.
Lecture 23: Software Architectures
Introducing the Common Language Runtime for.NET. The Common Language Runtime The Common Language Runtime (CLR) The Common Language Runtime (CLR) –Execution.
Presenter : Cheng-Ta Wu Antti Rasmus, Ari Kulmala, Erno Salminen, and Timo D. Hämäläinen Tampere University of Technology, Institute of Digital and Computer.
Introducing the Common Language Runtime. The Common Language Runtime The Common Language Runtime (CLR) The Common Language Runtime (CLR) –Execution engine.
Chapter 3.6 Game Architecture. 2 Overall Architecture The code for modern games is highly complex With code bases exceeding a million lines of code, a.
DATABASE MANAGEMENT SYSTEM ARCHITECTURE
QoS-enabled middleware by Saltanat Mashirova. Distributed applications Distributed applications have distinctly different characteristics than conventional.
Chapter Languages, Programming and Architecture.
Games Development 2 Entity / Architecture Review CO3301 Week
A Free sample background from © 2001 By Default!Slide 1.NET Overview BY: Pinkesh Desai.
11 Games and Content Session 4.1. Session Overview  Show how games are made up of program code and content  Find out about the content management system.
Christopher Jeffers August 2012
Tools for Game Developmet Erik Harpstead Carnegie Mellon University 1.
1 8/29/05CS360 Windows Programming Professor Shereen Khoja.
Zhonghua Qu and Ovidiu Daescu December 24, 2009 University of Texas at Dallas.
Applets & Video Games 1 Last Edited 1/10/04CPS4: Java for Video Games Applets &
Raffaele Di Fazio Connecting to the Clouds Cloud Brokers and OCCI.
B.Ramamurthy9/19/20151 Operating Systems u Bina Ramamurthy CS421.
Developing WIA Drivers Byron Changuion Developer Windows Imaging Group Microsoft Corporation.
©Ian Sommerville 2000 Software Engineering, 6th edition. Slide 1 Component-based development l Building software from reusable components l Objectives.
ITCS 6010 SALT. Speech Application Language Tags (SALT) Speech interface markup language Extension of HTML and other markup languages Adds speech and.
Capture and Replay Often used for regression test development –Tool used to capture interactions with the system under test. –Inputs must be captured;
Parsley Introduction Kui Huang Oct. 13, Topics Background Dependency Injection Object Lifecycle Message Bus Sample FW Extensions.
Enterprise JavaBeans. What is EJB? l An EJB is a specialized, non-visual JavaBean that runs on a server. l EJB technology supports application development.
Architecture styles Pipes and filters Object-oriented design Implicit invocation Layering Repositories.
CHEN Ge CSIS, HKU March 9, Jigsaw W3C’s Java Web Server.
SOFTWARE DESIGN (SWD) Instructor: Dr. Hany H. Ammar
CSC 395 – Software Engineering Lecture 12: Reusability –or– Programming was Bjarne Again.
11 CORE Architecture Mauro Bruno, Monica Scannapieco, Carlo Vaccari, Giulia Vaste Antonino Virgillito, Diego Zardetto (Istat)
Lecture2: Database Environment Prepared by L. Nouf Almujally & Aisha AlArfaj 1 Ref. Chapter2 College of Computer and Information Sciences - Information.
A bad case of content reuse Validator Website to Validate License Violations Validator – Only requires the URI of the site to check for a license violation.
McGraw-Hill/Irwin © 2008 The McGraw-Hill Companies, All Rights Reserved Chapter 7 Storing Organizational Information - Databases.
XNA An Introduction. What XNA is… Microsoft® XNA™ is composed of industry- leading software, services, resources, and communities focused on enabling.
Operating System 2 Overview. OPERATING SYSTEM OBJECTIVES AND FUNCTIONS.
DATABASE MANAGEMENT SYSTEM ARCHITECTURE
Games Development Game Architecture: Entities CO2301 Games Development 1 Week 22.
Chapter 3.6 Game Architecture. 2 Overall Architecture The code for modern games is highly complex (can easily exceed 1M LOC) The larger your program,
A Standards-Based Approach for Supporting Dynamic Access Policies for a Federated Digital Library K. Bhoopalam, K. Maly, F. McCown, R. Mukkamala, M. Zubair.
Replica Management Kelly Clynes. Agenda Grid Computing Globus Toolkit What is Replica Management Replica Management in Globus Replica Management Catalog.
Testing OO software. State Based Testing State machine: implementation-independent specification (model) of the dynamic behaviour of the system State:
Games Development 1 Review / Revision CO2301 Games Development 1 Semester 2.
CCSDS SOIS Working Group Meeting – Berlin, Germany 14th of October 2008 Prototyping of CCSDS SOIS services on 1553 Bus Sev Gunes-Lasnet, Olivier Notebaert.
Session 1 Module 1: Introduction to Data Integrity
Copyright (c) 2006 IBM Corporation; made available under the EPL v1.0 Update Policy ~ Where we are in 3.2.
Lecture 2: Review of Object Orientation. © Lethbridge/La ganière 2005 Chapter 2: Review of Object Orientation What is Object Orientation? Procedural.
Simulation of O2 offline processing – 02/2015 Faculty of Electrical Engineering, Mechanical Engineering and Naval Architecture Eugen Mudnić.
CSCI/CMPE 4334 Operating Systems Review: Exam 1 1.
Module 4: Troubleshooting Web Servers. Overview Use IIS 7.0 troubleshooting features to gather troubleshooting information Use the Runtime Control and.
Sung-Dong Kim, Dept. of Computer Engineering, Hansung University Java - Introduction.
Databases and Database User ch1 Define Database? A database is a collection of related data.1 By data, we mean known facts that can be recorded and that.
Game Architecture Rabin is a good overview of everything to do with Games A lot of these slides come from the 1st edition CS 4455.
Java Beans Sagun Dhakhwa.
In-situ Visualization using VisIt
Introduction Enosis Learning.
Introduction Enosis Learning.
Chapter 2 Database Environment.
CSSSPEC6 SOFTWARE DEVELOPMENT WITH QUALITY ASSURANCE
PROCESSES & THREADS ADINA-CLAUDIA STOICA.
Developing and testing enterprise Java applications
Games Development Game Architecture: Entities
Games Development 1 Review / Revision
Games Development 2 Entity / Architecture Review
Presentation transcript:

Rethinking Game Architecture with Immutability Jacob Dufault Faculty Advisor: Dr. Phil Bernhard, Dept of Computer Science, Florida Institute of Technology Overview Taking inspiration from functional programming, a new game architecture/framework has been developed and tested that heavily uses immutability. This introduces a large number of benefits not otherwise possible. A game is composed of a set of entities and a set of systems. The entities declare what data they contain with no logic about how that data interacts with the game world. Systems declaratively specify what types of entities they are interested in (for example, only those with a Position and a Velocity) and describe how those entities should operate in the game world. The data inside of entities is immutable per game update. Immutability Gains Update Order Independence Systems process entities and contain all game logic. Bugs are easily introduced because these systems have implicit state regarding their execution order. By introducing immutability, systems can execute independently of one another as there are no changes in game state per frame. This allows for systems to execute in multiple threads automatically, a feature which has been implemented. Deterministic Simulation Multiplayer real-time strategy games have too many simulated entities to send the state changes across the network. Instead, the game is treated as a simulation with each computer simulating the same end result. Multithreading introduces execution order ambiguity into the simulation state, making it seem incompatible with determinism. But if all content that derives the next frame is immutable for the entire frame, then execution order is no longer relevant – the same state will result every time. Minimized Coupling Entities are automatically registered into systems. Systems declaratively specify what kind of entities they are interested in. Entity data is not tied to any particular system. Systems can be ignorant of the rest of the world and only consider their local state. Architecture Gains Unified Serialization Pipeline All games need to save levels. Serialization is cleanly integrated into the entity framework; only simple object annotations are required. Starting a new game is identical to loading a saved game. Replay Support Since the simulated game is deterministic, only input needs to be recorded to replay the game. This allows for a simple replay format with minimal storage size. Generic Rendering with Interpolation The entity system is rendering engine agnostic and exposes APIs as necessary to easily hook into an arbitrary rendering engine with a powerful event system. Renderers for both Unity and XNA have been written. Each entity contains three sets of data instances, split up into a previous, current, and future group. The previous and current groups can be read from, while the future group can only be written to. Runtime allocation and copying is minimal. This architecture neatly allows for interpolation between update frames, a key facet to achieve a believable game where units move smoothly. Architecture System API Entity Filter Triggers Input Filter Entity Design Metadata Data Instance Runtime Implementation Content Implementation Serialization Entity Framework Rendering Engine Unity XNA/MonoGame Unity Editor Game Content Entities/Templates Renderer Specific Content Systems Source Code Framework is at github.com/jacobdufault/forge under the MIT License See also github.com/jacobdufault/forge-unity for the Unity bindings See also github.com/jacobdufault/forge-sample for the sample game