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.
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.
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.
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:
Dr. Sueda for fbx-extract & Assignment 2 source code