1
Super EastGate Jon Caron, Ryan Fleming, Antonio Guarino, and Mike LoVerme Merrimack College Introduction Super EastGate is a 2D side scroller game that mimics the classic Super Mario Brothers game. This game is unique in that is designed for a Windows based computer and is fully customizable with different game packs. Each game pack includes level sets, different graphics, and different sounds. Each different game pack gives the user a completely different experience. Also, anyone can create new levels by simply editing a file. The main game pack is about a student at Merrimack College named Jason EastGate. His goal is to make it through the levels without getting a hair cut or shaving his beard. Level Creation Designing levels is a balancing act between form and function, and is something that is more akin to designing artwork than writing code. The challenge for the designer is to create something that is challenging for the player but implementable in the current build of the code. The design of the current code base does not lend itself well to puzzle-based game play, and instead the difficulty of the game comes from the various jumps that the player is forced to make. This creates an accessible product that can be enjoyed by a large potential audience. In addition to the built-in levels, the user also has the opportunity to create and modify their own levels. A user simply needs access to a text editor, and they can create their own challenges. #GO_BRICK_BLOCK = 0 GO_AI_TYPE1 = 1 GO_AI_TYPE2 = 2 GO_LEVEL_END = 4 #itemId Gridx GridY #AI Object section OpenGL OpenGL is an open source, cross platform graphics API. OpenGL provides a consitant interface to the shader models and drawing functions. This removes the need to create code for multiple interfaces for different graphic cards. OpenGL provides a 3D drawing area for the program to draw into. For example to draw a 2D square, one uses: glVerted3D( x , y , z ). glBegin( GL_POLYGON ); glVertex3D( 1.0 , 1.0 , 0.0 ); glVertex3D( 1.0 , -1.0 , 0.0 ); glVertex3D( -1.0 , -1.0 , 0.0 ); glVertex3D( -1.0 , 1.0 , 0.0 ); glEnd(); Using this command, almost any shape can be drawn. OpenGL support mapping textures onto each of these shapes. A third party library must be used, such as Simple OpenGL Image Library, to load the image into a format that OpenGL supports. Game Play The game plays just like Super Mario Bros does. You control the character as he runs through each level in each world. There is standard keyboard layout where the arrow keys will move the character on the screen with the up arrow as jump and the down arrow as crouch. If you are special Jason (level 3) then he can shoot out white energy blasts that will kill enemy scissors on contact! If you do not like the way the keys are configured you can just change them in controls.ini. There is also two different types OpenAL OpenAL is a cross-platform audio API developed by Creative Labs for use with game creation. Unlike OpenGL, it does not come bundled with drivers by default, so the user of the game will need to download the SDK from our Google Code account or from Creative Labs. Sound creation and manipulation (play, pause, stop) revolves around 3 components; a buffer, source, and listener. Listeners are primarily used with 3D sounds, so for our implementation the listeners will just be set to 0, making them listen in the middle. The first step in sound creation is to declare a buffer. A buffer holds a sound file (.wav) and various properties about the sound (frequency, looping, size, etc…). An example buffer declaration can be seen below: alGenBuffers( 1 , &m_soundBuffers[SL_PWRUP] ); After the buffer is declared, a sound file can be loaded into the buffer as seen below: alutLoadWAVFile(soundFilePath, &format, &data, &size , &freq, &loop); alBufferData(m_soundBuffers[loadSound], format, data, size, freq); alutUnloadWAV(format, data, size, freq); Now that the buffer has the sound and properties in it, the next step is attaching a buffer to a source. This can be seen below: alGenSources( 1 , &m_soundSrc[SL_PWRUP] ); alSourcei(m_soundSrc[SL_PWRUP], AL_BUFFER, m_soundBuffers[SL_PWRUP]); alSourcef(m_soundSrc[SL_PWRUP], AL_PITCH , 1.0f ); alSourcef(m_soundSrc[SL_PWRUP], AL_GAIN , 1.0f ); alSourcefv(m_soundSrc[SL_PWRUP], AL_POSITION, m_zeroArray ); alSourcefv(m_soundSrc[SL_PWRUP], AL_VELOCITY, m_zeroArray ); alSourcei(m_soundSrc[SL_PWRUP], AL_LOOPING, isLoop || loop ); All that is left to do from here is play, pause or stop a sound which can be seen below: alSourcePlay(m_soundSrc[SL_PWRUP] ); Future Goals Create many different Game Packs that users can download Implement boss characters Implement more types of obstacles other than just blocks Implement being able to save game progress Implement different types of worlds (like underwater worlds in Mario)

Super EastGate Jon Caron, Ryan Fleming, Antonio Guarino, and Mike LoVerme Merrimack College Introduction Super EastGate is a 2D side scroller game that

Embed Size (px)

Citation preview

Page 1: Super EastGate Jon Caron, Ryan Fleming, Antonio Guarino, and Mike LoVerme Merrimack College Introduction Super EastGate is a 2D side scroller game that

Super EastGateJon Caron, Ryan Fleming, Antonio Guarino, and Mike LoVerme

Merrimack College

IntroductionSuper EastGate is a 2D side scroller game that mimics the classic Super Mario Brothers game. This game is unique in that is designed for a Windows based computer and is fully customizable with different game packs. Each game pack includes level sets, different graphics, and different sounds. Each different game pack gives the user a completely different experience. Also, anyone can create new levels by simply editing a file. The main game pack is about a student at Merrimack College named Jason EastGate. His goal is to make it through the levels without getting a hair cut or shaving his beard.

Level CreationDesigning levels is a balancing act between form and function, and is something that is more akin to designing artwork than writing code. The challenge for the designer is to create something that is challenging for the player but implementable in the current build of the code. The design of the current code base does not lend itself well to puzzle-based game play, and instead the difficulty of the game comes from the various jumps that the player is forced to make. This creates an accessible product that can be enjoyed by a large potential audience. In addition to the built-in levels, the user also has the opportunity to create and modify their own levels. A user simply needs access to a text editor, and they can create their own challenges. #GO_BRICK_BLOCK = 0 GO_AI_TYPE1 = 1 GO_AI_TYPE2 = 2 GO_LEVEL_END = 4

#itemId Gridx GridY #AI Object section0 0 0 1 9 40 1 0 2 18 10 2 0 1 19 10 3 0 1 20 10 3 1 1 21 10 4 00 5 0

OpenGLOpenGL is an open source, cross platform graphics API. OpenGL provides a consitant interface to the shader models and drawing functions. This removes the need to create code for multiple interfaces for different graphic cards. OpenGL provides a 3D drawing area for the program to draw into. For example to draw a 2D square, one uses: glVerted3D( x , y , z ). glBegin( GL_POLYGON ); glVertex3D( 1.0 , 1.0 , 0.0 ); glVertex3D( 1.0 , -1.0 , 0.0 ); glVertex3D( -1.0 , -1.0 , 0.0 ); glVertex3D( -1.0 , 1.0 , 0.0 ); glEnd();

Using this command, almost any shape can be drawn. OpenGL support mapping textures onto each of these shapes. A third party library must be used, such as Simple OpenGL Image Library, to load the image into a format that OpenGL supports.

Game PlayThe game plays just like Super Mario Bros does. You control the character as he runs through each level in each world. There is standard keyboard layout where the arrow keys will move the character on the screen with the up arrow as jump and the down arrow as crouch. If you are special Jason (level 3) then he can shoot out white energy blasts that will kill enemy scissors on contact! If you do not like the way the keys are configured you can just change them in controls.ini. There is also two different types of Artificial Intelligence. The first will just chase after you and you must avoid them at all costs! The second type will not only chase after you, but not blindly walk off ledges! Be careful!

OpenAL

OpenAL is a cross-platform audio API developed by Creative Labs for use with game creation. Unlike OpenGL, it does not come bundled with drivers by default, so the user of the game will need to download the SDK from our Google Code account or from Creative Labs. Sound creation and manipulation (play, pause, stop) revolves around 3 components; a buffer, source, and listener. Listeners are primarily used with 3D sounds, so for our implementation the listeners will just be set to 0, making them listen in the middle. The first step in sound creation is to declare a buffer. A buffer holds a sound file (.wav) and various properties about the sound (frequency, looping, size, etc…). An example buffer declaration can be seen below: alGenBuffers( 1 , &m_soundBuffers[SL_PWRUP] );

After the buffer is declared, a sound file can be loaded into the buffer as seen below: alutLoadWAVFile(soundFilePath, &format, &data, &size , &freq, &loop);alBufferData(m_soundBuffers[loadSound], format, data, size, freq);alutUnloadWAV(format, data, size, freq);Now that the buffer has the sound and properties in it, the next step is attaching a buffer to a source. This can be seen below: alGenSources( 1 , &m_soundSrc[SL_PWRUP] );alSourcei(m_soundSrc[SL_PWRUP], AL_BUFFER, m_soundBuffers[SL_PWRUP]);alSourcef(m_soundSrc[SL_PWRUP], AL_PITCH , 1.0f );alSourcef(m_soundSrc[SL_PWRUP], AL_GAIN , 1.0f );alSourcefv(m_soundSrc[SL_PWRUP], AL_POSITION, m_zeroArray );alSourcefv(m_soundSrc[SL_PWRUP], AL_VELOCITY, m_zeroArray );alSourcei(m_soundSrc[SL_PWRUP], AL_LOOPING, isLoop || loop );All that is left to do from here is play, pause or stop a sound which can be seen below:alSourcePlay(m_soundSrc[SL_PWRUP] );

Future GoalsCreate many different Game Packs that users can downloadImplement boss charactersImplement more types of obstacles other than just blocksImplement being able to save game progressImplement different types of worlds (like underwater worlds in Mario)Create a level editorMake code tweaks to improve performance in the gameTweak collision detectionCreate more than just two AI charactersCreate animation for moving objects