Cyberknights

Project Type Group project
Software Used Unity
Primary Role(s) Lead designer / Lead programmer
Languages C#
Project Duration 11 months

About Cyberknights

Cyberknights started out as world-building work for my game design program, in which we created a universe with history, characters, biomes, culture, etc... Later, we decided to start from that base for the final course project. Cyberknights is a RPG with a turn-based combat system in which you control up to 4 characters to defeat your enemies. Each character has unique passives, abilities, gameplay and role, giving place to multiple game strategies. In Cyberknights, you must choose your path and advance through the different phases of each level, giving rise to various encounters: from rest areas and dialogue events, to challenging combats against mini-bosses and bosses.

Lore

The player takes control of Helah, our protagonist, an explorer who works for the government of the planet of Nox, in a program called EOM, which aims to explore and understand the biosphere of the recently colonized planet. Accompanied by her faithful companion, Hades, a gloomy and unknown future looms over the planet. Helah and the other survivors must deal with this global conflict at the same time that the secrets of the protagonist's dark past and its consequences are revealed.

Combat in Cyberknights is a turn-based system in which the player controls up to 4 characters to face up to 4 enemies. Character abilities are regulated by energy crystals (lower left corner, just above the combat menu). Each character has a basic attack, which regenerates an energy crystal, 3 skills, which have different energy crystal costs and a final skill that recharges by attacking, receiving damage and defeating enemies. If the energy crystal cost of a skill is higher than the current energy crystals, the skill cannot be performed.

Action bar

In the upper left corner you can see the action bar, where the player can see the order of action of the characters and enemies, with the one most on the right acting first. You can also see in the action bar which enemy is being attacked, indicated with a red background. The order of action is determined by the speed of each character and enemy.

Range

Each offensive attack can be ranged or melee, indicated by an icon. Ranged attacks can affect any of the 4 enemies, however, melee attacks can only affect the 2 enemies located in the front line. If the front line enemies are killed, the back line enemies can be attacked with melee attack. Some abilities can affect both enemies in the front line or even all enemies (the enemies affected by the attack are indicated before performing it).

Melee Icon

melee-icon

Ranged Icon

ranged-icon

Enemies always have a shield, and these have two attributes: affinity and courage. Shield affinity can be: Technological, Wild, Lunar y Magical. Each of these affinities has a favorable and unfavorable affinity, indicated by the affinities wheel. The value represents the resistance of the shield.

afinity_wheel

When a shield is broken the enemy is stunned for 1 turn. Afterwards, it will regenerate its shield, which may be of another type. Each character is of one affinity type and their attacks apply damage from that affinity.

Depending on the type of shield that is broken, the character will receive a different bonus: Technological recovers energy from the final ability, Wild increases the damage of the next attack, Lunar restores health and Magical restores energy crystals.

Characters and enemies can have various status effects during battle, some beneficial and others harmful, these are the result of the movements of the combatants.

effects

On enemies the statuses are shown below their health bar, and in the allies to the left of it. The number that accompanies the icons determines the number of remaining turns the effect will last. In the case of attack and defense bonuses, their power is also indicated (For example, 30 means that the attack is increased by 30%).

effects-enemy effects-ally

In the upper right corner are the extra functionalities to increase combat speed and check the cache. Combat speed can be increased by 1.5x and 2x. In the cache the player can consult information about status effects and affinities.

extra-functionality effects-ally

This function is responsible for searching for the allied target of an enemy's individual attack, depending on whether the enemy attacks melee or ranged, and which allies are alive.

I wrote this code for the "Eclipse" attack of the character Shilva. It is a single target attack with a chance to stun the target for 1 turn.

The player can press Z or X to quickly skip the dialogue, the character's animation and voice will be canceled and the entire line will be displayed. You can then press again to go to the next line.

Functioning

The game's dialogue is stored in text files that contain the lines of the game. This is stored in the format: "character: text of the dialogue itself: sprite: position on screen: sound effect". In this way, in each line we have the necessary information to display everything necessary on the screen. In the case of dialogue in combat, it only contains character and text.

The "sprite" section was created because at first we planned to make different images to represent the emotions for the characters, but due to the time we had we couldn't have the art ready. The "sound effect" section is optional and most lines do not have it, but it is useful for providing immersion at certain moments.

Here we can see the code that reads the text file, the lines and stores the information.

Dialogue in combat

To help with immersion and make the game more dynamic, I implemented a dialogue system within combat. This cannot be skipped and will play automatically.

This is the code that is responsible for displaying the lines of dialogue during combat.

Work in progress...

Work in progress...