Results #
The Cosmic Horrors Jam voting period is over. Results are out!
Overall: Godscrown
Fun Factor: Boba Into You
Visuals: The Hill Climb
Audio: The Moon’s Eyes
Originality: The Hill Climb
Godscrown was really a well-crafted game. I loved the pixel art and I was impressed with the tutorial and also getting a card game to flow so well in a game jam timeframe. The maker, Caaz, mentioned that he based it on an existing boardgame, a strategy I should try out at some point.
Caaz is pretty inspiring. He’s got projects in GitHub dating back to 2013 and some contributions to Godot and Godot documentation repos, too. Whoa. https://github.com/Caaz/
He was also responsive to my questions about his game and active in the jam Discord. https://itch.io/post/14620084
Boba Into You was heaps fun. It was actually my first exposure to a job-like horror game. Learning the steps to make bubble tea (it took a few tries) in rather a pleasant atmosphere but then something is a bit off and things get creepy and downright horrifying very quickly.
Somebody told me the Chilla’s Art brothers started or had a big influence on this genre. Horror in the mundane of everyday life. They incorporate Japanese mythology and folklore, too. I’m a bit horrored-out right now but sounds like something I should try.
It was a big team.
The programmer, Finnn, has like 11 games on Itch. Looks like all jam games. https://finnnmn.itch.io/
The 3D artist does mostly 2D anime on their Instagram.
Looks like the programmer, the writer, and the 3D artist have worked on a few entries together. Neat.
The Moon’s Eyes was another job-like horror game. Really well-executed. Not as effective as Boba Into You, I guess because there wasn’t any body horror, but they created a great vibe in the little moon base and with the CRT screens for the computer. Oh and the intro! The intro video was amazing. So retro.
The Hill Climb. Looks like I really need to play this one! In addition to placing first in visuals and originality, they also placed second in Audio. Fun Factor was down at #15 maybe it’s a VN?
Other games I liked:
Eldritch Pizzeria was a very simple game toy but a lot of fun, too. I happily made a few pizzas. Having a chance to let my creativity take over was nice, once I realized that’s what I was there for. There wasn’t a lot to it but it was done to a high standard and the art was lovely.
Shepherd’s Path is one of my favourites of the bunch. It placed sixth overall and the story and writing were amazing, the art was amazing, the music was amazing, and there were a few sound effects at key moments that were really effective. Really beautifully crafted.
Unearthed #
We placed seventh out of fifty-three entries! Cool! That puts us at about 13% of the entries. We had 15 ratings.
Scores were:
| Fun Factor | #6 | 3.667 |
| Overall | #7 | 4.133 |
| Audio | #8 | 3.867 |
| Visuals | #10 | 4.133 |
| Originality | #11 | 3.867 |
Pretty stoked to place in the same league as Shepherd’s Path and the Moon’s Eyes.
From the Game Jam Comments #
People liked the mechanics, visuals, effects, music, and the narrative.
Seeing the hiding mechanic gave an instant feeling of apprehension. This happened in the video by Waken Games, too. https://www.youtube.com/watch?v=s_wJH6GaDYc&pp=ygUSY29zbWljIGhvcnJvcnMgamFt
People liked the big bad ending. “A visual delight,” as one commenter put it.
They liked the 2.5D perspective.
Highlights from the Devlogs #
One of the things I wanted to focus on was building an atmosphere. I didn’t end up working on that directly very much but as a team we succeeded.
I set out hoping to use Jesse Schell’s loop for iterative game development but didn’t get through more than a couple loops before I forgot about it. I was definitely making task lists and prioritizing on a regular basis, however. Pretty similar to how I worked on WarpLooper. I might need a way to share tasks with team members in the future.
Animations Involving Multiple Game Objects #
For the animation of a player walking through a door my solution is to hide the player node and duplicate the player art node inside the door scene. That way the door has full control over the player art and I don’t have to worry about disabling player input or anything.
Not sure that turned out well, though. We had an issue where the player’s point light source disappeared at the start of the door animation. That required some extra code to address. Maybe still better than the alternative?
Feedback Loops and Player Projection #
Wow, it’s cool to see the old artwork I was developing with initially. I was working with the idea that the setting would be a hospital.
At first I tried point-and-click navigation since I was going for a sort of point-and-click adventure game. I ended up switching to WASD for movement because it feels more personal.
Thinking about it from a cognitive systems standpoint, a point-and-click interface has a very loose feedback loop between the player and the avatar. The user clicks once and then they watch the player make their way across the screen. With WASD the feedback loop is very tight. The player is constantly pressing and releasing keys and the avatar responds in real time.
The tighter the feedback loop, the more the player projects themselves onto the avatar. The things that happen to the avatar become more personal to the player so the feeling of dread and fear comes across better.
I’m pretty excited about this format. Initially I chose it because I wanted situations where the player and the PC see different things and are working with different information. This never came to pass but I’d like to explore it more. But that’s not the only thing I like. The low camera angle lets you see things from a more personal angle, not the god-like angle of a top-down adventure. It also means the rooms can be hand-drawn. I can effectively have the player walk through a painting.
Player Scale Guides #
This is becoming its own article but I was also proud of how I setup the character scaling based on perspective. It was a simple linear perspective but instead of storing constants to determine how big the player should be at a given y-position, I added two “Player Scale Guides” to the room.
The two images of the protagonist Prima on the left are the scale guides. These are freed from the scene after initialization but first, their scales and y-positions are recorded. Then I can use linear interpolation between those values to determine how big the player—or any character for that matter—should be as they move around the room.
In the end, all rooms shared the exact same perspective so I didn’t end up using the scale guides much but this should make it much easier if I were setting up a bunch of different rooms with different camera angles.
The Storyboard #
The storyboard was really important for communicating what I was trying to build. Part of me often thinks, “let me just build an ugly prototype real quick and they’ll understand what I mean.” The thing itself is the best demonstration of the thing, yes, but not if it’s not built yet. So I drew a storyboard of a few of the interactions I was hoping to see.
There were three pages like this and I think it did a lot to communicate with the team what we were going for. I had written out different descriptions of what the vision was but having these sequences written out was really important.
I think it wouldn’t work in a short jam but in other projects I might want to do this a little earlier and probably even have more examples. Make it better organized, too.
But don’t overwhelm the team.
That was another learning for me. Figuring out how much direction I should give and how much to let each member direct themselves. Everybody was different and it was my first time working with them all so I had to be adaptable. I think I have a lot to learn here and it’s probably one of those things where you’re constantly learning.
Getting Content was Like Christmas #
It was really cool receiving content and giving feedback. Tim Carter was really good at giving a few rough ideas and letting me choose what I liked before refining it. The music was so integral to creating the haunting atmosphere. And he had so much positive energy and feedback in all parts of the game, it was great to work with him.
Alysan’s writing always surprised me. The story went in directions I wasn’t expecting but it made a lot of sense and gave the game a lot of life. The narrative was a really big part of Unearthed with all the NPC interactions and journal entries and I’m happy with how it turned out. I hadn’t even thought about journal entries, that was Alysan’s idea, but it fits the Cosmic Horror genre perfectly and gave us way to communicate bits of story within the gameplay and reward the player for exploration so it was a huge success.
Still No Artist #
I was getting a little nervous about the art. I guess in Jesse Schell’s iterative loop the art was becoming a bigger and bigger risk as time went by and we didn’t have an artist. Then Alysan messaged and said she found some one who would be a good fit. We invited Flavian to the server and for the first day didn’t hear much and I was still a bit nervous. Maybe he’s just busy. But man, the second day he was online asking a bunch of questions. I gave him the rundown, sent him the storyboard, and answered as much as I could but he was asking things about the game I hadn’t even considered. Like, what year was it? He needed to know what kind of clothes they were wearing.
The Game Gets a Life of Its Own #
One of my favourite moments in this project came after I directed him to the #story Discord channel because I figured Alysan would be the better person to answer some of these. The two of them started discussing details about the characters and the setting while referring to games they had both played. That was the first time I felt a project take on a life of its own.
In my previous game jam I was always at the center of every decision but now I had two team members figuring out their own direction. It was such a cool thing to see.
Dialogic #
First time with Dialogic. It was pretty nice to work with. Good documentation. Nice UI. I never did find a way for Alysan to be able to directly work with it but manually converting her writing using the timeline file format wasn’t bad.
I liked how easy it was to swap backgrounds and trigger audio clips. One downside was that the audio clip would need to be played in its entirety before the next bit of narrative would be displayed. It didn’t always make sense with what I was doing.
I also had trouble with emitting signals. Sometimes it worked, sometimes it didn’t and I really couldn’t figure out why. Eventually I gave up on signals altogether and used callbacks on a Global singleton. That was much more reliable and I wrote a DialogicConnector class to keep all those methods in one place.
Oh, one more thing I would’ve liked is to have the text box appear on a different side of the screen depending on who is talking. Maybe it would be too jarring, I’m not sure, but I was sometimes confused about who was talking at any given moment. This even came up while I recorded that playthrough.
Animation #
I didn’t have a plan for animations. I’d compiled a long list of animations we’d need during the first couple days of development and now it was the next thing making me nervous.
I spent a day prototyping animations in Godot. I used some random placeholder assets and got a skeleton with IK working and tied an animation player into it. But I could see that it was going to be time consuming and painful to make animations with it.
So then I tried doing some quick hand drawn animations. But I don’t know animation and I can barely draw! And even if I could, what was my plan? Send Flavian rough animations for him to clean up and colour in? Even if he recreates them it kinda takes away a lot of his creative agency in the process.
I was a bit stuck here and not sure what to do. At the time we decided we would do very simple 2-frame or maybe 4-frame animations but we didn’t end up doing even that. We had a few different drawings for the enemy aka Dina’s attack frames but other than that the main gameplay was not animated. Just static sprites floating around the 2.5D space.
One commenter pointed out that a walk animation would probably help a lot but overall it wasn’t too bad. We did have different character facings and there were some lovely, subtle animations in the NPC rooms.
So animation is a problem that I’m gonna have to figure out. That’s probably why I’ve spent the last couple days working on a simple tool to help me learn some animation and maybe create a workflow for making small animations.
Music Transitions #
This was a big one. I didn’t make a plan upfront for what I wanted here so I went through a few different iterations that just didn’t work. I tried a state machine where different parts of the game would call methods on the MusicManager to trigger state changes but it got very confusing.
In the end I had the MusicManager subscribe to a bunch of signals from the game and from rooms. The signal handlers would usually set some boolean variable keeping track of the state of the game. Then I had a big if statement that would evaluate all these different booleans so I could determine which tracks should start and stop and at what volume.
It took some doing and it’s not very pretty to look at but in the end it handled all the transitions very smoothly and when I needed to add, say, game ending music it was very easy to do so.
Frankensteining #
I don’t know if Flavian ever actually noticed this. I wanted a sprite where Prima is crawling on the floor but I wasn’t sure about it. I didn’t want to distract Flavian from his other drawings so I ended up doing it myself. I intended to replace it later but it worked and Flavian had his hands full so it stayed.
I started with these sprites:
Then combined them in different ways:
To create this one:
Special Effects #
Tim Rolls and I had been talking about working on a project together for nearly a year. I’d worked with him previously on a couple art installations where he did some fabrication at MakerLabs. Then one big project building an art installation involving projection onto some carefully arranged cubes. But never a game before.
It was awesome because he’s the only one with experience in Godot and Git. So I would sign on in the morning and fetch his updates. Then as I wandered around to different parts of the game I would see changes that he made. Sometimes they were big changes like when he first added fog and lighting and changed the atmosphere completely.
Sometimes they were little changes like when he added HUD indicators for diary entries collected or adding a subtle background to the title menu.
Our skills/interests really complimented each other. I was very functional, making sure the game mechanics were working and all the pieces fit together and he used his design sense to level up the aesthetics. He added a lot of depth to the experience with shaders and lighting and really tightened up the whole game with a generous dose of polish.
The Big Bad Ending #
There was a point where team discussed having a game over screen where the big bad was imposing over the tiny player character, to communicate clearly that they were doomed. This was a big no no for me because the whole point of this exercise was that the player themselves—the person—never sees the big bad. The PC Prima might see the big bad but through a doorway so the player can’t see it. The player would only get to see the reaction and maybe some trippy special effects to help sell the idea that she was losing her mind.
This was one of my guiding principles for the whole project. The unfathomable horror should not be shown to the player because there’s no way to depict something unfathomable.
There was some talk about making it hide in darkness which, yeah, that would help, but I decided to spend that day hashing out my vision for the scene to see if I could turn the team around… and prove to myself that this worked because at the time, I wasn’t certain that it did.
So we got this:
And this:
A big part of it, too, was lining up the sound effects and the music. I asked Tim C to make a more chaotic piece for this ending. Something with a lot of noise and distortion. Then I took my favourite 30 seconds or so and faded in and out using Audacity.
At the end of the day I wasn’t sure I had what it took to do what the scene needed. It needed some special effects and I’d seen what Tim R could do so I messaged him asking if he could give the scene a little love.
He sure delivered.
It wasn’t what I originally had in mind but it fit really well, made sense, and was aligned enough with my vision that I could let go of the old plan.
Seems a lot of people came across this ending in their playthroughs and they loved it. Also got a good reaction from Awaken Games on that playthrough.
https://youtu.be/s_wJH6GaDYc?si=As9-IhVOVqeJdmCG&t=429
Foreshadowing the Big Bad Ending #
It would’ve been really easy to have players hate this ending. If they felt it came out of nowhere it would’ve been really irritating. Arguably it still feels a little bit unfair but we did a lot to try to steer them away from it. That way when they make the decision to push forward anyway, they’re not completely blind-sided by the sudden game over.
The artist NPC warns them away from the spirals. There’s a diary entry that mentions a character disappearing after going through a door with spirals. The music that’s triggered when they first see the spirals sounds like a warning call. And speech bubbles are used to show that Prima is really not feeling good when she’s around the spirals.
I still question having an automatic game over but in a game with a five-minute play time the lost investment isn’t too bad.
Artwork for the Good Ending #
Flavian was super productive throughout the jam and sometimes it was hard to keep up with all the art he was producing. I fell behind adding his assets to the game.
At one point he sent an image for the ending scene where Prima finally finds and rescues her long lost friend, Alice.
Here’s what it looked like:
He had sent a rough idea of the image maybe an hour earlier but it wasn’t until I saw this one that I realized the emotional tone might be off. I had a quick chat with Alysan since they were her characters and then asked Flavian to hang on for a sec as we might need to change direction.
The characters knew each other back in college and from Alysan’s writing they seemed really close. “Your work led me to this ruin, to you I hope. Wait for me, Alice.” The high five hand shake wasn’t right. It did give the impression that, united, they had the strength to break free of the cursed catacombs but it didn’t convey their closeness.
I felt bad asking him to throw away work, especially in the last 24 hours of the jam! But Flavian, Alysan, and I discussed what the scene should look like and exchanged stock photos (there are so many stock photos of people helping old people off the ground) and other reference material until we were all on the same page.
The final result conveyed their relationship a lot better, I think.
Now that I think of it, the high five hand shake is probably how the team felt when we finally finished our submission and delivered a sweet game! (-:
So Much was Cut #
Alysan had written a lot of content that was really interesting, like one of the survivors discovering Alice’s diary entry and since their own memories were erased they thought that maybe they were Alice. There was also a bad ending sequence where the player character Prima goes insane. I wish I had time to include these but they required implementing completely new mechanics in the gameplay. I couldn’t just add a new doorway which leads to a room with an NPC.
Looking back, I wonder if I could’ve communicated that so Alysan could write for the existing mechanics instead of creating situations that needed new ones. I guess at the time I thought I would be able to implement the new ideas so it would’ve been hard to see the need for it.
I also had a bunch of ideas that didn’t make it into the game but that’s not surprising. I had pages of ideas in my notebook and more than thirty tasks—some of them large, vague possibilities—that were never completed. Some of the interesting scenes I imagined never made it and the whole idea of the PC seeing things the player does not—and this was a key part of my pitch!—never actually made it into the game.
Since I liked the format, WASD with point-and-click perspective, so much and since I haven’t explored those possibilities with it yet, I’m thinking I might need to make another game along a similar vein.
Last-Minute Level Revamp #
Tim R mentioned that too many of the rooms were empty. We had 6-7 interactions spread out across 20 rooms so more than half of the rooms had nothing going on. It also just gave the player more ways to get lost and confused.
We hadn’t really noticed before because the dev bar let us jump directly to the key rooms in the game to speed up playtesting.
So, less than four hours to deadline I nuked four rooms and rearranged the journals, NPCs, and hiding spots. Sounds risky, right?
Fortunately, this was something that was easy to change. A single array contains all the information for each room. On top of that, I’d already resized the level a few times and ironed out some bugs in the process.
I started the game off as a 3x3 level just so it was really easy to get around and test things. Then I bumped it to 5x5 which was my original target size. I’d already dropped it to 5x4 because there were too many empty rooms. So cutting down again to 4x4 wasn’t too stressful.
Also helps that you can test the whole game in like 15 minutes.
Here are a couple of the maps I used as reference:
What Can I Improve? #
Loading Screen #
One of the biggest uglies in the game was the blank screen after the intro blurb. It was like 5-10 seconds of just nothing. Makes players think the game is broken and low quality and maybe not worth their time right at the beginning.
I don’t know why I didn’t see it before. I guess that intro was one of the last things I added so that’s part of it. But out of all the times I ran the game including in the browser, I think I only saw it once. Tim R mentioned it but by then it was too late to do anything. It wasn’t until I saw it on the stream by Waken Games and his reaction to it that I realized how important it was.
https://youtu.be/s_wJH6GaDYc?si=-OUjzCZ9ZkHP0U4a&t=171
That playthrough was really great feedback. I should do that for others next jam.
So yeah. A loading screen. And why was it taking so long to load at that point? That’s really weird, too. Because assets would already have been loaded for the first intro room. And this was before the room_basic.gd which contains all the variations of 90% of the rooms so I would’ve thought that’d be the bottleneck if anything.
Learn Animation #
Even some basic 2-frame or 4-frame loops can have such a huge impact on how the game feels and the overall quality. I think there’s a player expectation for animation and it seems like it would be a lot of fun for me as well. Lots to learn, though. Not only do I have to learn to draw these animations (and draw them quickly!) but I need to learn to integrate it with player movement controls and state machines.
Learn Special Effects #
Having Tim R on the team doing all the heavy lifting for lighting and effects was great. I want to learn to do that stuff on my own, too. It tends to be a bit of a blindspot for me so I gotta pay attention to what I like in the games I play and learn to replicate it. The big bad ending turned out great but I’d love it if I had the skills to implement the vague imagery I saw in my head.
Recruiting an Artist #
Is there something I can do differently to get an artist on board earlier? I struggled to sign up an artist to the team and in the end Alysan was the one who found somebody. She followed his work on Instagram and realized it would be a great fit. I guess searching for team members outside the game jam Discord is one lesson I could learn. But I wonder if showing my own bad placeholder art or maybe some concept art or clips of art we like would help.
Other Small Things #
- Storyboard earlier. Overcommunicate the vision.
- Try to explain what images should feel like.
- Keep better track of external assets used.
- Learn from others in the team lead role.
Next Steps #
I’ve learned a huge amount from the two game jams I’ve done so far. Making small games with short deadlines is definitely a great way to go. Eventually I’ll need to learn about things that play out over a longer period like player power progression and pacing but for now I think more game jams are the way to go.
I’ll fix the loading screen in Unearthed and take it to the next Full Indie meetup to get some more playtesting feedback. Maybe one more round of updates and then I’ll tie it off.
Finally, I’ll shore up my skill gaps, starting with animation. Already working on that.