OpenGL Game

20
OpenGL Game by Neal Patel

description

OpenGL Game. by Neal Patel. Motivation. Learn the basics of game programming Experience for future development in a growing industry Fun. Introduction. Computer Games once used to be considered children toys. Now they have grown into a multi-billion dollar market. - PowerPoint PPT Presentation

Transcript of OpenGL Game

Page 1: OpenGL Game

OpenGL Game

by

Neal Patel

Page 2: OpenGL Game

Motivation

Learn the basics of game programming Experience for future development in a

growing industry Fun

Page 3: OpenGL Game

Introduction

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.

Page 4: OpenGL Game

Elements of A Game

Graphics Input Music and Sound Game Logic and Artificial Intelligence Networking User Interface and Menuing System

Page 5: OpenGL Game

Simplistic Game Architecture

INPUT

Game Logic and Physics

World Database

Data Files

Sound and Music

Graphics

Page 6: OpenGL Game

More Advanced Game Architectural Design

DirectInput

Window System Messages

InputMessage Handling

Game Logic

GameOutput

Graphics

Sound

Game Database/Resource Manager

Physics

3D Models TexturesMusic/Sounds

Networking

Page 7: OpenGL Game

Enough 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

Page 8: OpenGL Game

SDL Architecture

Page 9: OpenGL Game

Concepts Learned from Programming

Texture mapping Loads BMP file via SDL LoadBMP

routineSDL_Surface *image=SDL_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.

Page 10: OpenGL Game

Special 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

Page 11: OpenGL Game

Particle Effect (cont.)

effect = ParticleEffect( EXPLOSION, //Type of particle effectNONE, //Type of collision detectionVector(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);

Page 12: OpenGL Game

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

Page 13: OpenGL Game

Gameplay

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.

Page 14: OpenGL Game

User 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

Page 15: OpenGL Game

SDL implementation for control keys

if(keys[SDLK_UP] || keys[SDLK_w]) {dx += (float)(PLAYER_SPEED*cos(a*PI180));dy += (float)(PLAYER_SPEED*sin(a*PI180));

}if(keys[SDLK_DOWN] || keys[SDLK_s]) {

dx -= (float)(PLAYER_SPEED*cos(a*PI180));dy -= (float)(PLAYER_SPEED*sin(a*PI180));

}if(keys[SDLK_d]) {

dx += (float)(PLAYER_SPEED*0.5f*sin(a*PI180));dy -= (float)(PLAYER_SPEED*0.5f*cos(a*PI180));

}if(keys[SDLK_a]) {

dx -= (float)(PLAYER_SPEED*0.5f*sin(a*PI180));dy += (float)(PLAYER_SPEED*0.5f*cos(a*PI180));

}

Page 16: OpenGL Game

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

Page 17: OpenGL Game

Drawing and loading texture to a wall

glColor3f(1,1,1);glBindTexture(GL_TEXTURE_2D, walltex);glBegin(GL_QUADS);

if(type(i+1,j)==0){

glNormal3i(1,0,0);glTexCoord2d(0,0); glVertex3i(i+1, j, 0);glTexCoord2d(1,0); glVertex3i(i+1, j+1, 0);glTexCoord2d(1,1); glVertex3i(i+1, j+1, 1.5f);glTexCoord2d(0,1); glVertex3i(i+1, j, 1.5f);

}

Page 18: OpenGL Game

Future 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

Page 19: OpenGL Game

Conclusion

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.

Page 20: OpenGL Game

References

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/