MiniJam167


Immediate Postmortem for MiniJam 167:

Goals:

I still really wanted to do a game heavily inspired by the experimental Parallax2d object in Godot. To make sure I actually did that this time, I started the project by spending a good chunk of time on the layer setup, which made it way easier to actually implement it when I got to the point in my project where I had time to add features.

Music:

While I feel like my music was significantly rougher, I found a way to tie it together in the end in a way that felt like it honored the dark cyber theme of the game's 'story'. But I feel like my decision to go with less structure was a problem in the end. I skipped laying out any chords entirely, which let me do more creatively, but cost me a lot in terms of structure, and left the music feeling a bit disjointed and flat. I had to do a lot of extra work with the drums and accent instruments to pull the piece together... So I think it would have been better to use a more structured approach.

Scheduling:

Because of other time commitments, I wasn't able to get started properly on this project until I had 32 hours left. This time I actually had a project and a build done with about 30 minutes to go. I feel like I should have pushed it to release and added it to the jam, I could have gone back and updated it later if need be. As it was, I was able to get some nice fixes and enhancements uploaded to itch just before midnight, but by the time I published everything and refreshed the page, I was too late to submit it through the automated process. In the future, I'll have to submit the earlier version even if it's lacking to lock things in.

Graphics:

I came up with the idea of having a gun with two modes, a mode that helps allies, and a mode that harms enemies. I was imagining the way that Hogan's Alley worked, but with the theme being Cyber, I felt a sort of Skynet twist would be a good idea, and graphically, it meant that I could justify doing humans, and their robot dopplegangers. I wanted to have at least 6 base forms, but I ended up going with four.

The graphics for the people I put a lot of time into, mostly because you had to look at them and decide if they were robots or not, so I had to make sure that they looked relatively human-esque, and the robots were different enough so that you could tell they were robots, just not immediately. I ended up editing them more later for readability, so I'm not really happy with how things turned out.

Looking back at it, it might have been a good idea to go for more of a comedy approach, where the robots were over-the-top robot and comprised entirely of cubes, metal, wires, and red lights.

I had no time for the background elements for the parallax layers. Maybe if I could have made them more integral to the game somehow I could have spent time on them rather than having the trains for instance, and it would have aligned better with my project goals.

Sound Effects:

Normally I wouldn't bother talking about sound effects. I generate them with LabChirp, which doesn't take very long for the most part, but sound effects became a large part of the game. There is a lot of information to convey to the user, and I like to use sound effects to convey it. For this game, I needed a sound effect to let the user know which gun they had switched to, which gun they had fired, what the result of the shot was, of which there were four, and additional sound effects for spawning, despawning, and missing shots, and most of those things could all happen at roughly the same time.

I ended up creating 10 different sound effects, then to make sure they didn't overwhelm each other, I changed how I was calling them so that they would go through a manager that would store all the currently playing sound effects, and turn down the ones that were still playing whenever a new one went off. That way, it was much more likely you heard at least the beginning of the newest sound effect, and stood a decent chance of getting the information from it.

I had been planning to show a score change text when you earned or lost points, but it was lost to time, meaning the four different sound effects, and the change in the score value are the only indicators of the point changes.

I'm usually better about reserving using sound effects for only conveying the most important information, especially in a jam, but there were a lot of things I wanted to try to get across using sound, so I didn't have to get them across with graphics. I think the shot result sounds were one of the worst offenders, but I felt like the sounds could convey the 'story' of the result better than a number popping up on your screen. I wish I had time to do both.

The Train:

A special mention has to be given to the train, which in terms of code was the most complicated part of this project. I had a vision for how I wanted the trains to act to start with, so I was focused on making them work the way I wanted them to.

I decided to code the trains up a state machine to control their movement. The trains ended up having 10 different states, though other than two states with two transitions, they all only had one transition out of them, plus two flags to let them know not to spawn new enemies, since that was otherwise independant, and let them know if they were coming or going.

In a way it was a pretty big time sink. There was a lot of debugging involved in getting them to work properly. I even ended up adding a number of states to take care of problems that came up. For instance, especially in early versions where the trains could move much faster when entering and leaving the scene, they would severely overshoot the play area. So I ended up adding a new state for each direction to transition from fast movement to play-speed movement. It's not needed that much now that the values are more conservative, and is the main reason enemies are so slow to spawn when the train gets on screen, but it does guarentee that even if I change the speeds in the future, the game wont start play when you can't hit an enemy.

In the end I was happy with the result, but I do wonder if my vision for the enemy train fight got in the way of the execution of the rest of the game.

Parallax:

Even though using the graphical style I did was largely to show off parallax, I didn't give myself any time to do graphics for it, so they're pretty weak, and I used only rough estimates for a lot of the elements. I didn't do calculations for size, spacing and scrolling speeds, or do any variants of the object types... Two elements I made for the closest terrain, never made it in. One, a bush, I even did the rough art for, but never put into the layers, the other, grass, never got that far.

Changes:

If I could change anything in the short term, it would be to show the point changes when you shot something. That wouldn't be very difficult, but could be quite impactful. If I had infinite time, I'd like to redo the parallax and add in tree and mountain variety at least.

In the game Hogan's Alley for the NES, which this is loosely inspired by, when you don't hit an enemy after some time, you can lose a life. I would like to add that sort of thing to this game. Right now there is no penalty for not hitting a target in time (which is also probably too generous), and there is no way to lose. This could solve both of those problems.

One thing I was disappointed was is the complexity the game achieved. I was originally thinking of having up to four trains on screen at once, but that would have eaten a lot of screen realestate. Also, while the game is supposed to get more difficult over time with the current code, I never really felt that, so I'm pretty sure that I didn't actually achieve that in a significant way.

I was able to get a little playtesting in near the end of the project, and I found out that it was very difficult for a player to see the difference between the bad guys and the good guys. In part, that was the point, but ultimately, you have to be able to tell in time or the game doesn't work, so I quickly made the variants we have now that are more easily distinguishable. I'm not sure if that's a change I should have made, and if nothing else, if I had the time, I might have scaled them up in some manner instead of turning their skin blue and brightening their weapons to make them contrast more.

First times:

This game had a lot of elements that I rarely explore if ever. I don't make many first person shooters in 2d, or games with on-rails movement. On the technical side, it's the first Godot game I've made that uses a custom cursor. It's also on the rare side for me to use mouse controls, preferring to use keyboard controls, but this game design really required it.

Overall, it was a fun experience, and good to get some practice on efficiency, and game elements I rarely experiment with.

Files

GC-MiniJam167.zip Play in browser
3 days ago

Leave a comment

Log in with itch.io to leave a comment.