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 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.
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.
This document discusses challenges in game development based on Nick Prühs' experience. It covers the diversity of game types and roles involved in development. It also discusses art pipelines, game engines, physics examples, and lessons learned from developing the "Campus Buddies" social game. Key lessons include expecting API changes, using existing solutions, making testing and deployment easy, mocking network interactions, standardizing code style, using a feature-based project structure, prioritizing collaboration, listening to players, implementing tutorials, considering 2D animation, and addressing challenges with localization.
Scrum - but... Agile Game Development in Small TeamsNick Pruehs
The document discusses Scrum, an agile framework for managing product development. It describes Scrum roles like the Product Owner, Development Team, and Scrum Master. The Scrum process involves sprints, daily stand-ups, sprint planning and reviews. It also introduces an example game development team called Astro City working with Scrum.
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 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 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.
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.
This document discusses challenges in game development based on Nick Prühs' experience. It covers the diversity of game types and roles involved in development. It also discusses art pipelines, game engines, physics examples, and lessons learned from developing the "Campus Buddies" social game. Key lessons include expecting API changes, using existing solutions, making testing and deployment easy, mocking network interactions, standardizing code style, using a feature-based project structure, prioritizing collaboration, listening to players, implementing tutorials, considering 2D animation, and addressing challenges with localization.
Scrum - but... Agile Game Development in Small TeamsNick Pruehs
The document discusses Scrum, an agile framework for managing product development. It describes Scrum roles like the Product Owner, Development Team, and Scrum Master. The Scrum process involves sprints, daily stand-ups, sprint planning and reviews. It also introduces an example game development team called Astro City working with Scrum.
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.
This document discusses component-based entity systems for game development. It describes the disadvantages of inheritance-based models, including deep class hierarchies that are difficult to develop, maintain and extend. It then introduces an aggregation-based approach using entities composed of independent components. This approach favors composition over inheritance and improves extensibility. Finally, it describes entity system architectures where components contain data and systems contain logic, improving performance, serialization and other capabilities. Overall it advocates for entity systems as an easier way to build, maintain and extend game object models.
Software construction is an exercise in managing complexity, more so with the spiralling complexity required by modern games. Automated Testing is an industry proven methodology to deliver more reliable complex software, with a fighting chance to do it on time and on budget. And having fun doing so. Crytek is spearheading this idea in the game industry with its flagship title, and now sharing the experience with you: best practices, potential pitfalls, To-Do’s and No-No’s will be shown with real examples of unit testing game code using its proprietary testing framework and tools. Functional Testing and acceptance testing will also be touched on as a viable way of describing and checking game design requirements. And take automated testing to the next level.
Game Programming AI
This document discusses behavior trees, an approach to game AI architecture. Behavior trees split AI decision logic from actions and organize them into a directed tree structure. The root node executes logic which reports back as success, running, or failure. This passes control to child nodes. Key nodes include sequences which run children in order until failure, and selectors which run the first successful child. Behavior trees are modular, reusable, and can be data-driven to design AI visually without code. They have been successfully used in many games due to their flexibility and performance.
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.
Game Programming 02 - Component-Based Entity SystemsNick Pruehs
The document discusses component-based entity systems for building game object models. It outlines some drawbacks of inheritance-based approaches, such as deep class hierarchies leading to call order issues. It then introduces an aggregation-based approach using entities, components, and systems. Entities are simple IDs, with all data and logic contained in independent, reusable components. Systems operate on components to implement game functionality without coupling. This approach has advantages like easy extensibility and multi-threading. Blueprints and attribute tables are discussed as ways to configure entities using components and data at runtime.
In this presentation we introduce the concept quality assurance in video games along with the most important concepts, team members and testing phases.
These slides were prepared by Dr. Marc Miquel. All the materials used in them are referenced to their authors.
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 document is a glossary created by a student for a games design course. It contains definitions for 12 terms related to video game development that the student researched online. For each term, the student provided the definition they found, the relevant URL source, and whether and how they utilized the term in their own game production work. The glossary covers terms such as alpha/beta testing, game engines, lighting, and anti-aliasing among others.
The document is a glossary created by a student for a games design course. It contains definitions for 12 terms related to video game development that the student researched online. For each term, the student provided the definition they found, the relevant URL source, and whether and how they utilized the term in their own game production work. The glossary covers terms such as alpha/beta testing, game engines, debugging, physics, and anti-aliasing among others.
Learn why you should put your blackbox (or system/integration) tests into Docker Containers.
Brief (remedial) overview of Docker for software testers who don't know docker, and only need to know the basics to wrap their regression tests inside of a container.
This document contains a glossary of terms related to video game development. It provides definitions for common terms like demo, beta, alpha, gold, debug, automation, white-box testing, bug, vertex shader, pixel shader, post processing, rendering, normal map, entity, UV map, and procedural texture. Each term has a short definition from an online source and discusses how the term relates to the student's own video game production practice.
Owning windows 8 with human interface devicesNikhil Mittal
This document discusses using human interface devices like the Teensy microcontroller in penetration tests against Windows 8 systems. It introduces the Kautilya toolkit for programming Teensy payloads and demonstrates attacks against Windows 8 by connecting the Teensy and executing payloads with the privileges of the logged-in user. Limitations of this technique include storage limits on Teensy and an inability to read responses or clear itself after running. Defenses include disabling removable devices or locking USB ports.
The document discusses different approaches to automating testing of user interfaces (UI), including record and replay, coding tests, and using the Jemmy library. It recommends designing a test library that uses higher-level abstractions like the domain model to minimize changes needed when the UI changes, improving test maintenance effectiveness.
This document discusses best practices for handling crashes in Android applications. It recommends using static code checkers, writing tests, continuous integration, handling common Android problems like memory leaks, unresponsive apps, and exceptions. It also discusses logging and measuring crashes, hiding crashes from users with custom crash handlers, and acknowledging that not all crashes can be avoided due to device fragmentation and changing Android features. The overall message is to care about crashes, minimize them, hide crashes from users, and expect that crashes may still occur despite best efforts.
This document discusses using ScriptableObjects in Unity to enable rapid prototyping. It begins by explaining what ScriptableObjects are and how they can be created and used. It then discusses how ScriptableObjects can make game development easier by allowing designers to configure variables and events without code changes. Several examples are provided, such as pluggable enums, variables, and events. The document concludes by discussing how ScriptableObjects enable better organization, reuse, testing, and collaboration compared to traditional MonoBehaviour approaches.
Maximize Your Production Effort (English)slantsixgames
This document discusses how to maximize production efficiency through efficient content authoring tools and pipelines for inter-studio asset development. It covers topics like infrastructure, content authoring, data conversion, game runtime considerations, and asset sharing. The key recommendations are to identify and reduce latency throughout the production pipeline, automate processes as much as possible, prioritize tool and workflow improvements, and treat outsourcing partners like internal team members to maximize output.
This document discusses component-based entity systems for game development. It describes the disadvantages of inheritance-based models, including deep class hierarchies that are difficult to develop, maintain and extend. It then introduces an aggregation-based approach using entities composed of independent components. This approach favors composition over inheritance and improves extensibility. Finally, it describes entity system architectures where components contain data and systems contain logic, improving performance, serialization and other capabilities. Overall it advocates for entity systems as an easier way to build, maintain and extend game object models.
Software construction is an exercise in managing complexity, more so with the spiralling complexity required by modern games. Automated Testing is an industry proven methodology to deliver more reliable complex software, with a fighting chance to do it on time and on budget. And having fun doing so. Crytek is spearheading this idea in the game industry with its flagship title, and now sharing the experience with you: best practices, potential pitfalls, To-Do’s and No-No’s will be shown with real examples of unit testing game code using its proprietary testing framework and tools. Functional Testing and acceptance testing will also be touched on as a viable way of describing and checking game design requirements. And take automated testing to the next level.
Game Programming AI
This document discusses behavior trees, an approach to game AI architecture. Behavior trees split AI decision logic from actions and organize them into a directed tree structure. The root node executes logic which reports back as success, running, or failure. This passes control to child nodes. Key nodes include sequences which run children in order until failure, and selectors which run the first successful child. Behavior trees are modular, reusable, and can be data-driven to design AI visually without code. They have been successfully used in many games due to their flexibility and performance.
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.
Game Programming 02 - Component-Based Entity SystemsNick Pruehs
The document discusses component-based entity systems for building game object models. It outlines some drawbacks of inheritance-based approaches, such as deep class hierarchies leading to call order issues. It then introduces an aggregation-based approach using entities, components, and systems. Entities are simple IDs, with all data and logic contained in independent, reusable components. Systems operate on components to implement game functionality without coupling. This approach has advantages like easy extensibility and multi-threading. Blueprints and attribute tables are discussed as ways to configure entities using components and data at runtime.
In this presentation we introduce the concept quality assurance in video games along with the most important concepts, team members and testing phases.
These slides were prepared by Dr. Marc Miquel. All the materials used in them are referenced to their authors.
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 document is a glossary created by a student for a games design course. It contains definitions for 12 terms related to video game development that the student researched online. For each term, the student provided the definition they found, the relevant URL source, and whether and how they utilized the term in their own game production work. The glossary covers terms such as alpha/beta testing, game engines, lighting, and anti-aliasing among others.
The document is a glossary created by a student for a games design course. It contains definitions for 12 terms related to video game development that the student researched online. For each term, the student provided the definition they found, the relevant URL source, and whether and how they utilized the term in their own game production work. The glossary covers terms such as alpha/beta testing, game engines, debugging, physics, and anti-aliasing among others.
Learn why you should put your blackbox (or system/integration) tests into Docker Containers.
Brief (remedial) overview of Docker for software testers who don't know docker, and only need to know the basics to wrap their regression tests inside of a container.
This document contains a glossary of terms related to video game development. It provides definitions for common terms like demo, beta, alpha, gold, debug, automation, white-box testing, bug, vertex shader, pixel shader, post processing, rendering, normal map, entity, UV map, and procedural texture. Each term has a short definition from an online source and discusses how the term relates to the student's own video game production practice.
Owning windows 8 with human interface devicesNikhil Mittal
This document discusses using human interface devices like the Teensy microcontroller in penetration tests against Windows 8 systems. It introduces the Kautilya toolkit for programming Teensy payloads and demonstrates attacks against Windows 8 by connecting the Teensy and executing payloads with the privileges of the logged-in user. Limitations of this technique include storage limits on Teensy and an inability to read responses or clear itself after running. Defenses include disabling removable devices or locking USB ports.
The document discusses different approaches to automating testing of user interfaces (UI), including record and replay, coding tests, and using the Jemmy library. It recommends designing a test library that uses higher-level abstractions like the domain model to minimize changes needed when the UI changes, improving test maintenance effectiveness.
This document discusses best practices for handling crashes in Android applications. It recommends using static code checkers, writing tests, continuous integration, handling common Android problems like memory leaks, unresponsive apps, and exceptions. It also discusses logging and measuring crashes, hiding crashes from users with custom crash handlers, and acknowledging that not all crashes can be avoided due to device fragmentation and changing Android features. The overall message is to care about crashes, minimize them, hide crashes from users, and expect that crashes may still occur despite best efforts.
This document discusses using ScriptableObjects in Unity to enable rapid prototyping. It begins by explaining what ScriptableObjects are and how they can be created and used. It then discusses how ScriptableObjects can make game development easier by allowing designers to configure variables and events without code changes. Several examples are provided, such as pluggable enums, variables, and events. The document concludes by discussing how ScriptableObjects enable better organization, reuse, testing, and collaboration compared to traditional MonoBehaviour approaches.
Maximize Your Production Effort (English)slantsixgames
This document discusses how to maximize production efficiency through efficient content authoring tools and pipelines for inter-studio asset development. It covers topics like infrastructure, content authoring, data conversion, game runtime considerations, and asset sharing. The key recommendations are to identify and reduce latency throughout the production pipeline, automate processes as much as possible, prioritize tool and workflow improvements, and treat outsourcing partners like internal team members to maximize output.
Chapter 11 of the lecture Game Programming taught at HAW Hamburg.
Introduction to kinematics and dynamics, numerical integration, rigid bodies, collision detection and resolving.
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.
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/
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
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
Clean, fast and simple with Entitas and Unity - Unite Melbourne 2016Simon Schmid
This document discusses using an entity component system architecture with Entitas, an open source C# entity component system framework for Unity. It explains that Entitas keeps data separate from behavior using data-only components, and organizes game logic into systems. This results in code that is clean, fast and simple to work with. The document provides examples of how movement logic can be handled within a system in Entitas, and demonstrates that Entitas uses less memory and CPU than the default Unity object model. It positions Entitas as a viable alternative for organizing game code in a consistent and modular way.
You've officially leveled-up in the world of software development with Visual Studio, and you now find yourself working on projects that are infinitely larger and far more complex than anything you've worked on before. Time to beef up your debugging skills not only to debug, but sometimes just to learn the flow of a given process! Plain old break-points have always gotten you by, but now you quickly run into trickier situations that come close to making your head explode. Come and learn some new debugging tricks & tips to bring your debugging skills to new heights.
No locked doors, no windows barred: hacking OpenAM infrastructureAndrew Petukhov
One of the main functional components of enterprise applications and Internet portals is an authentication and access control system (AuthC/Z). In this presentation, we describe a popular access control system called ForgeRock OpenAM from the external security point of view. We show the scenarios of full enterprise application compromise through complex attacks which employ both LFI and SSRF.
The document provides an overview of exceptions in Java. It defines errors and exceptions, describes different types of exceptions including checked and unchecked exceptions, and explains key exception handling keywords like try, catch, throw, throws, and finally. The document aims to help programmers better understand exceptions and how to properly handle errors in their Java code.
This document provides troubleshooting guidance for issues with Ceph. It begins by suggesting identifying the problem domain as either performance, hang, crash, or unexpected behavior. For each problem, it recommends tools and techniques for further investigation such as debugging logs, profiling tools, and source code analysis. Debugging steps include establishing baselines, identifying implicated hosts or subsystems, increasing log verbosity, and tracing transactions through logs. The document emphasizes starting at the user end and working back towards Ceph to isolate issues.
How many ways to monitor oracle golden gate-Collaborate 14Bobby Curtis
The document provides contact information for Bobby Curtis, a senior technical consultant specializing in Oracle GoldenGate and Oracle Enterprise Manager 12c. It lists his location, affiliations, areas of expertise, and contact details including his Twitter, blog, and email addresses. The document also provides links to registration and location pages for an upcoming training event from Enkitec and an overview of the topics to be covered, including monitoring approaches for Oracle GoldenGate.
Don't Suck at Building Stuff - Mykel Alvis at Puppet Camp AltantaPuppet
"Don't Suck at Building Stuff" by Mykel Alvis of MomentumSI. Talk given at Puppet Camp Atlanta 2013. Learn about upcoming Puppet Camps at http://puppetlabs.com/community/puppet-camp/
Exceptions indicate problems during program execution and can be handled to allow programs to continue running or notify users. There are different levels where exceptions can occur including hardware, operating systems, languages, and within programs. Exception handling uses try, catch, and throw blocks. A try block encloses code that could throw an exception. If an exception occurs, control transfers to the matching catch block. The catch block handles the exception to resolve it. Exceptions not caught will terminate the program.
This document discusses deploying software at scale through automation. It advocates treating infrastructure as code and using version control, continuous integration, and packaging tools. The key steps are to automate deployments, make them reproducible, and deploy changes frequently and consistently through a pipeline that checks code, runs tests, builds packages, and deploys to testing and production environments. This allows deploying changes safely and quickly while improving collaboration between developers and operations teams.
Test faster, release faster, get to market faster. Automated testing is the future of software development but all too often the performance and longevity of the tests themselves are an after thought. This lightning talk discusses why they shouldn't be.
This document discusses continuous integration in PHP development. It explains that continuous integration helps detect problems early through immediate unit testing of all code changes. This prevents integration issues and allows developers to work incrementally with quick feedback. The document recommends writing unit tests with PHPUnit and using tools like PHP Code Sniffer to check code quality. It also discusses code coverage analysis and copy/paste detection to reduce code duplication. Finally, it provides examples of continuous integration environments like CruiseControl that can automate building and testing of PHP applications.
Après avoir fait ce talk à la conférence NSSpain, Simone Civetta va nous expliquer sur quelles métriques il est possible de se baser pour évaluer la qualité d’un code source. Cette question étant toujours sujette à débat, préparez vos arguments !
Abstract
More and more the world runs on software, furthermore software is increasingly controlling devices in the real world. Software failures can now have a greater impact than just loss of data, physical damage and injury are now concerns. While many high reliability specifications exist, such as MISRA and DO-178B, they can be too “heavy” for many projects and are typically domain specific (automotive and airborne systems respectively) and are not used.
This presentation explores various software techniques that can be used to harden a software system and make it more reliable. The presentation also covers key questions to be answered when developing software that interacts with the real world.
Specifically we will be looking at cases where the software needs to be more reliable than “average” but does not justify investment in a formal specification such as MISRA or DO-178B.
Bio
Lloyd Moore is the founder and owner of CyberData Corporation, which provides consulting services in the robotics, machine vision and industrial automation fields. Lloyd has worked in software industry for 25 years. His formal training in biological-based artificial intelligence, electronics, and psychology. Lloyd is also currently the president of the Northwest C++ User’s Group and an organizer of the Seattle Robotics Society Robothon event.
The Final Frontier, Automating Dynamic Security TestingMatt Tesauro
This is not your normal DevSecOps presentation. We’re going to take on the most difficult aspect of security automation, the dreaded and pitfall prone, dynamic testing. You want to shift left and automate all the things, but DAST specifically has many thorns. How do you ensure what you’re testing matches production? Do devs own the environment? On metal, docker, kubernetes, or docker-compose? Test coverage? Balancing all these elements and more is not easy. Especially if you want to create a single, scalable, standard for your entire org. In this talk, we’ll cover what is needed to start automating your dynamic security testing, how to navigate the trade-offs you’ll have to consider, and finally how best to fit automated DAST testing into your software delivery pipelines. We’ll discuss simple and easy steps to gain efficiency and how to scale to mature pipelines that require little to no human intervention.
Slides for a college course at City College San Francisco. Based on "Practical Malware Analysis: The Hands-On Guide to Dissecting Malicious Software", by Michael Sikorski and Andrew Honig; ISBN-10: 1593272901.
Instructor: Sam Bowne
Class website: https://samsclass.info/126/126_S17.shtml
Ansible for Configuration Management for Lohika DevOps training 2018 @ Lohika...Ihor Banadiga
This document provides an overview and summary of using Ansible for configuration management. It discusses inventory files, playbooks, programming concepts in Ansible like variables and templates, and advanced topics like roles, YAML, and security. The document concludes by demonstrating how to use Ansible to automate setting up development environments and deploying a Java-based application.
This document contains a summary of a presentation about Android app development tools. It discusses Genymotion, an Android emulator, and how it provides faster emulation and additional features over the standard emulator. It also covers using Gradle as a build system for Android projects, including how to set up dependency management, signing, and building variants. The presentation provides sample Gradle scripts and links to GitHub repositories with more examples.
Slides for a college course at City College San Francisco. Based on "Practical Malware Analysis: The Hands-On Guide to Dissecting Malicious Software", by Michael Sikorski and Andrew Honig; ISBN-10: 1593272901.
Instructor: Sam Bowne
Class website: https://samsclass.info/126/126_F18.shtml
A lean automation blueprint for testing in continuous deliverySauce Labs
Testing in Continuous Delivery changes test automation. It demands more automation but also requires immediate feedback. Many test teams today suffer from two extremes. Too little or no automation to organizations with hundreds of thousands of tests constantly running all kinds of VMs takes multiple days to execute. Any hope of Continuous Delivery or Pipeline Automation makes these states unsustainable.
Similar to Game Programming 13 - Debugging & Performance Optimization (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
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
This document provides an overview of version control systems and how to use Git. It discusses local and centralized version control before focusing on distributed version control with Git. The document then demonstrates how to install Git and SourceTree, create a GitHub account, add and commit files to a repository, pull and push changes, view history and more. It also covers advanced Git topics like branching, merging, and divergent histories.
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.
Your One-Stop Shop for Python Success: Top 10 US Python Development Providersakankshawande
Simplify your search for a reliable Python development partner! This list presents the top 10 trusted US providers offering comprehensive Python development services, ensuring your project's success from conception to completion.
5th LF Energy Power Grid Model Meet-up SlidesDanBrown980551
5th Power Grid Model Meet-up
It is with great pleasure that we extend to you an invitation to the 5th Power Grid Model Meet-up, scheduled for 6th June 2024. This event will adopt a hybrid format, allowing participants to join us either through an online Mircosoft Teams session or in person at TU/e located at Den Dolech 2, Eindhoven, Netherlands. The meet-up will be hosted by Eindhoven University of Technology (TU/e), a research university specializing in engineering science & technology.
Power Grid Model
The global energy transition is placing new and unprecedented demands on Distribution System Operators (DSOs). Alongside upgrades to grid capacity, processes such as digitization, capacity optimization, and congestion management are becoming vital for delivering reliable services.
Power Grid Model is an open source project from Linux Foundation Energy and provides a calculation engine that is increasingly essential for DSOs. It offers a standards-based foundation enabling real-time power systems analysis, simulations of electrical power grids, and sophisticated what-if analysis. In addition, it enables in-depth studies and analysis of the electrical power grid’s behavior and performance. This comprehensive model incorporates essential factors such as power generation capacity, electrical losses, voltage levels, power flows, and system stability.
Power Grid Model is currently being applied in a wide variety of use cases, including grid planning, expansion, reliability, and congestion studies. It can also help in analyzing the impact of renewable energy integration, assessing the effects of disturbances or faults, and developing strategies for grid control and optimization.
What to expect
For the upcoming meetup we are organizing, we have an exciting lineup of activities planned:
-Insightful presentations covering two practical applications of the Power Grid Model.
-An update on the latest advancements in Power Grid -Model technology during the first and second quarters of 2024.
-An interactive brainstorming session to discuss and propose new feature requests.
-An opportunity to connect with fellow Power Grid Model enthusiasts and users.
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc
How does your privacy program stack up against your peers? What challenges are privacy teams tackling and prioritizing in 2024?
In the fifth annual Global Privacy Benchmarks Survey, we asked over 1,800 global privacy professionals and business executives to share their perspectives on the current state of privacy inside and outside of their organizations. This year’s report focused on emerging areas of importance for privacy and compliance professionals, including considerations and implications of Artificial Intelligence (AI) technologies, building brand trust, and different approaches for achieving higher privacy competence scores.
See how organizational priorities and strategic approaches to data security and privacy are evolving around the globe.
This webinar will review:
- The top 10 privacy insights from the fifth annual Global Privacy Benchmarks Survey
- The top challenges for privacy leaders, practitioners, and organizations in 2024
- Key themes to consider in developing and maintaining your privacy program
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUpanagenda
Webinar Recording: https://www.panagenda.com/webinars/hcl-notes-und-domino-lizenzkostenreduzierung-in-der-welt-von-dlau/
DLAU und die Lizenzen nach dem CCB- und CCX-Modell sind für viele in der HCL-Community seit letztem Jahr ein heißes Thema. Als Notes- oder Domino-Kunde haben Sie vielleicht mit unerwartet hohen Benutzerzahlen und Lizenzgebühren zu kämpfen. Sie fragen sich vielleicht, wie diese neue Art der Lizenzierung funktioniert und welchen Nutzen sie Ihnen bringt. Vor allem wollen Sie sicherlich Ihr Budget einhalten und Kosten sparen, wo immer möglich. Das verstehen wir und wir möchten Ihnen dabei helfen!
Wir erklären Ihnen, wie Sie häufige Konfigurationsprobleme lösen können, die dazu führen können, dass mehr Benutzer gezählt werden als nötig, und wie Sie überflüssige oder ungenutzte Konten identifizieren und entfernen können, um Geld zu sparen. Es gibt auch einige Ansätze, die zu unnötigen Ausgaben führen können, z. B. wenn ein Personendokument anstelle eines Mail-Ins für geteilte Mailboxen verwendet wird. Wir zeigen Ihnen solche Fälle und deren Lösungen. Und natürlich erklären wir Ihnen das neue Lizenzmodell.
Nehmen Sie an diesem Webinar teil, bei dem HCL-Ambassador Marc Thomas und Gastredner Franz Walder Ihnen diese neue Welt näherbringen. Es vermittelt Ihnen die Tools und das Know-how, um den Überblick zu bewahren. Sie werden in der Lage sein, Ihre Kosten durch eine optimierte Domino-Konfiguration zu reduzieren und auch in Zukunft gering zu halten.
Diese Themen werden behandelt
- Reduzierung der Lizenzkosten durch Auffinden und Beheben von Fehlkonfigurationen und überflüssigen Konten
- Wie funktionieren CCB- und CCX-Lizenzen wirklich?
- Verstehen des DLAU-Tools und wie man es am besten nutzt
- Tipps für häufige Problembereiche, wie z. B. Team-Postfächer, Funktions-/Testbenutzer usw.
- Praxisbeispiele und Best Practices zum sofortigen Umsetzen
GraphRAG for Life Science to increase LLM accuracyTomaz Bratanic
GraphRAG for life science domain, where you retriever information from biomedical knowledge graphs using LLMs to increase the accuracy and performance of generated answers
Main news related to the CCS TSI 2023 (2023/1695)Jakub Marek
An English 🇬🇧 translation of a presentation to the speech I gave about the main changes brought by CCS TSI 2023 at the biggest Czech conference on Communications and signalling systems on Railways, which was held in Clarion Hotel Olomouc from 7th to 9th November 2023 (konferenceszt.cz). Attended by around 500 participants and 200 on-line followers.
The original Czech 🇨🇿 version of the presentation can be found here: https://www.slideshare.net/slideshow/hlavni-novinky-souvisejici-s-ccs-tsi-2023-2023-1695/269688092 .
The videorecording (in Czech) from the presentation is available here: https://youtu.be/WzjJWm4IyPk?si=SImb06tuXGb30BEH .
In the realm of cybersecurity, offensive security practices act as a critical shield. By simulating real-world attacks in a controlled environment, these techniques expose vulnerabilities before malicious actors can exploit them. This proactive approach allows manufacturers to identify and fix weaknesses, significantly enhancing system security.
This presentation delves into the development of a system designed to mimic Galileo's Open Service signal using software-defined radio (SDR) technology. We'll begin with a foundational overview of both Global Navigation Satellite Systems (GNSS) and the intricacies of digital signal processing.
The presentation culminates in a live demonstration. We'll showcase the manipulation of Galileo's Open Service pilot signal, simulating an attack on various software and hardware systems. This practical demonstration serves to highlight the potential consequences of unaddressed vulnerabilities, emphasizing the importance of offensive security practices in safeguarding critical infrastructure.
Skybuffer SAM4U tool for SAP license adoptionTatiana Kojar
Manage and optimize your license adoption and consumption with SAM4U, an SAP free customer software asset management tool.
SAM4U, an SAP complimentary software asset management tool for customers, delivers a detailed and well-structured overview of license inventory and usage with a user-friendly interface. We offer a hosted, cost-effective, and performance-optimized SAM4U setup in the Skybuffer Cloud environment. You retain ownership of the system and data, while we manage the ABAP 7.58 infrastructure, ensuring fixed Total Cost of Ownership (TCO) and exceptional services through the SAP Fiori interface.
Ivanti’s Patch Tuesday breakdown goes beyond patching your applications and brings you the intelligence and guidance needed to prioritize where to focus your attention first. Catch early analysis on our Ivanti blog, then join industry expert Chris Goettl for the Patch Tuesday Webinar Event. There we’ll do a deep dive into each of the bulletins and give guidance on the risks associated with the newly-identified vulnerabilities.
HCL Notes and Domino License Cost Reduction in the World of DLAUpanagenda
Webinar Recording: https://www.panagenda.com/webinars/hcl-notes-and-domino-license-cost-reduction-in-the-world-of-dlau/
The introduction of DLAU and the CCB & CCX licensing model caused quite a stir in the HCL community. As a Notes and Domino customer, you may have faced challenges with unexpected user counts and license costs. You probably have questions on how this new licensing approach works and how to benefit from it. Most importantly, you likely have budget constraints and want to save money where possible. Don’t worry, we can help with all of this!
We’ll show you how to fix common misconfigurations that cause higher-than-expected user counts, and how to identify accounts which you can deactivate to save money. There are also frequent patterns that can cause unnecessary cost, like using a person document instead of a mail-in for shared mailboxes. We’ll provide examples and solutions for those as well. And naturally we’ll explain the new licensing model.
Join HCL Ambassador Marc Thomas in this webinar with a special guest appearance from Franz Walder. It will give you the tools and know-how to stay on top of what is going on with Domino licensing. You will be able lower your cost through an optimized configuration and keep it low going forward.
These topics will be covered
- Reducing license cost by finding and fixing misconfigurations and superfluous accounts
- How do CCB and CCX licenses really work?
- Understanding the DLAU tool and how to best utilize it
- Tips for common problem areas, like team mailboxes, functional/test users, etc
- Practical examples and best practices to implement right away
Fueling AI with Great Data with Airbyte WebinarZilliz
This talk will focus on how to collect data from a variety of sources, leveraging this data for RAG and other GenAI use cases, and finally charting your course to productionalization.
"Choosing proper type of scaling", Olena SyrotaFwdays
Imagine an IoT processing system that is already quite mature and production-ready and for which client coverage is growing and scaling and performance aspects are life and death questions. The system has Redis, MongoDB, and stream processing based on ksqldb. In this talk, firstly, we will analyze scaling approaches and then select the proper ones for our system.
How information systems are built or acquired puts information, which is what they should be about, in a secondary place. Our language adapted accordingly, and we no longer talk about information systems but applications. Applications evolved in a way to break data into diverse fragments, tightly coupled with applications and expensive to integrate. The result is technical debt, which is re-paid by taking even bigger "loans", resulting in an ever-increasing technical debt. Software engineering and procurement practices work in sync with market forces to maintain this trend. This talk demonstrates how natural this situation is. The question is: can something be done to reverse the trend?
2. Objectives
• To get an overview of techniques for preventing bugs beforehand
• To learn how to track down and properly remove bugs from your
code
• To understand possible performance bottlenecks
2 / 55
3. Why you should always start debugging immediately
• Code entropy says your code will get worse, all the time, unless you
actively invest in preventing that
• Broken windows theory says the worse your code is, the worse it will
become
• Tracking down bugs is harder in a larger code base
• Tracking down bugs is harder in a buggy code base
3 / 55
6. Code Quality Tools
6 / 55
/// <summary>
/// Attaches the passed component to the entity with the specified id.
/// Note that this manager does not check whether the specified id is valid.
/// </summary>
/// <exception cref="ArgumentNullException">
/// Passed component is null.
/// </exception>
/// <exception cref="InvalidOperationException">
/// There is already a component of the same type attached.
/// </exception>
public void AddComponent(int entityId, IEntityComponent component)
{
if (component == null)
{
throw new ArgumentNullException("component");
}
if (this.components.ContainsKey(entityId))
{
throw new InvalidOperationException(
"There is already a component of type " + component.GetType() + " attached to entity with id "
+ entityId + ".");
}
this.components.Add(entityId, component);
this.OnComponentAdded(entityId, component);
}
7. You need a repro. Period.
How can you be sure you’ve fixed it?
7 / 55
8. Stack Traces
Object reference not set to an instance of an object
at LifeApplication.Initializer.CreateManagers () [0x00488] in
Initializer.cs:481
at LifeApplication.Initializer.OnLoad () [0x00016] in
Initializer.cs:235
8 / 55
9. What’s null here?
// Initialize progress manager.
var progressConfig = new ProgressConfig(this.unityLoader.Version.Code);
if (this.config.Progress.Encrypt)
{
progressConfig.SetEncryption(
this.config.Progress.Encryption.EncryptKey,
this.config.Progress.Encryption.EncryptIv);
}
9 / 55
10. What’s null here?
// Initialize progress manager.
var progressConfig = new ProgressConfig(this.unityLoader.Version.Code);
if (this.config.Progress.Encrypt)
{
progressConfig.SetEncryption(
this.config.Progress.Encryption.EncryptKey,
this.config.Progress.Encryption.EncryptIv);
}
10 / 55
11. What’s null here?
// Initialize progress manager.
var progressConfig = new ProgressConfig(this.unityLoader.Version.Code);
if (this.config.Progress.Encrypt)
{
progressConfig.SetEncryption(
this.config.Progress.Encryption.EncryptKey,
this.config.Progress.Encryption.EncryptIv);
}
11 / 55
12. What’s null here?
// Initialize progress manager.
var progressConfig = new ProgressConfig(this.unityLoader.Version.Code);
if (this.config.Progress.Encrypt)
{
progressConfig.SetEncryption(
this.config.Progress.Encryption.EncryptKey,
this.config.Progress.Encryption.EncryptIv);
}
12 / 55
13. What’s null here?
// Initialize progress manager.
var progressConfig = new ProgressConfig(this.unityLoader.Version.Code);
if (this.config.Progress.Encrypt)
{
progressConfig.SetEncryption(
this.config.Progress.Encryption.EncryptKey,
this.config.Progress.Encryption.EncryptIv);
}
13 / 55
14. What’s null here?
// Initialize progress manager.
var progressConfig = new ProgressConfig(this.unityLoader.Version.Code);
if (this.config.Progress.Encrypt)
{
progressConfig.SetEncryption(
this.config.Progress.Encryption.EncryptKey,
this.config.Progress.Encryption.EncryptIv);
}
14 / 55
32. Some are really nasty …
• Remote systems
• Race conditions
• Mobile development, embedded systems, drivers
• “Release Mode only” bugs
32 / 55
33. Quoting My Tutor
“If the bug is not where you expect it to be,
you better start looking for it where you’re not expecting it to be.”
- Hagen Peters
33 / 55
34. Why you should never start optimizing immediately
• Your code base will change over time, a lot, most likely removing
some of the code you’ve spent time on optimizing
• Optimized code tends to be hard to read
▪ … and thus, hard to debug.
34 / 55
45. Fighting CPU Bottlenecks
Pooling
Trades memory for CPU performance.
Re-uses objects to prevent costly construction and destruction.
Requires proper (cheap) reset of pooled objects.
45 / 55
46. Fighting CPU Bottlenecks
Caching
Trades memory for CPU performance.
Stores computed values for later use.
Requires proper cache invalidation whenever the input changes.
46 / 55
47. Fighting CPU Bottlenecks
Bucketing
Trades accuracy for CPU performance.
Distributes computations across multiple frames by dividing operation
into multiple input sets.
Can only be applied if player doesn’t notice difference immediately (e.g.
updating AI just twice per second).
47 / 55
51. Gotcha!
Always turn off logging before
profiling!
Otherwise, disk I/O will lead to
false results.
51 / 55
52. Hint
If no native profiling tools are
available (or applicable), you can
always fall back to utility classes
such as
System.Diagnostics.Stopwatch.
52 / 55
53. Memory Leaks
• allocated memory that is never released
▪ in most cases, the reference or pointer is not even available any
more
▪ if occurring on a regular basis (e.g. every time a level is loaded),
will eventually fill up all available memory and crash the game
• in Ansi C: “no malloc without free”
• in C++: “no new without delete”
▪ in modern C++, usually achieved by the means of smart pointers
55. Memory Leaks
• make sure to always remove all registered event handlers in
languages like C#
• more complicated runtime environments can represent unique
challenges
▪ e.g. Mono heap in Unity
• it might be a good idea to return to an “empty scene” once in a while
and verify all memory has been properly cleaned up
60. 5 Minute Review Session
• Why should you always start debugging immediately?
• Why should you never start optimizing immediately?
• Name a few tools and approaches for tracking down broken code!
• How do you know whether you’ve got an GPU, CPU or memory
bottleneck?
• Name a few techniques for fighting CPU bottlenecks!