Postmortem - Haunted PS1 Summer of Shivers Game Jam Entry


Hey all! 

I am going to be writing about my jam entry for the Haunted PS1 Summer of Shivers game jam. The themes provided by the jam are:

  • Public service announcement
  • Submechanophobia (this is is the fear of submerged man-made objects (eg. machines or shipwrecks)

As the jam page mentions, these themes aren’t mandatory and only serve to inspire the project. I decided to base my project loosely on the submechanophobia theme.

Initial concepts & prototypes

After brainstorming some ideas, I decided my project would incorporate the player discovering and exploring a submarine. I originally toyed with a prototype where the player would search and explore the ocean floor but struggled to get any further with it - what was the player doing down there?

I liked the idea of exploring and then becoming trapped on a submarine with … something!

After I settled on the submarine idea, I then spent more than a few hours researching submarines, getting visual inspiration for the interior as well as trying to learn a bit about their layout and how they function. I then mocked up a very rough floorplan of a submarine, which I then began to replicate in Unity.

After a few hours of modelling and visual tests, it was beginning to resemble a cramped, claustrophobic submarine interior! I also took this opportunity to mock up a rough exterior model of the submarine, mostly just for scale reference.

One side-note here, I made some poor choices when modelling my interior. Much of it was not very modular, and everything seemed to be a different size. It would be hard to reuse parts of it to continue building the submarine. I also noticed a lot of the mood was coming from the shadows, which I was on the fence about - I love the authentic PS1 look, which unfortunately didn’t feature real shadows.

After I blocked out the rough interior and exterior, I also spent a bit more time thinking about the backstory of the game, and why exactly the player was on board this empty submarine. I decided that the player would be an Arctic researcher who happens to be in the right place at the right time, when the submarine resurfaces through the ice. For this, I needed to focus on the exterior of the vessel. So, the next thing I wanted to create was the submarine poking out of the ice!

As I already had the model of the submarine exterior, I just needed to make some blocky ice pieces that I could copy & paste all around, to make it look like the submarine had just resurfaced through the ice.

I then found a hillside in the terrain a little way away, and started building a watchtower for the researcher. Pink humanoids for scale.

I also made a quick crude snowmobile model, as I planned for the player to ride the snowmobile over from the watchtower over to the submarine. Already, I had spent a LOT of time on this, and I definitely got sidetracked trying to tweak the snowmobile and get it to handle exactly as I wanted. All the while, time was ticking forward and I was making little substantial progress.

Side note: I work full time, so the only times I have been able to work on the project have been in the evening after work, and on the weekend. Originally, the jam gave us around 38 days (9th July to 16th August). However this was extended until the 1st of September, giving us around 54 days.

At one point, I checked my calendar and realised I had 7 days remaining! And all I had was a crappy snowmobile that was still buggy, and 1 room in the submarine you could kind of walk around in.

I decided I needed to buckle down and get some substantial progress done.

Rush to the finish

I identified one of the biggest things eating away at my time, was the time it was taking to model and add detail to the interior of the submarine. I decided to scrap what I had, and start again with a new approach. I also took this opportunity to switch from using the fabulous PSXEffects addon for Unity, and begin using the HPSXRP render pipeline. This results in a much more accurate PS1 look, but does bring its own modelling and texturing considerations.

This time around, rather than building the model first and trying to texture it later, I decided to create a texture sheet, combining many low resolution textures into a single large texture sheet. Below is a screenshot of my texture sheet in Photoshop:

The total texture size is 512px by 512px, each slot is 64px by 64px. In the top-left, there are the basic floor tile permutations (blank, corner, corner inverted, 1 side, 2 sides, etc.). This obviously got boring for me, as none of the other materials have anywhere near as many permutations! Even still, there are a few in here that I never even used, plus additional slots that I never filled (the black sections towards the middle-bottom).

I also began using the Sprytile addon for Blender. This was a great tool for the interiors and made the process very fun! Another bonus of creating the geometry using a tile based tool, is that you end up with fairly evenly spaced geometry which reduces the amount of affine texture warping that the HPSXRP introduces.

All in all, I eventually had created a new interior, much closer to my original vision of a tight, claustrophobic submarine interior, and it looked more authentically PS1 to boot!

I have to say, at around this point where I could pan around my model and admire how it was all coming together, I was feeling quite proud of myself - look at all that detail! One of my favourite parts of building a game is when you can step back and say “Wow, I made that!”:

Now that I had the two floors created, I needed a way for the player to travel between them! I began working on a rudimentary ladder system. In a nutshell, essentially each ‘ladder’ consists of 2 parts - a collider that the player can look at and interact with, and a trigger that the player needs to be standing in, in order to interact with the ladder. The ladder itself is basically a teleporter and simply fades the screen to black, spits the player out at the transform of the linked ladder, and fades back out.

This worked excellently! I wanted to try and implement further interactions, I really only got as far as making an interactive sinka and doors that could be opened & closed. More was planned, but I was trying to be realistic about what I could achieve in the 3 days remaining.

Then, the next fun part was lighting and audio - this is where you can really set the mood!

I started on the top deck with the warm yellow lights and gentle electrical buzzing. Nothing out of the ordinary!

Then downstairs, I really wanted to set a dramatic mood - the player is immediately confronted by this harsh, strobing red light, and harsh mechanical ambience. Particles fill the air. Something is very, very wrong here.

Then, heading in the opposite direction, I made a small ‘Communications’ room with some computers. I made the lighting here a bit softer and more like the top deck, in hopes it would draw the player away from the door heading to the monster. Let’s face it, I wanted to try and prolong the play experience as long as I could! I knew this would be a very, very short game.

I definitely had some fun here writing short messages to be displayed on the screens:

Finally, with 2 days to go - it was time to tackle making a monster!

I brainstormed a couple of different ideas - one was a mysterious infection/biohazard (this is actually the reason I put particles in the air on the middle deck), another was a tentacled creature, but I hit a roadblock when I actually tried to make this in Blender. I’m not a very talented 3D artist so I was quickly frustrated and made little progress.

I eventually decided to keep it simple, stupid. Why model a whole monster when I can use lighting and the player’s imagination to make the monster for me?

The end result, with some vertex colouring and rigging:

 

However, in-game it definitely has the desired effect!

Then, reusing my sink script, I gave the player the ability to ‘succumb’ to the beast, and end the game.

Finishing touches

One day remaining!

The final few hours was spent ironing out some bugs and building the game for both Windows and macOS. This was the least fun part of the experience! I ran into several very frustrating bugs here. One that took at least an hour to figure out, was why my ladder system was broken - but only on certain ladders. Even if I duplicated a ‘working’ ladder and changed where this ladder took the player, it would break. Eventually I think I figured it out - it had something to do with the objects I was enabling/disabling when a player was finished climbing the ladder. Eventually, I got this fixed, plus some odd collision issues which meant the player could walk straight out the end of the submarine! I even have some remnants of my frustration in the object hierarchy within Unity (when I was troubleshooting which ladders worked, and which didn’t):

One small bug I didn’t notice until writing this - you can still hear electrical buzzing from the interior lights whilst at the start menu of the game, outside in the snow ... d’oh!

Another frustrating bug was that the macOS build ran perfectly for me, but nobody else. This ended up being caused by my Unity editor being out of date, I needed to update this and the issue was resolved - my friends could finally open the build on their Macs!

After this, with a cool 2 hours and 59 minutes up my sleeve, I submitted my entry to the jam! I’m extremely pleased with myself that I even managed to submit anything, given how little time I had left when I decided to scrap a lot of progress and start from scratch again.

I learned a lot about working in Blender and using tilesheets, which I'd definitely plan to use again in future PS1 style projects! Also definitely learned a lot about planning a project and how best to allocate my time. Looking forward to the next jam!

Get Resurfacing of the Tigershark

Download NowName your own price

Comments

Log in with itch.io to leave a comment.

(+1)

Interesting that you switched from the paid PSXEffects to the free HPSXRP. As someone just planning their first low-poly game I'd love to hear how the two compares and what differences there are.

(+1)

It’s been a while so not 100% sure why I made the switch but I think it may have been related to the way that the two handle vertex colouring. From memory I think there were 2 main reasons:

  • HPSXRP feels a bit more authentic to me, partly because it forces you to work in a more authentic workflow (in my opinion). Due to the nature of HPSXRP being a render pipeline vs. PSX Effects being a camera effect, HPSXRP doesn’t require a script to be attached to the camera.
  • Again, I think the vertex colouring was a bit different between the 2 workflows. 

Other than that, I really like PSX Effects! HPSXRP is more work to actually set up and get going, so if you want something quick and easy to use and 99% authentic, PSX Effects is well worth the money. When I bought it I think it was about $10 AUD.

Thanks. 

And yeah I actually bought it on a sale long ago just because I thought it might come in handy once I moved from 2d to 3d. It's good to know that there are multiple good alternatives though :)