entropy, by xrg recursive gaming, winner of 2007 stony brook gaming competition cse 380 – computer...
TRANSCRIPT
Entropy, by XRG Recursive Gaming, winner of 2007 Stony Brook Gaming Competition
CSE 380 – Computer Game ProgrammingIntroduction
CSE 380 – Computer Game ProgrammingIntroduction
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
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
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 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 Architectureby Jason GregoryPublished by A K Peters, 2009ISBN 978-1568814131
Course Textbook
Real-Time Collision Detectionby Christer EricsonPublished by Morgan Kaufmann, 2005ISBN 978-1558607323
Reference Textbooks
Rules of Play: Game Design Fundamentalsby Katie Salen and Eric ZimmermanPublished by MIT Press, 2003ISBN 0-262-24045-9
Best of Game Programming Gemsby Mark DeLouraPublished by Course Technology, 2008ISBN 1-58450-571-0
C++ Primer Plus, 5th Editionby Stephen PrataPublished by Sams, 2004ISBN 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
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 UniversityGame 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
Game Design Document
Storyboard
UMLDesign Docs
C++ Source Code
User Help Document
.EXE ProgramResource Files:
.ICO .BMP, etc.
Game Development LOG
Bug Database
Gameplay & Setup files: .xls, .csv,
xml
Game
Art Assets:.DDS, .WAV, etc.
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