Game Framework & Sample Projects

Slides:



Advertisements
Similar presentations
Designing, Deploying and Managing Workflow in SharePoint Sites Steve Heaney Product Development Manager OBS
Advertisements

Epic’s Build Tools & Infrastructure
Game Framework & Sample Projects
Yingcai Xiao Game Development Intro to Unreal Engine.
The Slate UI Framework Architecture & Tools Gerke Max Preussner
Extensibility in UE4 Customizing Your Games and the Editor Gerke Max Preussner
Concurrency & Parallelism in UE4
Integrating a Cloud Service Joe Overview Example from our games Support in UE4 to achieve that.
Engine Overview A Programmer’s Glimpse at UE4 Gerke Max Preussner
Survey of Graphics and Games. Outline Overview of computer graphics – Coursework – Research Programming using game engines Computer game and animation.
© 2006 Pearson Addison-Wesley. All rights reserved4-1 Chapter 4 Data Abstraction: The Walls.
Scripting Languages For Virtual Worlds. Outline Necessary Features Classes, Prototypes, and Mixins Static vs. Dynamic Typing Concurrency Versioning Distribution.
3D Game Programming All in One By Kenneth C. Finney.
The Slate UI Framework Part 1: Introduction Gerke Max Preussner
ASP.NET Programming with C# and SQL Server First Edition
Chapter 13: Object-Oriented Programming
1 An Introduction to Visual Basic Objectives Explain the history of programming languages Define the terminology used in object-oriented programming.
What is R Muhammad Omer. What is R  R is the programing language software for statistical computing and data analysis  The R language is extensively.
Slide 1 of 9 Presenting 24x7 Scheduler The art of computer automation Press PageDown key or click to advance.
Niklas Smedberg Senior Engine Programmer, Epic Games
Unreal Script: An Introduction Parts 9 to 10 Brandon Holbert.
Chapter 9 Introduction to ActionScript 3.0. Chapter 9 Lessons 1.Understand ActionScript Work with instances of movie clip symbols 3.Use code snippets.
CASE Tools And Their Effect On Software Quality Peter Geddis – pxg07u.
Microsoft Visual Basic 2012 CHAPTER ONE Introduction to Visual Basic 2012 Programming.
Java Beans.
Beyond DHTML So far we have seen and used: CGI programs (using Perl ) and SSI on server side Java Script, VB Script, CSS and DOM on client side. For some.
Microsoft Visual Basic 2005: Reloaded Second Edition
Lesley Bross, August 29, 2010 ArcGIS 10 add-in glossary.
COMPUTER PROGRAMMING Source: Computing Concepts (the I-series) by Haag, Cummings, and Rhea, McGraw-Hill/Irwin, 2002.
Tutorial 11 Using and Writing Visual Basic for Applications Code
Using Visual Basic 6.0 to Create Web-Based Database Applications
COMP 410 & Sky.NET May 2 nd, What is COMP 410? Forming an independent company The customer The planning Learning teamwork.
CIS 300 Spring Introductions The Mastrix team: –Jim Babcock –Eric Hayes –Christian Montoya –Yi Xu.
Tutorial 121 Creating a New Web Forms Page You will find that creating Web Forms is similar to creating traditional Windows applications in Visual Basic.
Client Scripting1 Internet Systems Design. Client Scripting2 n “A scripting language is a programming language that is used to manipulate, customize,
JavaBeans Components. To understand JavaBeans…  Proficient experience with the Java language required  Knowledge of classes and interfaces  Object-Oriented.
CMPD 434 MULTIMEDIA AUTHORING Chapter 06 Multimedia Authoring Process IV.
Developing the Game User Interface (UI) Lesson 5.
UE4 Quickstart IMGD 4000 Due: March 25 th, 11:59pm.
Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 4, Requirements Elicitation.
Chapter 6 Object-Oriented Java Script JavaScript, Third Edition.
Games Games GAMES. About Me:  Ariel Nehmad.  I’m 31 years old.  Live in Buenos Aires, Argentina.  CTO and father of Flare3D, FLSL and Flare3D Phys…
Web Games Programming An Introduction to Unity 3D.
Andrew S. Budarevsky Adaptive Application Data Management Overview.
(c) University of Washington01-1 CSC 143 Java Programming as Modeling Reading: Ch. 1-6.
JavaScript - A Web Script Language Fred Durao
Lection №5 Modern integrated development environment.
Ahmed Saker Indie Game Developer
Chapter 6 Introduction to Defining Classes. Objectives: Design and implement a simple class from user requirements. Organize a program in terms of a view.
Yingcai Xiao Game Development Intro to Unreal Engine.
Introduction to c++ programming - object oriented programming concepts - Structured Vs OOP. Classes and objects - class definition - Objects - class scope.
Java Beans. Definitions A reusable software component that can be manipulated visually in a ‘builder tool’. (from JavaBean Specification) The JavaBeans.
1.
Object Oriented Analysis & Design Game Patterns. Contents  What patterns are  Delegation  Game Loop  Scene Graph  Double Buffering  Component 
Object-Oriented Programming Chapter Chapter
RealXtend vs. Second Life RealXtend overview  Main ambition Promote the evolution.
Object Oriented Software Development 4. C# data types, objects and references.
Motivates, interests and engages. Teaches problem solving skills. Allows for creativity and imagination. Demonstrates project design. Encourages teamwork.
Building Custom Controls with ASP.NET and the Microsoft ®.NET Framework Rames Gantanant Microsoft Regional Director, Thailand
UFCFSU-30-13D Technologies for the Web An Introduction to Unity 3D.
C# Fundamentals An Introduction. Before we begin How to get started writing C# – Quick tour of the dev. Environment – The current C# version is 5.0 –
1 C++ Classes & Object Oriented Programming Overview & Terminology.
Integrating and Extending Workflow 8 AA301 Carl Sykes Ed Heaney.
 By the end of this lecture, you should …  Understand the three pillars of Object- Oriented Programming: Inheritance, Encapsulation and Polymorphism.
UE4 Quickstart IMGD 4000 Due: March 23 rd, 11:59pm.
Collision Theory and Logic
Quick Intro to Unreal Lecture 7.
Collision Theory and Logic
Projectiles in Unreal Engine 4
Game Development Intro to Unreal Engine
Presentation transcript:

Game Framework & Sample Projects Game Programming in UE4 Game Framework & Sample Projects Gerke Max Preussner max.preussner@epicgames.com Prepared and presented by Gerke Max Preussner for East Coast MiniDevCon 2014, Novemver 12-13th Email max.preussner@epicgames.com in case of comments, questions or suggestions or visit our AnswerHub at http://answers.unrealengine.com

Game Framework History UE1 and UE2 Designed for First Person Shooters (FPS) UnrealScript game scripting language UE3 Kismet Visual Scripting added More modular game classes But still very FPS centric UE4 UnrealScript replaced with Blueprints Game genre agnostic Lots of sample projects! Previous versions of Unreal Engine were primarily designed for first person shooter games, because that’s the kind of games Epic used to make. Unreal Engine 4 is much more game agnostic, and it ships with a ton of sample games for different genres. Game scripting was part of the engine from the very beginning. After spending several years of learning Unreal Script, you may be excited to hear that we got rid of it. Unreal Script has been replaced with Blueprints.

UnrealScript vs. C++ vs. Blueprints UnrealScript was: An object-oriented scripting language Similar in syntax to C, C++, Java, but also somewhat different Compiled to virtual machine byte code Adding interesting features, such as States, Timers, Delegates Blueprints are: A visual scripting system that is artist and designer friendly Using the same virtual machine as UnrealScript Almost as powerful as UnrealScript, and in some ways even better C++ has: Always been part of UE game programming Tight bi-directional integrations with the virtual machine Been greatly improved in UE4 to replace UnrealScript for coders Blueprints VM C++ Unreal Script was a completely separate programming language, although it was similar to C++ and Java. Blueprints are now at least as powerful as UnrealScript and offer some interesting new possibilities. C++ has been augmented with more macros to give it more of the abilities that Unreal Script used to have.

So What Is The Game Framework? Overview Why Use It? Set Of Foundation Classes Provide basic structure and functions of your game You derive from the classes that you need Fill in the details for your particular game What’s Missing? Game genre specific implementations No concept of health and death No built-in classes for weapons, inventory, etc. Unreal Engine comes with the so called Game Framework that makes it easier to create new games from scratch. It is a set of classes that provide all the basic functionality needed for most games. Since the Engine is now more game agnostic, it no longer contains concepts for health and weapons. You have to create those yourself for your particular game, or use one of the project templates as a starting point.

So What Is The Game Framework? Overview Why Use It? Reduced Learning Curve Hides the low-level details of game engines Benefit from 20+ years of game developing experience Many samples and tutorials for solving common tasks High Productivity Focus on what really matters to you: making your game Solves many tricky problems in games (movement, input, etc.) Greatly reduces boilerplate code needed for all games Scalability Smoothly grow your game & team from prototype to AAA Why should you use the Game Framework? Because it takes care of many of the low-level things that every game needs. Epic Games has been making games for over 20 years, and all that experience flows back into the framework. Let us worry about the technicalities – you focus on making cool games.

Fundamental Concepts Actors Components Pawn Controller Character HUD GameMode What is an Actor? Entity in a game level Usually contains one or more Actor Components Supports network replication for multiplayer games Things to know about Actors Don’t have Location, Rotation (stored in root component) Created with SpawnActor() method Must be destroyed explicitly with Destroy() method Will not be garbage collected during the game There are a number of concepts in the Game Framework, but some are particularly important. The most important one is Actor, because every interactive entity in your game will be an Actor. Actors have built-in support for network replication, and they can be heavily customized with Actor Components.

Fundamental Concepts Actors Components Pawn Controller Character HUD GameMode What is an ActorComponent? Reusable functionality that can be added to an Actor Contain the most interesting functionality & events Also accessible in Blueprints! Example Components: Scene Component – Adds transforms and attachments Primitive Component – Adds collision and rendering UAudioComponent, UArrowComponent, UInputComponent, ULightComponent, UMeshComponent, UParticleSystemComponent and many more! Actor Components are little reusable pieces of functionality that you can attach to Actors. They really implement the most interesting parts of what an Actor actually does and what it looks like in your game. Scene and Primitive Components are the most frequently used Actor Components. They provide things like appearance, collision and 3D transformations.

Fundamental Concepts Actors Components Pawn Controller Character HUD GameMode PrimiviteComponent Event Examples Hit – Called when bumping into a wall Begin/EndOverlap – Walk into or out of a trigger Begin/EndCursorOver Clicked/Released InputTouchBegin/End Begin/EndTouchOver Actor Components can generate events that are accessible in both Blueprints and C++. For example, when an Actor touches a wall or some other actor, you can react to it by monitoring the Hit event. Many Actor Components define their own events.

Fundamental Concepts Actors Components Pawn Controller Character HUD GameMode What is a Pawn? An agent in the world Optionally possessed by a Controller Usually handles movement and input Things to know about Pawns Good place to implement health No movement or input code by default The second most important concept is the Pawn. A Pawn is an entity in your game that can be controlled by a Player or some artificial intelligence. In earlier versions of Unreal Engine, Pawns were mostly used for humanoid creatures. In UE4 they can be anything, including space ships, submarines or eight legged robots.

Fundamental Concepts Actors Components Pawn Controller Character HUD GameMode What is a Controller? A brain that can possess a Pawn PlayerController: Represents a human player AIController: Computes AI behavior for Pawns Things to know about Controllers Possess one Pawn at a time Can persist after possessed Pawn dies Pawns do not control themselves. They are controlled by so called Controllers, which you can think of as the brain of a Pawn. Human players use a special controller, called the Player Controller. AI pawns can be controlled with AI Controllers. A Pawn may die in your game and disappear, but the Controller can stick around. For example, when a player respawns, we usually attach the same PlayerController to a new Pawn.

Fundamental Concepts Actors Components Pawn Controller Character HUD GameMode PlayerController Interface for players to agents Handles touches, clicks, keyboard Showing/hiding mouse cursor Good place for non-agent code Menus, voice chat, etc. Many other useful options PlayerControllers also process input, which is forwarded to the currently possessed Pawn. We also PlayerControllers to manage in-game menus, head-up displays and voice chat. It is a good place to put anything that has to do with human players.

Fundamental Concepts Actors Components Pawn Controller Character HUD GameMode What is a Character? Special Pawn that can walk Comes with useful Components Things to know about Controllers Handles collision Client-side movement prediction Much improvement from UE3 A Character is a special Pawn class that contains walking logic. It comes with useful components that make it easier to create humanoid game entities. Characters have client-side movement prediction code that allows for smooth multiplayer experiences. They have been improved greatly from Unreal Engine 3.

Fundamental Concepts Actors Components Pawn Controller Character HUD GameMode What is a HUD? Head-Up Display Responsible for in-game UI Things to know about Controllers Immediate-mode drawing API No tools for building HUDs UMG will provide all the things! The HUD is responsible for drawing in-game UI, such as health bars and ammo counters. It uses a code-only API including functions like DrawTexture() and DrawText(). Unreal Motion Graphics will soon provide awesome tools for creating animated in-game UIs.

Fundamental Concepts Actors Components Pawn Controller Character HUD GameMode What is a GameMode? Implements the game rules Configures default classes for Pawn, Controller, HUD, etc. Can be accessed from anywhere (GetGameMode()) Things to know about GameModes Only exists on the server and single player instances! GameState is used to replicate game state to clients Default game mode can be set in Project Settings Per-map overrides in World Settings Finally, the Game Mode contains your game’s state machine and game rules. It also determines which Pawn, Controller and HUD classes are used by your game. The Game Mode only exists on the server, because the server is the authority over what happens in the game. Clients learn about the game state through another class, called the GameState. The Game State forwards relevant details about the game to all clients.

Other Important Concepts Input Collision Replication Axes & Actions Can bind to mouse, keyboard, touch, etc. Defined in Project Settings Input Processing Order PlayerController Level Blueprint Possessed Pawn There are some other important concepts you should know about. The input system has support for a variety of input types, such as buttons, keys, analog controllers and mice. All input is processed in a certain order. This may affect the implementation of your game.

Other Important Concepts Input Collision Replication Various Collision Query Functions Line traces (ray casts) Geometry sweeps Overlap tests Simple Collision Box, sphere, capsule, convex Authoring tools in Editor Used for movement, physics, etc. Complex collision Actual graphics triangles Used for weapons, kinematics, etc. The Engine provides a variety of functions for collision testing. We distinguish between simple and complex collsion. Simple collision is very cheap and uses 3D primitives for overlap checking. Complex collision is much more accurate, because it uses individual triangles, but it is also more expensive.

Other Important Concepts Input Collision Replication Transfer game state between Server and Clients Remote Procedure Calls (RPC) Data transfer (variables, structs, dynamic arrays) Editor supports multiplayer PIE testing Finally, Replication is the Engine’s mechanism to ensure that all players in a multiplayer game share the same experience. It is responsible for transferring game relevant data and events from the client to the server, and the server to all clients. If you wish to learn more about Replication, make sure to check out our next talk in Room XYZ.

Game Framework Flowchart And here is a flow chart for the game framework classes. The only class we have not discussed is the PlayerCameraManager. It is part of the PlayerController and controls the movement of the player’s camera.

What’s New? UObject Improvements Custom constructors We continue to make improvements to Slate. We are currently putting a lot of effort into improving compilation times and breaking out the many available widgets into to separate modules. Of course, we have also released Unreal Motion Graphics, which is a user interface editor built on top of Slate. UMG exposes powerful Slate features, such as 2D transformation and Blueprint scripting in designer friendly ways.

What’s New? We continue to make improvements to Slate. We are currently putting a lot of effort into improving compilation times and breaking out the many available widgets into to separate modules. Of course, we have also released Unreal Motion Graphics, which is a user interface editor built on top of Slate. UMG exposes powerful Slate features, such as 2D transformation and Blueprint scripting in designer friendly ways.

What’s New? UObject Improvements Custom constructors Property categories no longer required We continue to make improvements to Slate. We are currently putting a lot of effort into improving compilation times and breaking out the many available widgets into to separate modules. Of course, we have also released Unreal Motion Graphics, which is a user interface editor built on top of Slate. UMG exposes powerful Slate features, such as 2D transformation and Blueprint scripting in designer friendly ways.

What’s New in 4.6? UObject Improvements Custom constructors Property categories no longer required Hot Reload now supports adding/removing Properties & Ufunctions Compiling from VS now automatically hot-reloads DLL in Editor Framework Improvements Include dependencies reduced Include-What-You-Use ™  Faster compile times! We continue to make improvements to Slate. We are currently putting a lot of effort into improving compilation times and breaking out the many available widgets into to separate modules. Of course, we have also released Unreal Motion Graphics, which is a user interface editor built on top of Slate. UMG exposes powerful Slate features, such as 2D transformation and Blueprint scripting in designer friendly ways.

Questions? Documentation, Tutorials and Help at: AnswerHub: Engine Documentation: Official Forums: Community Wiki: YouTube Videos: Community IRC: Unreal Engine 4 Roadmap lmgtfy.com/?q=Unreal+engine+Trello+ http://answers.unrealengine.com http://docs.unrealengine.com http://forums.unrealengine.com http://wiki.unrealengine.com http://www.youtube.com/user/UnrealDevelopmentKit #unrealengine on FreeNode Make sure to check out our extensive documentation on the internet!