A Capture The Flag demo game made in Unreal Engine 5 in an effort to learn more about UE with a big focus on UI.
There are three main widgets (composed of many different user-created widgets) each of them interacts with an appropriate MVVM viewmodel to update and display its data.
-
Main HUD: Displays player information (health and stamina) as well as match information such as the match remaining time and each team's name and current score.
-
Friend List Menu: Displays a list of online and offline players which is fetched from a CSV file, player entries on this list get updated in real-time as their online status changes. The state change is simulated through a mocked Player Online Service.
-
Friend Notification Toast: When a friend's online status changes, a small pop-up notification window will notify of this change.
There are two teams that can be configured with different names and colors, you can then assign instances of ATeamBase, AFlag, and ACaptureTheFlagCharacter to one of these teams to change the way they interact with each other.
- A player on team A can only pick flags from team B.
- A flag on team A can only be dropped on a base from team B.
When the match time ends, the team with the most points will be the winner, however, if there's a tie some additional time will be added, but a tie is still possible if both teams fail to score a point then.
This project uses Gauntlet and the UAT (Unreal Automation Tool) to implement automated tests. The automation project source code, which handles the execution command and configuration can be found in the Gauntlet Automation Project repository.
The underlying logic of the test case scenario is implemented in a child of the UGauntletTestController class which allows the puppeteering of the state of the game to evaluate the desired outcome.
- UMG Widgets with C++.
- UMG Viewmodels using UE5's MVVM.
- UE5's C++ delegates (Non-dynamic, Multicast, and Dynamic)
- Unreal Automation Tool and Gauntlet for automated tests
- Best practices in the use of the Unreal Engine Game Framework (Game State, Game Mode, Game Instance, Player State, etc...)
- Others such as:
- C++ Components.
- Collision profiles, object types, etc...
- Editor-only tools to facilitate gameplay design.
- Timer Handles.
- WASD to move
- Press Tab to open the friend list menu