Asteroid Catcher banner

Asteroid Catcher

19 devlogs
25h 3m 53s

My first actual game in Godot. The game idea is based on a scratch game i made couple years ago. Play as a monster that catches asteroids in an arcade-like Gameplay.

Demo Repository

Loading README...

diceysnikey

Changed all this:

  • Added a music toggle
  • Fixed the triggered mouth variable not resetting when pulling asteroid from pool
  • Fixed the colorblind button not displaying right
  • Enlarged the player scoring hitbox
  • Changed the game over menu’s “Restart” to “Main Menu”
Attachment
0
diceysnikey

I added support for color blindness in the main menu. A playtester had some problems distinguishing the asteroids, this should be better

Attachment
0
diceysnikey

Shipped this project!

Hours: 24.01
Cookies: 🍪 497
Multiplier: 20.7 cookies/hr

My first game! I definitely learned the basics to make other games now, more coming soon ;)

The Gameplay is very simple and arcade-y. You need to catch the green asteroids and dodge the red ones. I would love to hear your people’s high-scores. Mine is 37.

It was a very fun experience, and it’s not really programming, but I’m proud of the music too.

diceysnikey

Added a tutorial and music. I made the music completely myself, in Renoise.
The game is now in a state where I am comfortable with shipping it, which I will probably do now.
What a ride! :)

Attachment
0
diceysnikey

VISUAL OVERHAUL PART 3 (Sound effects):
Added three sound effects for catching asteroids, one for selecting buttons, and one for dying.
Next up will be the music. I don’t know how long that will take. Still a newbie to Renoise

Attachment
0
diceysnikey

VISUAL OVERHAUL PART 2 (Sprites and Fonts):
With the NES-NTSC color pallete, I updates all sprites. And with the Mr Robot font, I updated all the text in the game, also using the sprites colors. Let me know what you think!
Next up would be the sound effects and music. But I have to figure out how to make Renoise run on Linux first.

3

Comments

Sim Dev
Sim Dev about 1 month ago

very cool game <3

Sim Dev
Sim Dev about 1 month ago

cool animations

diceysnikey
diceysnikey about 1 month ago

Thank you!

diceysnikey

VISUAL OVERHAUL PART 1 (Background):

This took 2 days because i couldn’t really figure out what exactly i wanted to do with the visuals. My first inspiration was Moonpong and its trippy background, but i’m not really hyped about learning a whole shader language. So i wasted some time trying that.
Then I found this game called “VVVVVV”. This and ss14 are the inspirations for the space parallax background, and I will use VVVVVV as a color reference for the next sprite changes.

Attachment
Attachment
1

Comments

diceysnikey
diceysnikey about 1 month ago

Forgot that the closer stars should be faster and the farther ones slower, not the other way around. lol, going to fix it next update

diceysnikey
  1. Added fullscreen support. I decided I can add it after all since windowed players won’t have and advantage anymore thanks to:
  2. Changed movement from mouse, back to W & S keys.
  3. Added a booster system, allowing the player to double their speed for a short amount of time
Attachment
1

Comments

diceysnikey
diceysnikey about 1 month ago

No fix for the stutters yet. Still waiting for a response from the godot forums

diceysnikey

I am actually going psychotic.
First, i wanted to add a fullscreen, but after testing, I didn’t include one because windowed players would have an advantage.
Then, i tried to fix the dreaded occasional frame drops. I implemented a whole pooling system just to fix it, only for the stutters to still be there. I included a stutter tracker that shows the stutters in the console. Please, if someone could clone the repo, look at the project themselves and tell me what is going wrong, PLEASE tell me. I wasted 1 hour (2 hours because godot just closed in the middle of editing) for a fix that didn’t do anything.

Attachment
0
diceysnikey

Changed a few variables names and fixed the bug where the time in between Asteroid spawns would decrease infinitely until 0, essentialy making it unplayable.
Before I get on with the “Complete Visual and Audio Overhaul”, i want to make sure the Gameplay is as good as it can be. If you have any Gameplay related ideas i could add, please tell me! The current Gameplay is in a video from the previous devlog. I will also set up a repo for the game in a minute so you can playtest it yourself.

Attachment
0
diceysnikey

I added a system that increases the difficulty over time. It took so long because there are so many timers to keep track of, and i had to rewrite some code to fit that.
The video shows how the difficulty of the game gets harder as time goes on. The console shows some useful information for you guys.

Attachment
Attachment
Attachment
1

Comments

diceysnikey
diceysnikey about 2 months ago

I should probably change some variable and script names next time to make it more clear

diceysnikey

I added a high score and the automatic saving of it. I didn’t really run into issues so there isn’t much to say about that.
But i had a bug: When detecting if a badAsteroid entered the player collision, it would use the parents name as reference. This wasn’t good because Godot names instances like this “Node2D@10”. So sometimes my detection just didn’t work because of the name. I fixed this by adding a new badAsteroids group and setting the detection to reference this instead.
The video showcases the high score and saving features even when closing the project.

Attachment
0
diceysnikey

Added the bad asteroids and a Game Over screen. It pauses the game and shows to options. Either to restart, or to exit. This whole process was relatively easy to implement.
The next game play addition will probably be the difficulty rising over time. And a high score

Attachment
Attachment
0
diceysnikey

To prepare for the main menu, i restructured all my nodes. So now i basically have the main node that instances the menu, then the spawner, and the spawner instances the rest.
The video shows in the remote tab how the main node instances the menu, the menu deleting itself, and the spawner being added

Attachment
Attachment
Attachment
0
diceysnikey

This one took waaaay longer than expected. My first goal was to change the movement from keyboard keys to following the mouse. When starting that one, it led me to the first fix:

  1. Because i set the player position by the viewport, it caused a coordination deviation with the mouse position. I fixed it by placing the player at 0.0 and moving it to the start location by code.
  2. Then i could change the movement to the mouse. This took a while because I used the previous keyboard code as template, but this caused the player to jitter up and down when reaching the mouse because of the way i coded the velocity. It works good now
  3. I noticed that there is an option to “Snap 2D Transforms to pixel”, turning it on to make my texture snap to the pixel grid. I recommend turning this on too for people who have pixel-art textures.
  4. In the previous devlog, i added the signalbus. But i missed the signal connection between the player and ui, so i added a signal for it to the bus and changed it.

If next time there aren’t a million deviations like today, i will definitely add the main menu. And if the main menu coding goes by fast, then I’ll add the dangerous asteroid causing a game-over too

Attachment
Attachment
Attachment
2

Comments

TheEpicStudent
TheEpicStudent about 2 months ago

I like it; you should add an animation so when the astroid is close enough they get sucked into the players mouth.

diceysnikey
diceysnikey about 2 months ago

The ‘get sucked into the mouth’ part would be hard to implement because of the inner collision-outer collision mechanic, but i could add a crushing animation. I’ll definitely add it in the visual overhaul soon, thanks!

diceysnikey

I am getting more and more used to Godot, and its starting to get smooth.
This time, i fixed two bugs:

  1. Asteroid not being cleared when out of view
  2. Asteroid being eaten even when it didn’t touch the outer collision yet.
    The second bug took the most time. I had to setup a signal bus, and to my previous self-devlog: I understand signals 100% now :)
    But now I am kind of stuck, because I almost can’t think of anything new to add. I will do a complete visual overhaul, but only when I am sure that the gameplay is done. The only things remaining from the original scratch game are the main menu, increasing difficulty over time, and ‘bad asteroids’ leading to a game-over.
Attachment
Attachment
2

Comments

Kajmix
Kajmix about 2 months ago

Hi ^^
I think you should add an animated space background and maybe some dangerous asteroids. If you eat one, it could explode and you die.

diceysnikey
diceysnikey about 2 months ago

The animated background is a really good idea! When doing the visual overhaul sometime in the future, i’ll definitely do one. I already had the dangerous asteroid idea planned, coming probably in the next one :)

diceysnikey

I didn’t have much time today so this is a short one.
I modified the spawner so it now spawns multiple asteroids, at different y-positions inside the viewport, and different times between 1.5 and 2.5 seconds.
The only thing i was ‘stuck’ on for a moment was getting the random y-position to work, but I’m surprised at how quick i was able to make it work.
Next time I’ll fix the player collisions so only asteroids that passed the outer collision can get accepted by the inner collision as a point (see image for reference)
I am slowly running out of ideas to add. so feel free to give suggestions please!

Attachment
0
diceysnikey

The reason this took me so long is because signals were hard to understand. And it didn’t help that i kept seeing different results for godot 3 and godot 4 when googling for help.
What I added was two collisions to the player, one outer collision (changes to the open mouth sprite) and a inner collision (changes to the closed mouth sprite and emits a signal to the scoreboard) that get activated when the asteroid enters them.
I’m still not sure if I understand signals 100%, but at least i have something. You have to make it exist first to make it good later, right?

0
diceysnikey

I added the asteroid this time. It took a while because I am still figuring out Godot and all its stuff, but it worked!
Figuring out the instancing was my biggest problem, because I didn’t know that I had the player scene as the main scene, and so my spawner script didn’t instance. I fixed this by moving the spawner into the player scene. I tried setting my main node as the main scene, but the asteroid visibilty was a bit weird. Next time i’ll fix it, i dont know what stopped me really.
Right now the asteroid moves to the right, but doesn’t have any interaction whatsoever, it just slides forever to the right.
If there are any ways to do stuff better, then please comment! I am still learning, so any help is appreciated

Attachment
Attachment
0
diceysnikey

As an introduction, i want to explain the game idea I want to go for. It is based on a game I made in scratch a few years ago.
The player can control a character that can only move up and down on the y-axis. With that movement, the player has to catch objects that spawn from the left side.
I first made the sprite for the player and set up the movement. Getting into GDScript took a bit, but setting up the movement was relatively easy. Only problem is that the sprite looks weird for a few frames sometimes, you should be able to see that in the video. If anyone has any ideas on how to fix it, please tell me.

Attachment
Attachment
0