Title: OpenGL Game
1OpenGL Game
2Motivation
- Learn the basics of game programming
- Experience for future development in a growing
industry - Fun
3Introduction
- Computer Games once used to be considered
children toys. - Now they have grown into a multi-billion dollar
market. - Games have come to be known as one of the more
creative forms of software development. - Game developers are drawn into this industry by
the idea of creating their own virtual world that
people will one day experience.
4Elements of A Game
- Graphics
- Input
- Music and Sound
- Game Logic and Artificial Intelligence
- Networking
- User Interface and Menuing System
5Simplistic Game Architecture
6More Advanced Game Architectural Design
7Enough Small Talk
- API used for system
- OpenGL
- Open Graphics Library interface to graphics
hardware. - SDL
- Simple DirectMedia Layer cross platform
multimedia library designed to provide fast
access to the graphics framebuffer and audio
device. - Milkshape 3D 3D animation modeler
8SDL Architecture
9Concepts Learned from Programming
- Texture mapping
- Loads BMP file via SDL LoadBMP routine
- SDL_Surface imageSDL_LoadBMP(bitmap.bmp)
- If(image!NULL)
- SDL_BlitSurface(image, NULL, screen, NULL)
-
- SDL_UpdateRect(screen,0,0,0,0)
-
- This should create memory space for an image,
load it from a file, and display it onto the
screen - Blit - To copy a large array of bits from one
part of a computer's memory to another part.
10Special Effects Presented
- Particle Systems
- Through clever use of textures and other
properties particle systems can be used to create
effects like fire, smoke explosions, liquid
(water or blood) spraying, snow, star fields,
etc.. - Attributes the particle system possess.
- Position
- Velocity
- Life Span
- Color
11Particle Effect (cont.)
- effect ParticleEffect(
- EXPLOSION, //Type of particle effect
- NONE, //Type of collision detection
- Vector(0.0f, 0.0f, 0.6f), //Gravity vector
50, //How random to spray things out - 0, //How long the effect will last
- 0, //How long in frames before each particle
begins to fade Vector( 5.5f, 5.5f, 0.5f ),
//The origin of the effect - Color( r, g, b ), //The color of the
effect - "Data/Texture/Particle.bmp //What texture
to load - )
12Other special effects
- Billboarding
- Allows a polygon to always face the viewer. As
the player moves at an angle, they will be able
to see the object at an angle. - Collision Detection
- Bounding square technique surrounds a object in
the world along their extreme points. - A collision is registered whenever the distance
between the player and the enemy is less than the
sum of the enemy radius and the player radius.
13Gameplay
- Enemies die when they collide with the player,
dealing damage to the player equal to (250/e),
where e is the initial number of enemies on the
map. - The initial health of the player is 100 and
initial number of enemies is set to 50.
Therefore each collision with the enemy will
cause the player to lose 5 health. Health of the
enemy is set to 0.
14User Interface
Control Actions
W or UP arrow Move forwards
S or BACK arrow Move backwards
A Strafe Left
D Strafe Right
Mouse Left or LEFT arrow Look Left
Mouse Right or RIGHT arrow Look Right
Mouse UP Look Up
Mouse Down Look Down
Enter or space Fire (to be implemented)
Escape Key Kill Application
15SDL implementation for control keys
- if(keysSDLK_UP keysSDLK_w)
- dx (float)(PLAYER_SPEEDcos(aPI180))
- dy (float)(PLAYER_SPEEDsin(aPI180))
-
- if(keysSDLK_DOWN keysSDLK_s)
- dx - (float)(PLAYER_SPEEDcos(aPI180))
- dy - (float)(PLAYER_SPEEDsin(aPI180))
-
- if(keysSDLK_d)
- dx (float)(PLAYER_SPEED0.5fsin(aPI180))
- dy - (float)(PLAYER_SPEED0.5fcos(aPI180))
-
- if(keysSDLK_a)
- dx - (float)(PLAYER_SPEED0.5fsin(aPI180))
- dy (float)(PLAYER_SPEED0.5fcos(aPI180))
-
16How the world was generated
- First, the map is filled with empty tiles, and
the border tiles are made solid. A random point
is then selected, and either a horizontal or
vertical line of walls is drawn across the room,
leaving a open space to navigate to different
rooms. This process is called recursively until
rooms are of an acceptable size.
17Drawing and loading texture to a wall
- glColor3f(1,1,1)
- glBindTexture(GL_TEXTURE_2D, walltex)
- glBegin(GL_QUADS)
- if(type(i1,j)0)
-
- glNormal3i(1,0,0)
- glTexCoord2d(0,0)
- glVertex3i(i1, j, 0)
- glTexCoord2d(1,0)
- glVertex3i(i1, j1, 0)
- glTexCoord2d(1,1)
- glVertex3i(i1, j1, 1.5f)
- glTexCoord2d(0,1)
- glVertex3i(i1, j, 1.5f)
-
18Future Work
- Implement so player can fire a weapon like a real
first person shooter is supposed to do. - Add item pickups such as multiple weapons and
ammo - Better enemies with more advanced AI
- And why not networking
19Conclusion
- Today game software is developed in teams, where
each member works on his or her specialty until
the work is integrated to create a work single
coherent work of art. They take years to
develop. Working with my abilities this is the
end result. Hope you enjoyed.
20References
- Hawkins, Kevin and Dave Astle. OpenGL Game
Programming. Premier Press, May 2004. - Woo, Mason, J. Neider, and T. Davis. OpenGL
Programming Guide. Addison-Wesley, fourth
edition, November 2003. - www.opengl.org
- www.libsdl.org
- www.gamedev.net
- www.gametutorials.com
- http//nehe.gamedev.net/
- http//www.psionic3d.co.uk/