Milestone 3 - Formal Prototype


September 13, 2017

Associated Milestones: #3 Formal Prototype

Enemy Spawner

The remaining 3 triggers have been added to the system and are working correctly. I spent a few hours playtesting the mechanic by altering the spawn timers. The current formula will continue to undergo additional playtests as remaining features are added and tuned. However, the current one feels solid.

There is a single variable (spawnrate) which is set to 60. 4 alarms are initialized to equal spawnrate which results in an emeny spawning at a random point on each window side a second after the room is launched. Afterwards, the alarms are individually set to:

Alarm[n] = random_range(1, 5) * spawnrate;

The original system spawned enemies from all four sides every x second. This became predictable and either overwhelming or trivial. The current formula will set the spawnrate to be anywhere between 1-5 seconds for each side. Thus far, this has proven to keep me on my toes since it is less predictable. The goal is to keep the player engaged without feeling entirely overwhelmed or bored. One of my earlier tests used 2-6 but this resulted in more frequent dry spells.

Score / High Score Screen

Changed the font colour of the current score from a “green” to a “lime”. This gives it far more visibility on the dark background.

A bit ahead of schedule so I began to work on the High Score system. After playing around with some of the internal functions I discovered that Game Maker Studio 2 actually has a pretty decent built in functions that can handle the type of High Score system I wanted to implement. An early version of the system is currently within the game and can be seen below.

HighScoreBeta.PNG

September 11, 2017

Associated Milestones: #3 Formal Prototype

Systems implemented and tested:

  1. PC Death
  2. Score Increment
  3. Score Overlay
  4. Enemy Spawner (Partial)

PC Death

PC death has been added and is triggered via collision with enemy object. Currently, this will simply restart the game until a title screen / high score screen is added to the game.

Score Increment

Killing an enemy object will increment the current score by += 5.

Score Overlay

Gets the xy coords and view width of the camera. The camera is set to follow the PC. It centers this into the top center of the screen and displays the current score. This updates in realtime.

Enemy Spawner

I played with this for quite some time to determine the best gameplay experience. Initially, the idea was to have the spawner create an “enemyspawn” object at a random xy within the game room. It would grow in size over ~2 seconds and then transform into an actual enemy object. The reasoning behind this was to create the enemies via a single looping trigger and then have them phase in so that they would not immediately spawn under the PC or within its movement path and trigger a death.

However, since I have slightly altered the original game room design, I did not feel it made sense to have them randomly spawn within the room itself. Therefore, I have created a trigger for the top of the screen. This creates an enemy object at x = random_range(0, room_width) and y = -31. This will spawn the enemy along the entire x axis but y = -31 will cause it to spawn just above the actual game room. This causes the enemy to appear to naturally enter the room from a random point at the top of the screen.

Currently, an enemy spawns once a second. I would like to extend this system by creating 3 more triggers. For example, a trigger for the left screen would need x= -31 and y = random_range(0, room_height). These other triggers can have a separate spawn rate. It may make sense to stagger the spawn of each side so that only 1 enemy spawns per second. Effectively increasing the spawn rate to 4 seconds for each side.

Art assets created:

  1. Enemy
  2. RMBP re-worked
  3. Room Tileset

Enemy

Due to limited artistic skills, I opted to create a fairly simple circular shaped object to represent the enemy. The goal of this design was to stand out within the room, have the appearance of an enemy, and to also convey a simplistic vessel - there are countless enemies chasing you after all.

I chose the red colour because it stood out and because we typically associate red with the enemy side. Additionally, I combined the red ship with a green cockpit to give an “alien” vibe to the sprite. The simple circular shape appears to resemble a fly saucer.

a83d154c-314c-41dc-bde6-b47384871f15.png

RMBP

Due to the direction I took with the enemy sprite, the RMBP appeared to resemble an enemy object. I decided to keep the bright blue appearance but alter the sprite design and increase the size a bit.

ab7e6175-d515-4d9e-a0d5-8b3ffc355938.png

Room Tileset

During the level design phase, I decided that the game could benefit from a scrolling tileset. In order to keep production on track I decided to create a static backdrop and slowly move the image vertically at a slow pace (1). The main issue with this is that the same tileset will repeat over and over again.

If I have time towards the end of development I could polish this by creating space objects such as planets, moons, asteroids, etc. Using those objects I could create a system that would randomly spawn one every x seconds. I could reuse the enemy spawner code (the top portion) to spawn these objects. A step further would be to implement asteroids as a collision mechanic that could result in player death if they are not destroyed or avoided. They would ideally have much slower movement speeds than an enemy.

771976a3-f9ee-4b60-9c1e-1071eca16d8d.png

GIF of current gameplay

91117_Gameplay.gif

September 7, 2017

Associated Milestones: #3 Formal Prototype

Kicked off Milestone 3 tonight and things are going well. Art is not my forte but I decided to take a stab at it for a few hours after reading some articles on colour shading and light theory. I created a new PC sprite that I am happy with for now. However, I used a 64x64 sprite sheet and did not take advantage of the entire real estate available. This may result in a PC model that is far too small. If necessary, I will need to redo at a correct scale.

PC Sprite

Detailed Zoom

490c7b33-e72f-4ad8-abad-ea9c998dadae.png

PC Sprite.PNG

Work on Collision mechanics also went well. Currently I have a working system that checks when the PC collides with a tilesets belonging to a specific layer within the game room. Each movement command runs a series of checks to ultimately determine the PC’s exact coordinates and movement direction within the room. It then compares that to the nearest instance of the collision tileset (in the current movement direction) and essentially snaps the PC to the edge of the 32x32 grid. This will prevent the sprite from clipping or going through a wall.

The yellow border is a placeholder tileset to demonstrate functionality.

90717_Collision_Wall.gif

Files

G3 Sector.zip 14 MB
Jun 06, 2018

Get G3 Sector

Download NowName your own price

Leave a comment

Log in with itch.io to leave a comment.