So, our first full week of development is done. Where are we at? Well, most of the week was actually spent gathering assets and getting those assets into a usable state. The gathering went pretty smoothly; Spriters-Resource had a full collection of character and enemy sprites as well as fully ripped tile sets for me to use. Unfortunately, neither of those could be used in the states I found them in, and that's where most of my effort for the week ended up going. For sprites, I had to convert the sheets to have a transparent background, isolate each frame, and then recombine them into sheets with a standardized grid size, all while fixing any errors I ran into with positioning and framing. Fun fact; did you know that Samus has approximately 720 different animation frames in Super Metroid? Needless to say, this took awhile, especially since I ended up having to go through the whole lot of them twice. Tile sets were a little bit easier; I just had to go in and add mirrored versions for any sloped tiles, since they only included one direction for each tile type. After getting the art settled, I imported all of Samus' sprites and got the animations plugged in to an AnimationPlayer node, which I then started hooking into an AnimationTree. Since I'm just starting out and wanted to get something working on the screen, I only built out the basic idle, move, and turn states. Not the prettiest thing in the world, but we'll spend some time organizing it properly later. Need to think of a system so that this thing doesn't turn into a massive spaghetti pile with just how many different animation states are in this game. With that in place, we made a basic placeholder character object and went to work setting up the architecture for a state machine. I'm not quite used to Godot's practice of needing a separate "scene" for each and every script I want, but I'm sure it'll get easier to wrap my head around over time. Just like the Animation Tree, we focused on getting basic movement working first, and here's what our final progress point looks like for the end of the week: Certainly not bad, but there's still a lot of work to do even with what is here. We'll need to add in acceleration/deceleration for the running to make it more game accurate, make sure the Turning state can properly handle transitioning between crouching, jumping, and falling states, and eventually tackle the hell that will be dealing with all of the different "aiming" sub-states that Samus has. Before we get into the weeds there though, I'm going to try to fill out the rest of the basic movement set, so next up on the agenda will be jumping, crouching, and maybe morphball. Only after we've got the basics accounted for will we loop back around and start fine-tuning and adding more layers of complexity.
See you next time. So, where do I begin... Given the extended nature of my unemployment, I have been spending a decent amount of my time working on various programming projects. For the most part, this has consisted of my attempts to learn the Unreal Engine and subsequently try to create some sort of game with it. I have but nine months of my life into this, and yet I feel like I have very little to show for it. It's not as though I haven't working at a decent pace or even that I've been wasting time; solo game development is a slow process and working in the Unreal Engine by yourself certainly has its challenges. More on that later though. The point is that in spite of what I've managed to accomplish, there's not a whole lot of tangible evidence of what my time has been spent on, which can be.... discouraging to say the least. And that's why I'm adding this blog to my website; the hope is that if I can regularly post updates on what I've been working on, the things that I'm doing will feel more real. I'll have proof that work is being done, even if my brain doesn't think I'm making any progress. It will also make it easier to share the things I'm working on with others across the internet, so that's a nice bonus. So, what exactly are we working on then? Well, as mentioned, solo development for Unreal certainly is a thing. The lack of proper documentation makes learning in a vacuum rather difficult, and I would say it is one of the primary reasons behind why I felt like I was making so little progress. Having to stop every five minutes and look up how built-in functions work, only to find little-to-no information online and end up experimenting until I figure it out, does consume quite a lot of time. As such, I have decided to change tactics. And by tactics I mean engines. The goal is still to learn something besides Unity, due to the greatly reduced demand for Unity developers in recent days, and so we've turned to another engine that has become popular lately; Godot. I've already spent about a week digging in and watching tutorials, and I've liked what I've seen so far. The documentation situation is certainly a whole lot better, considering that information on every class and function is built right into the packaged code-editor. I've got high hopes, but I am still just starting out. Instead of diving right into one of my own personal projects this time, I have decided to make use of an old technique I remember from my college classes. One of the best ways to learn a new engine, is to try to reverse-engineer a game that already exists. Now, I tend to be attracted to platformers and action games when it comes to my own development habits, so something that would make me more familiar with those types of mechanics in Godot would be best. For this reason, the game I have chosen to emulate is.... Super Metroid.
A well known game with thoroughly explored mechanics, fully fleshed out designs, and readily available art and audio assets. A Game that will act as a platform to teach me basically everything I'll need to know about Godot's systems for future projects. The aim is to post here at least once a week, detailing the progress I make, thoughts I have about working in the engine, future plans, and any random things of note that I feel like sharing. Official posts might not start until next week, but we'll see how far we get into it by Friday. Wish me luck, and see you next time. |
Archives
April 2025
Categories
All
|