Chapter 03 of the lecture Style & Design Principles taught at SAE Institute Hamburg.
Drawbacks of inheritance-based game models and introduction to aggregation-based game models.
Horizon Zero Dawn: A Game Design Post-MortemGuerrilla
Download the full presentation here: http://www.guerrilla-games.com/read/horizon-zero-dawn-a-game-design-postmortem
Abstract: Going through early prototypes and delving into design decisions and processes that shaped development of the game, this talk gives insight into the journey game design went through while moving from an ambitious paper concept to a finished open world action RPG, with all of the small and large design decisions and choices that have to be made along the way.
ECS (Part 1/3) - Introduction to Data-Oriented DesignPhuong Hoang Vu
ECS (Part 1/3) - Introduction to Data-Oriented Design.
Some small experiments to verify CPU Cache problems, SOA vs AOS and some other problems from OOP approach.
Then basic things about DOD.
Unreal Engine Basics 01 - Game FrameworkNick Pruehs
First chapter of the lecture Unreal Engine Basics taught at SAE Institute Hamburg.
- Getting familiar with Unreal Engine as a technology, framework and toolset
- Learning the basics about writing Unreal Engine C++ code
Dynamic tactical position evaluation functions are procedures that use static and dynamic information about the world to make tactical decisions at run-time. By having NPCs use a procedural description of the solution to a tactical decision, the solution can vary depending on the inputs. Using static information about the world as input makes sure the tactics are applicable at any place on the map. Using dynamic inputs makes sure they are applicable in multiple situations.
Life After Launch: How to Grow Mobile Games with In-Game EventsSimon Hade
Presentation from a talk by Space Ape COO Simon Hade at GDC Europe in June 2016. To see the video of the talk and related presentations see http://links.spaceapegames.com/liveops
Chapter 03 of the lecture Style & Design Principles taught at SAE Institute Hamburg.
Drawbacks of inheritance-based game models and introduction to aggregation-based game models.
Horizon Zero Dawn: A Game Design Post-MortemGuerrilla
Download the full presentation here: http://www.guerrilla-games.com/read/horizon-zero-dawn-a-game-design-postmortem
Abstract: Going through early prototypes and delving into design decisions and processes that shaped development of the game, this talk gives insight into the journey game design went through while moving from an ambitious paper concept to a finished open world action RPG, with all of the small and large design decisions and choices that have to be made along the way.
ECS (Part 1/3) - Introduction to Data-Oriented DesignPhuong Hoang Vu
ECS (Part 1/3) - Introduction to Data-Oriented Design.
Some small experiments to verify CPU Cache problems, SOA vs AOS and some other problems from OOP approach.
Then basic things about DOD.
Unreal Engine Basics 01 - Game FrameworkNick Pruehs
First chapter of the lecture Unreal Engine Basics taught at SAE Institute Hamburg.
- Getting familiar with Unreal Engine as a technology, framework and toolset
- Learning the basics about writing Unreal Engine C++ code
Dynamic tactical position evaluation functions are procedures that use static and dynamic information about the world to make tactical decisions at run-time. By having NPCs use a procedural description of the solution to a tactical decision, the solution can vary depending on the inputs. Using static information about the world as input makes sure the tactics are applicable at any place on the map. Using dynamic inputs makes sure they are applicable in multiple situations.
Life After Launch: How to Grow Mobile Games with In-Game EventsSimon Hade
Presentation from a talk by Space Ape COO Simon Hade at GDC Europe in June 2016. To see the video of the talk and related presentations see http://links.spaceapegames.com/liveops
There are a lot of articles about games. Most of these are about particular aspects of a game like rendering or physics. All engines, however, have a binding structure that ties all aspects of the game together. Usually there is a base class (Object, Actor or Entity are common names) that all objects in the game derive from, but very little is written on the subject. Only very recently a couple of talks on game|tech have briefly touched on the subject. Still, choosing a structure to build your game on is very important. The end user might not “see” the difference between a good and a bad structure, but this choice will affect many aspects of the development process. A good structure will reduce risk and increase the efficiency of the team.
Level Design Workshop - GDC China 2012Joel Burgess
Originally presented at GDC China 2012, this workshop covered level design fundamentals such as layout, pacing and storytelling. It was presented by Joel Burgess (Bethesda Game Studios), Matthew Scott (Valve Software), and Steven Gaynor (The Fullbright Company)
Leszek Szczepański, Gameplay programmer, Guerrilla Games
Horizon Zero Dawn was a long, almost 7-year project. But it had to start somewhere. This session will discuss the road Guerrilla Games has traveled during the prototyping stage of Horizon Zero Dawn.
Tales from the Optimization Trenches - Unite Copenhagen 2019Unity Technologies
In this talk, you'll learn about the tools and techniques that Unity's Consulting and Development team uses to identify and fix performance issues. The team travels the world visiting customers and conducting Project Reviews, in-depth engagements to locate and resolve performance bottlenecks. This session is designed to help you apply their knowledge to your Unity projects, so you'll see examples of real-life performance problems, their solutions, and receive up-to-date best practice advice.
Speaker: Ignacio Liverotti – Unity
Watch the session on YouTube: https://youtu.be/GuODu4-cXXQ
NDC 2013 이은석 - 게임 디렉터가 뭐하는 건가요 (게임개발 상위직책의 이해)
Nexon Developer Conference 2013 에서 발표에 사용한 슬라이드입니다.
내용 :
게임 디렉터란 무엇인가?
권위주의와 라인조직의 함정
디렉터가 하는 일, 필요한 역량
개발조직을 이끄는 방법
질문과 답변
기대효과 :
청강자들은 게임개발의 상위직책들(프로듀서, 디렉터, 크리에이티브 디렉터 등)의
업무와 필요역량에 이해하게 되고, 자신의 업무 커리어 계획에 참고할 수 있게 될 것입니다. 이미 저 직책들에 현직으로 종사하고 있는 사람들은 현재 업무 향상에 대한 영감을 얻을 수 있을 것입니다.
Putting the AI Back Into Air: Navigating the Air Space of Horizon Zero DawnGuerrilla
Download the full presentation here: http://www.guerrilla-games.com/read/putting-the-ai-back-into-air
Abstract: In this talk, we explain the technology behind the aerial navigation in Horizon Zero Dawn. In Horizon, we've represented the flyable air space by use of a run-time generated height map. Queries can be done on this height map for positional information and navigation. We present a hierarchical path planning algorithm for finding a progressively more detailed path between two points. Additionally, we will touch on some gameplay related subjects, to show the additional challenges we faced in implementing the different flying behaviors, such as transitioning from air to ground and guided crash-landing.
ECS architecture with Unity by example - Unite Europe 2016Simon Schmid
Simon Schmid (Wooga) and Maxim Zaks explain how the introduction of strict ECS architecture in Unity helped them to achieve easy to test, robust and scalable game logic. It also helped them to extract this logic and run it on a server. At Unite Europe 2015 they introduced their Open Source project Entitas-CSharp (https://github.com/sschmid/Entitas-CSharp), which helped them achieve all the benefits they listed before. This year they present an example which explains how ECS and Unity can co-exist and empower developers to have a clean, scalable and testable architecture. They cover the following topics: User Input, Integration with Unity Collision System, Reactive UI, Re-Playable games
There are a lot of articles about games. Most of these are about particular aspects of a game like rendering or physics. All engines, however, have a binding structure that ties all aspects of the game together. Usually there is a base class (Object, Actor or Entity are common names) that all objects in the game derive from, but very little is written on the subject. Only very recently a couple of talks on game|tech have briefly touched on the subject. Still, choosing a structure to build your game on is very important. The end user might not “see” the difference between a good and a bad structure, but this choice will affect many aspects of the development process. A good structure will reduce risk and increase the efficiency of the team.
Level Design Workshop - GDC China 2012Joel Burgess
Originally presented at GDC China 2012, this workshop covered level design fundamentals such as layout, pacing and storytelling. It was presented by Joel Burgess (Bethesda Game Studios), Matthew Scott (Valve Software), and Steven Gaynor (The Fullbright Company)
Leszek Szczepański, Gameplay programmer, Guerrilla Games
Horizon Zero Dawn was a long, almost 7-year project. But it had to start somewhere. This session will discuss the road Guerrilla Games has traveled during the prototyping stage of Horizon Zero Dawn.
Tales from the Optimization Trenches - Unite Copenhagen 2019Unity Technologies
In this talk, you'll learn about the tools and techniques that Unity's Consulting and Development team uses to identify and fix performance issues. The team travels the world visiting customers and conducting Project Reviews, in-depth engagements to locate and resolve performance bottlenecks. This session is designed to help you apply their knowledge to your Unity projects, so you'll see examples of real-life performance problems, their solutions, and receive up-to-date best practice advice.
Speaker: Ignacio Liverotti – Unity
Watch the session on YouTube: https://youtu.be/GuODu4-cXXQ
NDC 2013 이은석 - 게임 디렉터가 뭐하는 건가요 (게임개발 상위직책의 이해)
Nexon Developer Conference 2013 에서 발표에 사용한 슬라이드입니다.
내용 :
게임 디렉터란 무엇인가?
권위주의와 라인조직의 함정
디렉터가 하는 일, 필요한 역량
개발조직을 이끄는 방법
질문과 답변
기대효과 :
청강자들은 게임개발의 상위직책들(프로듀서, 디렉터, 크리에이티브 디렉터 등)의
업무와 필요역량에 이해하게 되고, 자신의 업무 커리어 계획에 참고할 수 있게 될 것입니다. 이미 저 직책들에 현직으로 종사하고 있는 사람들은 현재 업무 향상에 대한 영감을 얻을 수 있을 것입니다.
Putting the AI Back Into Air: Navigating the Air Space of Horizon Zero DawnGuerrilla
Download the full presentation here: http://www.guerrilla-games.com/read/putting-the-ai-back-into-air
Abstract: In this talk, we explain the technology behind the aerial navigation in Horizon Zero Dawn. In Horizon, we've represented the flyable air space by use of a run-time generated height map. Queries can be done on this height map for positional information and navigation. We present a hierarchical path planning algorithm for finding a progressively more detailed path between two points. Additionally, we will touch on some gameplay related subjects, to show the additional challenges we faced in implementing the different flying behaviors, such as transitioning from air to ground and guided crash-landing.
ECS architecture with Unity by example - Unite Europe 2016Simon Schmid
Simon Schmid (Wooga) and Maxim Zaks explain how the introduction of strict ECS architecture in Unity helped them to achieve easy to test, robust and scalable game logic. It also helped them to extract this logic and run it on a server. At Unite Europe 2015 they introduced their Open Source project Entitas-CSharp (https://github.com/sschmid/Entitas-CSharp), which helped them achieve all the benefits they listed before. This year they present an example which explains how ECS and Unity can co-exist and empower developers to have a clean, scalable and testable architecture. They cover the following topics: User Input, Integration with Unity Collision System, Reactive UI, Re-Playable games
Game Programming 04 - Style & Design PrinciplesNick Pruehs
Chapter 4 of the lecture Game Programming taught at HAW Hamburg.
Introduction to naming conventions, type and member design, exception design and common .NET interfaces.
When developing games, each and every one of us should strive for perfection. At my desk, I have put up a sign saying “What would Blizzard do?” This talk is about motivation, excitement and learning how to dissect other games in order to learn from each other.
Game Programming 07 - Procedural Content GenerationNick Pruehs
Chapter 7 of the lecture Game Programming taught at HAW Hamburg.
Introduction to procedural content generation and its implication for the game design.
Chapter 9 of the lecture Game Programming taught at HAW Hamburg.
Introduction to AI in games, existing approaches to AI architecture, behaviour trees and AI authoring tools.
Chapter 11 of the lecture Game Programming taught at HAW Hamburg.
Introduction to kinematics and dynamics, numerical integration, rigid bodies, collision detection and resolving.
Game Programming 05 - Development ToolsNick Pruehs
Chapter 5 of the lecture Game Programming taught at HAW Hamburg.
Introduction to continuous integration, API documentation generation, analytics, static code analysis and crash dump analysis.
Game Programming 06 - Automated TestingNick Pruehs
Chapter 6 of the lecture Game Programming taught at HAW Hamburg.
Introduction to unit testing, integration testing, mocking and test-driven development in games.
Entity-Component-System (ECS) is a distributed and compositional architectural design pattern that is mostly used in game development. Elixir is a dynamic, functional language built on top of the Erlang VM designed for building scalable and maintainable applications. In this talk, discover how we can use both ECS and Elixir in a novel approach to structure our programs beyond the traditional OO/inheritance paradigm.
The design and rules of games constantly change during development, invalidating your carefully engineered software from day to day. Entity systems are a great approach for getting rid of the many drawbacks of inheritance-based game models like the “diamond of death”, moving on to a much more flexible aggregation-based model which has been popular since Gas Powered Games’ Dungeon Siege.
Entity System Architecture with Unity - Unite Europe 2015Simon Schmid
Entity System Architecture with Unity - Unite Europe 2015
Entitas - open source Entity Component System for C# and Unity: https://github.com/sschmid/Entitas-CSharp
Create a Scalable and Destructible World in HITMAN 2*Intel® Software
Gain insight into how IO Interactive* (IOI) designed the crowd, environmental audio, non-playable character simulation, and physical destruction systems to take advantage of available hardware and dynamically upscale resolution and deliver more realism. See the design and architecture of the destruction system, including the asset pipeline and game runtime that enables IOI to create a more interesting world for their players.
Joy of Coding Conference 2019 slides - Alan RichardsonAlan Richardson
Adventures in Testing, Programming, Teaching, Automating and Marketing
When you already know how to code, it's easy to forget how hard some of that learning was... until you have to teach people. And if all you've ever built are applications, you don't know really know the nuances of writing code to automate them. And if you've written the code but never had to market the applications then you've not really experienced the full joy of coding.
In this presentation Alan will revisit many of his past projects to identify lessons learned. Lessons from: writing commercial and open source tools, multi-user adventure games, REST APIs, test automation, automating applications to make them do things they are not supposed to do, and coding for technical marketing.
Some lessons we will learn:
* The 'install' is the hardest part
* Writing frameworks is too much fun and should be banned
* Applications are just "code calling other libraries"
* Writing a Text Adventure s the most fun and educational thing you'll ever code
* The Dangers of knowing how to code
We will also learn the dangers of knowing how to code and discover how our coding skills can give us an edge, in business and online live in general, if we choose to harness our skills to improve our daily experiences.
HoloLens Unity Build Pipelines on Azure DevOpsSarah Sexton
Developers of Unity UWP apps: stop wasting time compiling builds in Unity, then Visual Studio, then manually deploying. Save time with an automated pipeline! Create builds from start to finish, implement Unit Tests, save every build artifact, and even distribute using App Center! Learn how to create a Azure DevOps pipeline that can be used to build any Mixed Reality solution.
Good ideas that we forgot by Joe Armstrong
Over the years there have been many good ideas in computer science and many stupid ideas. What can we learn from history? Which of the old and forgotten ideas should be brought back to life and re-evaluated? What can we learn from the stupid ideas of the past?
In the Trenches During a Software Supply Chain Attack by Mitch Denny at Front...DevClub_lv
Front-end developers have grown accustomed to protecting themselves from attackers seeking to exploit vectors such as cross-site scripting and malicious input, but the prevalence of reusable micro-libraries in the Node.js ecosystem makes JavaScript developers particularly susceptible to software supply chain attacks.
In this session Mitch will share his perspective on helping to protect Microsoft and its customers from these supply chain attacks and what it is like being the vendor of an artifact management service which often plays the middleman between target and victim.
Learn how Microsoft tackles the problem of securely taking dependencies on open source software and what problems scanning tools can and can’t solve and thoughts on how we as an industry could start to tackle the problem for 0-day malicious packages.
Software Engineering Best Practices @ NylasBen Gotow
Part of an introductory series given to new hires and interns, this talk is a crash course in design patterns and engineering best practices for new-grads with mostly academic computer science experience. Focuses on the things they don't teach you: naming things, working on a team, optimizing for maintainability.
Similar to Component-Based Entity Systems (Demo) (20)
Sixth chapter of the lecture Unreal Engine Basics taught at SAE Institute Hamburg.
- Understanding how to drive final character animation poses through animation blueprints and blend spaces
- Learning how to configure, combine and play sound assets
- Understanding the modular nature of particle effects in Unreal Engine
Unreal Engine Basics 05 - User InterfaceNick Pruehs
Fifth chapter of the lecture Unreal Engine Basics taught at SAE Institute Hamburg.
- Understanding the difference between Unreal’s UI frameworks Slate and UMG
- Learning how to create basic and complex user interfaces in UMG
- Learning how to build a simple main menu
Forth chapter of the lecture Unreal Engine Basics taught at SAE Institute Hamburg.
- Getting familiar with behavior trees in general
- Learning how to set up and use behavior trees in Unreal Engine
- Learning about the very basics of the Unreal Engine navigation system
Third chapter of the lecture Unreal Engine Basics taught at SAE Institute Hamburg.
- Learning how to expose class fields and functions to blueprints
- Writing basic Unreal gameplay code, such as spawning actors, accessing components and listening for events
- Getting familiar with gameplay concepts in the context of Unreal, such as damage and collision
Second chapter of the lecture Unreal Engine Basics taught at SAE Institute Hamburg.
- Getting familiar with the Unreal Level Editor
- Learning how to bind and handle player keyboard and mouse input
- Understanding character movement properties and functions
Designing an actor model game architecture with PonyNick Pruehs
Introduction to Pony, actor model, reference capabilities and making concurrent DirectX games with Pony.
Presented at MVP Fusion #3.
http://mvpfusion.azurewebsites.net/
Tool Development 10 - MVVM, Tool ChainsNick Pruehs
Chapter 10 of the lecture Tool Development taught at SAE Institute Hamburg.
Introduction to the MVVM pattern and advanced data binding concepts such as data conversion and data validation.
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Albert Hoitingh
In this session I delve into the encryption technology used in Microsoft 365 and Microsoft Purview. Including the concepts of Customer Key and Double Key Encryption.
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Jeffrey Haguewood
Sidekick Solutions uses Bonterra Impact Management (fka Social Solutions Apricot) and automation solutions to integrate data for business workflows.
We believe integration and automation are essential to user experience and the promise of efficient work through technology. Automation is the critical ingredient to realizing that full vision. We develop integration products and services for Bonterra Case Management software to support the deployment of automations for a variety of use cases.
This video focuses on the notifications, alerts, and approval requests using Slack for Bonterra Impact Management. The solutions covered in this webinar can also be deployed for Microsoft Teams.
Interested in deploying notification automations for Bonterra Impact Management? Contact us at sales@sidekicksolutionsllc.com to discuss next steps.
UiPath Test Automation using UiPath Test Suite series, part 3DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 3. In this session, we will cover desktop automation along with UI automation.
Topics covered:
UI automation Introduction,
UI automation Sample
Desktop automation flow
Pradeep Chinnala, Senior Consultant Automation Developer @WonderBotz and UiPath MVP
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
GraphRAG is All You need? LLM & Knowledge GraphGuy Korland
Guy Korland, CEO and Co-founder of FalkorDB, will review two articles on the integration of language models with knowledge graphs.
1. Unifying Large Language Models and Knowledge Graphs: A Roadmap.
https://arxiv.org/abs/2306.08302
2. Microsoft Research's GraphRAG paper and a review paper on various uses of knowledge graphs:
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...DanBrown980551
Do you want to learn how to model and simulate an electrical network from scratch in under an hour?
Then welcome to this PowSyBl workshop, hosted by Rte, the French Transmission System Operator (TSO)!
During the webinar, you will discover the PowSyBl ecosystem as well as handle and study an electrical network through an interactive Python notebook.
PowSyBl is an open source project hosted by LF Energy, which offers a comprehensive set of features for electrical grid modelling and simulation. Among other advanced features, PowSyBl provides:
- A fully editable and extendable library for grid component modelling;
- Visualization tools to display your network;
- Grid simulation tools, such as power flows, security analyses (with or without remedial actions) and sensitivity analyses;
The framework is mostly written in Java, with a Python binding so that Python developers can access PowSyBl functionalities as well.
What you will learn during the webinar:
- For beginners: discover PowSyBl's functionalities through a quick general presentation and the notebook, without needing any expert coding skills;
- For advanced developers: master the skills to efficiently apply PowSyBl functionalities to your real-world scenarios.
State of ICS and IoT Cyber Threat Landscape Report 2024 previewPrayukth K V
The IoT and OT threat landscape report has been prepared by the Threat Research Team at Sectrio using data from Sectrio, cyber threat intelligence farming facilities spread across over 85 cities around the world. In addition, Sectrio also runs AI-based advanced threat and payload engagement facilities that serve as sinks to attract and engage sophisticated threat actors, and newer malware including new variants and latent threats that are at an earlier stage of development.
The latest edition of the OT/ICS and IoT security Threat Landscape Report 2024 also covers:
State of global ICS asset and network exposure
Sectoral targets and attacks as well as the cost of ransom
Global APT activity, AI usage, actor and tactic profiles, and implications
Rise in volumes of AI-powered cyberattacks
Major cyber events in 2024
Malware and malicious payload trends
Cyberattack types and targets
Vulnerability exploit attempts on CVEs
Attacks on counties – USA
Expansion of bot farms – how, where, and why
In-depth analysis of the cyber threat landscape across North America, South America, Europe, APAC, and the Middle East
Why are attacks on smart factories rising?
Cyber risk predictions
Axis of attacks – Europe
Systemic attacks in the Middle East
Download the full report from here:
https://sectrio.com/resources/ot-threat-landscape-reports/sectrio-releases-ot-ics-and-iot-security-threat-landscape-report-2024/
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualityInflectra
In this insightful webinar, Inflectra explores how artificial intelligence (AI) is transforming software development and testing. Discover how AI-powered tools are revolutionizing every stage of the software development lifecycle (SDLC), from design and prototyping to testing, deployment, and monitoring.
Learn about:
• The Future of Testing: How AI is shifting testing towards verification, analysis, and higher-level skills, while reducing repetitive tasks.
• Test Automation: How AI-powered test case generation, optimization, and self-healing tests are making testing more efficient and effective.
• Visual Testing: Explore the emerging capabilities of AI in visual testing and how it's set to revolutionize UI verification.
• Inflectra's AI Solutions: See demonstrations of Inflectra's cutting-edge AI tools like the ChatGPT plugin and Azure Open AI platform, designed to streamline your testing process.
Whether you're a developer, tester, or QA professional, this webinar will give you valuable insights into how AI is shaping the future of software delivery.
Connector Corner: Automate dynamic content and events by pushing a buttonDianaGray10
Here is something new! In our next Connector Corner webinar, we will demonstrate how you can use a single workflow to:
Create a campaign using Mailchimp with merge tags/fields
Send an interactive Slack channel message (using buttons)
Have the message received by managers and peers along with a test email for review
But there’s more:
In a second workflow supporting the same use case, you’ll see:
Your campaign sent to target colleagues for approval
If the “Approve” button is clicked, a Jira/Zendesk ticket is created for the marketing design team
But—if the “Reject” button is pushed, colleagues will be alerted via Slack message
Join us to learn more about this new, human-in-the-loop capability, brought to you by Integration Service connectors.
And...
Speakers:
Akshay Agnihotri, Product Manager
Charlie Greenberg, Host
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Ramesh Iyer
In today's fast-changing business world, Companies that adapt and embrace new ideas often need help to keep up with the competition. However, fostering a culture of innovation takes much work. It takes vision, leadership and willingness to take risks in the right proportion. Sachin Dev Duggal, co-founder of Builder.ai, has perfected the art of this balance, creating a company culture where creativity and growth are nurtured at each stage.
Securing your Kubernetes cluster_ a step-by-step guide to success !KatiaHIMEUR1
Today, after several years of existence, an extremely active community and an ultra-dynamic ecosystem, Kubernetes has established itself as the de facto standard in container orchestration. Thanks to a wide range of managed services, it has never been so easy to set up a ready-to-use Kubernetes cluster.
However, this ease of use means that the subject of security in Kubernetes is often left for later, or even neglected. This exposes companies to significant risks.
In this talk, I'll show you step-by-step how to secure your Kubernetes cluster for greater peace of mind and reliability.
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...UiPathCommunity
💥 Speed, accuracy, and scaling – discover the superpowers of GenAI in action with UiPath Document Understanding and Communications Mining™:
See how to accelerate model training and optimize model performance with active learning
Learn about the latest enhancements to out-of-the-box document processing – with little to no training required
Get an exclusive demo of the new family of UiPath LLMs – GenAI models specialized for processing different types of documents and messages
This is a hands-on session specifically designed for automation developers and AI enthusiasts seeking to enhance their knowledge in leveraging the latest intelligent document processing capabilities offered by UiPath.
Speakers:
👨🏫 Andras Palfi, Senior Product Manager, UiPath
👩🏫 Lenka Dulovicova, Product Program Manager, UiPath
Key Trends Shaping the Future of Infrastructure.pdfCheryl Hung
Keynote at DIGIT West Expo, Glasgow on 29 May 2024.
Cheryl Hung, ochery.com
Sr Director, Infrastructure Ecosystem, Arm.
The key trends across hardware, cloud and open-source; exploring how these areas are likely to mature and develop over the short and long-term, and then considering how organisations can position themselves to adapt and thrive.
2. About Me
“Best Bachelor“ Computer Science
Kiel University, 2009
Master Games
HAW Hamburg, 2011
Lead Programmer
Daedalic Entertainment, 2011-2012
Co-Founder
slash games, 2013
Microsoft MVP
2015
2 / 79
3. Objectives
• To understand the disadvantages of inheritance-
based game models
• To learn how to build an aggregation-based game
model
• To understand the advantages and disadvantages of
aggregation-based game models
3 / 57
4. “Say you’re an engineer…
… set out to create a new Game Object System from scratch, and you’re going to ‘do it right the first time’. You
talk to your designer and say ‘What kind of content are we going to have in this game?’
They respond with ‘Oh lots of stuff, trees, and birds, and bushes, and keys and locks and … <trailing off>’
And your eyes glaze over as you start thinking of fancy C++ ways to solve the problem.
The object oriented programming sages tell you to try to determine Is-A relationships and abstract functionality
and all that other fun stuff. You go to the book store and buy a C++ book just to be sure, and it tells you to fire
up your $5000 UML editor. [...]”
- Scott Bilas
4 / 57
11. Entities
• object in your game world
• can (or cannot)…
• be visible
• move around
• attack
• explode
• be targeted
• become selected
• follow a path
• common across all genres
11 / 57
14. Approach #1: Inheritance
• Entity base class
• that class and its subclasses encapsulate the main
game logic
14 / 57
15. Example #1: Unreal Engine 3
• base class Actor
• rendering
• animation
• sound
• physics
• almost everything in Unreal is an Actor
• Pawn extends by taking damage
• Projectile extends by spawning impact effects
15 / 57
17. Drawbacks of inheritance-based game models
• code added to the root of the inheritance tree
causes big overhead
• code added to the leafs of the tree tends to get
copied
• root and leaf classes tend to get very big
17 / 57
18. Where is Waldo?
public override void TakeDamage(int damage)
{
this.Health -= damage;
}
18 / 57
19. Where is Waldo?
public override void TakeDamage(int damage)
{
this.Health -= damage;
}
19 / 57
20. Where is Waldo?
public override void TakeDamage(int damage)
{
base.TakeDamage(damage);
this.Health -= damage;
}
20 / 57
21. Drawbacks of inheritance-based game models
• always need to understand all base classes along
the inheritance tree
• impossible to enforce calling base class functions
• Someone will forget it. Trust me.
• And you’re gonna spend your whole evening finding that one
missing base.Update().
• deep class hierarchies will more likely run into call
order issues
21 / 57
22. Inheritance-based game models are…
• … difficult to develop
• … difficult to maintain
• … difficult to extend
22 / 57
23. “There are probably hundreds of ways…
… you could decompose your systems and come up with a set of
classes […], and eventually, all of them are wrong. This isn’t to say
that they won’t work, but games are constantly changing,
constantly invalidating your carefully planned designs. [...]
So you hand off your new Game Object System and go work on
other things.
Then one day your designer says that they want a new type of
“alien” asteroid that acts just like a heat seeking missile, except it’s
still an asteroid.”
- Scott Bilas
23 / 57
27. Approach #2: Aggregation
• popular since Gas Powered Games’ Dungeon Siege
• introduced long before
• entities are aggregations of components
• which in turn encapsulate independent functionality
• corresponds to recommendations by the Gang of Four
• “favor object composition over class inheritance”
• similar approach is used by the Unity3D game engine
• just for clarification: Unreal uses components as well, called
ActorComponent
27 / 57
28. Approach #2a
• create an Entity class
• add references to all available components
• has obvious disadvantages:
• many component references will be null pointers for
most entities
• big unnecessary memory overhead
• Entity class has to be updated each time a new
component is introduced
28 / 57
29. Approach #2b
• create an Entity class
• introduce a common base class for components
• entities hold a collection of Component objects
• reduced the memory overhead
• increased extensibility
• already gets close to an optimal solution
• easy to build, maintain and debug
• easy to implement new design ideas without breaking
existing code
29 / 57
33. Approach #2c: Entity Systems
• game entities are nothing more than just an id
• thus, no data or methods on entities
• no methods on components, either: all
functionality goes into what is called a system
• PhysicsSystem
• HealthSystem
• FightSystem
• entirely operate on their corresponding
components
33 / 57
34. “All the data goes into the Components.
All of it. Think you can take some “really common”
data, e. g. the x-/y-/z-coordinates of the in-game
object, and put it into the Entity itself? Nope. Don’t
go there. As soon as you start migrating data into the
Entity, you’ve lost. By definition the only valid place
for the data is inside the Component.”
- Adam Martin
34 / 57
45. Inter-System Communication
Systems communicate by the means of events, only.
• no coupling between systems
• easy to add or remove systems at any time
• great architectural advantage for general game features
• need multiplayer? just send the events over the network!
• need AI? just make it create events which are handled just
like player input is!
• need replays? just write all events with timestamps to a file!
45 / 57
47. Advantages of Entity Systems
• update order is obvious
• components can easily be pooled and re-used
• independent systems can be updated by separate
threads
• data can easily be serialized and stored in a
database
47 / 57
51. Assignment
1. Reduce Health of attacked entities.
2. Remove killed entities.
Hint
First, think about the components (data), systems
and events you might need!
51 / 12
52. Assignment
1. Reduce Health of attacked entities.
1. Add an AttackComponent with a Damage property.
2. Add a HealthComponent with a Health property.
3. Add groups for attacker and defender entities.
4. Add a DamageSystem modifying these components.
2. Remove killed entities.
52 / 12
53. Assignment
1. Reduce Health of attacked entities.
1. Add an AttackComponent with a Damage property.
2. Add a HealthComponent with a Health property.
3. Add groups for attacker and defender entities.
4. Add a DamageSystem modifying these components.
2. Remove killed entities.
1. Add a HealthChanged event.
2. Raise the HealthChanged event in the appropriate
system.
3. Add a DefeatSystem destroying defeated entities.
53 / 12
54. Assignment
3. Add a random value to the damage caused by
each attack.
4. Reduce damage taken by an Armor value of the
attacked entity.
5. Implement leveling up entities, increasing their
current Health and Damage.
54 / 12
56. Takeaway
• inheritance-based game models show a lot of
disadvantages
• entity systems are easy to maintain and debug
• provide great extensibility without the necessity of
modifying existing code
• show better performance characteristics for both
memory and CPU load
• easy to implement commonly used features
• scripting
• serialization
• logging
56 / 57
57. References
• Mick West. Evolve Your Hierarchy. http://cowboyprogramming.com/2007/01/05/evolve-your-
heirachy/, January 5, 2007.
• Levi Baker. Entity Systems Part 1: Entity and EntityManager.
http://blog.chronoclast.com/2010/12/entity-systems-part-1-entity-and.html, December 24,
2010.
• Kyle Wilson. Game Object Structure: Inheritance vs. Aggregation.
http://gamearchitect.net/Articles/GameObjects1.html, July 3, 2002.
• Adam Martin. Entity Systems are the future of MMOG development – Part 1. http://t-
machine.org/index.php/2007/09/03/entity-systems-are-the-future-of-mmog-development-part-
1/, September 3, 2007.
• Adam Martin. Entity Systems: what makes good Components? good Entities? http://t-
machine.org/index.php/2012/03/16/entity-systems-what-makes-good-components-good-
entities/, March 16, 2012.
• Scott Bilas. A Data-Driven Game Object System.
http://scottbilas.com/files/2002/gdc_san_jose/game_objects_slides_with_notes.pdf, Slides,
GDC 2002.
• Scott Bilas. A Data-Driven Game Object System.
http://scottbilas.com/files/2002/gdc_san_jose/game_objects_paper.pdf, Paper, GDC 2002.
• Insomniac Games. A Dynamic Component Architecture for High Performance Gameplay.
http://www.insomniacgames.com/a-dynamic-component-architecture-for-high-performance-
gameplay/, June 1, 2010.
57 / 57