top of page

Scarlet Quest

Scarlet Quest is my solo project and has been my playground to prototype and experiment with my visions of an indie JRPG. It has gone through many stages of development. Many systems & game loops have been created, tested, scrapped and embraced. The earliest systems were created in 2021.

Scarlet_UI.png

This page is to showcase some of those systems and to share my game development process.

Game Systems

Oldest System

The inventory is the first system i created for this project, back in 2021, and iterated on over the years. I took a lot of inspiration from MMORPG games like World of Warcraft, Ragnarok Online and Runescape. There's a lot of widgets and UI/UX involved in making inventories and equipment which has lead me to master the UMG editor and become better at UX design in the process.

I currently have 70 items.

S_ItemInfo

S_ItemInfo.PNG

Inventory System

Add Item

Generate Slot Widgets

Remove Item at Index

Drop Item at Index

Update Slot

Swap Slots

Functions

Exploring C++ & Networking

A custom made replicated spell system that's primarily made with C++. Each spell has their blueprint version as well. While this system is not optimized as much as other areas, it has been very interesting creating a spell system from scratch and implementing networking to it. The networking bit is on hold for the moment as the scope gets a little too big with multiplayer... It's not an idea I dismiss though.

 

This system however is less effective than Unreal Engines Gameplay Ability System in terms of performance. My system is easier to understand and implement compared to UE Gameplay Ability System though.

Spell System

ABaseSpell.h

MagicComponent.h

Example Spells

RangedAttack.h

Spell_DarkReaperSlash.h

Spell_TwoHand_Melee_Attack.h

C++ Scripts

Try again, Fail again

New day new character controller. There have been so many different movement styles, controls and camera settings throughout the project. I can never settle on top-down or third person and I keep trying out both. The current iteration is a 3rd person controller that's mainly inspired by World of Warcrafts movement.

The character controller is 90% replicated as I have not touched networking in a while. The Character Controller has once been purely C++ but I transferred most of it to blueprints since the iteration process & prototyping is just faster in blueprints.

Character Controller

FreeLookCameraComponent.h

CharacterController

InputMovement

CameraSettings.PNG

Scripts & Functions

Pooling System

GameState.PNG

Simple Pooling System

I constructed this simple pooling system where each actor handles its own activation and deactivation through an I_Poolable interface.

I put the PoolingSystemComponent in the GameState along with the EnemyManager. There's only three functions needed for this pooling system, shown below.

I have a similar but more performant setup in C++. This blueprint system is easier to understand and use though.

SpawnClassToPool.PNG

Why Pooling System?

I use this to avoid the performance cost of the SpawnActor function as it can be heavy during runtime. When the player & world loads, I spawn other actors I know that I will need later, when everything is loading and the screen is black to avoid getting lagspikes later during gameplay.

GetActorFromPool.PNG

Which actors to pool?

Anything that needs to be spawned through the SpawnActor function.

- Enemies 

- Projectiles

- Effects

- Items

- Damage Numbers

- Widgets

ReturnActorToPool.PNG

Weapon & Equipment System

I currently have 5 weapon types that changes your stance and basic attack.

      - Unarmed

      - One Handed Melee

      - Bow

      - Two Handed Melee

      - Wand

Each piece of equipment also gives stat bonuses and change the visual appearance  of the character. 

Weapon Stance

Icon_RightHand_Default.png
Item_Icon_Sword_01.png
Icon_Axe_02.png
Item_Icon_Wand_03.png
Item_Icon_Bow_02.png

Scripts & Functions

Try Equip Item

StatsComponent.h

FCharacterStats.cpp

CharacterStats.PNG

Level Design / Assets / Photo Album

I enjoy level design.. It's an area where I can express my artistic side and be creative. Even though it looks a little rigid, its fun! The style is all over the place and different assets have been experimented with. You can maybe see how I have struggled with camera angles and character controller and how it affects level design decisions.. Should I have a jump? A roll? How fast can I run? What if I want to upgrade movement speed, will it break certain levels? Should you be able to move camera freely or is it static? Is the camera directed? How far back should the camera be?

 

I work with the assets I have at hand and try to think of creative solutions to make things look interesting with the most basic shapes. I have not made these assets or the character since I have spent majority of my time on making systems and designing the game! :) They are free assets from kenney.nl and synty. The character and character animations is a paid asset from the unreal marketplace. I chose this character because it has many customizations and animations for me to experiment with. This however makes me a little limited to what I can output visually. All 2D art is made by me though! LFM artist!

Assets

Inventory System
Spell System
Character Controller
Pooling System
Weapon & Equipment System
Level Design / Photo Album
bottom of page