CS 354R: Computer Game Technology

Similar documents
CS Game Programming, Fall 2014

INTRODUCTION TO GAME AI

In this project you ll learn how to create a times table quiz, in which you have to get as many answers correct as you can in 30 seconds.

Computer Graphics Si Lu Fall /25/2017

BMOSLFGEMW: A Spectrum of Game Engine Architectures

Key Abstractions in Game Maker

Introduction to Game Design. Truong Tuan Anh CSE-HCMUT

Game Engine Programming

IMGD Technical Game Development I: Introduction

UNITY TECHNOLOGY ROADMAP

Game Architecture. Rabin is a good overview of everything to do with Games A lot of these slides come from the 1 st edition CS

IMGD Technical Game Development I: Introduction. by Robert W. Lindeman

Field & Post Production The Media School Indiana University Syllabus - Spring 2018

CSE328:Fundamentals of Computer Graphics. OpenGL tutorial. Shuchu Han (Jerome) Department of Computer Science, SBU

CompuScholar, Inc. Alignment to Utah Game Development Fundamentals 2 Standards

Game Programming Paradigms. Michael Chung

Gaming Development Fundamentals

1hr ACTIVITY GUIDE FOR FAMILIES. Hour of Code

IMGD Technical Game Development I: Introduction. by Robert W. Lindeman

Digital Gaming and Simulation Course Syllabus GAME Project Development I

G54GAM Lab Session 1

DM842 Computer Game Programming

Federico Forti, Erdi Izgi, Varalika Rathore, Francesco Forti

the gamedesigninitiative at cornell university Lecture 10 Game Architecture

CS277 - Experimental Haptics Lecture 2. Haptic Rendering

Brain Game. Introduction. Scratch

Field & Post Production The Media School Indiana University Syllabus - Fall 2018 v1.0

CS123. Programming Your Personal Robot. Part 3: Reasoning Under Uncertainty

Pangolin: A Look at the Conceptual Architecture of SuperTuxKart. Caleb Aikens Russell Dawes Mohammed Gasmallah Leonard Ha Vincent Hung Joseph Landy

CompuScholar, Inc. Alignment to Utah Game Development Fundamentals Standards

The 8 th International Scientific Conference elearning and software for Education Bucharest, April 26-27, / X

First Things First. Logistics. Plan for this afternoon. Logistics. Logistics 9/1/08. Welcome to Applications in VR. This is /

Programming Project 2

Procedural Level Generation for a 2D Platformer

Sensible Chuckle SuperTuxKart Concrete Architecture Report

Game Jam Survival Guide

LOOKING AHEAD: UE4 VR Roadmap. Nick Whiting Technical Director VR / AR

The CHAI Libraries. F. Conti, F. Barbagli, R. Balaniuk, M. Halg, C. Lu, D. Morris L. Sentis, E. Vileshin, J. Warren, O. Khatib, K.

DEMIGOD DEMIGOD. characterize stalls and pop-ups during game play. Serious gamers play games at their maximum settings driving HD monitors.

DM809 Computer Game Programming I: Graphics

BSc in Music, Media & Performance Technology

In-House vs. Outsourced Content Creation

Virtual Reality in Unreal Engine 4. Nathan Adara Program of Computer Graphics

Oculus Rift Getting Started Guide

Arcade Game Maker Product Line Requirements Model

9am 12pm 3pm 6pm 9pm 12am 1am 9am 12pm 3pm 6pm 9pm 12am 3am 6am 9am. Balance Mechanics. Refactor SLEEP. Effects

Peer Connections Online Appointment Scheduling via Spartan Connect!

January 11, 2017 Administrative notes

G51PGP: Software Paradigms. Object Oriented Coursework 4

MRT: Mixed-Reality Tabletop

the gamedesigninitiative at cornell university Lecture 4 Game Components

introduction to the course course structure topics

The purpose of this document is to outline the structure and tools that come with FPS Control.

Game Tools MARY BETH KERY - ADVANCED USER INTERFACES SPRING 2017

Editing the standing Lazarus object to detect for being freed

CSC320H: Intro to Visual Computing. Course WWW (course information sheet available there):

Understanding OpenGL

GameMaker. Adrienne Decker School of Interactive Games and Media. RIT Center for Media, Arts, Games, Interaction & Creativity (MAGIC)

SGD Simulation & Game Development Course Information

San José State University Department of Design/Interior Design Program DsIT 10, Sketch + Draw + Model, Section 01, Fall, 2017

Introductory Psychology (1030H, 1101, & 2101) Spring 2016 Research Participation (RP) Information

ArcGIS Runtime SDK for Java: Building Applications. Eric

COMP371 COMPUTER GRAPHICS SESSION 1 COURSE OVERVIEW - SYLLABUS

In this project, you will create a memory game where you have to memorise and repeat a sequence of random colours!

Three-Dimensional Engine Simulators with Unity3D Game Software

Harry Plummer KC BA Digital Arts. Virtual Space. Assignment 1: Concept Proposal 23/03/16. Word count: of 7

Live Agent for Administrators

Field & Post Production The Media School Indiana University Syllabus - Fall 2016 v1.0

CSSE220 BomberMan programming assignment Team Project

Program.

OPEN YOUR MIND TO A WORLD OF GAME PROGRAMMING

Emergent s Gamebryo. Casey Brandt. Technical Account Manager Emergent Game Technologies. Game Tech 2009

SteamVR Unity Plugin Quickstart Guide

Assignment 5: Virtual Reality Design

Moving Web 3d Content into GearVR

Lecture 1: Introduction and Preliminaries

Advanced Tools for Graphical Authoring of Dynamic Virtual Environments at the NADS

Effects of Shader Technology: Current-Generation Game Consoles and Real-Time. Graphics Applications

Unit 12: Artificial Intelligence CS 101, Fall 2018

Key Abstractions in Game Maker

Introductory Psychology (1030H & 1101) Fall 2017 Research Participation (RP) Information

Team Breaking Bat Architecture Design Specification. Virtual Slugger

EMT TECHNICAL GRAPHICS Lab Manual (Syllabus) Fall 08

INTERFACING WITH INTERRUPTS AND SYNCHRONIZATION TECHNIQUES

6 System architecture

P15083: Virtual Visualization for Anatomy Teaching, Training and Surgery Simulation Applications. Gate Review

Scratch Coding And Geometry

Game Design Document

Engineering at a Games Company: What do we do?

3D Game Engine Programming (Game Development Series) By Oliver Duvel, Stefan Zerbst READ ONLINE

Achieving High Quality Mobile VR Games

Propietary Engine VS Commercial engine. by Zalo

12 Final Projects. Steve Marschner CS5625 Spring 2016

CSE 125 Boot Camp. Or: How I Learned to Stop Worrying and Love The Lab

CS 889 Advanced Topics in Human- Computer Interaction. Experimental Methods in HCI

A&P 1 Histology Lab Week 1 In-lab Guide Epithelial Tissue ID: Squamous Tissue Lab Exercises with a special section on microscope use

Console Architecture 1

School of Interactive Arts. Prospectus

Blunt object, meet nail. Choosing tools and wrangling Unity

PING. Table of Contents. PING GameMaker Studio Assignment CIS 125G 1. Lane Community College 2015

Transcription:

CS 354R: Computer Game Technology http://www.cs.utexas.edu/~theshark/courses/cs354r/ Fall 2017

Instructor and TAs Instructor: Sarah Abraham theshark@cs.utexas.edu GDC 5.420 Office Hours: MW4:00-6:00pm or by appointment TA: TBD 2

Communications We re using Piazza for class communication Announcements, issues, and questions, etc Students should work together before asking for teacher or TA involvement Enroll at http://piazza.com/utexas/fall2017/cs354r Grades and assignments will be done via Canvas, http:// canvas.utexas.edu/ 3

Books and Resources Recommended textbook : Game Engine Architecture Jason Gregory Good exposition of many engine technology and design Not required but useful Other useful books: Game Programming Gems 1-8 3D Game Engine Design David Eberly (lots of equations, less exposition, good math background and computer graphics) Website: www.gamasutra.com Game developer technical and trade news GDC Vault and Siggraph archives 4

Class Expectations During class we ll explore key concepts and provide basic background info for projects Ideally a time for discussion and group exploration Participation and questions highly encouraged! Outside of class you ll implement this functionality in your game engine Note that this is a programming-heavy course! Throughout the course you will encounter new technology and ideas that I won t teach directly 5

Things I Will Skim Over 3D graphics concepts and programming Vectors, matrices, geometric reasoning OpenGL will be the graphics API discussed in lectures, but we won t work at that level C++ programming UI toolkits (FLTK, Glut, Qt, Interface Builder, etc) Scripting languages (Lua, Python, etc) 6

Grading Projects and reports (no tests) 1 2 major projects, broken into phases and graded separately Small groups of 3 assigned by the TA Self-forming groups allowed for the final project Potentially periodic quizzes to check comprehension and attendance 7

Working in Groups Working in groups is an acquired skill Most important thing you ll learn in here For some information on group functioning, read http:// www-honors.ucdavis.edu/vohs/index.html We assign teams like in industry Group evaluation exercises throughout the semester will ensure an even distribution of work (and grades) Continued low performance can result in failing the class 8

Grading Groups will be graded as one, but adjustments will be made based on individual performance Each group will set milestone goals for the current phase One to two milestones per phase You will be graded based on how well you achieve your goals factoring in degree of difficulty Each milestone will involve turning in an artifact/demo 9

Project Tools Projects must run and be turned in on the 64-bit Linux machines in the GDC basement We use Ogre3d as the 3d engine We ll recommend sound packages, UI packages, etc. but you can choose your own within limits We use Bullet for physics You can develop on your own machines, but code and demos are tested on the lab machines You will spend a surprising amount of time getting your tools installed, working, and playing together. This is part of the problem solving aspect of this course Source code control systems are essential for team projects 10

Tools for Content Creation Models and art are the biggest expense in real games This course doesn t require outside art assets, but: You can use Blender in the lab or on your own machines Acknowledge any assets you download/purchase Assets must be usable in the Linux environment but you can develop in non-linux environments Be prepared to write small tools if you think it will make your project easier Be prepared to write format converters if you have a good tool that produces output that your game engine can t input. This is a big deal in the real world as well as in class! 11

What Is Game Technology? Technology that drives games Graphics Physics GUI Networking AI Sound Game engine connects these aspects in a coherent, organized manner 12

What This Course Is Not Not a game design course! Not a game development class! Thus making a game with cool systems is secondary to creating the engine that drives them But game features and systems are of course closely connected to engine implementation 13

The Computer Game Industry Hardware makers produce gaming hardware Sony, Nintendo, Microsoft, NVIDIA, etc Engine teams develop underlying libraries to build upon Epic, Unity, GameMaker, etc Game developers create games using these engines Insomniac, Level 5, Arkane, etc Publishers release games to players Sony, Nintendo, EA, Steam, etc Note that a company can do one or more of these (e.g. Blizzard) 14

Game Development Team System designers decide on game format and behavior Artists create models, textures, and animations Level designers create the game spaces and interactions Audio designers handle sounds Programmers write code to put everything together and create tools to make everyone else s job easier And others: production, management, marketing, quality assurance 15

Interactive Programming A game is a user-controlled program Responsive to user input in real time Help users understand what is happening at all times Provides constant, up-to-date feedback about its state (and user input) Effective interaction is key for immersion How should we structure our software to achieve this? 16

Event-driven Programming Everything happens in response to events Events can occur asynchronously with respect to the execution of the program reacting to the event Events can come from users or system components Generated signals or messages sent to a system component So in some sense events, signals, messages are equivalent 17

System-generated Events Timer events Application calls a function requesting an event at a future time (e.g. next time a frame should be drawn) System provides an event at the requested time Application checks for and responds to the event (e.g. drawing the next frame) 18

User-generated Events User presses a button on a joystick Joystick hardware sends a signal to the computer (called an interrupt) The OS responds to the interrupt by converting it to an item in an event queue for the windowing system Events can be kept in priority order, temporal order, etc API elements of UI toolkits check and respond to events How should our windowing system check for events? 19

Polling vs. Waiting Can provide a call that returns immediately (nonblocking) to check if an event is pending Happens whether or not there is an event What do you do if there s not one? Loop to keep checking? Go off and do something else? Also possible to use a blocking event function that waits (blocks) until an event has arrived Only returns after the event is processed What happens while your program waits? Does any work get done? Does the screen freeze up? 20

Callbacks Tell system what to do when a particular type of event arrives Necessary code now executes automatically Most GUI systems operate this way Application makes a call to the GUI to tell it what function should be executed when the event arrives When a timer event arrives, the system calls a draw function When the left mouse button is clicked, the system calls the mouse event function 21

Event-response Classes Two fundamental kinds of event responses: Mode change events Cause the system to shift to a different mode of operation Task events Cause the system to perform a specific task within a mode of operation Game software structure reflects this Menu system is separate from game runtime, for instance 22

Real-time Event Loops Games and similar interactive systems look like an big infinite loop: while (1) { process events update state render } The number of times this loop executes per second is the frame rate (since each render operation creates a new frame) Measured in frames per second (fps) 23

Latency and Lag Latency is the time it takes from starting to do something to finishing it Lag in user interaction is the latency from when a user provides input to the time they see the response Controlling lag is extremely important for playability Distorts causality Causes motion sickness Makes it hard to track or target objects Makes interaction difficult 24

Computing lag... process input Event arrives Frame time{ update state render process input }Lag update state Frame time{ render process input update state Frame time{ render... Time lag max 2 fr lag avg 1.5 fr 25

How Can We Reduce Lag? 26

Brute Force 1. Pick a frame rate = 1/frame time 2. Do as much as you can in a frame time Faster algorithms and hardware means more can get done! Budgeted resources graphics, AI, sound, physics, networking, etc must now be done in the frame time Is this necessary for all resources? 27

Prioritizing Resources Most important to reduce lag between user input and its direct consequences Lag between input and other consequences may matter less Update different parts of the game at different rates Achieve this by decoupling separable parts of the game 28