michael hughes work flow

14
Michael Hughes – Workflow for 2D Side Scroller (I wanna be the Side Scroller) Idea The thought process behind my game is too have a rather different side Scroller too others and previously made ones such as gradius etc. The idea in mind is the thought of a side Scroller where shooting doesn’t make up a lot of the game, rather that the game is based on precision and timing to dodge the attacks and ultimately kill up to ten bosses whilst avoiding all of the previous attacks that follow it. Sprites Player Sprite The player sprite I have designed has been made in such a way that it resembles a spaceship with a thruster at the rear and wings on the sides. The purpose of its small shape and thin design create the perfect type of size for a player to move around in such a vast screen. The player sprite has been designed to create a sci- fi, space type of feel and with such a small player sprite it creates the feeling that the player is so small compared to the other sprites, enemies and movement within the game. The colour of the sprite is vibrant and colourful in relation to the background meaning a player can see the sprite clearly and understand that he/she is controlling that character rather than any of the other entities on the screen. Whilst it is a simple sprite I

Upload: mike-hughes

Post on 04-Aug-2015

62 views

Category:

Internet


0 download

TRANSCRIPT

Page 1: Michael hughes work flow

Michael Hughes – Workflow for 2D Side Scroller (I wanna be the Side Scroller)

Idea

The thought process behind my game is too have a rather different side Scroller too others and previously made ones such as gradius etc. The idea in mind is the thought of a side Scroller where shooting doesn’t make up a lot of the game, rather that the game is based on precision and timing to dodge the attacks and ultimately kill up to ten bosses whilst avoiding all of the previous attacks that follow it.

Sprites

Player Sprite

The player sprite I have designed has been made in such a way that it resembles a spaceship with a thruster at the rear and wings on the sides. The purpose of its small shape and thin design create the perfect type of size for a player to move around in such a vast screen. The player sprite has been designed to create a sci-fi, space type of feel and with such a small player sprite it creates the feeling that the player is so small compared to the other sprites, enemies and movement within the game. The colour of the sprite is vibrant and colourful in relation to the background meaning a player can see the sprite clearly and understand that he/she is controlling that character rather than any of the other entities on the screen. Whilst it is a simple sprite I believe most player’s can identify the sprite for what it is and that it fits in well with all the other features of the game. The top of the “spacecraft” is jagged; this is due to the top being larger purely for the fact that it looks better than a perfect shape (in my opinion).

Player projectile (Player bullet)

Page 2: Michael hughes work flow

The player projectile is an extremely small sprite taking up a surface area of 4x4 pixels on a background of 9x9 pixels. However this sprite is arguably one of most significant in the game. Without a sprite for bullets, there would be nothing to show the player firing. Thus meaning that the player would be required to guess how many bullets they are shooting. In this case, the projectile is small enough to see but still is very important to the game and easily mistakable for the “stars” that the background contains, although in game, the player will fire from the nose of the ship since the origin of the sprite is set to the front few pixels of the sprite therefore the bullet will be produced from that point. The reason the sprite is white is due to the fact that if it was any other colour, it would look “out of place” to the other parts of the game and generally wouldn’t compared to a white sprite instead of another colour.

The Boshy

The Boshy is a sprite that has been designed based on the difficult Platformer “I wanna be the Boshy” The reason for me referencing Boshy and producing an animated sprite is because the game itself is very difficult and about precision plat forming. I felt that it would suit the game play mechanics that I have intended (difficult with precision and timing) and be a random yet funny reference whenever he appears. Although not everyone will get the reference they

would still understand that it’s a caution sign, foreshadowing the difficulty and challenge that the game is going to offer. The Boshy is a sprite that has been copied from a Google image although I imported it too game maker by using the “Load sprite” button and re-colouring the entire sprite, if I could do this sprite again I definitely would because of the fading towards the end, for instance. When Boshy becomes the last few sprites it goes blurry and then back to the original making it not look as professional as it could be. In conclusion, I feel as though whilst this sprite lacks professional standards, it is a detailed and well thought of sprite non-the less.

Green bullet sprites

Page 3: Michael hughes work flow

The green bullets are a boss attack and a regular attack in the game that a player can only avoid and not destroy. Because of this, these appear frequently in the game and were required to look adequate enough to suit game play, and because they come from the top and right side of the screen I was required to make it appear as though they were firing from those directions as well, Hence why I made one in a lateral format (vertical) and one in a linear format (horizontal). The bullets themselves are a green colour but have many variations of the colour mixed into an oval shaped projectile, I did this by first creating the green ovals then adding a different array of green with the pen tool and applying it in a symmetrical format. The overall design is rather complex because of how much the differentiated green distracts from the actual sprite but I feel like it is a good design for what it is intended to do.

Menu Buttons (Start, Stages, options, controls, full-screen, Windowed, Exit and back)

Each of the buttons is made for a different purpose, although the sprites only change depending on what text it is, each sprite has been made using the “edit sprite button” and has been creating by simply drawing text onto a 128 width by 32 height pixels to give it space to actually type the words in but not too much height so it isn’t as big. Each of the buttons has their own unique properties and the only way to distinguish which is which is too read what each of the buttons via the in-game menus.

Page 4: Michael hughes work flow

Pepsi Boss

The Pepsi boss is a unique sprite, as it is a pre-loaded sprite that is very large and takes up a Surface area of 244x342. The reason for its size is because a boss is intended to look either menacing or bigger than the player; intentionally making the player uncomfortable and unconfident. As well as this the origin point is the point in which drinks are usually taken from a vending machine so it would appear all the projectiles are being dispensed from the vending machine. The pre-loaded image was actually changed as originally the background was white but using the “images” options and “erase a colour” I was able to tamper with this and remove the square looking background although I was required to fill in the white again on the logo and Pepsi word. The reason the sprite is such a random size is because the original image was that size as well (you can see original image here)

Pepsi Cans

An ideal boss projectile in my mind, as it fit in rather well especially because the bosses origin is inside the “can dispenser” so it appears the cans actually come out of the machine. The Pepsi cans spin anti-clockwise simply because the space type feel of the game should be address in some forms in this case I attempted to make the cans fire from the boss as if they were unaffected by gravity and uncontrollable.

Page 5: Michael hughes work flow

Stage 1

The sprite was intentionally supposed to be repeated a lot of times for the different levels I was planning to add however I did not have enough time to do this. This sprite is in the “stages” menu and is used to send the player to the first (and only) level of the game which I created just as the start button does.

Rooms

Menu screen

The menu screen is the initial starting screen a player will see upon loading a client of the game. This screen ties the whole game together with 5 buttons and a background that is similar to the playable level of the game however differs due to the large banner for the game at the top and the player sprite being fixed in place and un-able to move. As well as this the main menu theme to the game plays which is another reference to a different game. I believed this tied in well with the introduction to such a difficult game and that it actually sounds like a title theme you would see in some modern video games such as RPG’s.

Game over room

A semi-unique feature in my game the game over room is a screen that has a large “game over message” as well as a caption saying “press ‘r’ to restart” This is a method and upon pressing R in the room, it would send the player back to the beginning of level 1. I believe this room to be one of the most important in the game, for instance if it wasn’t here the player would not be killed and could fly through the level since the player is never actually destroyed but rather sent to another room. The game over system is separate from the original systems so that just this room has it inside so all functions of this room come from that object

Level 1 room

Page 6: Michael hughes work flow

The playable room is the primary room in which the game is actually played. This room contains a few objects such as an “FPS counter”, the first system which fires 11 attacks at the player and the second system which spawns all mobs into the game (Boshy, Pepsi Boss, etc) and it will spawn RNG for some attacks for every restart or loading of the room. So, whenever you play the game again the first bullet hell will never be the same twice. The room itself has boundaries and limits that the player is limited too so they actually are required to stay on the screen and avoid all the attacks.

Options room

The Options room has 1 main function to the game itself, it allows the player to select whether they would like to play the game in full-screen or windowed mode. The reason for this is because I wanted my game to be played how the player wanted too, so if they wanted to play in full screen they could do. My plan was too add toggle-able effects to the options such as low detail which would stop the moving background and allow the game to run more smoothly but I never got around to completing this so there are only 2 options. I feel although I didn’t add more options that the options menu was still worth adding.

Controls menu

There is just 1 purpose for the controls menu, and that is so the player can actually test the controls instead of jumping into the game and not knowing what they are doing. For instance they may not know how to move or restart the game, so there is text on the background that explains exactly how the game works, the mechanics of the player and what to do when your game needs resetting.

Stages room ~Unfinished

Page 7: Michael hughes work flow

The stages room isn’t the greatest room in my opinion, the entire room is based on the concept that I would make more than 1 level, although at this point I only have time for 1 level so having it in the game is somewhat pointless. Although there is opportunity to expand on the idea and add more levels into this room so it is not a total loss to the project itself.

Sound

The sound in games really gives the game meaning and brings it too life. In my project I used a total of 8 sounds in my game to allow it to hold more emotion and increase the spontaneous factors. Each sound has a different thought process and I want to add it into my game because I feel it would work better with more and more sounds. I imported all sounds by first converting them to either .mp3 or .wav and then added them into my game using the “Create sound” option.

Bullet sound

The bullet sound is the thought of having sounds for each time the player shoots, this means that each bullet will have this sound effect, because the speed of the bullets are 45, it makes it a very frequent sound in the game. Because of this it will require to be a very quiet sound but enough so it can be heard. After debating whether to use a powerful sound, I used the sound of a M4A1 rifle, I did this because it’s sharper than lots of other sounds so it is heard much easier and you know when the player fire’s the projectile is actually a bullet. This went well although I would’ve liked to change the volume of the sound as it was far too high for the game and it could be heard over all music and sound.

Main Music

The main theme to the game is a piece of music from the game “Ace Combat 4 Shattered Skies” and the music is called “megalith –Agnus dei-“ The purpose of me using this piece of music is that it sounds majestic and I wanted the boss fight too feel random but serious at the same time, as if the boss over powers the player and the player is pressured, I believe this music was set to the correct volume and I believe it achieves its purpose rather well. The main music plays whenever the game is actually being played (upon starting the level room).

Title Music

The main menu theme is a song from “Mega Man X6” from the Infinity Mijinion stage of the game. Ever since hearing this sound I’ve wanted to use it in some form of the game, I decided to use it as the intro, it sounds very serious upon starting the executable client. The title screen itself also fits into this music as it’s a space themed music and the mega man games themselves were about futuristic characters and weaponry.

Page 8: Michael hughes work flow

Death Music

The death music is from the game “I wanna kill the Kamilia 2” This is also the game over music in this game and the reason I have used it is because without this music, the game over would simply just stop all the music and there would be no sound for that period of time, even if it is a short portion of time. The death music adds to the random and spontaneous feel of the game as it is up beat when you die and normally it’s a bad feeling.

It’s Boshy time!

This is more of a sound clip instead of actual music and will be played when “Boshy” spawns into the game. I added this sound clip from “I wanna be the boshy” purely because it’s what the protagonist boshy say’s in that game and i thought adding to the reference would only make it more understandable and crazy.

Godzilla Roar

The Godzilla roar was initially a jump scare, reason being i wanted the player to fear the boss they came up against then eventually get used to it. I think that this has not worked because I couldn’t change the sound at all, therefore it wouldn’t be as “scary” as I had hoped, in addition the sound was just added to when the boss spawns so it is expected to make a noise when it first spawns anyway.

NOOOOOOO!

The “No!” sound clip has been used when the boss is killed; again this was too emphasise the spontaneous parts of the game. This sound clip is originally from the star wars film: Return of the Jedi. I used this sound clip when the Pepsi boss dies as this is the most feeling of achievement and when the boss has been defeated it’s satisfying to know you’ve finished it off.

Object Coding

Object coding was by far the most significant part through-out the entire game, because without it objects cannot move and nothing would actually happen to separate it from being a game and just a design, so my plan was too add a lot of unique code into my game too show I wanted the game too really come to life. Object coding is basically a strict set of rules that given objects must follow in order to make them function how the developer wants them too.

Page 9: Michael hughes work flow

Player movement + Player boundaries + Firing projectiles

The player movement and boundaries are located in the “player_1” object; this object has very unique mechanics as this is the only player controlled objects. The object has boundaries that bind the player to only move within the regions of a certain number of pixels, I found the edges of the room and set these co-ordinates to the rectangle limit, and therefore the player cannot move outside the screen and avoid the entire game. Firing projectiles is in “Boshy”, “player”, “boss” objects etc and is used to emit projectiles from the origin point of the sprite. The origin point is usually the centre in most cases however I changed it for the boss because it made more sense to place it elsewhere. As shown in the code “Keyboard check” tells us that the player has to press a button and it manually checks the keyboard to see if that button is pressed. “y=(y+10);” means it moves 10 on the Y axis for every frame the S button is pressed.

H speed and V speeds

The H and V speeds signify that an entity that exists has a pre-determined speed along a vertical or horizontal axis. For example; if the V speed of an object is -1 it will move 1 pixel to the left because it’s a minus value on a graph and at a speed of 1 pixel per second because it’s –“1”. Code in game maker would look something like “hspeed = 45;”.

Audio playing and Audio stopping

This code shows us that all audio before this will stop and then the title screen will play. The different strings in this method are “Title_Screen” – which is the sound ID. “1” Which is the priority of the sound, in game-maker priority basically means what sound plays over other sounds, and “true” which decides whether the piece of audio will loop.

Collisions and masking

Collisions are a vital piece of code in my game, they allow the player to actually “die” within the game. All collisions state that if the player collides with any other object then it sends the player to the game over screen and initiates the game over system.

Page 10: Michael hughes work flow

System

The first system in the game creates 11 attacks that are thrown at the player; these attacks are both RNG attacks (random number generated) and precise attacks that take place throughout 11 alarms that are coded to go off 1 second after the previous. The second system, although not as complicated is still even more important, the second system handles all miscellaneous things such as drawing the boss HP bar, spawning entities (mobs) and managing things such as screen shaking (that actually never worked despite me trying different ways of producing it). The final system is simple a system that is placed in the game over room, when the game over room is entered, the system activates stopping all music and sounds from the other rooms and playing the death screen song.

Boshy, Boss and projectiles

The Boshy, The Pepsi boss and some projectiles like the red balls and Pepsi cans have unique mechanics. The Boshy Falls down the screen using the speed mechanics, emitting the “it’s Boshy time!” sound and produces many bullets then finally getting destroyed when he reaches the bottom. The boss uses the “global.shield” variable, this variable was introduced for Boss HP and when it hits a certain amount it does another attack that stacks on top of the first one, so at half health the boss becomes much harder to kill, aswell as this the boss moves on a “sine” wave, this wave is a mathematical curve that moves up and down without a horizontal speed so the boss bobs up and down constantly through-out the fight. Projectiles produced from both use random number generates to decide where bullets will go.

Buttons

Buttons are simple objects that simply send the player to another room using the “send to room” method, which is a selectable option which is pre-coded into game maker and wasn’t actually coded into the script of my game, although the outcome was still exactly the same.

Destroying and creating instances

Destroying and creating instances works by declaring that an object me created at a certain point and an object be destroyed at a certain point. The way this works is following one of the two pieces of code below depending on which one you would want to do. For instance if I wanted to create an object I would use the code below and the destroy instance is also showing how to destroy and object.

( Destroy instance )

(Create instance)