CSE 114 – Computer Science I Lecture 1: Introduction

Download Report

Transcript CSE 114 – Computer Science I Lecture 1: Introduction

CSE 380 – Computer Game Programming
Game Project Management
Tennis for Two, the first game console, Brookhaven National Labs, 1947
Selling Game Ideas?
• Game concepts & designs are not easily copyrighted
• Want to start your own game development company?
– you need a publisher
• Convincing a publisher your game idea is worth an
investment is hard
• For publisher:
– game idea must be good
– publisher must have confidence in your ability to implement it
• here, your design & development skills will be tested
• as importantly, your project management skills will be tested
• Welcome to the world of Indy game development
Game Project Management
• Define the problem
• Define objectives, strategies, expectations, scope
• Picking the right solutions to complete the project
– the right people
• Artists, designers, level designers, programmers, managers, etc …
– the right tools
•
•
•
•
IDE (w/ Profiler, Version control system, etc …)
Game Engine(s)
Middleware
Hardware
• Scheduling
• Following up on progress
Project Web Pages
• An excellent way to coordinate efforts (for games or
otherwise)
–
–
–
–
display meeting minutes, decisions, & action items for all to see
make sure action items are carried out
post latest program versions
post bug info
• Private access to technical details
– more relevant outside academia
• Lets managers easily monitor progress of project &
schedule
– post meeting minutes, action plans, design documentation,
demos, etc …
• Helps bring identity to a team
• If you can afford it, there’s project management software
– Ex: Microsoft project
Group Project Teams
• For each team:
–
–
–
–
Team name
Team logo
Game name
Web site for project
• Post your URL on Blackboard
– Forum name: “Post your Group Project URL here”
A note on your final projects
•
•
•
•
They must be games
They must have some depth to them
They should be bug-free
They should have installers
– we’ll do this in class later this semester
• They should be original
– original artwork, sound, and hopefully gameplay
– take chances, but know what you’re getting into
A note on grading of final projects
• You’ll give 20 minute presentations on Monday,
5/7
• The grader (me) will give you and your game the
3rd degree (somewhat harsh)
– not to be mean, but to make you feel like you’re in the
real world
• First question: What makes it fun to play?
Final Project Benchmarks
•
•
•
•
•
•
We’ll be moving fast
3/30 – Design Doc, Storyboards, & GUI
4/13 – Box2D & Lua
4/27 – Sound, Music, & AI
5/7 – Final Game Presentations
5/11 – Game Programming Competition
– Wang Center, 5pm
What is version control?
• A.k.a.
– revision control
– code control
– source code management
• A system for managing changes to files
– a Version Control System (VCS)
Who cares?
• Software engineers do
• A VCS is essential to any team development
– think large, fast-changing projects with many authors
• Think of it as a file database
Types of VCSs
• Revision Control System (RCS)
– dead as a stand-alone system
• Concurrent Versioning System (CVS)
– dying, but still heavily used
– built on top of RCS
• Subversion (SVN)
– killing CVS
– open source under the Apache license
– http://subversion.apache.org/
Version Control Options
• Tortoise SVN
– available in TransLab
– GNU license
– even has some third party plugins for integration with
Visual Studio
– TransLab FAQ Page:
• How do I set up a personal SVN repository to use without
a server?
– http://www.translab.cs.sunysb.edu/faq.html#36
• How about a remote, shared SVN repository?
– Request one: email rt[AT]cs[DOT]sunysb[DOT]edu
Project Planning
• Define the problem
• Define objectives, strategies, expectations, scope
• For games:
–
–
–
–
Game proposal
Game design docs
Storyboards
Working demo of technologies (pre-prototype)
RESOURCE
Lead Programmer
Assistant Programmer
Program Testing
Producer
Designer
3D Artist
Level Designer
Animator
2D Artist
Business Manager
Accounting
Legal
3D ENGINE LICENSE
Sound FX
Music
6 PC Workstations
3D Studio Max
3000 x 3
Photoshop
500 x 3
Office Equipment
Rent
TOTAL
COST
7000 x 24
3000 x 24
12000
10000 x 24
3000 x 24
3500 x 24
3500 x 24
1500 x 24
1500 x 24
5000 x 24
10000
5000
4000 x 6
9000
1500
1300 x 24
TOTAL
168000
96000
12000
240000
96000
84000
84000
36000
36000
120000
6000
5000
50000
10000
5000
24000
9000
1500
24000
31200
$1,137,700.00
What’s a game engine?
• The core software component of modern games
• Typically handles rendering
• May also handle AI, physics (including collision
detection), etc.
• Evolved from 1990s FPS (Doom, Quake)
– Developers would license the core portions of the
software and developed their own game content
– Can a game engine be overused from a player’s
perspective?
Quake3 & Unreal
•
•
•
•
Designed with a plan to license the game engine
Game engine & content were developed separately
Has proven to be profitable for some
FPS Engines rule
– emphasis on visual detail, animations, lots of graphics
processing, knowing what not to draw can be important
(ex: BSP culling)
• Real-time Strategy Game Engines
– Must display a large number of objects at once, objects
shown at lower resolution than FPS, fixed aerial
viewpoint
What is middleware?
• Software agents acting as an intermediary between
different application components
– used most often to support complex, distributed
applications
– of course, not specific to games
– As games rapidly increase in complexity, middleware
is becoming more an more important
– part Game Engine, part assembler of game components
• Among the many:
– AI Middleware – SimBionic
http://www.simbionic.com/
– Trees – SpeedTree http://www.idvinc.com/
Additional Game Development Objective
• Building flexible systems, configurable by others (nonprogrammers)
– For Game Engines/Middleware:
• configurable by programmers (low-level & otherwise)
• configurable by scripting
– For everyone, configurable by:
• artists – plug-in content
• game/level designers
– control, change, and test gameplay interactions via a GUI, spreadsheet, …
– easy game prototyping – important for reducing lead times
– game units – particularly important for RTS
» http://aom.heavengames.com/gameinfo/tables/units/greek
• AI designers
– character properties, objectives, possible states
• Is your game easily MODable?
Scheduling
• Interview, separately and in groups, the team members to
assess their needs and opinions on your first pass at the
schedule
• Start your schedule by breaking out the tasks that have to
be done
– If your programmers will be using an existing engine and set of
editing tools, then that will decrease your development time
•
•
•
•
What must be done?
Who will do it?
What resources are needed to do the job?
When must it be done?
WBS
•
•
With a Work Breakdown Structure (WBS), you take a
complex task and break it down into smaller tasks
(sound familiar)
You keep breaking the tasks down until you can
estimate how long each task will take
For example: Creating a menu screen
1.
Menu Screen
•
I.
II.
III.
2.
Option Buttons
I.
3.
4.
Background Image
Collect screenshots, photographs, digital images, scans
Lay out initial background
Choose or create font
Color Scheme
Programmed Response
Slippage
• What if a team member fails to complete a task or is late
in completing it?
– critical vs. non-critical
• To prevent this, have brief regularly scheduled status
meetings
–
–
–
–
–
–
bring everyone up to speed on the status of each other's work
air grievances
decide to work more hours
decide to see your family less
decide no more late night DDR
have your spouses get together and threaten to sue your
employer
• http://www.ectnews.com/story/38451.html
Testing
• Game testing is particularly important
• Different criteria than other software
– Are there any bugs?
• Can I go through walls or other objects, etc …
• Bug databases
– Is it fun to play?
• monitor player frustration, progress and enjoyment
– Feedback to game developers – common source of
crunch-time extensions
• Testing tools (test harnesses) can help streamline
the testing process
Bug Database
• a.k.a Defect Tracking System
• Ex: http://www.bugzilla.org/
– free & open source
• What does Bugzilla do?
–
–
–
–
Track bugs and code changes
Communicate with teammates
Submit and review patches
Manage quality assurance (QA)
• Launch Pad
Making a Demo
•
What’s a Demo?
–
–
•
Note: For your final project presentation, you will not be
required to make a demo
instead you will actually play the game and demonstrate it’s
capabilities
How might you make a demo? Two options:
– Record your own gameplay
•
–
Traditional technique
Write your own AI player to simulate gameplay
•
Difficult to implement in certain games such that it generates interesting
behavior
Prerecorded Demos
• Record the states of all the input devices each cycle as you create
the demo
– Write the data to a file
– Play back the demo as though it were the input of the game
– Costly alternative: win Mario 3 in 11 minutes (how did he do that?)
• http://www.youtube.com/watch?v=sTNpC6lYYrs
• The idea is that the game doesn’t know whether the input is from
the input device or from a file
• For this to work, your game must be deterministic
– If you play the game again and do the exact same things, the game creatures
will do the exact same things
– This means you must also record the initial random number seed
• Sample the input at each frame, ex file:
Initial State Information
Frame 1: Input Values
Frame 2: Input Values
…
Frame N: Input Values
AI-Controlled Demos
• Main character is an AI bot, just like one of the AI
creatures in the game
• Problems, the AI bot might:
– be difficult to implement
– not show off what you want it to
– go where you want it to
• Benefits:
– Each time it runs, the demo will be different
– “Attract mode” of the game won’t be so boring
• Give your main character bot some goals:
– Find the end of a maze
– Kill everything in sight
Game Video
• For game programming competition
• Teams required to make YouTube-ready video
– Highlight game and gameplay
Strategies for Saving the Game
• Saving a game means recording the state of every
single variable & every single object in the game
• You must record all environmental & character
variables in a file
• To load game, read back in all data and load your
data structures & objects
• Advice:
– If you need to use this, plan to have game saving from
the start
• Difficult to implement down the road of development
• Teach each object how to write & read its own state – an
OOP approach
Deploying a Windows Application
• We want to allow others to download and install
our applications
• In Windows, Visual Studio makes it easy:
– http://msdn2.microsoft.com/en-us/library/k3bb4tfd(VS.80).aspx
References
• http://www.gamasutra.com/features/20010504/ahearn_01.htm
• http://www.gamasutra.com/features/19990205/homepage_01.htm
• http://www.wikipedia.com