Gravity Ace

Pixel art process


Hey everybody! My name is John and I’m making a game called Gravity Ace. This is my first video devlog. By the end of it, let me know what you liked, what you didn’t like, ask me questions!

I’m making this game solo but one thing I’ve learned about gamedev is that it’s a collaboration between the developer and the player. I’m obviously not making this game just for myself… I want lots of people to play it! And I’ve learned a lot about pixel art and music and sound and programming and Godot Engine.


I’m happy to answer questions about my game, my process, Godot Engine, pixel art, music, sound design… whatever!

So what we’re looking at here is me working on some art using Aseprite. It’s a BONUS graphic that appears when you shoot multiple enemies within a short period of time. This will show you a little about my tools and my process. I’ll talk about it more as we go along.

One of the things I wanted in this game was a classic arcade feel and that means keeping score. The original inspiration for this game also had a score keeping system. (That was a game called Thrust — I’ll talk about it more in another video.)

But the big problem in my first scoring system was that there was very little variation from run to run. In other words, once you completed a level and cleared all the enemies you’d get a perfect score and there was no way to improve on it from there. And it was pretty easy to get a perfect score — just shoot everything and call it a day. Imagine a leaderboard where everybody has the same score. Boring.

Now there are bonuses for fuel remaining, shot accuracy, how quickly you finish the level, rank achieved, and for chaining multiple kills. That’s where the BONUS graphic comes in. When you kill multiple enemies within a few seconds of each other you get a score bonus. And this is the graphic that shows the player that they got the bonus.

I like creating animations in Aseprite first and then setting up the nodes and animation player in Godot. In this case it’s 12 frames. Later when I want to revise the animation art or timing I can do it exclusively in Aseprite. As long as I don’t change the number of frames, the new animation plays in Godot without needing to mess with anything.

Up to this point in the video I’ve tried several different changes. I felt that the original placeholder BONUS animation had too much noise. It had a bunch of dust and smoke and stars and the animation plays so fast that it ends up just being noisy. And I wanted to give it a little more SCI FI flavor. What you’re seeing here is I’m trying to clean it up, remove some of that visual noise, and add some more impact at the front of the animation by doing one frame of a big white flash circle.

I also tend to avoid semi-transparent pixels. In this style, I think it looks better to always use fully opaque pixels and if I want to fade something then I do it by just gradually drawing it dissolving over a few frames. Semi-transparent pixels are reserved for glow effects.

Here I’m drawing some secondary explosions. My technique is to draw a big circle, then in the next frame I carve out a section of it so it’s a crescent, then in the final frame it disappears. I messed up and started drawing these on the wrong layer so you can see I erase them and draw them again on the correct layer.

After seeing how it looks in Godot I go back into Aseprite and I’m adding a little line variation so they aren’t perfect circles. And I included one frame showing the crescent parts dissolving into pixels. With explosions it’s best to have it hit instantly then dissolve slowly over a few frames.

But as you can see here, the animation happens so quickly and there is so much other stuff happening on the screen that the little details in the BONUS animation are kind of lost. You don’t really notice them at all unless you’re really looking hard for them.

So, it’s cut. Too noisy.

And I end up with a simpler animation that is cleaner, has less noise, and I think it conveys the right amount of information to the player without getting in their way.

Well, unless I change it again.

So that’s a little peek at my process. I hope you enjoyed it and let me know in the comments below if you have any questions or tips or just want to share your thoughts. You can also go to GRAVITY ACE DOT COM and join the Discord server and hang out. Please LIKE the video if you liked it. I’m trying to get this game in front of as many people as possible before release and every little bit helps. I really appreciate it.

Thanks and see you next time!

Published December 8, 2019

More devlogs...

Game jams for beginners

3 methods for screen shake in Godot Engine

Creating a custom Fixed Joint in Godot Engine