Seoul National University (Class of 2020), BSc in Computer Science and Engineering SMU Guildhall (Class of 2024), Master of Interactive Technology in Digital Game Development Computer Graphics and Video Games Enthusiast!
‘Dead In Light’ was our team project for the Team Game Project1 course in Fall 2022, SMU Guildhall. The team consisted of 2 programmers, 2 level designers, and 2 artists. Development started in September 2022 and ended in December 2022.
Trailer
Synopsis
A foolish explorer sneaks into the abandoned castle at night and opens a mysterious-looking coffin, unleashing the dormant vampire within. The vampire seeks its way outside in search of fresh blood to consume. Aid the vampire in leaving the castle by solving the various puzzles along the way and harnessing her supernatural powers!
How To Play
The player will play as the main character Danny, who is a vampire trying to leave her castle in search of fresh blood. Danny can jump and perform a Bat Dash, a horizontal dash she can do to reach a horizontally far place, and she can bite humans to control them to help her leave the castle. She dies if she touches any kind of light, so try your best to avoid contact with it.
HUD/Controls
Restart Button: Press to restart the level.
Pause Button: Press to pause the game and bring up the pause menu.
Joystick: The joystick allows you to move the character you are currently controlling left and right.
Swap Button: After the vampire bites a human, you can press this button to switch between controlling the human and controlling the vampire.
Jump Button: Press the jump button to jump.
Bat Dash Button: Press the bat dash button and the vampire turns into a bat, allowing her to quickly pass through thin lights without taking damage and reaching horizontally faraway platforms.
Arrow: The arrow shows which character you are currently controlling.
Core Game Mechanics Showcase
What I did
Character controls
Custom Joystick
Made movement immediate and responsive to the joystick input.
Implemented it in a shape of an eyeball
Made the touch detection bigger than the actual joystick (half the screen) after receiving playtester feedback.
Global manager tracks the number of characters that got bit by the vampire and informs the swap button if swapping characters is available. When swap button is pressed, the focus of the camera shifts to the swapped character.
Vampire’s bat-dash button has a cooldown-indicator function
Character Animation
Sliced sprites and set up logic for playing the right animation at the right time
General Physics
Box
When no character is pushing it, it’s always x position and z rotation frozen.
It becomes y position frozen when it detects an object underneath the box. If not, its y position is not frozen. Necessary because otherwise, the box would oscillate when player is on top of it.
When a character pushes it from the side, the x position gets unfrozen.
Box lift and drop
The box parents the minion when lifted. Collision between minion and box is disabled. Rigidbody of box is disabled too while doing this.
When box is dropped, box is unparented, enable the Rigidbody again and restore the previous settings before it was lifted.
Bat dash
Uses Rigidbody’s MovePosition() function to quickly dash for a preset distance in a bat form. However, stops when the vampire detects an object at the front or finished moving a preset distance.
Scale
Each plate object stores the weight and a list of the objects on top of it.
The scale object (which has the two plate objects as the child) compares the weight between the two plates and decides the movement of plates.
Each plate object identifies one of the objects on top as a minion, iterates through all the child objects of the minion to check if a box is parented to it. Necessary because the rigidbody is disabled when the box is lifted.