29
Games Fundamentals Introduction Jarek Francik Kingston University 2 February 2007 1 February 2008 6 February 2009 5 February 2010 4 February 2011

Games Fundamentals Introduction Jarek Francik Kingston University 2 February 2007 1 February 2008 6 February 2009 5 February 2010 4 February 2011

Embed Size (px)

Citation preview

Games FundamentalsIntroduction

Jarek FrancikKingston University

2 February 2007

1 February 2008

6 February 2009

5 February 2010

4 February 2011

Outline…

Facts Games Fundamentals – what is it about? Why not Flash? Why C++? Why Mathematics? Why Physics? Outline Helicopter

Facts

Dr Jaroslaw (Jarek) Francik – [email protected]: SB 318office hours: Thu 2 – 3, Fri 10-11

Dr Vasilis [email protected] office: SB 106office hours: t.b.a.

Helpers:Mr. Ali AlinejadMr. Joshua Mee Mr. Alex RobsinsonMr. Jan Wilk

Facts

Lectures & Workshops: Fri 12 – 4 pm SB 124/127

2 hrs lecture + 2 hrs workshop, flexible1 hour lunch break in the middle

Games Fundamentals

Essential background in applied mathematics... ...and physics for Games Developers

Strong focus on practical engineering aspects Taught by example:

real problems typically encountered during games development process

Module Goals, Learning Outcomes, Indicative Curriculum see Module Guide...

Core Text

Wendy Stahler, Fundamentals of Math and Physics for Game Programmers, Pearson Prentice Hall 2006

Core Text

Michael Dawson, Beginning C++ through game programming, Cengage Learning 2010

Supplementary Reading: Mathematics John Flynt and Boris Meltreger, Beginning Math Concepts

for Game Developers, Thomson Course Technology 2006.

Christopher Tremblay, Mathematics for Game Developers, Thomson Course Technology 2004

James M. Van Verth, Lars M. Bishop, Essential Mathematics for Games & Interactive Applications. A Programmer’s Guide, Morgan Kaufmann, 2004

Supplementary Reading: Physics Ian Millington, Game Physics Engine Development: How to

Build a Robust Commercial-Grade Physics Engine for your Game. 2nd edition, Morgan Kaufmann 2010.

David M. Bourg, Physics for Game Developers, O’Reilly 2002

David H. Eberly, Game Physcis, Morgan Kaufmann, 2004

Supplementary Reading: Programming Erik Yuzwa, François D. Laramée, Learn C++ by Making

Games. Charles River Media 2007

Bjarne Stroustrup, The C++ Programming Language (any edition).

Assessment

coursework 50%

examination 50%

Why not Flash?

Flash is excellent for small games Flash is good for Internet games

No serious big game is written in Flash Large-scale project need professional

approach to programming, not just a scripting C++ Java

Games in Java? Java in Games? Java is too slow for games programming Java has memory leaks Java is too high-level Java application instalation is a nightmare Java isn’t supported on games consoles No one uses Java to write real games Sun isn’t interested in supporting Java gaming

Games in Java? Java in Games? Java is too slow for games programming Java has memory leaks Java is too high-level Java application instalation is a nightmare Java isn’t supported on games consoles No one uses Java to write real games Sun isn’t interested in supporting Java gaming

MYTHS

Games in Java? Java in Games? Java is too slow for games programming

True in 1996. JDK 1.0 was 20 – 40 times slower than C++ J2SE 5.0 is typically 1.1 times slower Bottleneck is somewhere else (3D hardware, the net)

Java has memory leaks Java is too high-level Java application instalation is a nightmare Java isn’t supported on games consoles

Games in Java? Java in Games? Java is too slow for games programming Java has memory leaks

garbage collection

Java is too high-level Java application instalation is a nightmare Java isn’t supported on games consoles No one uses Java to write real games Sun isn’t interested in supporting Java gaming

Games in Java? Java in Games? Java is too slow for games programming Java has memory leaks Java is too high-level

J2SE 1.4: full-screen exclusive mode (FSEM) JNI: Java Native Interface JInput: Game Controller API until DOOM it was C/C++ what was considered too high level

Java application instalation is a nightmare Java isn’t supported on games consoles

Games in Java? Java in Games? Java is too slow for games programming Java has memory leaks Java is too high-level Java application instalation is a nightmare

just use a good installation software (install4j) code bloat (eg. JRE = 15 MB) but...

which of modern games is less than, say, 600MB? Java isn’t supported on games consoles No one uses Java to write real games

Games in Java? Java in Games? Java is too slow for games programming Java has memory leaks Java is too high-level Java application instalation is a nightmare Java isn’t supported on games consoles

well, this one is (still) true... rumours on porting JVM to PS2 – nothing released

No one uses Java to write real games Sun isn’t interested in supporting Java gaming

Games in Java? Java in Games? Java is too slow for games programming Java has memory leaks Java is too high-level Java application instalation is a nightmare Java isn’t supported on games consoles No one uses Java to write real games Sun isn’t interested in supporting Java gaming

Puzzle Pirates

Chrome

Law and Order II

Kingdom of Wars

Alien Flux

Runescape

Star Wars Galaxies

Games in Java? Java in Games? Java is too slow for games programming Java has memory leaks Java is too high-level Java application instalation is a nightmare Java isn’t supported on games consoles No one uses Java to write real games Sun isn’t interested in supporting Java gaming

MOBILE GAMES

Games in Java? Java in Games? Java isn’t supported on games consoles No one uses Java to write real games Sun isn’t interested in supporting Java gaming

full-scren mode faster I/O, memory mapping nanosecond timers (v. 5.0) Java 3D Java Media Framework Java Communications API Java Games Profile

Why not C++?

Java is better for education CISM policy

anyway you are strongly advised to learn C++

which is widely used in industry

1. C++

2. On-line Games

3. Java

Why not C++?

Java is better for education CISM policy

anyway you are strongly advised to learn C++

which is widely used in industry

1. C++

2. On-line Games

3. Java

fortunately, I don’t have to answer this question now...

Why Mathematics?

Geometry – a tool for drawing graphical elements in 2D and 3D

Calculations make the player experience more life-like

eg. rules of perspective

3D animation

Why Physics?

fall down accelerate hit go

throw break fly

ride rotate dig

swim shoot

aim strike bounce

drive catch

explode reflect jump

run kick sail

Outline

1. Introductory Lecture (this one)

2. C++ Basics: Introducing Your Game Engine

3. Maths Basics

4. Thales Theorem and Perspective in 3D

5. Roll and Fall: Playing with the Laws of Motion

6. Collisions, Momentum and Energy

7. Resistance and Mechanics of Cars

8. Explosions

9. Physics Engine

10. Physics of Rotational Motion

Demo: Applying Physics to Helicopter