cs 425 game programming i jan m. allbeck. outline introductions expectations tools and setup ...
TRANSCRIPT
CS 425 Game Programming I
Jan M. Allbeck
Outline Introductions Expectations Tools and setup Quick introduction to C++ and Visual Studio What are event loops? Dark GDK tutorials
04/21/232
Introductions
04/21/233
Jan New Assistant Professor in CS at GMU From University of Pennsylvania (not Penn State) Background in computer graphics and animation Help develop game concentration Most enjoy racing games [email protected] http://cs.gmu.edu/~jallbeck/ Office hours: Wed. 3:30-5:30pm in ENGR 5324
Ok?
Introductions
04/21/234
You? Have some programming experience! Know C++? Know SVN? Know how to build a game? Took cs325?
What is your name? Favorite types of games? What do you want from this class? What kind of job do you want when you graduate?
Expectations
04/21/235
Learn a new language Gain experience
Object oriented design Using existing libraries Building largish software system Working in groups Working with someone else’s code
Learn software version management Create segment for demo reel Hear from real game developers Class participation
04/21/236
4 classes will be held else where: Oct. 6th
Nov. 10th
Nov. 17th
Nov. 24th
Robinson 203B? Assessment
Final Working game
Demo of last year’s game
04/21/237
What sort of game would you like to build?
04/21/238
Feasible Reasonable assets Reasonable algorithms Fun
What do you need to build a video game?
04/21/239
Assets Environment Objects or models including characters Animations
Code Graphics Loaders Animation playback Controllers Collision detection and response Cameras Lights
Version control
Tools
04/21/2310
Dark GDK SVN Google code
Everyone needs an account Blackboard?
Dark GDK
04/21/2311
http://gdk.thegamecreators.com/ Free game development environment Harness the power and performance of C++
Dark GDK features
04/21/2312
Works with Microsoft Visual C++ 2008 Express 6 2D Image Formats Supported 5 3D Object File Formats Supported Bone Based Animations Binary Space Partitioning (BSP) Support Polygon Collision and Response Environment Mapping Automatic Camera and Camera to Object
Orientation Commands Create, Position and Color Lights Build, Texture and Map Landscapes
Dark GDK Demos
04/21/2313
SVN
04/21/2314
http://subversion.tigris.org/ Subversion is an open source version control
system. Change management system CVS? Tortoise
http://tortoisesvn.tigris.org/ A Subversion client, implemented as a windows
shell extension. Not an integration for a specific IDE
Google code
04/21/2315
http://code.google.com/p/cs425-fall-2009/ Everyone will need a Google account
Email me your google user name Open source Project info Downloads Wiki Issues SVN
Moving on to C++
04/21/2316
Introduction to VS and C++ Show how to get around VS Show a bit of the C++ syntax Talk briefly about header files and source files
and libraries Lie to you Resources on wiki Provide you with an example to work from Get familiar with the lingo
Live VS Demo
04/21/2318
Types of Errors Syntax/compiler Linker Run-time Logic
Tips Don’t be afraid to fail. Redesign. Break it apart: data and methodology. Think and draw things. Talk it out with your teddy bear or action figure. Compile as you go. Iterative programming. Try and try again. Never really
done. Experience is key. Test, test, test. Things are going to build on top of each other. Powerful. There is more than one way to do things and there
isn’t necessarily a right way.
Informal Software Engineering Concepts Ease of programming Simplicity Elegancy Space vs. Speed Reusable and understandable Robustness and expandability Portability (OSX, WinXP, etc) Philosophies and standard practices
Moving on to Event based Programming
04/21/2322
Synchronous Programs
Program WAITS for reads and writes to complete before continuing
Do stuff Read Write Do stuff Write … End
Asynchronous Programs – User Interaction
Interactive program runs in an infinite loop! Program flow is created by events:
User actions (interactive devices) Program actions (redraw) Operating system actions (quit)
while (not done) { event = system.GetEvent(); ProcessEvent(event); UpdateDisplay(); }
Dark GDK Hello Word! Demo
You didn’t really think you were going to make it through a computer programming class without a
“hello world” example?
04/21/2325