1. Set up
After I inserted the main background I then repeated the
steps to insert my cloud effect but of course I used my BG2 layer so that it
will look transparent and not cover my main background.
3. Tileset
4. Vertical Scroll
Parallax
Because it won’t be visible anyway it doesn’t really matter what it
looks like but I did change size of it to 32 by 32 so that it matches the
squares on the layout grid ad then I added an origin point and so that it’s
dead on the centre I changed both the X and Y to 0 from 16 I then changed the
angle to 270 so that it would face upwards I also changed the position to 224
by 2880 after this I added two behaviours the scroll to behaviour and the
bullet behaviour so that it would move and changed the speed to 30 which is the
same speed as mekka hornet. I then changed the parallax of BG1 to 50,50 and BG
2 to 75,75 and this just makes the other one scroll a bit faster than the other
which adds a pretty cool effect to it.
5. Character and
Movements
Next I added custom movement behaviour so that I could set
the vertical speed so that it moves at the same speed the scroll object is
moving and to do this I had to tie the both of them together which happens
every frame of the game. To do this I added my first even which is located in
the event sheet near the layout bar at the top. When the window came up for the
event I clicked on the system option and clicked on the every tick and tick
just basically means frames. After that I clicked on add action which is right
beside the event I just created and once the window came up I clicked on the
player sprite icon and clicked on set speed option under the “Custom Movement:
Velocity” section I then selected the Vertical speed from the “Which” drop down
menu and set the speed to the scroll object and it’s bullet speed. After that I
also made sure to set the angle motion the same so that it’s heading on the
same direction so once again I added a new player action which was found under
the section “Custom Movement: Angle of Motion” and put the speed to Scroll.Bullet.AngleOfMotion,
so now the player sprite will move at the same speed as the scroll object and
it won’t be left behind by the layout anymore.
Now this will allow us to adjust
the scroll speed and you can do this by clicking on the scroll object and then
change the bullet speed and I can use this as a sort of a game mechanic like if
the level starts to speed up or when the boss battle appears where it stops to
do this I will have to change the speed to nothing when doing the boss battle
later on.
Next is setting the limit to the player movement and what I
had to do was to compare where the player is from the scroll object meaning
that I’ll have to work on the X and Y axis, Y is up and down and X is left and right. So I first went to
the event sheet and added a new player event and then went to the Size and
position section and clicked on the Compare Y
option and a window came up and I changed the Comparison drop down menu to
Greater or equal and then put the Y
co-ordinate as Scroll.Y+320 which is
half of the screen but so that it doesn’t pop off of the screen I took away 16
from the 320 so now my code looks like this Scroll.Y+304(Pixels) so no if the Y
co-ordinate of the player is greater or equal to the scroll object’s so now
what I need to do is add an player action and then set the Y co-ordinates of the player to the same as what I set it as before
which was the scroll.Y+304 and with
this it won’t allow the player sprite to go off the screen downwards for it to
no go off upwards I just repeated the process but this time I clicked on the
less than or equal to option and put a minus sign instead of a plus.
For it to
not go off the left or right side of the screen I added two new player events
along with the player actions, so first event I selected the compare X then chose the less than or equal to
option and put 16 on the X
co-ordinate and on the player action I clicked on the set X option and set it to 16 as well. For the other side I just
repeated the process but this time I chose greater than or equal to and set the
X co-ordinate’s to 364.
6. Player Animation and
Particle Effects
First step was that I
inserted a new object which was the keyboard I then went to the event sheet and
added a keyboard event and selected the key is down option and selected the
right arrow key I then added a player action and then set the animation to play
“Bank R” so now whenever the right arrow key is pressed down the player
animation will do the bank right animation then I added an additional keyboard
event but this time I selected when key is pressed down option and then the
right arrow key, this will now make the player go back to default animation
when I let go of the right arrow key and
you just repeat the process for the bank left animation.
As an additional feature to the player movement I added a
particle effect where if you press the up arrow key flames will shoot out from
the back of the player. So I started by inserting a particle object outside of
the layout and then I added my own particle which I created. To put it all
together I started off by changing the rate to 2 and the type to one shot and
changed the spray cone to 1 so that it would come out in a straight line. Now
going down to the initial particle properties section I changed the growth rate
to -64.
Next thing I did was create an image point which I then
applied to the other animations so that later on I’ll be able to use as
reference when I need to link the burn particle to the player. Now to link it
to the player I created a new keyboard event with the up key pressed down with
a system action and programmed it to create an object which is the engine part
on layer 3 and then created another system action only this time instead of
having Player.ImagePointX(1) I just changed the number to 2.
7. Player Firing Events
1
8. Player Firing Events
2
First I created two instance
variables on the player one being cooldown
and the other being firerate I then
changed the condition for the first
keyboard event I created under the
player fire event group so instead of when the spacebar is just pressed I
changed it to when the spacebar is down
I then created a sub-event under the
even I was just on and I chose the compare
instance variable option and put equal to -1 and then added a player event and set value to 0 for the cooldown. Next I added a new player event and compare instance variable to greater or equal to and left it like
that and then I added player action to add dot
to cooldown.
After this I added another player variable
compare event and this time put the cooldown to greater or equal to Self.FireRate. For the action I set the cooldown value to -1 and
then I changed the fire rate to 0.5. For my character to shoot out two bullets
I created more image points and for the bullets to come out from the two points
I just changed the create object PlayerBullet on layer 3 at (Player.X, Player.Y)
to Player.ImagePointX(3) and Player.ImagePointY(3) for the Y, but this is only for one bullet so
to create another one I just copied and pasted it and instead of 3 being in the
brackets I changed it to 4.
To make my bullets act more like a machine gun I added
a bullet action in set angle of motion and
set it to Self.Bullet.Angleof
Motion+random(-1,1), I did all of these under the first event I have on the Player Fire event group.
9. Weapon and Power Up
So to start I added a new instance variable on the player sprite so I added a new player condition under the first event I created in the Player Fire event group and chose the Compare instance variable option and set
the weaponpower instance variable to equal to 0. After this I copied pasted
it and changed the weaponpower instance
variable to equal 1 and then I made a duplicate of the bullet animations
and then I programmed the duplicates to produce and spread more bullets with
one being Self.Bullet.AngleOfMotion+random(-1,1)-3
and the other with +3.
After this I
duplicated the duplicate but this time changed the instance variable of the weaponpower
equal to 2 and then I duplicated the
bullet animations again and increased the degrees by three so it looks like
this Self.Bullet.AngleOfMotion+random(-1,1)-6
and the other being +6 and then repeat the process again with the last ones being -12 and +12and then I started adding firerates
for each of the duplicates from 0.2 to
0.05.
10. Hit Points Bar and
HUD
11. Enemy 1 Spawn and
Movement
First I went to the game layer then I inserted a new sprite
which was my enemy and I did this by doing the same process as I did when I inserted
in my player. Then I changed its speed to 15 and selected yes on the loop
option, after this I changed its orientation
point and put the angle to 90 so
that I’s facing the player, I then inserted a new sprite but not an animation,
it was just to serve as a sort of spawner for Bug 1 and to do this I just
cropped out the other half of the strip and recoloured the background.
Next I
disabled the collision map of the
spawner and turned it invisible and then gave the Bug 1 enemy a destroy outside of layout behaviour and
then after I created a new group for this coding I added a sub event which was
for the bug 1 spawner and then I selected the compare Y option then I chose the greater or equal to option and set the Y co-ordinate to Scroll.Y-200
and then I created a create and
object action which I then selected the Bug 1 enemy and put the X as Bug1spawn.X
and the Y as Bug1spawn1.Y after this I added a system condition to the current event and selected on the for each option and selected the
bug1spawner.
Then I added an event where the bug spawner would be destroyed and
then changed the Scroll.Y to -338. After this I added a bullet
behaviour on the bug 1 enemy and set its speed
500 and it’s acceleration to -500 I then made an event to compare the speed of the bug 1 enemy to less than 20 and then put it’s angle of motion towards the player and
then set a bullet acceleration for
the bug 1 enemy, I then put -180 at
the end of the angle of motion action.
After this I added a keyboard event
where is you press Esc it would restart the layout. Then I added a Boolean Instance variable to the bug 1 enemy, after this I added a
bug 1 enemy action and set the Boolean
to True I then added a new bug 1
enemy event and inverted the is on-screen condition and then added another
condition so that the Is on Boolean
instance variable set is on the HasSpawned
instance variable and then I added a destroy
enemy action.
12. Enemy Hit Points
First I added an instance variable for the bug 1 enemy HP
then I added an enemy event so that
when it’s on collision with the playerbullet it will subtract the amount
of health I set it to and then another action
so that when the player bullet hits the bug 1 enemy the player bullet would get
destroyed. After tis I added an event where if their HP is equal or less than 0
they would get destroyed and then to indicate that the player is damaging the
enemy I added a brightness effect to the enemy so that it would flash if the
player is dealing some damage to them and for this to actually work I added an
enemy action where I set the effects parameter value to 175 then I added a system action to Wait for 0.05 then repeated the effects
parameter process but this time set the value to 100.
13. Enemy Fire
First I inserted a
bullet object then I imported in the
bullet that I made and added a bullet a bullet behaviour to it along with
giving the bug 1 enemy another instance variable which to False Boolean and this all just a repeat of the players instance
variable system. After that I added a Line
of Sight behaviour to the bug 1 enemy and gave it 1 ammo, then I changed its Line
of Sight range to 500 and the Cone of
View to 2 degrees. Then I added 3 sub-events first one was I set their Line of Sight to the player and then set
the shoot Boolean to true then added a new system condition
and set it to For Each bug 1 enemy,
Then
I added a bug 1 enemy sub-event on
the sub-event and compared it’s CoolDown Instance Variable equal to -1 and
added a system action to create object which is the enemy
bullet and put it on layer three with
the X set to Bug1enemy.X and Y to Bug1enemy.Y. After that I added an enemy
bullet action and set its angle of
motion to the bug 1 enemy and then I added a bug 1 enemy action and set its cooldown value to 0 and I added another bug 1 enemy condition and compare its ammo instance variable to Greater than 0. I then reused some codes from the player firing system and then
I changed the bug 1 enemy’s FireRate to
0.2 then I added a bug enemy action to subtract
from ammo.
14. Enemy Destroyed FX
15. Player Gun Audio and
Enemy Fire Damage
After I imported the sounds for the player fire I added an
instance variable on the enemy bullet so that when it hits the player it would
deal damage. So the first thing I did
was add the instance variable then
set the initial value to 10 meaning
that it will subtract 10 from the
players hit point value which is 100
once I’ve set that up I added a player
sub-event and put chose the on collision with another object then I
added a player action and then
clicked on the subtract from and set
the instance variable to the players HP and set the value to EnemyBullet.Damage and then added an
enemy action bullet so that when it hits the player it destroys. I added
another sub-event so that if the
player collides with an enemy it will also deal damage so first I added an instance variable on the enemy bug 1 and
then I just did the same process I did with the enemy bullet . I then added
another sub-event to compare the
players HP to less than or equal to 0 I
added a player action so that when
this happens the player will get destroyed.
Next I repeated the brightness
effect of the bug1 enemy onto the player so I just copied the system that I
already made and pasted it into the event where when the enemies collide with
the player it subtracts from the players HP and also the on the event where the
enemy bullet subtracts from the players HP and replaced the objects to player.
16. Adjusting Collision
Masks
17. Player Destroyed FX
First I inserted another player sprit but cropped out the
other one and then I made sure that the origin point was in the middle then rotate
it and then put its angle to 270 like all the others. After this I added two behaviours to it, one was the bullet
behaviour and the other was the destroy
out of layout behaviour once the
bullet behaviour was in place I changed its speed
to -50. In the player hit points
group event I added a system action
on the event where if the player hits 0
HP it’ll get destroyed and the new action is so that the player will create
an object whenever it gets destroyed so I set the X to Player.X and the Y to Player.Y
on layer 3.
I then changed the set
angle on the player death sprite
to no and added a new system condition on
every tick and added a player death
action on set size and set it’s width
to Self.Width-dt*20 and the same for
the height but just changed the width with height then added another action so
that it will rotate clockwise and set that to dt*200. I then added another condition to compare the player death
height to less than or equal I then
added a player death action and set it to destroy. For the next bit I added
another player death condition and set it to is on-screen and put the action so that it would systematically
create an object which is the enginepart
sprite on layer 3, PlayerDeath.X and
PlayerDeath.Y the on the same event I
added an enginepart action on set angle to PlayerDeath.Angle-180, then I added an effect on the event where the if the player height is less than or equal to 0 and the for this
effect I just repeated the same process as I did for the first one and for a
final touch I added my own sound which I imported using the same method as I
did for the bullets but not looping.
18. Maggot Launcher Part
1
19. Maggot Launcher Part
2
Then I added a maggot launcher action to set
the fire rate value to random with a minimum and a maximum then a maggot action
with a set bullet acceleration and another with a compare distance travelled to random with a minimum and a maximum. The from
the bug 1 enemy group I copied the angle information from the even with the bullet speed then i pasted it onto the the even with the distance travelled and changed the bug 1 enemy from the angle info to the maggot instead then after, I added an acceleration action for the maggot.
the bug 1 enemy group I copied the angle information from the even with the bullet speed then i pasted it onto the the even with the distance travelled and changed the bug 1 enemy from the angle info to the maggot instead then after, I added an acceleration action for the maggot.
20. Maggot launcher Part
3
21. Bug 2 Enemy Part 1
First I inserted the spawner sprite in and change its angle and orientation like the others then I inserted in the actual enemy sprite which I inserted the way I did with the player which I also repeated the animation process after that I also imported in the turret and added some image points where the bullets will come our of. After I had set that up I then set up the bug 2 enemy group then for the first event I compared the bug 2 spawner's Y to scroll.y+100 and then I added a for each condition on the same event with the bug 2 spawner as the object and the for the action I added a create object action and the object is the bug 2 enemy and set both the X and the Y to bug 2 spawner.
I then added a bug 2 spawner action to destroy.
Then I clicked on the bug 2 enemy and chose the turret for the container after this I added a turret action and set its position to the bug 2 enemy's image point 1 then I set the bug 2 spawner to invisible and disabled its collisions. Then I added 2 instance variables to the bug 2 enemy one being a boolean and then still on the same event for an action i set it's scale to zero and i repeated the process for the turret. Then for the bug 2 enemy I set the boolean to true then the for the next event I set the bug 2 enemy's scale in to true then I added two bug 2 enemy action and for one I set its scale to Self.scale and the other I chose add to and then dt the i set scale for another which was the turret and put it to bug2enemy.scale.
For the next event I put it as bug 2 enemy and then compare instance variable and set its scale greater or equal to 1 then for the action I set the bug 2 enemy's boolean scale in to false.
22. Bug 2 Enemy Part 2
First step on making them move I added a bullet behaviour to the bug 2 enemy along with two other sine behaviours then on the spawn event I set an acceleration for the bug 2 enemy to 40 and a set speed of 20 then I added in a new bug 2 enemy event with the bullet distance travelled condition with a random value and then I added an action for the bug 2 enemy's bullet speed then I deactivated both of the sine functions. After this I created a new instance variable for the bug 2 enemy then i add another condition to the previous one I just did and put set it up so that the movementmode is equal to zero then on the same event as an action i set it up so that the movementmode's value is on 1. For the next action I set the sine to active for both the sine 1 and 2 for the bug 2 enemy but on separate and individual actions.
For the next bug 2 enemy action I put on the sinemagnitude option and gave it a random parameter which i then repeated the process for the other sine, then on the event sheet I set one of the sines to horizontal and the other to vertical then changed their periods both different from each other then added another bug 2 enemy bullet acceleration action then i add a system event along with an action to stick the turret to the bug 2 enemy's image point, after this I then created a turret behaviour for the turret then i changed some of it's functions like the range and rate of fire, Then once i've set that up i went back to the spawn event and added an action so that the turret would target the player.
Then on a new even set it up so that when the player is in range it would shoot and for the action to create an object which would be the enemy bullet then I copied and pasted it and just changed the parameters. After it I added an enemy bullet angle of motion action and just repeated it for the other bullet action that i first created on the even where if the player is in range it would shoot.
23. Bug 2 Enemy Part 3
The first thing I did was set up the turrets sine system like editing it's movements and whether it's enabled or disabled from when it spawns. Next on the event where the turret is on can shoot I added another condition and put the can shoot value to greater than 30, then to changed their speed I played around with their period and random period value. Next I added 2 new instance variable on the bug 2 enemy which were it's ammo and it's HP then I added an event where if it collides with the player bullet it would subtract from it's hp and the player bullet would also be destroyed I then added another event to go along with it where if it's HP is less than or equal to 0 it would get destroyed along with the turret attached to it and then i recycled the sound and particle action from the bug 1 enemy and just changed the X and the Y.
Then to get it to flash when it's been hit by the player bullet I first added a brightness effect to it and then recycled some actions again from the bug 1 enemy and just replaced the objects to the bug 2 enemy which is a quicker way of doing things, just recycle already used events and actions. Next I added a couple more events and for the first event i coded it so that when it's ammo is less than or equal to 0 the movement mode instance variable would change it's value to 2 then for the second one I coded it so that when movement mode is equal to 2 both of it's sine will be inactive then I set its bullet acceleration speed to 40. Next I added another condition in the event where the turret is set to can shoot so that the bug 2 enemy's ammo is greater than 0. Then lastly I added new event so that when it's off screen it would wait a second and then it would destroy itself along with the turret.
24. Boss Bug Part 1
Like the other the first thing I did was to insert in the boss sprite first and set it's position so that it faces the player then I imported in the boss pods as a sprite strip and rotated them the way they should be then as an animation they should open but to close them I duplicated the first animation and just swapped the order of the sprites then I copied and pasted two more of the sprites and placed them on the boss and then so that they actually stay on the boss I added a pin behaviour to them like I did with the turrets then after this I inserted a new turret sprite which i also added a the needed image points along with the pin behaviour like the boss pods and the bug 2 enemy turrets, even though I already have a turret object I imported this one as a seperate just for the boss because if i used the same one as I did with the bug 2 enemy then there would be conflict in the game and between the animations.
I then added a bug 2 spawner action to destroy.
Then I clicked on the bug 2 enemy and chose the turret for the container after this I added a turret action and set its position to the bug 2 enemy's image point 1 then I set the bug 2 spawner to invisible and disabled its collisions. Then I added 2 instance variables to the bug 2 enemy one being a boolean and then still on the same event for an action i set it's scale to zero and i repeated the process for the turret. Then for the bug 2 enemy I set the boolean to true then the for the next event I set the bug 2 enemy's scale in to true then I added two bug 2 enemy action and for one I set its scale to Self.scale and the other I chose add to and then dt the i set scale for another which was the turret and put it to bug2enemy.scale.
For the next event I put it as bug 2 enemy and then compare instance variable and set its scale greater or equal to 1 then for the action I set the bug 2 enemy's boolean scale in to false.
22. Bug 2 Enemy Part 2
23. Bug 2 Enemy Part 3
24. Boss Bug Part 1
Like the other the first thing I did was to insert in the boss sprite first and set it's position so that it faces the player then I imported in the boss pods as a sprite strip and rotated them the way they should be then as an animation they should open but to close them I duplicated the first animation and just swapped the order of the sprites then I copied and pasted two more of the sprites and placed them on the boss and then so that they actually stay on the boss I added a pin behaviour to them like I did with the turrets then after this I inserted a new turret sprite which i also added a the needed image points along with the pin behaviour like the boss pods and the bug 2 enemy turrets, even though I already have a turret object I imported this one as a seperate just for the boss because if i used the same one as I did with the bug 2 enemy then there would be conflict in the game and between the animations.
Next this I imported is a sprite strip of the missiles that would be shot out of the boss pods then I set it to loop with a seed of 25 then I changed it's position so that it's the right way.
25. Boss Bug Part 2
For the next event I coded it so that when the boss's on timer tagged "shoot" then set the canshoot value to true and set the boss pod's collision mask to enabled.
26. Boss Bug Part 3
For this part I added a bullet behaviour to the missile sprite then I added a new event which I coded so the boss's canshoot boolean is set to true then as a sub-event I put the boss's cooldown to equal to -1 and for the action I set the cooldown value to 0. Then I created another sub-event on the sub-event and for that I put it to a for each system and set to the boss pod and then I added another system condition and set it to repeat 20 times and for the action I set it so that it creates the object which is the missiles and set it's X to bosspod.X+random(-32, 32) and just repeated this for the Y co-ordinates and then I set it's bullet angle of motion to loopindex8(360/20).
For the next event I set the boss's cooldown to equal or greater than 0 and for the action I coded it so that it adds dt to the cooldown. Then for next event I set the cooldown to greater or equal to the firerate then I set the cooldown to -1 after this I went back to the first sub-event and added an action where it would subtract 1 from the missileammo. For the next event I set the boss's missileammo to less than or equal to 0 then then the boss's canshoot would be false .
Next I created an event for the missiles range or bullet distance travelled, so for the first condition I set it to greater than 100 and for the second one I set to to less than 120 then I added another condition which was when the is missile is on screen but then i inverted it meaning its now off screen it would get destroyed and for the first condition I put an action where I set it's angle to self.angle and then for the second action I set it to rotate 5 degrees towards the position of the player
27. Boss Bug Part 4
28. Boss Bug Part 5
Then for the second event after it I set it so that when the boss pod's HP is less than or equal to 0 then it would get destroyed but it would also subtract from boss's HP and then I added the particle effects like i did with the other enemies but with a different size. Then for another event I coded it so that when the boss's HP is less than or equal to 0 it would get destroyed along with the turrets then as a sub-event I put in a repeat system and set it to 20 and that it would create the blood particles like the other enemies.
29. Boss Bug Sound FX, Player Damage & Change Layout
30. Power Ups & Score
After, I went back to the player fire group event and added one more event so then I set the players weaponpower to greater or equal to 2 and then for the action I set it to 2.
31. Intro Screen
For the intro screen I added an event sheet then I inserted a new tiled background object and then I imported in the title screen that i already made and just resized it to fill the screen then on the intro event sheet I added a keyboard event and on any key pressed then go to layout and tagged "level 1" then I went back to the game event sheet and then I imported in the background music that I created. After this I added another event on system on the start of layout and for the action it would play the track and I put it on loop and then I coded it so that when the player dies it would stop. For the folder I changed the first layout to the intro.
Completed and Recorded