Hello! Jadon here! This might a weird devlog since we're already 3 days into development, but shhh. After a few days I feel like there's enough to actually make this post now, so it's fine! I should also note that we started on Sunday the 8th, so our Day 1 starts then. ALSO this is going to be a HUGE post since it covers 3 days, so get ready :)
Game Maker Studio
So Spacecat (again, working title) is a 2D sidescrolling RPG-platformer in which you play the intrepid space explorer Peanuts, a cat from Earth (Peanuts also happens to be my cat in real life!) However, his ship crashes on an alien planet, and it's your job to help him find the parts of his broken ship by exploring, interacting with the local aliens, maybe solving some puzzles or doing some mini games (depending on where development goes.) That's more or less the idea for now. As this is the first game I've ever developed, I'm not entirely sure how far I'll get or where my skills will become insufficient, so I'm leaving the future parts of the game open to change. Since I'm a few days into development, I'll summarize the past days' progress. I'll talk about the programming process, while Alex will chime in to talk about the art and animations in her own post!
Day 1 - Day 3
So over these days we've pretty much got the movement system (almost) completely worked out! The very first thing we had was Peanuts' (the protagonist) sprite, so I just added a basic left-right movement system to the game after implementing this sprite. Alex then added a 2 frame animation to the walk cycle which she can talk more about. It could have had more frames, but personally I think low frame animations like this are cute.
I imagine a cute walking sound here, like cute xylophone notes or something.
After this I added a basic jump feature, which was probably the first challenge. I was following HeartBeast's tutorial for movement at first, but since his tutorial dealt with an 8-direction RPG movement system like Earthbound or Undertale, it ceased to help me and I quickly had to go out on my own. I still look at it from time to time, but as my game is rather different, from here on out all of the programming is pretty much my own wonky attempts at coding. Surprisingly, I was able to implement gravity and jumping pretty easily using basic programming that I learned back in high school. I was incredibly surprised that I was able to implement coding concepts that I learned 3 years ago when I haven't programmed in almost as long a time! It's mostly due to GML being a really simple and intuitive language, but let me pat myself on the back a bit :) I had some... interesting issues when programming this too, which I'll put here.
(M R O W R)
(...he's completely oblivious)
After this Alex made the basic ground tiles, background, and spaceship sprites, which I think are really cool, and she can talk more about in her post!
When Alex and I first came up with this concept we wanted Peanuts to fly around the world in a jet-pack. Since now the game is based around finding the parts of your ship, you'll have to find the jet pack early on. However, the actual events of the game are probably going to be one of the last things I'm going to program, so I had to program the jet-pack physics first. Again, this actually turned out much better than I thought it would. I had just learned how scripts work in GML, and had converted the ground movement system to a script from a Step event, and so I simply modeled the jet-pack physics after the ground physics. Of course, this made the jet-pack physics decidedly not jet-pack-like, so I had to add in code for gravity to act specially on Peanuts when he's in jet-pack mode and you are not holding the jet-pack button, as opposed to when it is being held. For about 20 minutes it refused to work at all, Peanuts would just get stuck in mid air. Then I changed a few minor things around and suddenly everything just snapped into place and it worked. The hardest part of all of this was probably the transition from flying to walking. This took a while to make, and Peanuts would keep getting stuck in the ground after landing, but it works fine now!
Funnily enough, though the actual programming part of the jet-pack mode took maybe an hour total, the animations and sprite work for it took the better part of two days. In fact, I've only just now tweaked it so it works about 99% as intended! First there were problems with Peanuts getting stuck in the ground when falling from jet-pack mode because of the size disparity between the two sprites, which I fixed with some tweaks to his jet-pack sprite. Then I fixed up the falling and flying speeds. After that it came time to implement a fire animation which would come out of the jet-pack. This was an absolute nightmare. Earlier I said GML is an intuitive language and it's true, but when coding inside of the Draw event, nothing is intuitive. The idea was to draw the fire to Peanuts' sprite and have it animate. The actual drawing worked but the damn thing just would not animate. I looked everywhere online and many people had similar issues, but none of the fixes seemed to work for me. Finally, I got it to work by writing some extremely slapdash code which manually pushes the animation forward by 1 frame every Step of the game. However, this made the animation ridiculously fast, since Game Maker runs at 30ish Steps per second, which I fixed by only pushing the animation forward by around .4 frames each step so that every 3 or 4 steps, the animation would move forward.
Finally, another animation issue. Alex drew up a really cute animation for Peanuts' jet-pack sprite where his tail swishes back and forth. I thought this would be pretty easy to implement since it's just an edit I have to make to the sprite and I don't have to touch the god-forsaken Draw event. However, for some reason the image just wouldn't animate. After some tweaks it would animate, but only when holding the left and right keys while flying. I'd talk more about it, but I'm still not entirely sure what happened to be completely honest. Eventually I found a random call to change image_speed in some other script which was running for some reason, removed that, and everything worked fine. Okay Game Maker. Now the entire flying system and animations were complete, and Peanuts looked like the regal space explorer that he is!
*Extremely loud purring and chirping*
After this I tweaked some code so that he wouldn't have a weird laggy startup before flying that he would have. I fixed up his sprite as well so the transition from ground to air would be a little smoother. I also added controller support for kicks since HeartBeast had a relatively short video on how to do so. I think it plays a lot better on the gamepad, actually (sorry PC mustard race.)
Mostly everything is working fine, but there's still a few issues that have to be fixed. First of all is the collision transition from walking to jetpacking. What I mean by this is because Peanuts' walking and jetpacking sprites are of different lengths, sometimes when there are blocks directly above and below him he'll just fly through.
This planet's atmosphere allows for cats to drill through the ground at incredible speeds.
At least, I thought it was an issue of sprite size, until I made their collision boxes the same size, and yet it's still happening. This must mean that I have to edit my collision code a little bit. Another issue is that when flying, you shouldn't hold UP while holding SPACE (UP being the jump key and SPACE being the fly key.) This sucks because I'm sure you'll often want to fly after jumping. The reason for this is that when flying and holding up, for some reason you can move right, but not left. This isn't an issue on the gamepad since the jump and fly buttons are mapped to two separate buttons which you wouldn't have any reason to press at the same time. Finally, and the most minor, but probably most annoying issue is when you hold both LEFT and RIGHT while on the ground. It works almost entirely fine, but if you're facing left and press L and R, you'll continue facing left, but if you're facing right and press them, you'll snap to face left. It doesn't have any actual movement issues, but it's still annoying.
So the first things that I plan to program next are the ability to transition from one room to another, which I'm sure won't be too hard; the ability to pick up items, and the first actual events of the game. The plan is to have the first item be right next to your ship, or maybe in the next room. This item will be the communicator and will allow you to talk with your contact on earth, and Peanuts' best friend, Zippy (my other cat in real life!) Zippy will provide commentary and hints(?) throughout the rest of the game through a text box on the various peoples' and places on the strange planet Peanuts finds himself on. Speaking of people, in addition to actual events, I want to add NPCs very soon! Alex has already drawn some sketches of some interesting/funny/weird/cute NPCs, whose dialogue we will collaborate on. I'm not sure about enemy NPCs yet, but I definitely want friendly NPCs who you will be able to talk to and who may also provide hints as to the location of certain parts. For example, one NPC might say something like "Oh yeah, I saw some small creatures carrying a weird shiny bottle with liquid dripping out into the forest earlier" which may tell you where the fuel reserves have been taken or something like that. For the actual events of the game I'm not sure yet. I haven't decided between if I want there to be like, one combat system through which you do everything, or if every part-finding event will have a different mini game or something like that, for example with one being a treasure hunt, or one being a combat based mini-game etc. I don't know about a full combat system since this is supposed to be a cute, nice game, so if there's any combat it will just be for fun :) Anywho, basically what I'm saying is I've only just begun, and now we're up to the actual hard/fun part of developing the game!
Music is also a must, of course. Alex and I are both very passionate about music and so we will be splitting this responsibility. However, this will be the very last thing we do, as it is unnecessary for the game to actually function. At the very least, expect two or three tracks!
Conclusion of the Introduction
Well, that's it for the first 3 days of development! Sorry for the long post and poor formatting, but we did a lot these past 3 days. I've had an amazing time making this game, it's so exciting to finally be doing what you've wanted to do for so many years but never had the motivation. I really appreciate the people who made this Game Jam a thing, since although I've always been intimidated by other game jams, I have a really hard time starting anything without a deadline, so I really feel like this game jam is the reason why I'm finally beginning to make games! I also think Alex and her art has helped a ton, since I was never really motivated to make a game when all I could draw were boxes moving around. Now that we have actual sprites and backgrounds with charm and atmosphere, it feels like I'm actually making a game when I program them! I think some people can have a good time programming a game even without good art, but I've always thought of games more visually, and so the art really helps to motivate me.
Anywho, Alex and I are really enjoying making this game, and I hope you've enjoyed reading about it! Please stay tuned for more updates and shenanigans about our game and to see where Peanuts might find himself next! If you want to chat I'll be in the discord every now and then (Stumpus #2821) and you can follow me on twitter @StumpCricket, where I'll be posting about the game's progress!
(He has no idea what's going on)
P.S. Since today is Day 4 I won't write the post for today, but expect the next post soon!