Advanced Game Design

Download Report

Transcript Advanced Game Design

Advanced Game Design
Prof. Roger Crawfis
Computer Science & Engineering
The Ohio State University
Course Overview
 Project-based / Team-based
 Little lecturing
 Focus on programming for games
 Systems integration – graphics, sound, AI, networking, user-
interfaces, physics, scripting
 Utilize higher-level toolkits, allowing for more advanced
progress while still developing programming skills.
Course Structure
 We will lecture for about the first two weeks.
 Student game project groups will provide several
presentations on their game ideas and progress.
 Student technology teams will provide an intermediate
and an advanced lecture on their findings and analysis about
their area.
Project Goals
 Large-scale software development
 Team-based (synergistic development)
 Toolkit-based (fast-start development)
 Learn and utilize the many non-graphical elements needed
for games.
 Leverage and extend your graphics and AI expertise.
Elements
 Gaming Engine
 Responsible for providing primitives
 Hardware abstraction
 Handle different areas of the game
 Physics, AI, etc.
 Game
 Defined by a genre
 Defines the gameplay
Requirements of a gaming engine
 Stunning Visuals
 Artificial Intelligence
 Immersive sound stage
 Simulation
 Animation
 Networking
Requirements of a game
 Scripting
 Varied input/output devices
 Supporting Tools
 Optimizing game content
 Developing game content
 Extending game content
 Debugging / Tuning of game performance
Stunning Visuals
 Adding realism
 Smarter Models
 Clutter
 Use hardware
 Bump-mapping
 Dynamic water or other liquids
 Rich textures (Billboards, gloss-maps, light-maps, etc.)
 Shadows
 Particle systems
Artificial Intelligence
 Games need specialized AI
 Strategy
 Path finding
 Modeling behavior
 Learning
Immersive sound stage
 Multi-track sound support
 Positional sound effects (3D immersion)
 Dynamic sounds / movement (doppler effects)
Input devices
 Commonly available devices are
 Keyboard, mouse, gamepads and joysticks
 Force feedback (haptic) devices are gaining popularity
 Steering wheels
 Joysticks
 Motion tracking
 Output devices
 Multiple monitors
 Head mounted displays
Scalability
 Multiple hardware capabilities
 Multi-resolution models
 Multi-user support
 LOD
 Multiple model definitions
 Multi-res models
 Subdivision surfaces
Scalability
 Multiple hardware capabilities
 Multi-resolution models
 Multi-user support
 LOD (Level-Of-Detail)
 Control – when to switch
 Construction – what levels to have
Animation
 Linear transformations
 Modeled animations
 Articulated motion
 Lip syncing
 Facial Expressions
 Blending animations
Networking
 Multi-player support essential
 Common problems
 Latency
 Synchronization
 Scalability
 Consistent game state
 Security
Scripting
 Strict coding is tedious
 Support for scripting is essential for RAD
 Scripting has added a whole new fun factor for many games.
Artificial Intelligence
 Games need specialized AI
 Strategy
 Path finding
 Modeling behavior
 Learning
 Non-perfect!
 Fast!
Tools
 Creating varied content
 models, video, images, sound
 Integrating content
 Common file format support
 Supporting existing popular tools via plug-ins
 3DS Max, Lightwave, Maya etc.
 Adobe premier, Adobe Photoshop
Interactive Programs
 Games are interactive systems - they must respond to the
user
 How?
Interactive Program Structure
Initialize
User Does Something
or
Timer Goes Off
System Updates
 Event driven programming
 Everything happens in response
to an event
 Events come from two
sources:
 The user
 The system
 Events are also called messages
 An event causes a message to be
sent…
User Events
 The OS manages user input
 Interrupts at the hardware level …
 Get converted into events in queues at the windowing level …
 Are made available to your program
 It is generally up to the application to make use of the
event stream
 Windowing system / Game Framework may abstract the
events for you
Polling for Events
while ( true )
if ( e = checkEvent() )
switch ( e.type )
…
do more work
 Most windowing systems provide a non-blocking event
function
 Does not wait for an event, just returns NULL if one is not ready
 What type of games might use this structure?
 Why wouldn’t you always use it?
Waiting for Events
e = nextEvent();
switch ( e.type )
…
 Most windowing systems provide a blocking event
function
 Waits (blocks) until an event is available
 Usually used with timer events. Why?
 On what systems is this better than the previous method?
 What types of games is it useful for?
The Callback Abstraction
 A common event abstraction is the callback mechanism
 Applications register functions they wish to have called
in response to particular events
 Translation table says which callbacks go with which events
 Generally found in GUI (graphical user interface)
toolkits
 “When the button is pressed, invoke the callback”
 Many systems mix methods, or have a catch-all callback for
unclaimed events
 Why are callbacks good? Why are they bad?
Upon Receiving an Event …
 Event responses fall into two classes:
 Task events: The event sparks a specific task or results in some
change of state within the current mode
 eg Load, Save, Pick up a weapon, turn on the lights, …
 Call a function to do the job
 Mode switches: The event causes the game to shift to some
other mode of operation
 eg Start game, quit, go to menu, …
 Switch event loops, because events now have different meanings
 Software structure reflects this - menu system is separate
from run-time game system, for example
Real-Time Loop
 At the core of interactive games is a real-time loop:
while ( true )
process events
update animation / scene
render
 What else might you need to do?
 The number of times this loop executes per second is the
frame rate
 # frames per second (fps)
Lag
 Lag is the time between when a user does something and
when they see the result - also called latency
 Too much lag and causality is distorted
 With tight visual/motion coupling, too much lag makes people
motion sick
 Big problem with head-mounted displays for virtual reality
 Too much lag makes it hard to target objects (and track them,
and do all sorts of other perceptual tasks)
 High variance in lag also makes interaction difficult
 Users can adjust to constant lag, but not variable lag
 From a psychological perspective, lag is the important
variable
Computing Lag
Process input
Frame
time
Update state
Render
Process input
Update state
Render
Process input
Event
time
 Lag is NOT the time it takes
to compute 1 frame!
 What is the formula for
maximum lag as a function of
Lag
frame rate, fr?
 What is the formula for
average lag?
2
fr
1 .5
lag average 
fr
lag max 
Frame Rate Questions
 What is an acceptable frame rate for twitch games? Why?
 What is the maximum useful frame rate? Why?
 What is the frame rate for NTSC television?
 What is the minimum frame rate required for a sense of
presence? How do we know?
 How can we manipulate the frame rate?
Frame Rate Answers (I)
 Twitch games demand at least 30fs, but the higher the
better (lower lag)
 Users see enemy’s motions sooner
 Higher frame rates make targeting easier
 The maximum useful frame rate is the monitor refresh
rate
 Time taken for the monitor to draw one screen
 Synchronization issues
 Buffer swap in graphics is timed with vertical sweep, so ideal frame rate is
monitor refresh rate
 Can turn of synchronization, but get nasty artifacts on screen
Frame Rate Answers (II)
 NTSC television draws all the odd lines of the screen,
then all the even ones (interlace format)
 Full screen takes 1/30th of a second
 Use 60fps to improve visuals, but only half of each frame
actually gets drawn by the screen
 Do consoles only render 1/2 screen each time?
 It was once argued that 10fps was required for a sense of
presence (being there)
 Head mounted displays require 20fps or higher to avoid illness
 Many factors influence the sense of presence
 Perceptual studies indicate what frame rates are acceptable
Reducing Lag
 Faster algorithms and hardware is the obvious answer
 Designers choose a frame rate and put as much into the
game as they can without going below the threshold
 Part of design documents presented to the publisher
 Threshold assumes fastest hardware and all game features turned on
 Options given to players to reduce game features and improve their
frame rate
 There is a resource budget: How much of the loop is
dedicated to each aspect of the game (graphics, AI, sound, …)
 Some other techniques allow for more features and less lag
Decoupling Computation
 It is most important to minimize lag between the user actions and
their direct consequences
 So the input/rendering loop must have low latency
 Lag between actions and other consequences may be less severe
 Time between input and the reaction of enemy can be greater
 Time to switch animations can be greater
 Technique: Update different parts of the game at different rates,
which requires decoupling them
 For example, run graphics at 60fps, AI at 10fps
 Done in Unreal engine, for instance
Animation and Sound
 Animation and sound need not be changed at high
frequency, but they must be updated at high frequency
 For example, switching from walk to run can happen at low
frequency, but joint angles for walking must be updated at every
frame
 Solution is to package multiple frames of animation and
submit them all at once to the renderer
 Good idea anyway, makes animation independent of frame rate
 Sound is offloaded to the sound card