Light Watch

Light Watch post-jam trailer.
Defend the light against waves of dark monsters
Level is designed with verticality in mind to match the movement set!
Build powerful towers to assist in the defence
Multiple gun modes to suit different play styles


GitHub (coming soon)


Unreal Engine 4

Project Type

Jam game


7 days

Team Size

5 people

Curent status

In development


Easily the largest scope (although, potentially not the most work) of any of my games; Light Watch is a first-person shooter tower defence with a focus on high mobility. It was created for the Epic Mega Jam 2017 over the course of a week as part of a team of 5, two programmers (including myself), two 3D artists and an audio person. I was the only person who was fully available for the duration of the game jam as others had work or school.

I completed work on the following areas:

  • All movements mechanics: jumping, dashing, hovering, slamming
  • Initial weapon base class: Shooting, overheating,
  • Game logic: spawning enemies,
  • AI overhaul. Rewrote the AI to better choose targets and use slotting
  • UI (HUD, pause menu, main menu)
  • Level design

Much of the movement was based on what learned working on one of my past projects Dash Jump (in addition to the actual numbers for the character movement component) but the workings of the abilities were substantially different. For dash, I used a ‘power usage’ based dash similar to Deadcore, allowing the length of the dash to be determined by how long the dash key is held, with the addition that you can dash in any direction to facilitate dodging. The hover was also ‘power usage’ based and was vaguely based on the hover perk in Titanfall 2. The combination of these abilities allowed a huge amount of lateral movement, particularly when chained together. To top it off, I added a ground slam very similar to the slam from Borderlands: The Pre-Sequel, complete with area damage around it.

The initial implementation of the gun and, by extension, most of the back end of the gun was created by me. The gun was setup to be an overheat/cooldown based weapon. This was the first time I created a gun for a game which was quite interesting. I elected to have the bullets exit from the barrel of the gun and used a ray trace from the camera to correct the trajectory of the bullet to ensure it would hit the target under the crosshair. The backend of the gun was designed to be flexible enough to allow the main class to be inherited so that other weapons could be easily created. The final implementation of the weapon (including switching states) was completed by the other programmer.

For enemy spawning, I knew that the rate of enemy spawns and the types of enemies spawned would be critical for controlling the balance and overall feel of the game, so I wanted to design a system that was highly flexible and could be easily controlled. As such, I created a spawner which took in a data table to specify the waves. Different types of waves could be specified depending on various states of the game and spawning could be controlled based on the number of enemies on the level. That said, at this point in the jam we were very pressed for time, so the system was a little more restrictive than I would have liked and it’s one of the top priorities for further development.

The AI was originally written by the other programmer however I rewrote a large part of the code to better use inheritance and reduce code reuse. Additionally, this allowed more flexibility when selecting a target to attack. This enabled me to create a slotting system, which allowed a limited number of to attack a target at a time. As an example, the towers are only allowed to be attacked by 2 monsters at a time, further monsters will just continue on. This was effective to make sure that the player didn’t get too overwhelmed when landing beside a large group and made the AI’s simple behavior seem more varied. Finally, this allowed the AIs to know which core they were suppose to be pathing to and attacking, correctly considering which side of the map they were on and where they spawned (rather than just attacking the closest tower).

Additionally, a number of other tasks were left to me including designing and implementing the UI, main menu, pause menu, and level design and creation. For the HUD I took inspiration from Destiny 2 (albeit far less beautiful). In terms of the level, I’m not a level designer so I don’t believe that the level is anything special and I won’t go into a lot more detail other than to say I did all parts of the level other than creating and placing the level art on top of the existing greyboxed level. When all was said and done, it probably took about an day and a half of my time.

Owing to the huge scale of the project, we didn’t get as much time to balance and polish the game as we would have liked. As such, I am continuing development until the game is at the point we were originally aiming for.