My Experience and Process Creating "A Light Journey"


Last year for the Norwich Games Festival Jam, myself along with berrlly and Illidave made "The Stone Of Southerly" a game about a Norfolk folk tale involving a meteorite in the mid 1600s. It was an incredibly fun and rewarding experience and when I heard Game Anglia would be hosting another one this year I knew I wanted to take part. This dev log documents my experience creating a game as a solo, hobbyist, game developer with full time job outside of the industry. I didn't work on the game every day, although I do think I put a lot of time into it this year.

Day 1: Planning

The theme this year was "Journey Home". I was reminded of playing my Gameboy on cosy car rides at night, needing to wait for the illumination of street lights to see anything on the non-backlight screen. I decided it would be a good fit and utilising the light in game would be an interesting play on the concept. My initial idea was a 2d platformer where obstacles would be effected differently in the light. Although I'd created a few platformers in the past and wanted to try something different. So in the end I decided on a top down "Zelda-style" game with more focus on puzzles.

Days 2-5: Setting up the game

I use Godot as a game engine and have been involved with 5 other game jams before, so I'm fairly comfortable with the basics. These first few days I spent:

- Creating the character controller
- Adding the walls and collisions
- Setting up the picture-in-picture effect for the console
- Adding a moving light
- Adding Camera Shake to simulate car vibrations
- Making a room system with camera transitions
- Designing a quick Map layout to traverse with multiple routes

I also put a lot of work into trying to create a dynamic tile set, where tiles could be effected by the light. Tiles could have their visibility, collision, and ability to hurt the player all be changed depending on being in the light/darkness. I had the idea of things like spikes that retracted in the light, shooting arrows and hidden walls that you could only see when lit.

First prototype involving the street light when the game had a scanline shader

Some of these tasks took a lot longer that you might expect. The camera system for example was done over multiple days and went through many different iterations. It consists of triggers at every entrance and camera anchors that the camera will look at. When you walk over a trigger, the camera will quickly move to the nearest anchor to create a room transition. In larger rooms, when the player is between multiple camera anchors the camera instead follows the player's x/y position depending on if it's a tall or wide room. This creates a seamless experience where the camera never moves beyond the borders of the rooms, but you can also see everything around you as you move through larger areas. This system is also modular, so I can add a lot of rooms without having to manually place all the triggers and anchors.

To achieve something like this there was a lot of trial and error, watching tutorials to see how other people created similar features and tweaking details a lot until it felt right. There were multiple times in the process when the camera system was completely functional but could be improved for a better player experience. For example at one point, if you moved quickly enough you could have the camera follow the player between two anchors while the camera was still transitioning to the first, this felt very jarring. I think my own experience playing games helped greatly in knowing what makes a game feel natural or frustrating when controlling and looking at it.


Camera system explanation

Days 6-8: Changing Concepts

After thinking about the gameplay loop, I was finding it difficult to see where the fun would be. For the light to be recognisable it would need to illumine the entire screen on a frequent cycle, this would make things like hidden walls or traps immediately noticeable without any effort from the player. The challenge instead would mostly be manoeuvring through the environment while needing to wait every 3 seconds for the light to do something. It also was proving to be very tedious getting the tiles to interact with the light, and it was becoming clear for the game to be interesting It would need a lot of different interactable objects.

Instead, I thought of leaning even more into action rather than puzzle. Each room could have enemies to defeat similar to games like Binding of Isaac or Vampire Survivors, with rogue-like elements and items as you progressed. The room system would work great for this and I could still have obstacles like the spikes and arrows in rooms between fights. I created a ghost enemy that would chase you and deal damage, but stop when the light hit it. Then started to make a sword, but quickly changed it to a glowstick to tie in more with the light concept. The glowstick could damage the enemies and would orbit around the player. I also made very rough art for these and the player to see how it all felt.


Early combat concept with glowstick item and ghosts hiding in light

I then spent a lot of time adding animations for the ghosts and player being hit. I really wanted to make sure the game had a lot of juice so I used Godot's "Animation Player" node liberally to layer hand animated effects. When the ghosts take damage they light up, do a quick sideways rotation and pop upwards. Similar animations were used throughout the project, and they all took a lot of fine tuning, adjusting speeds, setting easing, and use of concepts like overshooting and wind up.

After this, I added the wave spawner. The waves start when you pick up an item off the ground. The items on the ground would be random and remove the ones you didn't choose from the floor. The exits would then close when the wave started, only opening once all the ghosts were defeated. I was still planning on adding more enemies and item types at this point, but I wanted to have a complete and finished vertical slice before I added more content. I did however know the game needed a boss, so I made a large ghost with sunglasses that would not be effected by the light with some rough placeholder art.


First time fighting the boss (screen used to turn red when you got hit)

At this point I did a huge amount of balancing for the combat. How many ghosts spawned on each wave, when each wave would spawn, and how fast should the ghosts and boss be relative to the player. I also adjusted the health values and how much damage everything dealt. I probably played the game close to a hundred times adjusting all these variables, and although there was only one item in the game, due to the upgrade system, I was able to do full runs with just the glowstick. in the future I could use then use the glowstick as a baseline to balance the other items around.

Days 9-12: Refining Art and Making Content

At this point in the jam, a lot of ideas got cut due to time. I decided the game wouldn't have any more enemy types, there wouldn't be stat upgrades between fights, and the obstacles like spikes and shooting arrows would all be scrapped and replaced with simple manoeuvring around blocks. I'm not sad these weren't added, part of creating a game is changing ideas when they don't work and focusing on what actually makes your game special. That's why I love jams so much, you don't get the benefit of spending months adding tiny details and long complicated systems before you've even seen if the main idea is worthwhile, you're forced into finishing something and can find out if it's worth pursuing after, I think that's why so many of my favourite games originated from jams.

With the main gameplay loop finalised it was time to add more items, flesh out the rest of the systems and make the final art assets. It was always in the back of my mind that the gameplay could have a much stronger connection to the theme. When I was going to bed one day I had the idea of your Mum saying you would arrive home in five minuets and you had that much time to beat the game or the run was over. I think adding that very simple time constraint really transformed the goal of the game and felt like it pulled the story and gameplay together really well. So I added all the cutscenes and dialogue subtitles along with a timer that started when you pressed play, at this point the game was really coming together and I could see a clear direction that I was proud of.


Early view of main menu screen with timer

I then added the health bar UI, the three other items, and worked on making all the pixel art for the retro game. I created the main character and her movement sprites, then went through a few iterations of the enemies until I had somthing I was happy with. In this period of development there was also a huge amount of smaller tasks I completed, creating a controls screen, adding animations like the timer appearing, the console moving into position, the game starting up, and much more.


Early enemy sprites vs the final versions used in game


1st version of player and 2nd after realising I made her too small

 I planned to have 4 different items, each with four levels of upgrade and four opportunities to obtain them. This way you could have runs that included a mix of many items, a couple heavily upgraded, or one item upgraded all the way. I really wanted some variance between runs, and I think the item system, although simple, really allowed for that. It was fun seeing people play multiple times to see their favorite item fully upgraded, or try a combination of certain items. During these days was where the bulk of the bug fixing and balancing was done. I made sure to do multiple runs with each item fully upgraded, and made the upgrades scale linearly by 100% power. For example every upgrade to the glowstick added one additional glowstick, the laser pointer had it's fire rate increased by 1x and the flashlight would have it's area size expanded by 1x. That way, in theory, if the items were balanced well individually, combinations and upgrades wouldn't need to be extensively tested. I do think this worked out in the end, during casual runs most items don't feel incredibly unbalanced or overpowered, and you could win with any combination. For speedrunning though, a few items did stand out. Namely the lightbulb was very slow on the first room, but the balance of a game will never be perfect, especially with so little time.

I also attempted to create a more detailed environment for the retro game. The idea was, the retro game would start in a house with brick walls and carpet. While the other areas would be a grassy outside with bushes serving as walls and grass ground texture. I put a good amount of time into trying to make this work. But with only 3 colours on a 16x16 grid I wasn't able to make anything look good enough in time. So I scrapped the whole idea and just went with the stone blocks, which I did update to look better. I ended up using one version of the bush outside the house to signpost it from the outside though, which I think was very effective. Hopefully this shows that a lot of game development is trying and sometimes failing. I don't think people expect projects to have hours of "wasted" development time. But as frustrating as it is in the moment, these things happen and really don't matter in the long run. I don't think my game is drastically worse because of the simple environment in the retro game, and no one would know about the failed attempts if I didn't mention it.


Unused bush and gate textures

At this point the retro part of the game could be considered finished, but there was still the interior of the car and console to be drawn. The reason I left so much of the art till the end of the jam was because visual design and art is by far the area I have the most experience in. I knew that I could draw all these assets in the span of a few hours and there wasn't any uncertainty about how long it would take. Compared to programming where I could be stuck on a bug or trying to implement a feature for days without making progress, art feels a lot more consistent to me. I quickly drew a console to frame the game and went with a more rough style to contrast the rigidity of the pixel art.


Line art and initial colours for console

Playtesting

Throughout the entire project I was constantly playtesting the game and making changes. It eventually got to a point where I was having so much fun I had to stop myself from playing to work. Getting that feeling once you've put so much time into a project is extremely rewarding, and knowing it was all from your own effort is one of the reasons I love making games.

I also asked a lot of people if they wanted to try it at multiple points in development. On day six, once the full wave system was added, I had berrylly play the game. She had a lot of fun but communicated that it wasn't clear if the ghosts would hurt her in the light. At this point, the ghosts would turn semi transparent when lit, so I decided to make them duck down into the ground instead. This made the ghosts take up way less visual space and made it look like there was more room to move between them. Hopefully this encouraged players to walk over them during the light as a route to get to safety and I do think it was a massive improvement.

On day eleven, I had some friends visiting who both tried out the game. One thing I noticed was that they would instantly walk over the first item they saw, not realising there was a choice to be made. The items used to be right next to each other with no space in-between. So at a glace, and with the very limited colour palette, it all looked like one object. I spread out these items a lot, which not only made it clearer there was multiple distinct items to choose from, but also made walking over the one you wanted a lot easier.


Me and my friend Tenta racing for the best time

I also sent the game to some friends online during development for their feedback. That meant needing the game be uploaded to itch early which was vitally important in testing performance and finding bugs that might arise when played in the browser. You'll be surprised how much breaks when you finally upload it online, and that's better tested early, instead of on the last day when you finally finish the project. For example, I had to adjust the ghosts navigation code to change direction a lot less frequently, to make up for the browsers limited performance. The scanline shader I was using also didn't work with variable screen sizes so I scrapped that.

Day 12-14: Music, Sound and Final Additions

For the sound effects, I used a version of "Sfxr" for Godot. I saw it in a tutorial I watched on game juice and it turned out to be perfect for this jam. I would highly recommend it for anyone making games in this style. It's a program that allows you to create chiptune, retro style sound effects with just a few parameters to adjust.

I was able to make all the sounds needed very quickly, except for the car engine noise which I found online under Creative Commons 0. For me, it's very important that all assets I use are correctly credited and have licenses that match the use of my project. I find it difficult to review games for jams that do not disclose if or when they used assets found online. I think using online assets is great if you're not interested in that particular area of game development or you want to use that time spent elsewhere. But knowing what part of the game they created lets me focus my praise on their own efforts which is a lot more inspiring than commenting on something they didn't make.

At this stage, I also made the retro inspired music. I put it together in about three and a half hours and think it came out well. I've made music in the past for previous games and have the experience to create something I'm happy with relatively quickly. Once the game has audio it really comes alive. Personally, having the game feel very polished and look like it could exist  as a real game on steam is a big goal I have for jams.


Screenshot of music sequence

I then quickly drew the furniture for the starting room, along with the cat to sit on the bed. I also recoloured all the pixel art in the game to a more retro green instead of the grey it originally was. After that I drew the car interior background. I made use of a lot of references and quick sketches to get the perspective right.


Background art process

The game was almost done now and I quickly implemented an online leaderboard. In last year's jam I spent a lot of time on games trying to compete to get the best score, and a way to track that online would be an easy way to get a huge amount of replayability. I used a free service called "SilentWolf" which was very easy to set up and I would definitely recommend it. I then made the logo for the main menu and thumbnail for the Itch page, took some screenshots and uploaded it.

Conclusion

The period of jams I find the most fun is the day after the deadline, where you can relax and play all the amazing games everyone made. Seeing others play your own game is also very rewarding and a great feeling. I commented on a lot of pages from other participants and felt everyone did such a great job. It was interesting to see what ideas people had and their own interpretations of the theme. I also visited the Norwich Games Festival where the jam was being hosted and met up with other developers, attendees, and the organisers and volunteers that made it all possible.


Screenshot of the final gameplay

I think when a lot of people look at a finished game, they expect the developer to have the idea from the beginning, and execute it with a clear direction from start to finish. In my experience, good games are rarely fully formed in pre-production. So much of this project was changing ideas, cutting features, and focusing on the parts of the game I was finding the most fun.

I'm very thankful for all the work everyone put in, and hope they can all be proud of the contributions they made so such a wonderful event! I ended up winning the "Use of Theme" category which was amazing among such great games. I couldn't of done it without everyone who played my game, and the help and support of my partner berrylly. Who got a well deserved mention as runner up in that same category for her game "One Night". Hopefully I'll be able to join next years if it happens and would love to try and encourage more people of all skill levels to take part.

Leave a comment

Log in with itch.io to leave a comment.