My Contributions


Texture Manager that pre loads all assets using large sprite sheets.
Shader that highlighted the currently hovered interactive object.
Wrote an old film grain shader with noise and scratches for our cutscenes and a trippy LSD effect for when you got poisoned.


Handled the panning of the camera in our wide rooms.
Created the last puzzle in the game where you had to connect wires in a pattern using simple maths to hot-wire a car.


Synced multiple tracks so we could make smooth transitions between different variations of the same theme song when talking to different NPCs to give them their own personal theme.


Created a simple Room Editor for the LD’s to work with.
Using the WYSIWYG interface, it let them easily place things exactly how they wanted them to look in the finished product.
It had support for sprites, animations, items and interactive buttons, it was used for all our rooms and puzzles.

Project Details

  • 8 weeks half time
  • Lua, using 3rd party library Löve
  • Team Size: 5 programmers, 3 graphical artists, 2 level designers.

Texture Packing

One big challenge in this game project was the texture packing. We had really large rooms that you could pan across, and one of our requirements was to have Po2(Power of 2) textures, so the background textures ended up wasting a lot of space. We also had a lot of 1920x1080 textures for our cutscenes. The result of all this was that we ran out of memory and couldn’t load any more textures.

Our first quick solution was to create a sprite sheet for each room.

This worked fine for a while, but as you can see on the left side of the image, we weren’t using the full space of the Po2 texture. So, towards the end of the project, we hit a wall, we couldn’t load all textures… this meant that we couldn’t pack everything room by room anymore.

So, I rewrote our Texture Manager and we decided to pack all textures in the entire game into 6 large sprite sheets.

On the image you can see a comparison of what our sprite sheets could look like. Our first solution(room by room), on the left, and our second solution(mixed rooms), on the right.