A High Performance Data-Driven, Entity-Component Framework for Game Engines with Focus on Data-Oriented Design

Total Page:16

File Type:pdf, Size:1020Kb

A High Performance Data-Driven, Entity-Component Framework for Game Engines with Focus on Data-Oriented Design A High Performance Data-Driven, Entity-Component Framework For Game Engines With Focus on Data-Oriented Design Max Danielsson∗ Gustav Pihl Bohliny Blekinge Institute of Technology Abstract 2.1 Entity-Component This paper presents an implementation of a Data-Driven Entity- Nystrom[2014] has summarized the fundamentals of component- Component framework for computer game engines built using based design and how it differs from object-oriented design. In his Data-Oriented Design principles. In the framework a developer de- suggested solution the components contain both data and logic and fines systems and components to create games. We present a simple are tied together in game object classes. Each component contains test-case built in the framework with rendering and audio, measur- its locally relevant logic and can communicate with other compo- ing system performance and cache misses. The results are deemed nents either via direct access or messages. promising, with good cache utilization and the framework is con- The Unity game engine1 is a well known example where EC based cluded to be useful as a base for future development. programming is used to a great extent, providing a system for ex- tending entity behaviour through a scripting layer. Keywords: entity-component, data-oriented, data-driven, game West[2007] has a write-up over the basics of EC concepts, describ- engine, game architecture, engine framework ing a design which is flat rather than hierarchical. Martin[2007] has written about a slightly different solution adding 1 Introduction the concept of Systems which house the logic used for transform- ing the data of components, essentially turning components into In this paper, an implementation of a game object framework is pre- pure data. He also adds the concept of aspects, representing a sented. It combines two design patterns: EC (Entity-Component) component composition, similar to our solution, which we detail and DOD (Data-Oriented Design), with the aim to provide a foun- in section 3.2. He also goes to great lengths describing anecdo- dation for a game engine architecture that is both efficient in terms tal information regarding the widespread difference in what entity of rapid feature implementation and cache utilization. component systems are to developers. His writings have inspired the Artemis Entity System Framework[Arent 2012] which is an EC based systems [Nystrom 2014, c.14] have been on the rise in open-source framework for implementing EC based games and has popularity within the game industry since at least 2002 when Scott served as an inspiration to our own implementation. Bilas proposed a method where game objects are Data-Driven enti- Garcia et al.[2014] has previously described the gains in designing ties constructed from a composition of multiple components[Bilas accessible games by employing Data-Driven and EC based design 2002]. A flat EC game object design, as compared to a hierarchi- principles. The methods described show how a games stimulation cal game object design, lessens coupling between behaviour and or output to the user can be modified within the game without re- entity types, and individual entities become more malleable. Be- designing other aspects of the engine. This is achieved simply by haviour can be easily shared between vastly different entities, with- switching out components responsible for stimulation. By creat- out the need for complex inheritance structures. The core goal is to ing different profiles for people with different abilities the game is handle the immense complexity of large games and to allow faster allowed to have a greater accessibility and a bigger audience. turnaround times on feature changes. 2.2 Data-Oriented Design DOD is a design paradigm based on performance optimization prin- ciples. The primary goal of DOD is to engineer programs that consider cache hardware design, maximizing memory throughput The primary performance bottleneck of modern CPUs (Central Pro- and CPU utilization. We have observed that EC patterns lends it- cessing Unit) is memory access times[Hennessy et al. 2007]. The self well to DOD principles because of its potential decoupling of main way this has been alleviated has been through implementa- memory and procedures. This decoupling allows us to meticulously tion of so called caches; Faster but more expensive memory placed place component data in memory and order execution to minimize between the CPU and RAM (Random Access Memory) where re- cache-miss rates. cently accessed memory is stored for quicker reuse. The assump- tion is that memory which is recently used has a high likelihood of being accessed again—a concept called temporal locality. An- 2 Previous Work other assumption made with modern caches is that memory is often accessed close to previous accesses, or linearly. This concept is called spatial locality. The spatial locality assumption is reflected There has been a substantial amount of work done in the game de- in that cache often stores a larger chunk of sequential memory, a velopment field regarding DOD and EC. Yet, relatively little has cache-line, than is being accessed by the instruction.[Gerber and been published in peer-reviewed journals and most of the infor- Bik 2006, p.111][Hennessy et al. 2007] mation currently resides in books and developers personal online resources in the form of presentations and blogs. Albrecht[2009] from Sony has a presentation regarding DOD in which he presents the impact of cache efficient data layout. He also details the difference between different orders of execution ∗e-mail:[email protected] ye-mail:[email protected] 1http://unity3d.com/ and memory de-referencing and how strongly it can impact per- collide. The game uses six components to store the different types formance. of data. One component each for: position, velocity, rendering data (sprite), audio (audio file), collision (radius) and a component for Frykholm[2014] from Bitsquid details an EC implementation with activating the play sound on collision system. focus on DOD, although different from ours in many ways. His so- lution has a tighter coupling between systems and component types, Entities are defined in JSON files, as opposed to XML used by Gar- giving the systems the responsibility to handle allocation of its com- cia and Almeida Neris. Both formats serve similar purpose and ponent type. This results in a more tailored allocation scheme for the change is purely that of personal preference. The JSON files specific data, but gives the developer implementing the systems a contain the data definitions and component makeup of an entity. larger responsibility. The files are loaded by the program using Jansson3 and parsed to generate the needed entities for the test. After loading, the enti- 3 Method ties’ velocities and positions are randomly modified to make them behave somewhat differently. We define three types of objects: This paper uses Garcia’s and Almeida Neris’[2014] work as a start- audio-visual, visual and background objects. The audio-visual ob- ing point in defining how an EC framework can work in the abstract ject moves, collides, is rendered and plays a sound on collision. The and we present a practical implementation which is designed us- visual object has no audio component and the background object is ing DOD in the programming language C++11[Stroustrup 2013]. invisible, inaudible and runs only in the background. The varia- We then implement a simple real-time application and measure tion allows for better focus on our implementation and less on the its frame-time and cache-miss rates to determine its performance, performance and scaling of SDL’s features. which are later discussed. 4 Implementation 3.1 Outline Components can not have member functions or complex construc- Building upon the work of Garcia and Almeida Neris[2014] we first tors. They have to be trivially copyable, preferably so called POD detail some technical aspects in section 3.2, defining components (Plain Old Data) objects. The reason for this is to simplify copy and entities and adding concepts such as aspects and systems which and storage of these structures in memory. In our implementation will aid in describing the implementation in section4. After going we verify this during compile time using static compile-time asserts through our implementation we cover some results in section5 re- which simplify development and removes some common mistakes. garding the performance of the system. At the end of this paper in section6 we discuss the results and our implementation. Lastly sec- Entities consist of one unsigned integer. As a result it is easy to sort tion 6.2 covers future work and suggestions on how our framework entities and execute them in an ascending order. The assumption can be improved. is that entities which are placed in an ascending order has compo- nents which are placed in an ascending order. This is not guaran- 3.2 Concepts teed however and it is all up to the component allocation routines to try and optimize this creation to achieve an optimal memory Before we begin to detail our implementation we define the four structure. As entities are released and reclaimed, id reuse is in- primary concepts that are relevant. Note the there are no strict defi- evitable, this can cause mix-ups as a routine keeps a reference to a nitions of these terms and that ours may vary from other authors. reclaimed entity id which it does not actually have intended interest in. This can be solved using a second integer as a globally unique A component is a collection of data, it does not have any logic di- id which grows for each Entity allocation, resulting in collision free rectly tied to it, like a standard OO (Object-Oriented) class would. ids. Frykholm[2014] solves this issue by reserving part of the id’s An entity is a specific collection of Components given a common memory for a ”generational id” which is locally incremented for ID.
Recommended publications
  • Unity Training Academy 2018-2019, #2 Aras Pranckevičius
    Random Things About Code Unity Training Academy 2018-2019, #2 Aras Pranckevičius 1 Generative Art – Made with Unity Caveat Emptor ● This is going to be totally random! ● Without any structure! ● ...so yeah :) 2 Random Intro 3 A long time ago in a galaxy far, far away... ● I thought these are awesome: ○ C++ ○ STL, Boost ○ Object Oriented Programming ○ Design Patterns ● Had hair! 4 Now... ● Most of these are... ”not that good” ○ C++: too complicated ○ STL/Boost: too complicated, over-engineered ○ OOP: only useful for UI widgets ○ Design Patterns: BS to sell books/courses ● No hair :( 5 Some things which I like: Futurist Programming ● “Futurist Programming” by Nick Porcino ● http://nickporcino.com/meshula-net-archive/posts/post168.html 6 Some things which I like: Futurist Programming ● No Compromise, No Waste Programming ○ The program is the BEST at what it does ○ The program is FAST ○ The footprint is SMALL ○ The code is CLEAR ○ The program is BUG-FREE ○ Abstractions must SIMPLIFY ○ The unnecessary is ELIMINATED ○ NO COMPROMISES in the name of Extensibility, Modularity, Structured Programming, Reusable Code, Top Down Design, Standards, Object Oriented Design, or Agility. 7 Some things which I like: Three Big Lies ● “Three Big Lies” by Mike Acton ● https://www.gdcvault.com/play/1012200/Three-Big-Lies-Typical-Design ● https://cellperformance.beyond3d.com/articles/2008/03/three-big-lies.html ● Fun fact: Mike is at Unity now, working on ECS and stuff! 8 Some things which I like: Three Big Lies ● Software is a platform ● Code designed around
    [Show full text]
  • BITSQUID: BEHIND T HE SCENES Building a Game Engine Design, Implementation & Challenges
    BITSQUID: BEHIND T HE SCENES Building a Game Engine Design, Implementation & Challenges Niklas Frykholm System Architect, Bitsquid DESIGN GOALS • An engine that is:! Flexible! Fast! And supports good workflows! ! • Not a click-and-play “game maker”! Aimed at professionals who want full performance and full control! • Not a repurposed first-person shooter! For all game types FLEXIBLE • Engine! Avoid bit-rot (large software systems get worse over time)! • Any game type! FPS, platformer, RPG, racing game, architectural visualization, etc! User must be in full control of game logic! • Wide range of platforms (mobile → high end PC)! Very different performance characteristics! Don’t try to hide platform differences (abstraction → inefficiency)! Users must be able to control the entire rendering pipeline (forward/deferred)! • Flexibility puts higher demands on users than click-to-play Hamilton’s Great Adventure (Fatshark: PC, PS3, Android) War of the Roses (Fatshark: PC) Krater (Fatshark: PC, OS X) The Showdown Effect (Arrowhead: PC, OS X) War of the Vikings (Fatshark) Magica Wizard Wars (Paradox North) Helldivers (Arrowhead) AVOIDING BIT-ROT • Care about code quality! Publish your source code! (We give it to our customers)! • Keep the engine small! Less code is better! Aggressively remove what you don’t use!! Don’t do everything that our customers want! (They can do it themselves in the source.)! • Refactor! When you find a better way to do things → rewrite! • Decouple! As few dependencies between systems as possible! Individual systems can be replaced
    [Show full text]
  • Confidential. © 2009-2015 Crytek Gmbh. All Rights Reserved. Page
    With CRYENGINE 5.1.0, we have deprecated the support for Visual Studio 2012 and 2013. For more information, please check Visual Studio Supported Versions. This has implications on the language features that can be used in the code-base. This document outlines the most important coding standards that are applicable to CRYENGINE. Its main purpose is to achieve overall code consistency and software structural quality. It is a helper for improving code readability and easing maintenance. Programmers are expected to follow this standard while writing code for CRYENGINE. There may be few exceptions to deviate from the coding standard, since we cannot predict every scenario or situation that may occur in the future. The majority of code should follow these rules, so that we can have a clearer and maintainable code base. These rules apply to CRYENGINE, Sandbox and plug-in/extensions thereof. (All the code can be found under Code/CryEngine, Code/Sandbox and Code/CryExtensions) When you intend to deviate from the guidelines, you should mention this in the code review so that: Reviewer spends less time marking them. You can immediately state the reason for the deviation to avoid any confusion. Coding standard Disabled C++ features Uncrustify code formatting tool Common rules: Tabs and spaces Spaces in expressions Long and complex expressions Wrapping Long function parameter lists if statement for statement Infinite loops switch statement Conditional operator (ternary) Constructor initialization lists Formatting rules for composite types Naming conventions
    [Show full text]
  • Flexible Rendering for Multiple Platforms
    Flexible Rendering for Multiple Platforms [email protected] Nikolaj Kledzik / Frans Enmark Polygon – Verktygslåda 8 Art Direction & Design Inspiration Logotyp 2011 © Nikolaj Kledzik / Frans Enmark Breakdown –Introduction –Bitsquid Rendering Architecture –Tools Bitsquid –High-end game engine for licensing –Multi-platform: PC, MAC, PS3, X360, High-end mobile –Currently powering 10 titles in production – Production team sizes 15-40 developers Bitsquid –Key design principles – Simple & lightweight code base (~200KLOC) –Including tools – Heavily data-driven – Quick iteration times – Data-oriented design –Highly flexible... Screenshot : WOTR “War of the Roses” Courtesy of Fatshark and Paradox Interactive Screenshot : WOTR “War of the Roses” Courtesy of Fatshark and Paradox Interactive Content Slide – Text Here – Or here “Krater” Courtesy of Fatshark Krater “Krater” Courtesy of Fatshark Screenshot: Shoot “The Showdown Effect” Courtesy of Arrowhead Game Studios & Paradox Interactive Screenshot Hamilton “Hamilton’s Great Adventure” Courtesy of Fatshark “Stone Giant” DX11 tech demo Flexible rendering –Bitsquid powers a broad variety of game types – Third-person, top-down, 2.5D side-scrollers and more –Different types of games can have very different needs w.r.t rendering – 30Hz vs 60Hz – Shading & Shadows – Post effects, etc.. –Game context aware rendering – Stop rendering sun shadows indoors, simplified rendering in split-screen Flexible rendering –Also need to run on lots of different HW-architectures –Cannot abstract away platform differences, we need stuff like: – Detailed control over EDRAM traffic (X360) – SPU offloading (PS3) – Scalable shading architecture (forward vs deferred, baked vs real-time) –What can we do? – Push the decisions to the developer! –But, make it as easy as possible for them..
    [Show full text]
  • Practical Particle Lighting
    Practical Particle Lighting [email protected] Nikolaj Kledzik / Frans Enmark Polygon – Verktygslåda 8 Art Direction & Design Inspiration Logotyp 2011 © Nikolaj Kledzik / Frans Enmark Overview –Introduction –Basic Particle Lighting –Improvements –Conclusions Introduction: Bitsquid –High-end game engine for licensing –Currently powering 10 titles in production – Team sizes between 15 and 40 developers –Techniques presented used in one announced title so far – “War of the Roses”, Fatshark / Paradox Interactive TODO: WOTR screenshot –Showing lit smoke pillars – “War of the Roses” Courtesy of Fatshark and Paradox Interactive Introduction: Particle Lighting –a.k.a. Billboard lighting –Focus on making billboards fit in with the environment – Must support dynamic local lights as well as global lighting environment –Cheap enough to be used on all non-emissive particles – Keep PS work to a minimum, push bulk cost to earlier stage (VS or DS or even off GPU on some arch.) Unlit Particles Motivation screenshot –Unlit particles Lit Particles Motivation screenshot –Lit particles Vertex Lighting –Super cheap – Calc incoming light per-vertex in VS (or on CPU) – Modulate with particle color in PS –Solves problem with fitting into rest of the scene –Better than nothing but looks very flat – No sense of incoming light direction biggest problem –Can we do better? Resurrecting an old friend: HL2-basis –Project lighting environment to HL2-basis[1] –Align HL2-basis vectors with billboard (i.e view space) Z+ Y+ X+ Lighting using HL2-basis –In VS: For
    [Show full text]
  • Theindiegamedeveloperhandbook.Pdf
    THE INDIE GAME DEVELOPER HANDBOOK This page intentionally left blank THE INDIE GAME DEVELOPER HANDBOOK Richard Hill-Whittall First published 2015 by Focal Press 70 Blanchard Road, Suite 402, Burlington, MA 01803 and by Focal Press 2 Park Square, Milton Park, Abingdon, Oxon OX14 4RN Focal Press is an imprint of the Taylor & Francis Group, an informa business © 2015 Taylor & Francis The right of Richard Hill-Whittall to be identified as the author of this work has been asserted by him in accordance with sections 77 and 78 of the Copyright, Designs and Patents Act 1988. All rights reserved. No part of this book may be reprinted or reproduced or utilised in any form or by any electronic, mechanical, or other means, now known or hereafter invented, including photocopying and recording, or in any information storage or retrieval system, without permission in writing from the publishers. Notices Knowledge and best practice in this field are constantly changing. As new research and experience broaden our understanding, changes in research methods, professional practices, or medical treatment may become necessary. Practitioners and researchers must always rely on their own experience and knowledge in evaluating and using any information, methods, compounds, or experiments described herein. In using such information or methods they should be mindful of their own safety and the safety of others, including parties for whom they have a professional responsibility. Product or corporate names may be trademarks or registered trademarks, and are used only for identification and explanation without intent to infringe. Library of Congress Cataloging-in-Publication Data Hill-Whittall, Richard.
    [Show full text]
  • Karelia-Ammattikorkeakoulu Viiden 3D
    KARELIA•AMMATTIKORKEAKOULU Tietojenkäsittelyn koulutusohjelma Janne Mononen VIIDEN 3D-PELIMOOTTORIN VERTAILU UUDEN KEHITTÄJÄN NÄKÖKUL- MASTA Opinnäytetyö Marraskuu 2016 OPINNÄYTETYÖ Marraskuu 2016 Tietojenkäsittelyn koulutusohjelma Tikkarinne 9 80220 JOENSUU 013 260 600 Tekijä(t) Janne Mononen Nimeke Viiden 3D-pelimoottorin vertailu uuden kehittäjän näkökulmasta Toimeksiantaja Joensuu Games Tiivistelmä Tässä opinnäytetyössä vertaillaan viittä helposti saatavilla olevaa 3D-pelimoottoria uuden tai kokemattoman kehittäjän näkökulmasta. Opinnäytetyön tavoitteena on vertailla peli- moottoreiden ominaisuuksia ja selventää lukijalle minkälaiselle kehittäjälle tai kehittäjäryh- mälle opinnäytetyöhön valitut pelimoottorit sopivat. Opinnäytetyö on tutkimuksellinen. Opinnäytetyöhön valittuja pelimoottoreita vertailtiin sellaisten ominaisuuksien osalta, jotka ovat tärkeitä kaikissa 3D-peliprojekteissa. Ominaisuuksia vertailtiin niiden monipuolisuu- den, helppokäyttöisyyden ja dokumentaation kattavuuden osalta. Opinnäytetyössä luotiin myös katsaus pelimoottoreiden käyttökustannuksiin ja rojaltimaksuihin. Opinnäytetyön tuloksena arvioidaan minkälaiselle kehittäjälle tai kehittäjäryhmälle vertai- lun pelimoottorit soveltuvat. Opinnäytetyön lopputuloksena kehittyi myös paljon vertailutie- toa ja huomioita pelimoottoreiden ominaisuuksista. Opinnäytetyön tuloksien on tarkoitus helpottaa uuden kehittäjän pelimoottorivalintaa. Kieli Sivuja 95 Suomi Liitteet Asiasanat pelimoottori, vertailu, Unity, Unreal Engine, Cryengine, Autodesk, Amazon, Stingray, Lumberyard
    [Show full text]
  • Maxime Capuano
    Maxime Capuano 164 rue Adhemar Fabri, La Roche-sur-Foron, France 07 78 39 57 69 – [email protected] malkaviel.github.io/particle/ Education Professional bachelor degree 2018 - 2019 • Puy-en-Velay IUT, France. • Academic interests: Medical imaging, 3D mathematics, algorithms and programming. • Developed a MRI visualization software with the Unity Game Engine and the Microsoft Hololens, to display and manipulate MRI images on top of patients in real-time. DUT 2015 - 2017 • Puy-en-Velay IUT, France. • Academic interests: General computer science knowledge, C++ and C# programming, 3D mathematics and algorithms, game development. • Developed a complete 2D game with the Unity Game Engine with a group of 14 students. • Reworked the Puy-en-Velay IUT’s website. Capuano Resume – Page 1 of 3 Professional Experience OpenStudio 2018 – 2019 Back-end Web Developer (Apprenticeship) • Puy-en-Velay, France. • Helped at the development of new functionalities, correction of bugs, and refactoring of the back-end framework and plugins used by OpenStudio. • Worked on the introduction of automating tools and debugging tools in the development process, in order to automatically test the websites functionalities, make their deployment easier and make the development and debugging of projects easier and faster. FB Digital 2017 Back-end Web Developer (Internship) • Brioude, France. • At first, assisted the lead developer with small tasks, in order to gain experience with the tools used by FB Digital (PHP, Symfony web framework, Thelia e-commerce framework). • Later, worked as the lead developer on an e-commerce project, implementing most back-end functionalities. Capuano Resume – Page 2 of 3 Personal Projects The Forgotten Ark 2017 • A first person shooter arena in a sci-fi universe, where the player can select its archetype to fit its play-style.
    [Show full text]
  • Swedish Game Developer Index 2016 Game Developer Index
    Swedish game developer index 2016 game developer index First Edition Published by Swedish Games Industry Research: Hanna Metsis, Jacob Kroon Text & Design: Jacob Kroon Swedish Games Industry is a partnership between ANGI and Spelplan-ASGD. Dataspelsbranschen Swedish Games Industry Klara norra kyrkogata 31, Box 22307 SE-104 22 Stockholm www.dataspelsbranschen.se Contact: [email protected] 2016 2 Table of contents summary 4 preface 5 revenue & profit 6-7 employment 8 number of companies 8 gender distribution 9 turnover per company 10 employees per company 10 largest companies 11 company map 12-13 future 15 actual revenues 16 domestic market 17 worldwide 18-20 intellectual property infringement 20 threats & challenges 23 listed game companies 24-26 conclusion 28 methodology 31 timeline - a selection 33 glossary 34 3 summary ame Developer Index analyzes the growth of Swedis video game companies and international trends by compiling the annual accounts of the companies. Swedish game development is an export industry operating on a highly globalized market. The domestic Gindustry has grown from a hobby of enthusiasts to a world-wide industry with cultural and economic significance under just a few decades. The Game Developer Index 2016 summarizes the growth of the latest fiscal year. The sumary in brief: Revenue increased by 41 per cent to almost EUR1,3 billion in 2015. A 200 per cent increase in two years. A majority of companies are profitable and the industry has reported a total profit for seven years running. Employment increased by 19 per cent, more than 550 full-time positions, to a total of 3709 employees.
    [Show full text]
  • Swedish Technology Report 2 0 1 7
    Swedish Technology Report 2 0 1 7 Table of contents EXECUTIVE SUMMARY...............................................................2 TECHNOLOGY MARKET DRIVERS................................................4 SWEDISH TECH IPOs 2016: A REVIEW.......................................9 MARKET EXPECTATIONS...........................................................12 REDEYE SCREENING................................................................18 TOP PICKS-PORTFOLIO............................................................24 APPENDIX: REDEYE RESEARCH & RATING................................31 APPENDIX COMPANIES: Addnode, Allgon, AllTele, Anoto, Arise, Avega..................................36 Avtech, aXichem, Bredband2, Cherry, Cinnober..............................48 Crowdsoft, DGC, Doro, Enea, Ericsson.............................................58 Fingerprint Cards, Formpipe, Heliospectra.................................... 68 Hexatronic, Invisio, Lagercrantz, Mr Green.....................................74 Mycronic, myTaste, NC Lahega, Neonode, Nokia.............................82 Opus, Paynova, Photocat, Polygiene, Powercell.............................92 Prevas, Sensys Traffic, Stillfront, Systemair...................................102 Waystream, Verisec, West International........................................110 APPENDIX: REDEYE TECHNOLOGY TEAM.................................116 APPENDIX: DISCLAIMER.........................................................119 Executive Summary Redeye’s technology team consists of 7 analysts, which
    [Show full text]
  • Realtidsrendering Av Hud Daniel Holst
    LiU-ITN-TEK-A--17/019--SE Realtidsrendering av hud Daniel Holst 2017-06-09 Department of Science and Technology Institutionen för teknik och naturvetenskap Linköping University Linköpings universitet nedewS ,gnipökrroN 47 106-ES 47 ,gnipökrroN nedewS 106 47 gnipökrroN LiU-ITN-TEK-A--17/019--SE Realtidsrendering av hud Examensarbete utfört i Medieteknik vid Tekniska högskolan vid Linköpings universitet Daniel Holst Handledare Apostolia Tsirikoglou Examinator Jonas Unger Norrköping 2017-06-09 Upphovsrätt Detta dokument hålls tillgängligt på Internet – eller dess framtida ersättare – under en längre tid från publiceringsdatum under förutsättning att inga extra- ordinära omständigheter uppstår. Tillgång till dokumentet innebär tillstånd för var och en att läsa, ladda ner, skriva ut enstaka kopior för enskilt bruk och att använda det oförändrat för ickekommersiell forskning och för undervisning. Överföring av upphovsrätten vid en senare tidpunkt kan inte upphäva detta tillstånd. All annan användning av dokumentet kräver upphovsmannens medgivande. För att garantera äktheten, säkerheten och tillgängligheten finns det lösningar av teknisk och administrativ art. Upphovsmannens ideella rätt innefattar rätt att bli nämnd som upphovsman i den omfattning som god sed kräver vid användning av dokumentet på ovan beskrivna sätt samt skydd mot att dokumentet ändras eller presenteras i sådan form eller i sådant sammanhang som är kränkande för upphovsmannens litterära eller konstnärliga anseende eller egenart. För ytterligare information om Linköping University Electronic Press se förlagets hemsida http://www.ep.liu.se/ Copyright The publishers will keep this document online on the Internet - or its possible replacement - for a considerable time from the date of publication barring exceptional circumstances. The online availability of the document implies a permanent permission for anyone to read, to download, to print out single copies for your own use and to use it unchanged for any non-commercial research and educational purpose.
    [Show full text]
  • Data Driven Visualization Tool for Game Telemetry Martin Engelbrektsson Marcus Lilja
    LiU-ITN-TEK-A--17/055--SE Data Driven Visualization Tool for Game Telemetry Martin Engelbrektsson Marcus Lilja 2017-10-20 Department of Science and Technology Institutionen för teknik och naturvetenskap Linköping University Linköpings universitet nedewS ,gnipökrroN 47 106-ES 47 ,gnipökrroN nedewS 106 47 gnipökrroN LiU-ITN-TEK-A--17/055--SE Data Driven Visualization Tool for Game Telemetry Examensarbete utfört i Medieteknik vid Tekniska högskolan vid Linköpings universitet Martin Engelbrektsson Marcus Lilja Handledare Henry Fröcklin Examinator Stefan Gustavson Norrköping 2017-10-20 Upphovsrätt Detta dokument hålls tillgängligt på Internet – eller dess framtida ersättare – under en längre tid från publiceringsdatum under förutsättning att inga extra- ordinära omständigheter uppstår. Tillgång till dokumentet innebär tillstånd för var och en att läsa, ladda ner, skriva ut enstaka kopior för enskilt bruk och att använda det oförändrat för ickekommersiell forskning och för undervisning. Överföring av upphovsrätten vid en senare tidpunkt kan inte upphäva detta tillstånd. All annan användning av dokumentet kräver upphovsmannens medgivande. För att garantera äktheten, säkerheten och tillgängligheten finns det lösningar av teknisk och administrativ art. Upphovsmannens ideella rätt innefattar rätt att bli nämnd som upphovsman i den omfattning som god sed kräver vid användning av dokumentet på ovan beskrivna sätt samt skydd mot att dokumentet ändras eller presenteras i sådan form eller i sådant sammanhang som är kränkande för upphovsmannens litterära eller konstnärliga anseende eller egenart. För ytterligare information om Linköping University Electronic Press se förlagets hemsida http://www.ep.liu.se/ Copyright The publishers will keep this document online on the Internet - or its possible replacement - for a considerable time from the date of publication barring exceptional circumstances.
    [Show full text]