For the Stanford University Fall Curriculum, I built a small game project using C++ mixed with some Blueprint in Unreal Engine. It has since been converted into an online course that anyone can participate in. It has been used by dozens of industry leading game studios to train their employees for C++ with Unreal Engine on top of thousands of indie developers.

Check out the full project right here on GitHub!

Description

The game was built with a wide set of features to cover a variety of useful coding concepts to students including AI, multiplayer programming, save games, async asset loading, etc. Check out the list of features below, I’m sure there is more that I forgot to include or that will drip in at a later time. Over the years I have continued to expand the project and keep it up to date with new Unreal Engine 5 releases and features.

Those interested in a GAS (Gameplay Ability System) style design might be keen to check out how we handled Abilities (Action.h) and Buffs/Debuffs (ActionEffect.h) as this shares many similarities with GAS design, although its much simpler.

At the time of writing, there isn’t a whole lot that makes this a real ‘rogue-like’ with things like permadeath gameflow or proper randomized gameplay through levels and powerups. However it has laid the groundwork in support of all those features and work will continue on this project as it has for the past few years.


Features

Below I’ve listed some of the more relevant features included in the project. I think these code samples can be invaluable in getting an idea on how to use them in the Unreal Engine eco-system. Especially things like Asset Manager have limited public examples, which is one of the benefits of this open-source project.

  • Third-person Action Character Movement

  • Action System (Gameplay Ability System-lite)
    • Dash Ability (Teleporting via projectile)
    • Blackhole Ability
    • Magic Projectile Attack
    • “Thorns” buff (reflecting damage)
    • Burning Damage-over-time effect
  • AttributeComponent (Health, Rage etc.)
  • SaveGame System for persisting progress of character and world state.
  • Heavy use of Events to drive UI and gameplay reactions.
  • Mix of C++ & Blueprint and how to combine these effectively.
  • GameplayTags to mark-up Actors, Buffs, Actions.
  • Multiplayer support for all features
  • GameMode Logic
    • EQS for binding bot/powerup spawn locations.
    • Bot spawning system (bots cost points to spawn, gamemode gains points over time to spend)
    • DataTable holds bot information
    • DataAssets to hold enemy configurations
  • Asset Manager: Async loading of data assets
  • Async loading of UI icons
  • AI (Ranged Shooter style)
    • Minion AI with Behavior Trees (Roam, See, Chase, Attack, Flee/Heal)
    • C++ Custom Behavior Trees Nodes
    • EQS for attack/cover locations by AI Powerups
  • Powerup pickups to heal, gain credits/actions (UMG)
  • Main menu to host/join game (UMG)
  • UI elements for player attributes and projected widgets for powerups and enemy health.
  • C++ Localized Text Example

Spotted by Minion’s sight sense.

Behavior Tree for Ranged Minion AI

What’s Next?

Over time more features and improvements are actively being added to the project along with updates to the most recent Unreal Engine version. The Readme on GitHub will have the most recent additions if you’re interested.