Sometimes you have to take a tactical sledgehammer to a project in order to make room for something better.

As those who hang out in the Discord are aware, I’ve been working on a sequel to Grimoire: Manastorm. This project is temporarily titled MagicShooter. Progress had been slow because of my internship and now a full time job as a junior designer at Chromatic Games but the recent Corona Virus situation has me working from home which lets me use my previous commuting time to work on the project.

The current MagicShooter iteration is basic but functional with the following features:

  • 3 classes: Fire, Lightning, Earth
  • FFA PVP mode and Map
  • Wave Style Horde Co-op PVE mode and Map
  • Basic Main Menu
  • Join/Host Multiplayer functionality
  • Functional UI: Spell bar and Stat displays
  • Placeholder VFX, Animations, and Sounds.
  • 2 Movement Spells: Teleport and Juxtapose
  • 2 Utility Spells: Spellshield and Stoneskin
  • Damage, Health, Mana, Stamina stats.
  • Player and AI animations
  • Eight AI types: Melee, Bosses, Casters, Archers, etc
  • All fully replicated and working well.

You might ask yourself, “Well what’s the problem then? Just keep going!”.

The problem is that all of the above was setup as I learned Unreal Engine 4 (UE3). Parts of it are rough and need iteration but the biggest problem is that it was done without using the Gameplay Ability System (GAS).

GAS is an extremely powerful system within UE4 that is used by Epic Games on Fortnite and Paragon. It provides a massive library of functions for efficiently creating a game that uses abilities and attributes. It also fully supports replication (Multiplayer) and since it’s something used in Fortnite it will continue to be supported for the foreseeable future. One of the biggest benefits of using it is that once the basics have been set up it makes further iteration much more streamlined.

The Gameplay Ability System is a highly-flexible framework for building abilities and attributes of the type you might find in an RPG or MOBA title. You can build actions or passive abilities for the characters in your games to use, status effects that can build up or wear down various attributes as a result of these actions, implement “cooldown” timers or resource costs to regulate the usage of these actions, change the level of the ability and its effects at each level, activate particle or sound effects, and more. Put simply, this system can help you to design, implement, and efficiently network in-game abilities as simple as jumping or as complex as your favorite character’s ability set in any modern RPG or MOBA title.
https://docs.unrealengine.com/en-US/Gameplay/GameplayAbilitySystem/index.html

Unfortunately, in order to take full advantage of this system many of the above MagicShooter features will need to be replaced with abilities created in GAS. At first, it seemed like I was taking a huge step backwards but after spending the past few months learning as much as possible about GAS and then examining MagicShooter it is clear that it will be more than worth it to spend time converting the project to use it.

All of the class, utility, movement, and additional spells will need to be recreated in GAS but I will be able to use those previously created spells as a base for recreating them in the new system which will make it go much faster. It is a similar situation with the HUD/UI. Some of it will be an easy conversion but other parts will need to be reworked to fit within the new system.

However, almost all of it are systems I can build upon and won’t need to completely remove. The good news is that a lot of what I’ve created can be easily used with the new system. This includes all of the maps, game modes, much of the AI (besides their spells/skills), animations, and VFX/SFX.

This weekend represented my first major time spent with the conversion and it has been a huge success. I was able to re-create six spells, update basics on the HUD, successfully experimented with playing sounds and visual effects, set up the basic attribute system, and a dozen other smaller details. I’ve got a good understanding of the system and that understanding is building more every day.

In addition to all of the above I also have a large part of the sequel’s game design outlined and in many cases design docs written out. My overall goal with this project is to bring back the exciting and challenging gameplay from Grimoire: Manastorm but update it with quality of life features found in modern games. I also want to add more classes and update some of the older classes to better fit roles. In addition I have plans for a much more extensive single player and co-op part of the game which will build on the lore from the original game. As the project progresses further I will be doing more updates and releasing more information about it as well as Alpha sign ups!

Thanks for reading, this is the first of many updates. My goal is to do one per weekend on my progress with the project. I’m also going to explore writing articles on game design, programming, UE4 tutorials, and all aspects of game design. I want to use this development process to not only build my own knowledge but also help others who might be interested in creating their own game or just learning more about how games are made.

-Brent
May 5th 2020