ITB/ITN751 Games Production Lecture 5 Game Engine Programming

Slides:



Advertisements
Similar presentations
Final topics: Scheduling Recap and some advanced topics.
Advertisements

ICS103 Programming in C Lecture 1: Overview of Computers & Programming
Lecture 1: Overview of Computers & Programming
Game Project Tuesday Sept 18,  Game Idea  Team  Understanding available engine options  Understanding the Pipeline  Start the process Cycle.
MULTIMEDIA Development Team.
Survey of Graphics and Games. Outline Overview of computer graphics – Coursework – Research Programming using game engines Computer game and animation.
What do Computer Scientists and Engineers do? CS101 Regular Lecture, Week 10.
Game Design and Programming. Objectives Classify the games How games are design How games are implemented What are the main components of a game engine.
Systems Programming Course Gustavo Rodriguez-Rivera.
Level 2 Mobile and Games Programming Modules Cathy French K233.
1 Component Description Alice 3d Graphics Software Human Computer Interaction Institute Carnegie Mellon University Prepared by: Randy Pausch,
Computer/Video Game Development Karen Petersen Lead Gameplay Programmer Telltale Games.
Chapter 3.1 Teams and Processes. 2 Programming Teams In the 1980s programmers developed the whole game (and did the art and sounds too!) Now programmers.
3D Game Programming All in One By Kenneth C. Finney.
Game Development Essentials An Introduction. Chapter 10 Roles & Responsibilities developing the team.
Cambodia-India Entrepreneurship Development Centre - : :.... :-:-
By Steven Taylor.  Basically a video game engine is a software system designed for the creation and development of video games.  There are many game.
Copyright Arshi Khan1 System Programming Instructor Arshi Khan.
CHAPTER 17 Creating an Interactive 3D Environment © 2008 Cengage Learning EMEA.
Call Center – What Really Makes Sense? Call Center – ce este cu adevarat important?
Gearbox Software PRODUCTION PIPELINE – JOBS TITLES – JOB DESCRIPTIONS.
1 Review PowerPoint for Unit Test covering Chapter #1 & #2.
Unit 1 Careers.
Microsoft Visual Basic 2012 CHAPTER ONE Introduction to Visual Basic 2012 Programming.
Queensland University of Technology CRICOS No J ITB/ITN751 Games Production Lecture 7 Game Development Tools Ross Brown.
Using C++ and OpenGL George Georgiev Telerik Corporation
CSE 381 – Advanced Game Programming 3D Game Architecture.
CS 638, Fall 2001 CS 638: Computer Games Technology Fall 2001.
CS426 Game Programming II Dan Fleck. Why games?  While the ideas in this course are demonstrated programming games, they are useful in all parts of computer.
CO1301: Games Concepts Dr Nick Mitchell (Room CM 226) Material originally prepared by Laurent Noel.
CO1301: Games Concepts Dr Nick Mitchell (Room CM 226) Material originally prepared by Laurent Noel.
Senior Design Spring 2010 Milestone 1. General Project Info Team Members: – Lauren Bissett – Dan Maguire – Nicholas Woodfield Project Goals: – Expand.
Game Industry and The Future of Game Pertemuan 12 Matakuliah: T0944-Game Design and Programming Tahun: 2010.
Mark Nelson What are game engines? Fall 2013
Introduction and Overview Questions answered in this lecture: What is an operating system? How have operating systems evolved? Why study operating systems?
ICOM 5995: Performance Instrumentation and Visualization for High Performance Computer Systems Lecture 7 October 16, 2002 Nayda G. Santiago.
Chapter 6 Operating System Support. This chapter describes how middleware is supported by the operating system facilities at the nodes of a distributed.
Ch 1. A Python Q&A Session Spring Why do people use Python? Software quality Developer productivity Program portability Support libraries Component.
AN OVERVIEW OF GAME DEVELOPMENT
Funativity CS 426 Fall Team Members David Smits – Lead Chintan Patel – Programmer Jim Gagliano – Programmer Ashleigh Wiatrowski - Artist.
Queensland University of Technology CRICOS No J ITB/ITN751 Games Production Lecture 11 - Revision Ross Brown.

Ahmed Saker Indie Game Developer
Project “Smoke” N-core engine experiment Threading for Performance AND Features.
The System Shall… Provide the ability to render 2D/3D graphics, these graphics will be represented by assets like models textures, and shaders. Manage.
2.1. T HE G AME L OOP Central game update and render processes.
MIS 105 LECTURE 1 INTRODUCTION TO COMPUTER HARDWARE CHAPTER REFERENCE- CHP. 1.
CS 460/660 Compiler Construction. Class 01 2 Why Study Compilers? Compilers are important – –Responsible for many aspects of system performance Compilers.
Games Development Game Architecture: Entities CO2301 Games Development 1 Week 22.
1 CS145 Lecture 24 What’s next?. 2  What questions does Computer Science study?  Where is programming and Computer Science headed? –With special emphasis.
1 CS145 Lecture 26 What’s next?. 2 What software questions do we study? Where is software headed?
Chapter 3-Multimedia Skills
Lesson 3-Multimedia Skills. Overview Members of a multimedia team. Roles and responsibilities in a multimedia team.
GAM666 – Introduction To Game Programming ● Programmer's perspective of Game Industry ● Introduction to Windows Programming ● 2D animation using DirectX.
Introduction to Game Programming Pertemuan 11 Matakuliah: T0944-Game Design and Programming Tahun: 2010.
The multiple facets of creating games.. scientist musician game designer lecturer? artist.
11 Computers, C#, XNA, and You Session 1.1. Session Overview  Find out what computers are all about ...and what makes a great programmer  Discover.
1 Topics: Introduction to Game Engine Course Overview What is a game engine? Advantages and Disadvantages Torque Game Engine.
+ Game Design Careers. + Game Development Developing an interesting video game is a very challenging task. It usually takes many different people working.
1 Multimedia Development Team. 2 To discuss phases of MM production team members Multimedia I.
Microsoft Visual Basic 2015 CHAPTER ONE Introduction to Visual Basic 2015 Programming.
1 INTRODUCTION TO COMPUTER GRAPHICS. Computer Graphics The computer is an information processing machine. It is a tool for storing, manipulating and correlating.
Games Development Practices 3D Modelling
Game Engine Architecture
The Purpose of game Engines
Game Engine Architecture
CO1301: Games ncepts 2016 Lecture 2
Chapter I Introduction
Chapter 7 –Implementation Issues
Games Development 2 Tools Programming
Presentation transcript:

ITB/ITN751 Games Production Lecture 5 Game Engine Programming Ross Brown

Lecture Contents Game Engine Programming Guest Lecture – Lachlan Bland, THQ

Readings Textbook Chapters: Websites: Chapter 7 http://www.gamecareerguide.com/features/171/so_you_want_to_be_a_game_programmer.php?page=2 - a programmers view of game programming skills http://www.gamecareerguide.com/features/137/career_paths_in_the_game_.php?page=1 – nice reference for the assignment http://www.gamasutra.com/features/20020715/olsen_01.shtml - some wage issues covered here

Bigger, better, faster, stronger “Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning” - Rick Cook

Havok Euphoria Engine Software http://www.youtube.com/watch?v=3bKphYfUk-M

Game Engine Programming This is the first lecture on a programming role within the game industry Game Engine development is one of the basic jobs within the computer games industry…maybe the oldest Argument: it predates graphics technology, so text-based art free games were still programmed

What is a Game Engine? Underlying software technology that supports the execution of the game Contains a number of software modules (amongst others) integrated together to provide the gaming experience: Graphics Physics Sound Scripting Animation Artificial Intelligence Networking User Interface

Game Engine Overview Game Engine Audio AI Physics Game Content Scene Graphics Scene Graph User Interface

Game Engines Developed to abstract away underlying aspects of a game Enables reuse of code Facilitates porting code to other hardware platforms

Graphics Module Provides an abstraction of the Graphics Processing Unit (GPU) in the hardware Provides the ability to render the geometric content created by artists at the highest level of fidelity possible Incorporates advanced real-time mathematical models of how light interacts with the surface of an object Modern GPUs are programmable allowing for very sophisticated effects

Graphics Sprites Sprites Surface Materials Shadows Bloom Bump Mapping

Physics Model Implements Newtonian model of physics for the game environment objects Gives the game object’s mass, force and velocity and uses collision detection methods to provide animation Often uses simplifications of physics models to simulate the physics in order to provide real-time responses

Sumotori Dreams Simple physics demo Fits into 96k Illustrates: http://web.t-online.hu/archee83/sumotori/ Simple physics demo Fits into 96k Illustrates: Collision Detection Animations Newtonian Physics Rag Doll Physics http://youtube.com/watch?v=hOvq3-oG5BM

Sound Module Manages the components of the soundtrack content developed by musicians and sound designers Executes sounds based on triggers in the environment from explicit execution, time events or interactions between game objects – eg. collisions

Scripting A language add-on to the engine that exposes internal engine architecture Allows designers to glue the game together by implementing the gameplay mechanics for events, AI, rewards, etc.

Animation Data structures are provided to manage and support hierarchical rigging and to animate the scripts stored from mocap and animations hard coded by the animators The animation system needs to blend between the various canned animations and the physics interactions

Artificial Intelligence Provides finite state automata and a behaviour model for the agents in the game to behave Also provides facilities for learned behaviours – Neural Networks Group behaviours (swarming), predator (seek), prey (flee) behaviours Path finding is another included component for Non-Player Character (NPCs) to find their way around a game environment

Artificial Intelligence Neural Network Seek and Flee Behaviour Finite State Automata Flocking

Networking Software to support network connections to other clients on a network or to servers Used to maintain verified game state on any machine connected to the server Sophisticated caching software is used to make sure every node is made aware of the present state of the game http://www.bigworldtech.com/technology/server_en.php

Scene Graph Tree data structure used to store the content Is operated upon by the Artificial Intelligence and Physics modules to update its state Fed to Graphics Module to be rendered (drawn) into the framebuffer (screen memory)

Scene Graph Above shows a simple example of a scene graph for a robot http://www-evasion.imag.fr/~Francois.Faure/doc/inventorMentor/sgi_html/ch03.html#id17983

Game Loop While user input not exit Endwhile Update Scene-Graph with network cache Update Scene-Graph via AI Update Scene-Graph via Physics and Animation Render Scene-Graph to Screen via Graphics System Endwhile

Game Engine is Real-time All of this has to be updated at ~30 frames per second for a game Thus entire loop must run in 1/30th second or less for high quality animation rates Thus a very tight real-time system Thus programmer skills MUST be at a high level

Game Engine Developer Programs the Game Engine Programs one or multiple modules in the engine Tends to be a specialist in one area Usually the best programmers in the shop

Roles Engine Development Engine Research and Development Cross Platform Development Bug fixing with Quality Assurance (QA)

Roles Work with a lead developer in a development team Works with technical director who oversees a number of projects Work with animators and designers to negotiate technical requirements for the game

Skillset High level Software Engineering skills – specification, testing, documentation skills Deep understanding of basic computer science algorithms – hashing, data structures, pointer arithmetic, code optimisation (necessary) C++ a necessity

Skillset Usual analytical skills required from general ICT programming for specification/understanding of program design Problem solving skills – creative solutions and or bug fixing Mathematics, Physics and AI skills very desirable

Skillset Multiprocessor programming – concurrant programming of multiple threads (mini programs) - for the new multicore Xbox, PC and PS3s Do lots of development of your own mods - good Development of deep technical skills via creation of your own engine components People skills – yep, that again

Development Tools Interactive Development Environments (IDE) Visual Studio, Eclipse… Sophisticated environments for the development of software: Intelligent Editors – think word processor for source code Debuggers – allows you to watch the code execute to find problems (bugs) Profilers – enables analysis of the efficiency of developed code

Development Tools Application Programming Interfaces (APIs) Libraries of useful code to use within into your source code DirectX – graphics/audio OpenGL – graphics Open Audio – audio Middleware – useful software APIs that facilitate various smaller tasks in games (goes between other components) Physics, Data Processing, Networking, AI, User Interfaces Goto: http://www.gamemiddleware.org/middleware/index.html

Console/Handheld Development Tools Console/Handheld Development Kits To develop for a console or handheld device – X360, PS3, DS, PSP Specially manufactured hardware is used to communicate via a network link Aug. 2006, PS3 Dev. Kit http://au.media.ps3.ign.com/articles/726/726255/img_3851913.html

Console/Handheld Development Tools Remotely debug software on device Consoles only run signed code, so need dev. kit hardware for unsigned code Code is then given signature which runs on normal consoles http://msdn2.microsoft.com/en-us/library/ms537361.aspx

Some Commercial Games Engines Gamebryo – classed as a middleware game engine solution http://www.emergent.net/index.php/homepage/products-and-services/gamebryo Unreal – full engine with tools and scripting interface for game development http://www.unrealtechnology.com/html/technology/ue30.shtml Half Life 2 Source Engine – C++ engine with toolset http://www.valvesoftware.com/

Some Free Game Engines XNA Game Studio Express – free proprietary game engine and development environment http://creators.xna.com/ Irrlicht – free open source game engine http://irrlicht.sourceforge.net

Guest Lecturer Lachlan Bland – Engine Programmer THQ Studios

References Eberly, David H., 3D Game Engine Architecture: Engineering Real-Time Applications with Wild Magic, 2004 – Available online at QUT Library Eberly, David H., Title3D game engine design : a practical approach to real-time computer graphics, Morgan Kaufmann, 2001