csce 590e spring 2007 game design ii by jijun tang
TRANSCRIPT
![Page 1: CSCE 590E Spring 2007 Game Design II By Jijun Tang](https://reader035.vdocuments.mx/reader035/viewer/2022062421/56649cc25503460f9498a8f7/html5/thumbnails/1.jpg)
CSCE 590E Spring 2007
Game Design II
By Jijun Tang
![Page 2: CSCE 590E Spring 2007 Game Design II By Jijun Tang](https://reader035.vdocuments.mx/reader035/viewer/2022062421/56649cc25503460f9498a8f7/html5/thumbnails/2.jpg)
Announcements
We will meet in 2A21 on Wednesday Please bring laptops on Wednesday Please install Adobe Flash 8.0
professional trial version Think about group name and log
![Page 3: CSCE 590E Spring 2007 Game Design II By Jijun Tang](https://reader035.vdocuments.mx/reader035/viewer/2022062421/56649cc25503460f9498a8f7/html5/thumbnails/3.jpg)
Design of Everyday Things
Norman’s five principles of design Visibility
Making the parts visible Mappings
Understandable relationships between controls and actions
Affordances The perceived uses of an object
Constraints Prevent the user from doing things they shouldn’t
Feedback Reporting what has been done and accomplished
![Page 4: CSCE 590E Spring 2007 Game Design II By Jijun Tang](https://reader035.vdocuments.mx/reader035/viewer/2022062421/56649cc25503460f9498a8f7/html5/thumbnails/4.jpg)
System Components
Objects Pieces of a system
Attributes Properties determining what objects are
Behaviors Actions the objects can perform
Relationships How the behavior and attributes of objects affect
each other while the system operates
![Page 5: CSCE 590E Spring 2007 Game Design II By Jijun Tang](https://reader035.vdocuments.mx/reader035/viewer/2022062421/56649cc25503460f9498a8f7/html5/thumbnails/5.jpg)
Positive Feedback
Amplify changes Leads to runaway behavior Difficult to make use of
From Bob Craig
![Page 6: CSCE 590E Spring 2007 Game Design II By Jijun Tang](https://reader035.vdocuments.mx/reader035/viewer/2022062421/56649cc25503460f9498a8f7/html5/thumbnails/6.jpg)
Negative feedback
Counteracts changes Leads to goal seeking behaviors Most common form in systems
From Bob Craig
![Page 7: CSCE 590E Spring 2007 Game Design II By Jijun Tang](https://reader035.vdocuments.mx/reader035/viewer/2022062421/56649cc25503460f9498a8f7/html5/thumbnails/7.jpg)
Game Saves
Save triggers: automatically saved at certain points Disadvantage: Player has little control
Save-anywhere Allow the player to save the state at any point in the game Disadvantage: System needs to save many different
variables, also may make it too easy for the player Save points:
Save only the accumulated points Disadvantage: Rather limited
Coded text saves to save a bit space Do you really want user to save?
![Page 8: CSCE 590E Spring 2007 Game Design II By Jijun Tang](https://reader035.vdocuments.mx/reader035/viewer/2022062421/56649cc25503460f9498a8f7/html5/thumbnails/8.jpg)
Audiences
Target audience Group of expected consumers Age, gender income … What does your audience know? What does your audience demand?
Demographics Study of relevant economic and social statistics
about a given population Demographic variables
The relevant factors
![Page 9: CSCE 590E Spring 2007 Game Design II By Jijun Tang](https://reader035.vdocuments.mx/reader035/viewer/2022062421/56649cc25503460f9498a8f7/html5/thumbnails/9.jpg)
Design Procedure
Waterfall method Development methodology Design and production are broken into phases
Iterative development Practice of producing things incrementally Refining and re-refining the product May iterate many cycles before get it right
![Page 10: CSCE 590E Spring 2007 Game Design II By Jijun Tang](https://reader035.vdocuments.mx/reader035/viewer/2022062421/56649cc25503460f9498a8f7/html5/thumbnails/10.jpg)
Waterfall vs. Iterative
testing
![Page 11: CSCE 590E Spring 2007 Game Design II By Jijun Tang](https://reader035.vdocuments.mx/reader035/viewer/2022062421/56649cc25503460f9498a8f7/html5/thumbnails/11.jpg)
Hats
![Page 12: CSCE 590E Spring 2007 Game Design II By Jijun Tang](https://reader035.vdocuments.mx/reader035/viewer/2022062421/56649cc25503460f9498a8f7/html5/thumbnails/12.jpg)
Programming Teams
In the 1980s programmers developed the whole game (and did the art and sounds too!)
Now programmers write code to support designers and artists (content creators)
![Page 13: CSCE 590E Spring 2007 Game Design II By Jijun Tang](https://reader035.vdocuments.mx/reader035/viewer/2022062421/56649cc25503460f9498a8f7/html5/thumbnails/13.jpg)
A Team Picture
![Page 14: CSCE 590E Spring 2007 Game Design II By Jijun Tang](https://reader035.vdocuments.mx/reader035/viewer/2022062421/56649cc25503460f9498a8f7/html5/thumbnails/14.jpg)
Different Programs
Game code Anything related directly to the game
Game engine Any code that can be reused between
different games Tools
In house tools Plug-ins for off-the-shelf tools
![Page 15: CSCE 590E Spring 2007 Game Design II By Jijun Tang](https://reader035.vdocuments.mx/reader035/viewer/2022062421/56649cc25503460f9498a8f7/html5/thumbnails/15.jpg)
Team Organization
Programmers often have a background in Computer Science or sciences
They usually specialize in some area (AI, graphics, networking) but know about all other areas
Teams usually have a lead programmer They sometimes have a lead for each of
the major areas
![Page 16: CSCE 590E Spring 2007 Game Design II By Jijun Tang](https://reader035.vdocuments.mx/reader035/viewer/2022062421/56649cc25503460f9498a8f7/html5/thumbnails/16.jpg)
Skills and Personalities
Successful teams have a mix of personalities and skills: Experience vs. new ideas Methodical vs. visionary
But hard-working is always the key
![Page 17: CSCE 590E Spring 2007 Game Design II By Jijun Tang](https://reader035.vdocuments.mx/reader035/viewer/2022062421/56649cc25503460f9498a8f7/html5/thumbnails/17.jpg)
Methodologies
A methodology describes the procedures followed during development to create a game
Every company has a methodology (way of doing things), even if they don't explicitly think about it
![Page 18: CSCE 590E Spring 2007 Game Design II By Jijun Tang](https://reader035.vdocuments.mx/reader035/viewer/2022062421/56649cc25503460f9498a8f7/html5/thumbnails/18.jpg)
Methodologies: Code and Fix
Unfortunately very common Little or no planning Always reacting to events Poor quality and unreliability of finished
product “Crunch” time normal
![Page 19: CSCE 590E Spring 2007 Game Design II By Jijun Tang](https://reader035.vdocuments.mx/reader035/viewer/2022062421/56649cc25503460f9498a8f7/html5/thumbnails/19.jpg)
Methodologies: Waterfall
Very well-defined steps in development Lots of planning ahead of time Great for creating a detailed milestone
schedule Doesn't react well to changes Game development is too unpredictable
for this approach
![Page 20: CSCE 590E Spring 2007 Game Design II By Jijun Tang](https://reader035.vdocuments.mx/reader035/viewer/2022062421/56649cc25503460f9498a8f7/html5/thumbnails/20.jpg)
Methodologies: Iterative
Multiple development cycles during a single project Each delivering a new set of functionality
The game could ship at any moment Allows for planning but also for changes
![Page 21: CSCE 590E Spring 2007 Game Design II By Jijun Tang](https://reader035.vdocuments.mx/reader035/viewer/2022062421/56649cc25503460f9498a8f7/html5/thumbnails/21.jpg)
Methodologies: Agile Methods
Deal with the unexpected Very short iterations
2-3 weeks Iterate based on feedback of what was learned
so far Very good visibility of state of game Difficult for publishers or even developers to
adopt because it's relatively new
![Page 22: CSCE 590E Spring 2007 Game Design II By Jijun Tang](https://reader035.vdocuments.mx/reader035/viewer/2022062421/56649cc25503460f9498a8f7/html5/thumbnails/22.jpg)
Make Coding Easier
Version control Coding standards Automated build Code review Unit testing and acceptance testing
![Page 23: CSCE 590E Spring 2007 Game Design II By Jijun Tang](https://reader035.vdocuments.mx/reader035/viewer/2022062421/56649cc25503460f9498a8f7/html5/thumbnails/23.jpg)
Version Control
Recommended to use for team project Version control is
Database with all the files and history. Only way to work properly with a team. Branching and merging can be very useful Used for source code as well as game assets
(text and binary) CVS is one of the most popular tool
![Page 24: CSCE 590E Spring 2007 Game Design II By Jijun Tang](https://reader035.vdocuments.mx/reader035/viewer/2022062421/56649cc25503460f9498a8f7/html5/thumbnails/24.jpg)
Coding standards
Coding standards are Set of coding rules for the whole team to follow Improves readability and maintainability of the code Easier to work with other people's code They vary a lot from place to place
Some simple, some complex Get used to different styles
Sample standards can be found at: http://www.chris-lott.org/resources/cstyle/CppCodingStandard.html
![Page 25: CSCE 590E Spring 2007 Game Design II By Jijun Tang](https://reader035.vdocuments.mx/reader035/viewer/2022062421/56649cc25503460f9498a8f7/html5/thumbnails/25.jpg)
Automated builds
Dedicated build server builds the game from scratch
Takes the source code and creates an executable
Also takes assets and builds them into game-specific format
Build must never break
![Page 26: CSCE 590E Spring 2007 Game Design II By Jijun Tang](https://reader035.vdocuments.mx/reader035/viewer/2022062421/56649cc25503460f9498a8f7/html5/thumbnails/26.jpg)
Quality Control
Code reviews Knowing others will read the code will make coding
more carefully Another programmer reads over some code and
tries to find problems Sometimes done before code is committed to
version control Can be beneficial if done correctly
Follow coding standards, and put comments
![Page 27: CSCE 590E Spring 2007 Game Design II By Jijun Tang](https://reader035.vdocuments.mx/reader035/viewer/2022062421/56649cc25503460f9498a8f7/html5/thumbnails/27.jpg)
Avoid Run-time Errors
Run-time errors are hardest to trace and have the biggest damage
Initialize variables, use tools (Visual .Net is good at this), check boundaries, etc.
Asserts and crashes Use asserts anytime the game could crash or something
could go very wrong An assert is a controlled crash in the debug version Much easier to debug and fix Happens right where the problem occurred Don't use them for things that a user could do
Open a non-existing file Press the wrong button
![Page 28: CSCE 590E Spring 2007 Game Design II By Jijun Tang](https://reader035.vdocuments.mx/reader035/viewer/2022062421/56649cc25503460f9498a8f7/html5/thumbnails/28.jpg)
Testing
Unit tests With very large codebases, it's difficult to
make changes without breaking features Unit tests make sure nothing changes Test very small bits of functionality in
isolation Build them and run them frequently Good test harness is essential
![Page 29: CSCE 590E Spring 2007 Game Design II By Jijun Tang](https://reader035.vdocuments.mx/reader035/viewer/2022062421/56649cc25503460f9498a8f7/html5/thumbnails/29.jpg)
Testing
Acceptance test (or functional tests) High level tests that exercise lots of
functionality They usually run the whole game checking
for specific features Having them automated means they can
run very frequently (with every build)
![Page 30: CSCE 590E Spring 2007 Game Design II By Jijun Tang](https://reader035.vdocuments.mx/reader035/viewer/2022062421/56649cc25503460f9498a8f7/html5/thumbnails/30.jpg)
Bug Report and Trace
Bug database Keep a list of all bugs, a description, their
status, and priority Team uses it to know what to fix next Gives an idea of how far the game is from
shipping Doesn't prevent bugs, just helps fix them
more efficiently
![Page 31: CSCE 590E Spring 2007 Game Design II By Jijun Tang](https://reader035.vdocuments.mx/reader035/viewer/2022062421/56649cc25503460f9498a8f7/html5/thumbnails/31.jpg)
Leveraging Existing Code
A lot of code that games use is the same It's a total waste of time to write it over
and over Instead, spend your time in what's going
to make your game unique Avoid Not Invented Here (NIH)
syndrome!
![Page 32: CSCE 590E Spring 2007 Game Design II By Jijun Tang](https://reader035.vdocuments.mx/reader035/viewer/2022062421/56649cc25503460f9498a8f7/html5/thumbnails/32.jpg)
Leveraging Existing Code
Reuse code from previous project Easier in a large company if you have an
engine and tools group Use freeware code and tools
No support Make sure license allows it
![Page 33: CSCE 590E Spring 2007 Game Design II By Jijun Tang](https://reader035.vdocuments.mx/reader035/viewer/2022062421/56649cc25503460f9498a8f7/html5/thumbnails/33.jpg)
Leveraging Existing Code
Middleware Companies provide with components used
in game development physics, animation, graphics, etc
Commercial game engines You can license the whole engine and tools
and a single package Good if you're doing exactly that type of
game
![Page 34: CSCE 590E Spring 2007 Game Design II By Jijun Tang](https://reader035.vdocuments.mx/reader035/viewer/2022062421/56649cc25503460f9498a8f7/html5/thumbnails/34.jpg)
Platforms
PCs Includes Windows, Linux, and Macs Can have very powerful hardware Easier to patch and allow for user content Need to support a wide range of hardware
and drivers Games need to play nice with other
programs and the operating system
![Page 35: CSCE 590E Spring 2007 Game Design II By Jijun Tang](https://reader035.vdocuments.mx/reader035/viewer/2022062421/56649cc25503460f9498a8f7/html5/thumbnails/35.jpg)
Platforms
Game consoles Current generation
PS2, Xbox, GameCube Fixed set of hardware – never changes Usually use custom APIs – not very mature They have very limited resources Currently much better sales than PC games
(although that changes over time)
![Page 36: CSCE 590E Spring 2007 Game Design II By Jijun Tang](https://reader035.vdocuments.mx/reader035/viewer/2022062421/56649cc25503460f9498a8f7/html5/thumbnails/36.jpg)
Platforms
Handhelds and mobiles Extremely limited hardware (although
rapidly improving) Programming often done in lower-level
languages (C or even assembly) However, DS and PSP in C++
Much smaller projects, teams, and budgets Emerging market
![Page 37: CSCE 590E Spring 2007 Game Design II By Jijun Tang](https://reader035.vdocuments.mx/reader035/viewer/2022062421/56649cc25503460f9498a8f7/html5/thumbnails/37.jpg)
Platforms
Browser and downloadable games Small games – mostly 2D Need to be downloaded quickly Run on the PC itself (on any browser
usually)
![Page 38: CSCE 590E Spring 2007 Game Design II By Jijun Tang](https://reader035.vdocuments.mx/reader035/viewer/2022062421/56649cc25503460f9498a8f7/html5/thumbnails/38.jpg)
Platforms
Multiplatform development The closer the platforms, the easier the
development Use abstraction layers to hide platform-
specific code, especially for GUI Choice:
Target the minimum common denominator for platforms (easy, cheap)
Or do the best you can in each platform (more expensive and time consuming)
![Page 39: CSCE 590E Spring 2007 Game Design II By Jijun Tang](https://reader035.vdocuments.mx/reader035/viewer/2022062421/56649cc25503460f9498a8f7/html5/thumbnails/39.jpg)
Languages
C/C++ Java Script: Flash, Python, LISP, etc. C# XNA for PC and Xbox
![Page 40: CSCE 590E Spring 2007 Game Design II By Jijun Tang](https://reader035.vdocuments.mx/reader035/viewer/2022062421/56649cc25503460f9498a8f7/html5/thumbnails/40.jpg)
C++
C used to be the most popular language for games
Today, C++ is the language of choice for game development
![Page 41: CSCE 590E Spring 2007 Game Design II By Jijun Tang](https://reader035.vdocuments.mx/reader035/viewer/2022062421/56649cc25503460f9498a8f7/html5/thumbnails/41.jpg)
C++: Strengths
Performance Control over low-level functionality (memory
management, etc) Can switch to assembly or C whenever
necessary Good interface with OS, hardware, and
other languages
![Page 42: CSCE 590E Spring 2007 Game Design II By Jijun Tang](https://reader035.vdocuments.mx/reader035/viewer/2022062421/56649cc25503460f9498a8f7/html5/thumbnails/42.jpg)
C++: Strengths
High-level, object-oriented High-level language features are essential
for making today's complex games Has inheritance, polymorphism, templates,
and exceptions Strongly typed, so it has improved reliability
![Page 43: CSCE 590E Spring 2007 Game Design II By Jijun Tang](https://reader035.vdocuments.mx/reader035/viewer/2022062421/56649cc25503460f9498a8f7/html5/thumbnails/43.jpg)
C++: Strengths
C Heritage C++ is the only high-level language that is
backwards-compatible with C Has APIs and compiler support in all
platforms Easier transition for experienced
programmers
![Page 44: CSCE 590E Spring 2007 Game Design II By Jijun Tang](https://reader035.vdocuments.mx/reader035/viewer/2022062421/56649cc25503460f9498a8f7/html5/thumbnails/44.jpg)
C++: Strengths
Libraries STL (Standard Template Library)
Comprehensive set of standard libraries Boost: widely used library with wide variety
of functionality Many commercial C++ libraries also
available
![Page 45: CSCE 590E Spring 2007 Game Design II By Jijun Tang](https://reader035.vdocuments.mx/reader035/viewer/2022062421/56649cc25503460f9498a8f7/html5/thumbnails/45.jpg)
C++: Weaknesses
Too low-level Still forces programmers to deal with low-
level issues Too error-prone Attention to low-level details is overkill for
high-level features or tools
![Page 46: CSCE 590E Spring 2007 Game Design II By Jijun Tang](https://reader035.vdocuments.mx/reader035/viewer/2022062421/56649cc25503460f9498a8f7/html5/thumbnails/46.jpg)
C++: Weaknesses
Too complicated Because of its C heritage, C++ is very
complicated Long learning curve to become competent
with the language
![Page 47: CSCE 590E Spring 2007 Game Design II By Jijun Tang](https://reader035.vdocuments.mx/reader035/viewer/2022062421/56649cc25503460f9498a8f7/html5/thumbnails/47.jpg)
C++: Weaknesses
Lacking features No reflection or introspection features No method of object serialization No native support for message passing
![Page 48: CSCE 590E Spring 2007 Game Design II By Jijun Tang](https://reader035.vdocuments.mx/reader035/viewer/2022062421/56649cc25503460f9498a8f7/html5/thumbnails/48.jpg)
C++: Weaknesses
Slow iteration C++ is fully compiled into binary format
from source code Compiling large numbers of files is very
slow This will only become more of a problem as
games become more complex
![Page 49: CSCE 590E Spring 2007 Game Design II By Jijun Tang](https://reader035.vdocuments.mx/reader035/viewer/2022062421/56649cc25503460f9498a8f7/html5/thumbnails/49.jpg)
C++: When to Use It?
When performance is crucial If your current code base is mostly C and C++ If you have a lot of in-house expertise in C++ Avoid using it for high-level code, such as tools
![Page 50: CSCE 590E Spring 2007 Game Design II By Jijun Tang](https://reader035.vdocuments.mx/reader035/viewer/2022062421/56649cc25503460f9498a8f7/html5/thumbnails/50.jpg)
Java for Game Development
Why use Java? It's a high-level OO language that
simplifies many C++ features Adds several useful high-level features Easy to develop for multiple platforms
because of intermediate bytecode Good library support
![Page 51: CSCE 590E Spring 2007 Game Design II By Jijun Tang](https://reader035.vdocuments.mx/reader035/viewer/2022062421/56649cc25503460f9498a8f7/html5/thumbnails/51.jpg)
Java for Game Development
Performance Has typically been Java's weak point Has improved in the last few years: still not
up to C++ level, but very close Uses Just-In-Time compiling and HotSpot
optimizations Now has high-performance libraries Also has access to native functionality
![Page 52: CSCE 590E Spring 2007 Game Design II By Jijun Tang](https://reader035.vdocuments.mx/reader035/viewer/2022062421/56649cc25503460f9498a8f7/html5/thumbnails/52.jpg)
Java for Game Development
Platforms Well suited to downloadable and browser-
based games Dominates development on mobile and
handheld platforms Possible to use in full PC games
More likely to be embedded into a game Not currently used in consoles
![Page 53: CSCE 590E Spring 2007 Game Design II By Jijun Tang](https://reader035.vdocuments.mx/reader035/viewer/2022062421/56649cc25503460f9498a8f7/html5/thumbnails/53.jpg)
Java in Game Development
Commercial games using Java Downloadable games like those from
PopCap Games: Mummy Maze, etc Online card games PC games using Java as a scripting
language: Vampire: The Masquerade, Star Wars Galaxies
PC games fully written in Java: You Don't Know Jack, Who Wants to Be a Millionaire
![Page 54: CSCE 590E Spring 2007 Game Design II By Jijun Tang](https://reader035.vdocuments.mx/reader035/viewer/2022062421/56649cc25503460f9498a8f7/html5/thumbnails/54.jpg)
Scripting Languages
Why use scripting languages? Ease and speed of development Short iteration time Code becomes a game asset Offer additional features and are
customizable
![Page 55: CSCE 590E Spring 2007 Game Design II By Jijun Tang](https://reader035.vdocuments.mx/reader035/viewer/2022062421/56649cc25503460f9498a8f7/html5/thumbnails/55.jpg)
Scripting Languages
Drawbacks Slow performance Limited tool support Dynamic typing makes it difficult to catch
errors Awkward interface with the rest of the game Difficult to implement well
![Page 56: CSCE 590E Spring 2007 Game Design II By Jijun Tang](https://reader035.vdocuments.mx/reader035/viewer/2022062421/56649cc25503460f9498a8f7/html5/thumbnails/56.jpg)
Scripting Languages
Popular scripting languages Python Lua Other off-the-shelf options such as Ruby,
Perl, Javascript Custom scripting languages
UnrealScript, QuakeC, NWNScript
![Page 57: CSCE 590E Spring 2007 Game Design II By Jijun Tang](https://reader035.vdocuments.mx/reader035/viewer/2022062421/56649cc25503460f9498a8f7/html5/thumbnails/57.jpg)
Scripting Languages
How to choose a scripting language Consider whether you need one at all What features do you need? What kind of performance do you need? What debugging facilities does the language
have? On what platforms does it need to run? What resources and expertise are available?