top of page

Cloud Citadel

Gameplay recorded from my phone

Cloud Citadel is a tactical turn-based RPG on the mobile platform. The game takes on a 6x3 grid where you can occupy the enemy panels and so do the enemy, players' characters aren't allowed to occupy the enemy panels as long as the panel consists of any enemy. Whenever players clear a level, the level rewards player a gear, where each gear contains different types of cards in order for players to customize their loadout to deal with the enemies more efficiently. During battle players have their own card deck, where they draw out their card to perform actions such as damage-dealing or healing against the enemy formation, some cards require action points to perform and each turn for player always provides 3 action points to do so.

Game Engine:

Language Used:

Primary Role(s):

Group Size:

Development Time:

Unity

C#

Gameplay Programmer, AI Programmer, Generalist Programmer, VFX

8 (1 Designer, 3 Artists and 4 Programmers)

12 weeks

Turn-based order system

I developed my own turn-based order system according to which enemy or player has higher priority, the one that has higher priority will perform actions first. It also consists of all the player phase checking, enemy prediction before they take action. The turn-order manager also linked to the card draw system, A.I as well. 

ui1.png

When it is players' turn, there is a movement stage as well for the player to move their character around for once, the amount of moving distance can be determined from equipment which is from grid and pathfinding system too.

unnamed (6).gif

The following gif shown above is prototype build.

Grid System and Pathfinding

I used A* pathfinding algorithms and grids to create the battlefields, which is 6x3. The panels contain one side for player and opposite for enemies which can be differentiate through the color of the panels. Player won't be able to conquer the panels when there are enemies on it, which applies to the enemy as well. If the panels are available for taken down by either side, it will be shown as a striped panel. The panels will be automatically claimed if there is an enemy on the player's panel during the start of the game, thus making the level editor for designers easier.

ui2.png

Code Snippet </> Creating Grid

create grid.png

Enemy Artifical Intelligence

In combination with the turn-order system, A.Is have a preparation stage and action stage. During preparation stage, A.Is are able to move and will show their telegraph where they are going to attack so players can take action. Whenever player finishes his turn, A.Is only take their actions. I designed A.I have a base class, then inherit from the base class since all of them share the same variables. All the enemies ability are inside the AI code as well, including bosses movement/skills.

ui3.png
unnamed (5).gif

Code Snippet of the A.I/A.I Slime

cs2.png

Modular Level Editor and Enemy Initialization

I made a level editor for efficiency instead of hardcoding the enemies in. Unity provides scriptable object which made me considered using it, and it turns out well. The reason I used boxes to represent the enemies are because of performance issues when using editor. The game spawner which I did also linked to the level editor where it takes the specific enemies to spawn.

unnamed.gif

VFX

Aside from programming side, I've also helped to create few VFX from Unity's particle system. Here are some examples of my VFX in the game.

unnamed (1).gif
unnamed (2).gif
unnamed (4).gif

Miscellenaous

Aside from all the contributions above, I helped my fellow programmers to resolve their bug together as well. I also did the health bar UI part where it scales according to the max health into a fixed width so it doesn't go off bound., the popup damage text as well whenever you attack the damage and the red telegraphs when enemies preparing their attack.

ui3.png

Code Snippet </> Remapping the health bar

remap.png

Copyright © 2022 by Yee Zhan Quan.

bottom of page