Skip to main content

Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines
(1 edit)

Ninth day of the jam

A bug can hide another:

I'm exhausted. My level of tiredness is so high, I yawn every ten minutes. It's 3pm, today was hard day. I started the day with the high hope of having the prototype playable for the playtest and my god that was painful. I can't even remember all the problems I encountered, and my fix for every of them.


So, before sleep time, my only task was to build some levels, and that's not the first thing I did today. It wasn't because I need some visual cue for the player when you're in "oil state / control reverse". I added the animations, but for the moment it's not that great, the loop for the animation continues instead of restart every time you recollide with the oil. I don't really know how to fix that for the moment, I will think about it after a good night of sleep. 

After this, I've implemented a gamepad to the gam, now the player can play with the keyboard and the gamepad. I've modified a lil' bit the music_object, prevent and avoid some problems like having the wrong song at the bad moment. And a dash ability, when the player keep a certain button pressed, the speed is multiply by 2.

Finally, it was time for creating levels. I've made 6 + main menu and pause menu.


The first screen is the main menu, when you launch new game, it's the first level. The level is a maze, with no real big feature. This allow some time to the player to accustom the controls and how the fish moves. When you reach the end box, it's the level 2. 

A minor problem appears when I'm in the second level, why my timer doesn't show up. 20 minutes of random checks, reading all my objects. Note for myself : don't duplicate room without the confirmation of having all my object in my instance. I forgot to put my timer object in the room.


The gimmick of this room is the knockback. The player will meet the real ennemy, bloc that decreases time when you're hitting them. 

After test, I found a weird glitch, when you're in a dash state and collide with a "knockback bloc", you keep the dash state, even with the button release. At first, I found this real cool, then hours later I fixed it. Now it's the exact opposite, when you're hitting the bloc, you lost the dash, so you have to repress the button. It's more like a punishement for having touching the bloc.


Anyway, the level 3 aka the oil level. Here the gimmick is the reverse controls cause by the oil. And another bug, a minor one. The oil reacts well with all the feature except one. When you're in oil state and touch the end level box, you can have control of the player for a limited time (after the end of the oil state and before the switch to the next level, under 2 seconds). The only things you can do in that time is retouch the end level box, but doing that will replay the end sound. Not a major problem, but it remains a problem, so tomorrow, I have to find a way to handle that.


Level 4, upstream time. The stream gimmick rests on a basic principle, it's a kind-a-like wind. When you're in the stream zone, you're gonna be soft push in a the direction that the stream point towards. And it's there that the fun part begins. Days ago, the upstream system was perfect, I tested it time and time and time and time and time again, no problem. But hey, programming being programming, the avalanche of bugs and errors swept over me.

The first one, the stream that point towards the top or bottom doesn't function anymore, I didn't change a single line of code, but I assume the adding of my camera on the player mess up with the direction, I don't know actually. At this moment, my code for the stream and all the things that flow from it is attached in a collision event in the player object. The system is pretty simple, you enter in it, and the coordinates sends you in a certain direction with a lengthdir_x or lengthdir_y (length, direction), and for the direction I use other.image_angle.

I don't remember well how I fixed it but the problem was solved. Next problem, the state machine and the stream.

My state machine isn't complex, 1 = you move, it's cool, 2 = you hit a knockback bloc, so you can't move. For returning to the first state I check  if point_distance(0, 0, horizontal speed, vertical speed) < 1 , if it's the case, go back to state 1. Easy right, but how it will react in the stream. Bad, you're losing control, the game do whatever he wants until you're ejected from the stream. Very frustrating. I decided to add a boolean variable for checking if you're in a stream state or not. First I try :

when you're hitting a knockback in a stream zone, and you're in a stream = true, deactive the stream object. Problem, it's deactivate the object when i'm not in a stream state, plus I used an alarm system, it's too much things scattered all over the place. I moved all my code from the collision event to the step event.

I've added some #region for more visibility, rewrite some lines and alright, it work! Now when you're in the stream you can collide and keep the control after the knockback, but you know what, yeah, another bug. Now my right/left streams works but not the up and down. I think it's time to change a particular line, the direction in the lenghtdir. Indeed, the image_angle is based on my sprite, so I have a right sprite for my stream, and when I want a left one, I put the right one, and rotate it. I changed that, now I have a sprite for each directions (up, down, left, right) and change the direction in my variable lengthdir. Finally, this case has been resolved.



Level 5, the introduction of moving platforms and automatic doors. Fun part again, the automatic door doesn't open. WHY!!! yesterday it was fine, why it works on my test room and not on my level grrrrr. Like the stream, I used the collision event instead of the event step. After a little rearrangement, I have now things in better shapes. 


Level 6 it's just a thanks room for the moment, that loop to the main menu.

And that's was a glimpse of my struggles against gamemaker, I don't recall all the troubles that I've met but I think it's a good summary.

The prototype is uploading ,I'll post a link on the testplay discussion and here

Edit : https://jatsu.itch.io/new-continent-prototype-unfinished


Okay then the next steps:

  1. Work on the sprite and animations of the environment, the bounderies etc.
  2. Sfx and music time !  (halfway on this point, just need to make some music and sounds but I've already have all the rest setup)
  3. design some levels (with the plastic continent world, the tanker, the ancient cities etc)
  4. Better UI, rework the pause menu and main menu. (halfway on this also)


Feel free to give any feedbacks or advice  :)

That level 5 bug reminds me of this poem 

So good to know that you've finished so much in such a short time, Jatsu - Looking forward to playing your game :)

(+1)

Ahahahah that was exactly this. I slept 12 hours after finished the upload of the prototype. I hope that I can have a game in a  good state by the end of the jam.