entropy, by xrg recursive gaming, winner of 2007 stony brook gaming competition cse 380 – computer...

33
Entropy, by XRG Recursive Gaming, winner of 2007 Stony Brook Gaming Competition CSE 380 – Computer Game Programming Introduction CSE 380 – Computer Game Programming Introduction

Upload: cecil-harris

Post on 18-Dec-2015

216 views

Category:

Documents


3 download

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

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

Designers

Artists

Audio

EngineersProducers

Programmers

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

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 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

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