Day 6: When a Plan Comes Together
I managed to knock out two tutorial videos for the Asteroids game today, and it was one of a those sessions where things just seemed to really click. The goal was to finish up the asteroid collisions, and I'm now at a point where the game has a really satisfying loop of destruction.
When an asteroid gets shot, it creates a nice visual spark and sound effect. When a larger asteroid is destroyed, it breaks apart into smaller asteroids. The tutorial had a set number, but I decided to go off-script a bit and randomize it so that either 2 or 3 smaller asteroids will spawn. It's a small change, but it adds a bit of unpredictability to the chaos.
This was also the point where I found myself working ahead of the tutorial. I started adding in sound effects for the asteroid collisions, damage ticks, and explosions before Justin even mentioned them. It's a great feeling when you start anticipating the next logical step in the design. It's a sure sign that I'm getting a better understanding of how GameMaker works and becoming more familiar with what it's capable of.
I also took the time to implement the floating damage text to give visual feedback to the player that the asteroids are taking damage. It helps makes the combat feel more impactful. I'm sure there is other juice (effects) that could be added like screen shake, but that's beyond the scope of these tutorials and not in my initial plan with this game development bootcamp in GameMaker.
One of my biggest takeaways from today's session was a workflow revelation. I'm used to typing out all of my code in the code editor (IDE), regardless of the programming language or game engine I've used. But GameMaker has another way to handle instance variables; variables that an object needs when a new instance of an object is created. I initially resisted the tutorial's method at first, sticking to my old ways. But when it came to creating the different types of asteroids, I decided to fully embrace the new workflow and use GameMaker's Variable Definitions panel instead. It was a game-changer.
Being able to see all of an object's core properties at a glance, and more importantly, being able to have a the different asteroids inherit everything from a "parent asteroid" and then just override a single value like hp
directly in the panel, is incredibly clean and powerful. It’s a small thing, but it’s a lesson in how adopting a new workflow, even if it feels unfamiliar at first, can make your entire project more organized and scalable. The Variable Definitions panel is highlighted in yellow. It works similar to the Inspector variables in Unity. The key difference is Inspector variables are typed first in the code and declared to be public to see them in the Inspector. In GameMaker, you can create them without getting into the code. Alternatively, you can still create them in the Create event like I have been doing until now.
This bootcamp has been fantastic so far. I know Asteroids isn't the most complex game, but Justin is covering such a wide variety of topics that it's giving me a lot to think about. I really feel like my previous experience and his specific teaching style are working together to help me through this process.
It's funny, every engine has its own quirks, but GameMaker is clicking for me in a way that others haven't in the past. Maybe it's my level of focus this time around, maybe it's the engine's design, or maybe Justin's tutorials are just that good. Whatever the reason, it's a lot of fun, and I feel like I'm learning a ton.
Now that the core asteroid mechanics are done, the final three videos are all about building the game loop itself: the score UI, player respawns, and loading new levels. I should be able to wrap this first bootcamp game up soon!
My initial plan was to complete this game in one week (seven days), but it will likely take me eight days. I don't consider this a negative though, because this tutorial series has been invaluable and much more in depth than I knew coming into this.
Bootcamp #1: Asteroids Clone
My first real project in GameMaker! A deep-dive clone of Asteroids, built to master the engine's fundamentals.
Status | In development |
Author | corkboardstudio |
Genre | Action, Shooter |
Tags | Asteroids, Space, Top down shooter |
More posts
- Day 5: Collisions and SFX3 days ago
- Day 4: UI & Colorful Asteroids4 days ago
- Day 3: Multiple Weapons & The Revenge of Linear Algebra5 days ago
- Day 2: Refactoring & Resisting (Some) Temptation6 days ago
- Day 1: The First Pin is Placed7 days ago
Leave a comment
Log in with itch.io to leave a comment.