Turn Based RPG Combat System

CSCE 450 Project - Frank Gibbons

Project Summary

Inspired by games such as the Mario & Luigi and Final Fantasy RPG series, the goal was to try to recreate the turn-based combat system present in most early RPGs.

Inspiration

Key Components

Similar to Assignment 2, I used linear blend skinning to display the models for both player and enemy. However, the assignment doesn't cover loading different animations to the same mesh. So for this project, I needed to be able to load multiple animations AND blend between them smoothly when switching states.

Models

  • Player: "Eve By J.Gonzales"
  • Enemy: "Jolleen"

Animations

  • Idle
  • Attack
  • React
  • Walking

The game loop is rather simple but can easily be expanded to fit more actions, animations, and etc. The above image shows the progression of the player's attack animation. On the top (in green) is the player's state while the bottom (in red) shows the enemies state. Basically both models stay in the idle animation until the user selects the attack icon (in this case, it was a keyboard input). When an input is detected, the player's animation moves to play the preperation and attack animations. The enemy's "react" animation plays at the impact of the attack and eventually both characters return to the idle animation.

The initial implementation follows closely to that of Lab 9: Galaxy Simulation. The idea was to recreate the impact stars from the Mario & Luigi: Superstar Saga seres as seen below.

Combat Example

Instead, I used the particle system to display ranged "magical" attacks mainly as a test (as seen below). The particle system can still be used to display these feedback stars but would require a little more time to implement.

Particle Example

Particle Example

Video Presentation
Future Work

In my opinion, the biggest upgrade to the system would be the implementation of UI. This could be used to show health, status, and provide the user a graphical interface to interact with rather than using the keyboard.

More time to explore a UI library such as ImGUI would help expand the project.

Currently the system can switch between player and enemy attacks, but does not provide a behavioral model for the enemy to follow. More work could be done to implement a full game system complete with multiple enemies, health tracking, and dynamic movesets. My biggest issue was the time required to implement these changes.

Finally, a big improvement would be in the way I blend between animations. If I could load the skeletons' vertices and blend using them (instead of interpolating between matrices) then this might provide a smoother animation change between states. More work could be done to implement this change and use methods similar to that of blendshapes in Assignment 3.

Credits & References

Thank you to the following people & tools: