CPSC 6160 / Exiled Legends
Austin Hartley
Game Description
Exiled Legends is a survival game set in a zombie apocalypse where freedom fighters have been exiled to a zombie infested island with an active volcano for the entertainment of the elite over generations. A story was passed down that a survivor of the games will lead the liberation. Is it just an urban myth so those chosen to fight have a glimpse of hope or is exile truly a death sentence? You’re an archer for the freedom fighters and have been selected for the next game. Do you have what it takes to become a legend?
The objective of the game is to survive for as long as possible, where the seconds alive is the score. In order to survive, the player must not get touched by any zombies or fireballs and avoid falling into the water. Every 15 seconds for four iterations, the enemies will become faster and spawn more often, making the game faster paced and more challenging. The zombies follow the character, making it essential that the character shoots them quickly, especially since fireballs can make some areas of the map impossible to traverse.
Game Mechanics
The gameplay involves learning where the enemies are spawning, as walking in those locations can be very dangerous. The player must also learn how close to the edge of the island they can get before they fall into the water.
Key mechanics include precise mouse clicking to efficiently move their character around the map and aiming precisely so that each arrow counts.
Additionally, the player’s reflexes and timing must be trained to accurately use the movement abilities to flash over zombies or fireballs and make the most of the speed up boosts.
Technical Description
Exiled Legends was written in Python and is capable running at a consistent 60 frames per second on most PCs.
The game relies on math for much of the rendering, game logic, and visual effects. Simple linear algebra is used to render the isometric tile map, which transforms grid indices to screen coordinates. To detect if the character is on a grass tile or in the water, screen coordinates can be converted to grid indices by inverting that linear transformation via this equation:
The sprites make use of calculating angles using trigonometry to correctly choose which sprite sheet to render. Linear interpolation is also used in many of the visual effects and spawning logic for the enemies.
Controls
The controls typically involve using a mouse and keyboard. Right clicks on the mouse will move the character around and the mouse direction and location dictate where the attack will go.
Game Limitations
Future Work
Future work includes adding characters with new attack animations and adding more movement abilities. For example, this includes melee champions with new weapons and adding a roll mechanic similar to Dark Souls games. Adding a new map and enhancing the visual effects, such as for the water, could be completed by utilizing OpenGL and the GPU directly.
Game Objective
Game Screenshots
The keyboard currently makes use of the following keys: ‘A’, ‘S’, ‘D’, and ‘F’. The ‘A’ key will cause the character to attack and lock them in place until the animation finishes. The ‘S’ key will cause the character to stop moving immediately. The ‘D’ key will increase the movement speed of the character for five seconds and then go on cooldown for five seconds. The ‘F’ key will teleport the character in the direction of the mouse with a 300-pixel radius, with a cooldown of five seconds.
The game is written completely in Python, which is not a language optimized for speed, using the CPU-based PyGame library. With the combination of those two, many simulations and visual effects were too computationally expensive to add, especially for lower end PCs. The pixel-by-pixel effects added for the fireballs are scaled up, causing the pixelated look. The game looks 3D, but the collisions are 2D. This means that if the sprites overlap at all, a collision will be detected, even though in real life they might not have.