Download CSE 114 – Computer Science I Lecture 1: Introduction

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
CSE
CSE380
380––Computer
ComputerGame
GameProgramming
Programming
Introduction
Introduction
Entropy, by XRG Recursive Gaming, winner of 2007 Stony Brook Gaming Competition
Why study games?
• To get game
development jobs
• Because it is fun
• Because they are
complex
• Because they push the
envelope of computing
technology
• Bottom line:
– games are natural
learning devices
– making games is a great
way to learn other things
To really join the industry
Modern Games are Complex
• Can be very complex
• Technologies used:
–
–
–
–
–
–
–
–
2D & 3D Graphics
Sound & Music
Networking
Artificial Intelligence
Physics Simulation
Parallel Processing
Custom scripting languages
Etc.
• All of it must be implemented efficiently
Pong by Atari, released to public 1975
Battlefield 3 by Electronic Arts/DICE
Blizzard’s World of Warcraft
• Over 10,000,000 subscribers
– thousands play simultaneously
– players in countries around the world
• Requires:
– Rich graphical environment
– Complex networking
– Semi-nude dancing
• Needs an army to make it. And:
– maintain
– update
– count profits
The Development Team/Army
Programmers
Designers
Artists
Audio
Engineers
Producers
The Modern Game Programmer
• Is often more of a tools programmer
– what tools?
– tools for game designers, artists, & other programmers
• Often works with very specific technologies
– AI programmer, physics programmer, graphics
programmer, etc.
• Often has very specific skills
– advice: find your niche
What is this course about?
• Syllabus says:
– “An introduction to the fundamental concepts of
computer game programming. Students design and
develop original games for PCs applying proven game
design and software engineering principles.”
Course Objectives
• Integrate technologies such as multimedia,
artificial intelligence, and physics modeling
into a cohesive, interactive game application.
• Introduce the principles of game design that
make for a playable experience.
• Learn and use software engineering, team
project
management,
and
prototype
presentation principles in a game development
context.
Course Topics
•
•
•
•
•
•
•
•
•
•
•
Game program architecture
Game Timing
GUI programming for games
Tile-based graphics
Page & side scrolling
algorithms
Sprites & bitmap animation
Collision detection
Physics-based modeling
Artificial Intelligence in
games
Pathfinding Algorithms
Render Threading
•
•
•
•
•
•
•
•
•
•
Optimization techniques
Game input devices
Sound & Music
Differing game types, modes,
& perspectives
Game & level design
Rapid Prototyping & game
testing
Game project management
Game design documentation
Gaming industry issues
Computer game history
Course Textbook
Game Engine Architecture
by Jason Gregory
Published by A K Peters, 2009
ISBN 978-1568814131
Course Textbook
Real-Time Collision Detection
by Christer Ericson
Published by Morgan Kaufmann, 2005
ISBN 978-1558607323
Reference Textbooks
Rules of Play: Game Design Fundamentals
by Katie Salen and Eric Zimmerman
Published by MIT Press, 2003
ISBN 0-262-24045-9
Best of Game Programming Gems
by Mark DeLoura
Published by Course Technology, 2008
ISBN 1-58450-571-0
C++ Primer Plus, 5th Edition
by Stephen Prata
Published by Sams, 2004
ISBN 0672326973
What course work is involved?
• Individual Programming HWs
– Implement important algorithms
– collisions, pathfinding, scrolling, etc
• Midterm Exam
– test concepts from individual assignments
What course work is involved? (continued)
• Final Group Project & Presentation
– design and develop completely original games
– can be serious games
– games intended to educate in some way
• Group Project Benchmarks
» will have additional technical requirements
– much greater expectations
Serious Games
• Does not mean it:
– is boring
– teaches in the tradition sense
– is a tutorial
• It does mean that it:
– is a game
– should entertain
– should get the player thinking about something other
than the raw gameplay
– should try to enrich the player’s understanding of some
subject
An Example: Typist
And your games?
• Potential sources for game subjects:
– courses you have taken at Stony Brook
• Computer Science?
– your hobbies
– your personal interests
• Why do this?
– make a game that no one who has ever lived has made before
– make a game that no sensible company would ever make
• Enter it in the IGF Student Division
– http://www.igf.com/php-bin/entries2010_student.php
11th Annual Stony Brook University
Game Programming Competition
• Friday, 5/16, 5pm-8pm
• Invited projects are presented to game industry
representatives
– past Judges From:
• Activision, Applied Visions, Atari, Gamelab, Gameloft,
Microsoft, Powerhead Games
• http://www.cs.stonybrook.edu/~games
Project HWs Platforms
• Languages/Libraries
– C/C++
– Windows
– DirectX SDK
• Visual Studio 2012/2013 IDE
– free from Stony Brook DreamSpark portal
And the Group Project?
• We’ll add a couple of technologies
– Box2D Physics Engine
– Lua Scripting Language
C/C++
• C++ is almost the industry standard
• Why would programmers still use C?
• Why not Java, C#, Objective C, or Python?
• C++ Boot Camp
– This Friday, 1/31, 3pm – 6:30pm in CS 2129
– Not mandatory, but highly recommended
Windows Game Development
• PC vs. Console:
– expense
– processing power
– development difficulty
• full-screen developers learn to hate ALT-TAB
• API:
– http://msdn2.microsoft.com/en-us/library/aa139672.aspx
DirectX SDK (June 2010 release or later)
• A low-level library for making games
• What can it do for a 2D game?
– manipulate the graphics card
• efficiently render an image to the screen
• efficiently render text
– efficiently play a sound or music
• Download SDK:
– http://msdn.microsoft.com/en-us/directx/default.aspx
• API (ASAP get used to this Web site structure):
– http://msdn.microsoft.com/en-us/library/windows/desktop/ee663275%28v=vs.85%29.aspx
• DirectX API now part of Windows API
Early Advice
1. Learn C++ ASAP – and I mean really learn it
–
More on the C++ Boot Camp in a minute
2. Learn to use Visual Studio ASAP, including running
projects using DirectX (I’ll give sample code)
3. Think about your original game/team early on
4. Cancel your WOW account immediately
Accounts
• Windows Lab account, where you will work on
your projects
– http://www.cs.sunysb.edu/facilities/windowslab/
AN IMPORTANT NOTE ON ACADEMIC DISHONESTY
• All work you submit for homework, projects, or
exams MUST be your own work.
• If you cheat or aid someone in cheating, you will
automatically fail this course and be brought up on
charges of academic dishonesty without warning.
• NO EXCEPTIONS WILL BE MADE!
Where do we start? Documentation
• Always design first
– design your game
• design doc
– design your art
• storyboard
– design your code
• UML
Game Development as a Process
User Help
Document
Gameplay & Setup
files: .xls, .csv,
xml
Game Design
Document
UML
Design Docs
Storyboard
Game
C++ Source Code
Resource Files:
.ICO .BMP, etc.
Art Assets:
.DDS, .WAV, etc.
Game Development LOG
Bug Database
.EXE
Program
Why 2D Games?
• Avoid 3D Artwork Obstacles
• Many topics are relevant to both 2D & 3D games
• NOTE:
– we will still have to implement our games efficiently
What is a 2D game graphically speaking?
• Basically 2 things:
– Texture rendering (images)
– Text rendering
• Rendering textures & text is easy
• Efficiently managing the data of the game is not