Game: https://gpgamesdev.itch.io/town-crier
Overall:
Especially given that this was my first game jam and the specific challenges of the moment (more on that later), I'm very happy with my submission.
I think I ended up with a great game prototype that, with more time and effort, could make a full game.
I was only able to put in an hour or two a day on this game, and not even every day. So for a game I spent a total of <30 hours on, I think I put together something really good.
That other thing that worked both for and against me was the impending birth of my second child. His due date wasn't due a week after the jam ended, but that first one came 4 weeks early, sooooooo…
I was aware that at any point I might need to stop working on the project, and that definitely influenced how I worked. I made little changes with lots of testing so that at any point I could submit something. I think this helped me from being overly ambitious with my first game jam submission.
Coding:
I was already familiar with OOP and event driven programming, with my limited unity experience, but this was my first time using GameMaker. I found it intuitive to use, outside of a few foibles.
I'm most proud of the solution I found for tallying influence, a counter in my game. There are a bunch of citizens, and each of them can have a circle of influence. I wanted a citizen to be influenced by every other citizen, but not their own circle of influence.
I managed this making a list of all influences touching the citizen, sorting them by distance, then added them up starting on index 1 instead of 0, so it skips its own influence.
I was also really happy with how citizen patching ended up. I got the idea from a video series of a developer of SW Republic commando, where he talked about how they made smart looking enemy AI just by giving them waypoints to go to. So, to path my NPCs, I scattered waypoints around the level and let them randomly move between them. It made for chaotic but easily programmed and modified NPC movement.
One big struggle I had was syncing the bell sound with the bell animation. I really wanted the bell sound at the right part of the animation, so I tried to play it based on the frame of the animation cycle. But in testing the bell would ring a few times then stop, or even not play at all. To debug it, I displayed the animation frame I was in, and I was surprised to see the animation frame as a real, rather than an integer. This makes sense, with how GMS let's you extend frames, but it was a surprise to me!
Something I think I will do differently in my next project is put fewer variables in the explorer window and more in the create event. I declared pretty much every variable in the explorer window, and it ended up being really crowded. There were a lot of variables that weren't going to change from instance to instance that could have just gone in the create event.
Music:
I'm really happy with how my music turned out. I was worried about this, because I’m not much of a composer. But I knew I wanted a medieval feel, so I went looking for some medieval music. I found Summer Canon, and with just some really basic music theory and chip tune information, I was able to take a simple melody and turn it into some really nice level music and an into jingle.
Especially for a game jam, I think this a good idea that I'll repeat: start with some public domain music and arrange it to be my own.
Art:
This was definitely my weakest point. Art in general is something I'm not great at and which I don't particularly enjoy (those two facts are probably related, any maybe if I got better I would like it more, or if I liked it more I would get better, but that's not the case now). Add to that the challenge of learning pixel art and, well, I'm just glad I got anything.
As an exercise in self confidence, I'm going to list the things I like about my art for this game.
I think I did a good job on the bell swinging animation. 4 frames including two smear frames was all that was needed and helped sell the two key points in the bell swinging
The people are all recognizable as humans
There's strong color differences: the player is the only green person, making them stand out in a crowd
The different color houses was a good idea to help people orient themselves in the level
I like the crier’s hat. I just think it's neat.
With that out of the way
What is up with those walk cycles? Two frames of slight up and down? No leg movement? I think more effort here would have had an outsized influence on game feel.
All the characters look very flat. I kept to a small pallet, so there weren't a lot of options to shading, but I think I could have done something
The town wall looks… bad. Everything else is top down from an angle, the wall is just straight down. I think a log wall could have worked, just not like that.
On that topic, the trees! Oh the trees. While the wall was straight down, the trees looked straight to the side. I tried to give them some depth with the trees in the background and that sort of worked? They were a last minute addition, and I think it shows.
It's frustrating because there's a lot of great pixel art, especially in games. It's hard to get past the feeling of “I could have done better”
I have to keep reminding myself that, no, I did as good as I could have. The end result is not as good as pixel art can be, but that's not where I am right now. I did as good as I was able to do, and next time I'll do better.
What’s next?
I think this game could be expanded upon. The two biggest things would be adding power-ups and adding a story. As is, the word being spread is random, but what if the words told a story? The word could be level specific, and it would influence citizen behavior. For example, maybe in one level a monster is attacking a town. The word could be “Run!” and instead of continuing to wander around, citizens who have fully embraced “Run!” would run away from the monster. The next level could be “Help!” as you recruit people to fight the monster. The next level could be “Fight!”, and citizens would be on a line fighting the monster, but would sometimes try to run away; you would tell them “Fight!” and they would return to the line, full of vigor!
But I think I’m going to step away from this game for at least a little bit to work on something else.