Surprise Update: Level 2?

level2_screenshot1

level2_screenshot2
The reason the player is running, is because of a bug in the game. I currently am unable to fix it, because I don’t know what’s causing it.

Disclaimer: This is not a released game and therefore can’t be found anywhere online, yet. I may expand and release the game at a future date, but I currently don’t plan to. The game is however real and mostly playable, just not public. 

 

A new level has been added to Incredible Notes. Well sort of. The first half of the level has been added in, but the second half has not been.

In the 2nd level, the story is starting to unravel. You learn where specifically you are, who you are, what’s happening in the outside world and more.

In the update 2 secret dialogue scenes have been added in. Let’s just say they know more of what’s going on.

FMP Evalution

Summary

In this evaluation, I will discuss my progression throughout this project, what I’ve learnt, if I created what I set out for and did I meet my deadlines.

 

Progression

At the beginning, I focused mostly on graphics and tried to resist the temptation to code. I mostly succeeded with this task, occasionally coding more than needed, however coding that bit extra improve my games performance overall, example: removing unnecessary code.

When creating the graphics, I originally altered the visuals a lot, because I wasn’t quite sure what I wanted, but continuing on forwards, I started to understand what I wanted visually.

When I finished all the basic animations, except for the guard walking, I started development on a new mode called, “Endless Mode”. It didn’t take long to create the auto generation, but it did take long for the guard object, it kept crashing the game. I eventually got it fix though.

endless mode

When I completed Endless Mode I attached it to the menu screen and started to create more graphics for the levels.

menu_screen_V3

Afterwards I updated the menu screen so it would look better and an occasional event would appear (5 events; 4 common and 1 rare).

Here are all the rooms’ overview:

This slideshow requires JavaScript.

That was everything I made for the game, however I had more planned. I had thought of a whole story; what would’ve happened before and afterwards. In this story there would have been a rebellion uprising against Raifu Nikushimi, the previous story is about criminals from the past (18+) and the future story would be them returning through Raifu Nikushimi releasing them, which would explains why his face is falling off; because he is turning into the grim reaper through consuming dark smoke. Afterwards things would start to get dark again. So the age rating would go, 18+, 7+, 12+ and back to 18+.

I was also thinking of making book versions 18+ with more graphical details and the games 7-12+, which would be more child friendly.

 

Did I create what I wanted?

I didn’t create everything I wanted, but I did create most of what I planned this project, with the only exception being the band wheel. What I wanted was a whole complete game, which would explain everything. This is however, probably impossible to do in 3 months and with limited resources, but I would have loved to see it.

What I planned though was a narrative adventure game with a combat system that uses a flute in real-time, which is used to make enemies fall asleep or go into a different state. I made the enemies fall asleep, but I didn’t make the other states.

Even though I didn’t create everything I planned, I did create more graphics than I thought I would. There’s over 40 graphics in the tile maps, more than 10 animations, a rat and 4/5 characters (1 has a portrait, but not an AI body). I did quite a bit to say the least, probably even enough to make a full game out of it, granted not a game with much variety.

 

Did I meet the deadlines I set?

I didn’t create a task sheet, but I did keep track of what needed to be done. With that said I didn’t meet all the deadlines I set myself, for example: Making the enemies work within a week or two. I wasn’t able to do this at the time, because my programming skills were lacking, but I did eventually get it done at a later date.

The deadlines I made myself were typically a weekly basis. I gave myself a list of tasks to complete within that time period and adapted the development process depending on how long the tasks took me to do. Most of the time, I finished on time, meaning it was a good deadline set. Some of the time though I completed the tasks quicker than expected, so I gave myself extra tasks. Less commonly, the tasks took longer than expected, typically due to unexpected circumstances, like code filled with bugs, so I delayed the tasks to following week.

If I was unable to do the tasks, because of technical issues, I would delay that task forward and focus on another task I could do.

 

What I learnt?

There was a lot of things learnt throughout this project and will try to summaries each subject:

 

  • Programming – I learnt how to program in GMS2, how to store data onto the computer and use it in the game, about stacking, switches, grids, maps, map generation, setting up a camera, how code works in terms of order and code interference, knowledge of instances and more

 

  • Graphics – I learnt how important separating layers is, the effect of how surrounding colours can alter the perception of other colours, how small details can change the whole image, the importance of certain details over others and ways to speed up creation of the process, example: reusing assets.

 

  • Story – That creating a whole story timeline can help me figure out what characters should look like, what time period should it be set in, what levels should look like and where the game location is set. I also found that, while creating the game I came up with more ideas of what should happen next, it went hand in hand with each other.

 

  • Synergy – I learnt that to create a better final outcome, that working on different areas of the game sparked ideas of what I should do next, how to fix certain problems, what was and wasn’t necessary to create and that mood boards helped to create different creation. An example: Creating graphics could make me think of a new area in the game to explore, which could give me a story idea to write about, which could make me think a new villain/hero the game could include, which I create a mood board to visualise and then back to creating the graphics.

 

On a side note, I’ve learnt how bad it feels to just stop working on a project, which you’ve put extra effort into. The more I created of the world, the more attached I got and to just stop, hurts emotionally. So I’m not going to stop fully, I am going to focus on creating the story in my own time.

Even though the project was hard at times and occasionally I wanted to quit and focus on a simpler concept, I am glad I continued, because I feel accomplished and have created a piece of art, at least to me.

Update: Game V2.0.0

Posts references:

Menu Updated V2

Update: Graphics and Animation

New mode: Endless Mode

 

V2.0.0:

  • Large amount of new graphics added
  • Guard bugs fixed and now working
  • HiScore added (uses .ini files)
  • 2 new animations added
  • UI updated
  • New mode added
  • new object added
  • Some graphics redesigned
  • Menu updated
  • Menu options added (endless mode)
  • Level 1 finished fully
  • More lore added
  • Guard AI is more advanced
  • General bug and glitch fixes

This is the final update of this project and it is a big one. I am haven’t updated you much, because I was working on the game as much as I could and have been thinking of creating a story, which would explain what happened before all of this. The story however, wouldn’t be adults only. The past of this game is dark, very dark. I could however, make it into a child friendly game. Basically the games would show the light side of the story and what is happening, but the story would explore the dark and rather scary side, unless criminals don’t scare you, you’d be braver than me lol.

The journey stops here, but it maybe revived in the future.

Menu Updated V2

The menu has been updated visually, it use to look like this:
menu_screen_V3

Now it looks like this:

menu_screen_revamp1

That’s not all though. Every 10s or so, a random event will play from a list of 5 events, here’s an example:

menu_screen_event1

If you’re lucky, you can see the rare event, which I’ll keep a secret. You will however, though when you see it.

To setup the special menu animation, I added this in an alarm that triggers every 10s:

menu_screen_event_code

In the above screenshot, a random number between 0 and 4 is being picked. The selected number will set off an event. In all the summoned objects, they have code, which separates the menu animation code from the main code.

Update: Graphics and Animation

The graphics been increased with a few extra animations.

For the graphics I have altered a few of the background graphics, so the rat would look more like they were running through the gap and not a block, which they were.

The graphics and animations for objects I added are:

  • Key – A small golden key, with a shining animation, that applies every 4 seconds.
  • Guard walking – The guard now has a walking animation.

 

Tile-map graphics added:

  • Cracked walls – Walls with cracks in
  • Chalk – Chalk on walls that resemble a tally counting
  • Lanterns – A lantern that glows green light, one big and one small, only small used in game.
  • Posters of leader – There have been a small and large poster of the leader Raifu added into the game. The large poster also has message.
  • Crates – Crates have been added and redesigned to look more like crates.

 

Here are some screenshots of the game with the new graphics:

This slideshow requires JavaScript.

The UI now also shows keys collected with the icon and not a number. This is literally just for visuals and has no extra functionalities in the game.

New mode: Endless Mode

I haven’t updated this blog post in about 2 weeks, but I have been very busy. I am going to release posts that explain each area in whole, rather than in small snippets. This is so I’ll have an easier time explaining what’s happened, while I haven’t been posting.

Used links:
https://www.reddit.com/r/gamemaker/comments/63eyt3/gms2_randomly_placing_tiles_in_a_room/

 

So the first thing I am going to discuss is endless mode. I watch a some videos and read some articles to get an idea of how it would work. In short: The player doesn’t move, but everything else does. In long:

To first set this up I needed to create a new room and add in a source to run the majority of the code. The source I chose was the Ground object.

Before I could start on the ground object, I would need to add restrictions to the player Object, so I added an if (room != EndlessRoom) to a bunch of the code. I could’ve wrap the code in an if statement, however that would lock out code I do need to use.

The problem occurred is, the character wouldn’t do the run animation if I stopped them moving. So I reduced the move value to 0.1 (90% decrease) and then at the end step, the player x value would be set back to the spawn point, in this case, 96.

After I finished all the extra code needed for the Player Object, I started on the code for the Ground Object. I started off with this in create code:
Ground create code V1

The lines 3-6 are the important lines of code. The rest of the code was testing I considered using and some graphical improvements. The graphical improvements would swap cell tiles, so I could simulate some movement.

Following onward, I added in the step code:
Ground step code V1

The above code would only run if the object is set to be the source code. I originally also attached the platform to move below and then realized that was rather pointless and causing unnecessary strain on the program.

The important code is line 5-17. This code determines when an enemy should be spawned.

Continue on from this, I had a lot of problems. If I got a single variable slightly off or timed it slightly off, it would eventually crash, rather annoying to say the least.

guard_create_code_endless_V1 I’m not going to go over all the code, because it would take ages to explain, but this is the create code. it is selecting a random amount of notes between 1 and 4, then it assigning a random number from 1 to 3. These numbers are used to set the note code pattern.

The enemy then gets sped up, with each successful elimination, with a maximum of 15x multiplier.

In the step code, everything is the same, except this has been added:
guard_step_code_endless_V1

In the code above, it moves the guard when the right or left key is being pressed and checks where they are. If the guard moves too far to the right, they will be reset to just be outside the screen, so they are never too far away. If the guard somehow goes off the screen, they will automatically be deleted.

The other code I have wrote for this, is for the guard to be deleted once the correct pattern has been inputted, instead of falling asleep. I did this, because every so often the game would bug out input corrupted data. Meaning the note code pattern would not be solvable, even though I have given the game correct tools. I added the instance_destroy() code in a few locations, so it would always work.

Update: Quick Update

Just a quick update.

I am continuing work on the level creation and have fixed some bugs.

The AI is now more advanced. They are able to detect when the player is nearby and which direction they are coming from.

The camera is now more centered. This change was made, because when going left, you couldn’t see much ahead of you.

A HI-SCORE has been added and a win screen has been added.

My next goal is to finish the first level completely and to add in a game over screen. If I am able to finish this before the end of next week, then I will also be adding in tweaks, like scenery and graphical changes.

Update: Game Update V1.7.0

References to blog posts used:

Update: Locked Doors, Keys and minor improvements

Update: Flute Mechanic Enemies Fixed and Changed

Update: Level 1 Completion so far

 

V1.7.0:

  • New NPC added
  • Flute mechanic changed and now working
  • Locked and Unlocked doors added
  • Keys to unlock doors added
  • Lives added
  • Ladders added
  • Texture added to wall rat can run through
  • Story added
  • Cut-scenes added
  • Room fade added
  • New sound effects added
  • 1 room modified
  • 2 rooms added
  • UI changes
  • Bug fixes

This update did take a while to come out, but I am happy with the amount included in this update.

Update: Flute Mechanic Enemies Fixed and Changed

I have finally done it! I have fixed the enemies code, which detect the flute being played near them. It took much longer than expected. This was due to the program engine GMS2 bugging out when I tried to add in a puzzle feature and a reset to failed inputs. In short the code was correct and ordered correctly, but it still didn’t work, unless I used a text box pop-up.

I have no idea what the issue was. I  searched through all my code and tried countless fixes, but nothing worked, so I changed my design on how it should work.

The way I wanted it to work was to have a unique input for all guards and as soon as one input was incorrect, it would reset on that frame. Unfortunately this didn’t work, so I made it use a timer instead, which will resets the inputs after the timer hits 0.

Well enough of the explanation to why I changed the design and on to how I made it:

flute_guardId

On the begin step on the Player, I added in detector, which will detect what guard is close by. Once detected it will send off the results to the guard object. The reason I didn’t check for the results in the guard was because, I would only be able to check if the object is nearby and not, which instance of that object is nearby.

Continuing on I wrote the code for the input check:

flute_input_check

I got the number_pressed value from the player, after the flute animation plays the specific animation according to thee key pressed.

Once the key input is pressed it checks down the list, looking for the current sound it is on. Afterwards it compares the number_pressed value to the Sound_(1, 2 or 3) value and if they match it will play a sound and move on to the next input check. If all sound inputs are correct, it will make the guard fall asleep for 5.6s.

When the guard is asleep, they are safe to walk passed. The player is told in three ways that the enemy is asleep. The first is a snoring sound will play, which I got from here:  https://freesound.org/people/monkslut/sounds/35208/. The second indication is Z above the enemies head:

guard_sleeping

The third way is by removing a timer, which I added it.

To add in the timer I first had to set it up, so I wrote this:

guard_flute_timer_reset

This sets up a timer for the guard and for the player. Once the timer hits 0, it will reset the inputs. Just with this I can reintroduce the same patterns, but reduce the timer, which will create another challenge with no new code needed.

To set up the visuals, I coded this in the player:

flute_timer_setup

The code above sets up a timer to be drawn and then restricts access for the code to continue activating again, unless requested again.

timer_draw_code

The above code was used to create the cool-down timer visual. It uses an alarm, which triggers 100 times maximum before  it is destroyed. Each time it triggers, it reduces the cooldownPercentage value by 0.02. This is so it will end up at -1, which means the start and the end point will have 0 pixels in between, meaning it won’t create anything.

When the cooldownPercentage value reaches -1 or below or the guard fall asleep, then the instance will detroy, meaning no more timer. Here is the timer in action:
timer_counting_down

I am extremely happy that this is finished and is better than anticipated IMO.

I am working on finishing off the first set of rooms and then I will update this blog post and soon afterwards I will create and release the game update V1.7.0 blog post.