DarkShot Arcade

Project Overview

Twin stick shooter with a top down camera, set in a pitch black arena, where enemies try to sneak up and eliminate the player, who tries to survive the endless swarm. I was the solo developer on this project and, was granted an existing template which I was tasked to add a game mode too, while retaining the original functionality of the template and making sure to have both be playable.

Resonsibilities

- Creating new game mode on top of existing framework.

- Creating character on top of existing framework.

- Creating weapon on top of existing framework.

- Creating enemy on top of existing framework.

Game Mode

The game mode was inspired by the game Darkwood. Particularity its night time home defense sections.

Along with sharing the same camera perspective (top-down) I also took the darkness and being able to only see via your view cone, which is shown in the video on the right of this text taken from my gym area.

The goal with the design was to create a tense player experience, which would be created by limiting the players access to information.

Development process

I came up with the initial idea of the game mode from Darkwood, focused on the night time raid moments from the game, where you are stuck in the dark and have to survive against an entity trying to breach your house.

My design intent was to preserve this intense feeling, the fear of the unknown and the desire to survive but make it the main focus, and extend it out over a longer playtime. This led to the creation of the core loop, which was see, scout, shoot repeat. Each step representing an element of tension for the player and naturally generating a push and pull within the game.

See: Players see enemies spawn before they become hidden by the darkness.

Scout: Player tries to find or protect themselves from the approaching enemy.

Shoot: Player finds enemy or the enemy finds the player and combat occurs, with either the player or enemy dying.

The cycle then repeats, I drew a small example of which as a sketch prior to implementation. Which can seen on the right of this text box.

Character

The character was kept simple on purpose to reduce scope and also simplify balance by reducing the number of variables/mechanics that needed tuning.

The player consists of simple omnidirectional controls, with separate control over movement and facing direction. With the player having a small light range around them, along with a flashlight which shines in their facing direction.

The simple movement also helped to enhance the tension the player felt due to constricting the action space of the player, which is in line with the rest of the game’s overall design.

Development process

Iterations were made to the player character with data from playtesting gathered by testing by my peers.

From the data and testing a dominant strategy emerged which was quickly  hiding in corners to survive. This gave the players a great sense of safety, which while fine by itself it nullified any challenge and the feeling of tension the game provided. Harming the player experience.

To remedy this, I made two changes.

  1. I made the player’s flashlight cone shrink when they were not moving, but increase when moving. The importance of which is discussed in the enemy section.
  2. I changed the way enemies spawned, making more enemies spawn if the player remained near the edges of the arena.

These two changes together caused the player to be flushed out of safe areas. This made it stop being the dominant strategy, but it was still viable if conditions were favorable, for example, all enemies coming from the same direction. You can see the final result of these changes in the video on the right.

Weapon

I gave the player a pistol which fires one bullet per button press in their current facing direction. I did this to align with my feeling of tension, as giving the player a powerful or easy to use weapon it would have detracted from the core feeling of tension and struggle for survival.

They must utilize this weapon to eliminate enemies which appear, the weapon suffers from slight inaccuracy and knockback to prevent the player from always shooting.

The aiming system differs slightly between the mouse and controller. With keyboard and mouse, the player moves a target reticle around the screen with their mouse to aim, while on controller, the player uses the right stick to rotate the characters facing direction. 

Development process

The weapon was inspired by the standard pistol often given to the player by the Resident evil game series, where it can be powerful, but often is used to preserve ammo of more powerful weaponry.

For simplicity I gave this weapon infinite ammo and clip size instead settling for a small cooldown and inaccuracy on the fire forcing players to slow down and aim instead of running and gunning, this grows the tension as while the player is focused and killing a enemy it allows the other enemies to move up and possible surround them.

Enemy

The enemy chases the player, always taking the closest possible path to them in an attempt to collide with them. This was done to keep the scope of the AI and enemy as low as possible, as well as testing if the core concept of the game functions with a simple enemy.

One unique element off the enemy is that it slows down when illuminated by the players flashlight, this effect does not linger. This mechanic was introduced to give the player time to react when they spot an enemy using the flashlight.

This, however, also created gameplay where players would use their flashlight to navigate around groups of enemies, which they could not kill right away, increasing tension.

Development process

Inspired by general enemy design to the point I cannot pin point a direct inspiration, the flashlight slowdown did have a direct inspiration that being the weeping angels from Doctor who.

Iterations on the enemy were focus on its speed and slowdown effect granted by the flashlight, initial versions of the enemy were to fast and brutal often leading to the player feeling frustrated instead off feeling tense.

To remedy this I decreased the speed of the enemy multiple times to the point were the feedback I received was positive and the enemy started generating the tense player experiene.

Level

The play space was kept to a minimum, both in size and design. This was deliberate as I wanted the entire game to fit on screen at once without any form of camera movement, and I chose enclosed spaces on purpose due to them assisting in aiding my general player experience of tension.

The level itself is a rectangular shape with some rectangles placed inside to block line of sight for the player, and to allow the enemies to ambush the player while also making their pathing a bit more chaotic to the player.

To the right you can see the full level lit up in the editor, the skull folders are spawners, with the controller being the player spawn. The spawners work off a timer, which tries to spawn an enemy every time it elapses. But fails if a player is within a circular range of the spawner (done to prevent enemies from spawning on the player).

The spawners are also offset time-wise. This causes enemies to spawn individually, but at certain intervals, they align to spawn a bigger wave at the same time.

Development process

I used some general top down arena game references, but for the most part the level truly was a happy accident, iterations were focused mainly on spawner placement and spawn times but no changes were made to the core level layout.

EXTRA Weekly video's

For the duration of the project, I had to record weekly build updates. To show my progress and improvements made on a weekly basis, these were started in week 3 as that was the week we started our work in engine.

You can click the button below to be taken to the first video in the playlist.

Scroll to Top