
Video
This video shows a small part of a typical battle in The Wish of the Strays. Each battle is played on a grid where the player, the enemy, and the crowd take turns to perform actions.
The Wish of The Strays
I am part of a two-person team. I am mainly responsible for the everything battle-related.
Team size: 2
Duration: 6 months
Everything in this project is built using C++ inside Unreal Engine 4
A part sim part SRPG with rogue-like elements. The player is entered into a tournament where the winner gets to ask for a wish. Whatever the wish is, it will be granted.
Before each match, the player has a chance to go around a hub world and talk to NPCs, engage in activities, shop, and collect information to help them be better equipped for the upcoming match.
Each match is played in regular SRPG style over a grid that covers the map. The player gets to control their troops which consist of fighters the player recruits through sim activities. Each character can use a variety of skills based on their equipment.
The game employs a circular run system. When the player is defeated in battle, they’re returned to the beginning of the game to start a new run with better resources.
Features
The Battle System
A custom-built pathfinding capabilities using A* bounded by a real-time created nav mesh.
Characters can move, attack, use skills, use items, and interact with the crowd.
AI enemies use decision trees to decide their next actions. Different types of enemies follow different decision trees which adds a lot of variety.
The game employs the perma-death concept where characters defeated in battle are forever removed from the player’s fighters roster.
The crowd is considered a third team in the battles. They throw items into the battlefield and support the teams based on their actions during the battle.
The champion system
If a crowd likes a team (i.e. they favor that team by 70% or higher) they elect a champion from that team and elect a villain from the opposing team. The champion gets buffed and the villain gets nerfed. The champion and villain status last for three crowd turns.
If the champion is able to defeat the villain, they become a perma-champion and get buffed further. A perma-champion does not lose their status until the end of the battle.
If a villain kills the champion, they become the perma-champion, their nerfs get negated and they get buffed. The crowd meter also flips to favor their team.
If a non-villain character kills the champion, they become the new perma-champion, and if a villain exists on the field, the villain’s status gets negated.
Once a champion is elected, the crowd starts throwing useful items near the champion and harmful items near the villain.
The hub world
Before going into battle, the player can explore the hub world.
Inside the hub world, the player can interact with NPCs, buy equipment, and learn who their next opponent is.
Battle opponents are generated at random based on the player’s current stats, roster size, and story progression.
The activities system
Before every battle the player can engaged in activities inside the hub world. These activities cost money or units, and time. The player has 3 times lots per visit to the hub world which can be used to engage in these activities.
Activities are invoked by interacting with Central NPCs. These NPCs provide different services with various chances of success. These services can range from giving player’s units a boost in the next battle to setting up advertisements for the player’s team effectively increasing their crowd favor in the next battle.
Another type of NPCs is the Branch NPCs. These NPCs are connected to the Central NPCs and they give the player information about the activities offered by the Central NPCs which affects the chance of success. For example, a branch NPC can hint that the announcer is in debt and needs money which increases the chance for the activity “bribe the announcer” to succeed.
The player has no way to know what the stats or the abilities of the next opponent is. They need to interact with NPCs to collect this information.
Rogue-like elements
Fighters defeated in battle are forever gone.
The game is segmented into days. Whenever the player achieves victory, the day counter progresses.
When the player suffers defeat, they’re given compensation and are returned to day 1 where they can restart their run.