After 6+ years of Unreal Engine usage, I wanted to take a slight break from C++ and learn something new. In late 2025 I gave Epic Game's UEFN a go but after a couple weeks I found it to be rather lacklustre and overly restrictive for my liking. This resulted in a shift of platform to Roblox Studio, a whole new language and environment to learn.
I was expecting this to be a massive challenge as the vast majority of my game developer journey has revolved around Unreal Engine and local, single player games. Since Roblox is an online platform, understanding the difference between local and server scripts is a must. I found out rather quickly how critical it is to ensure that the scripts are not only written correctly but also placed in the correct file path. This was not something I was used to since actor scripts in Unreal can be stored basically anywhere, as long as you can successfully cast to the object.
Although the amount of implemented content this week was lacking compared to previous weeks, the goal was not to add new major content but to instead enhance the gameplay of what I already had. The whole idea of this game is to allow the player to create their own perfect build by using different materials for each part of their weapon. At the current stage of development, we have different materials, each affecting different stats of the weapon.
In this last week, I wanted to implement ways of giving more chatacter to the materials and weapons as a whole. I did this by creating a status effect system which would allow for more diverse builds and gameplay elements. There were a few different ways of implementing this but I decided to go with a level system where the game would add up all the different levels of a specific status effect and combine them together. For example:
Blade: Poison I
Guard: Posion II
Handle: Slow I
Total: Poison II, Slow I
This would allow people to make their builds around certain status effects, if they wish to do so. I wanted to start off small with this system by implementing the following:
A damage over time (poison)
A self heal
Something that affects and enemy without taking damage (slow)
The ability to spawn an outside factor that can affect targets (a rockfall attack)
I've been fairly disappointed with the rate of development in the last few weeks but times like this are to be expected when working on a long term project. To counter the burnout I decided to reduce the amount of work hours I was putting into the project with the aim to regain the motivation in the future.
That aside; I decided to work on another boss which the player will encounter in the early stages of the game. I wanted to take a different approach this time and create an entirely stationary boss, meaning the player would have to play different compared to the first one I designed.
I knew it would be a challenge as these types of boss battles can be notoriously boring so there was a lot of experimenting with different attack patterns and I have no doubt that these will change in the future. I began by implementing an "invulnerability" attribute that I can apply to any enemy. This attribute will help me control the pace of the battle.
To keep things challenging, I added some immune phases where the boss will become "shielded" by a randomly selected boss ally and to remove the immunity, the player has to locate and kill them. I'm a little 50/50 on this addition; purely because I have the assumption that player's would want to "speed kill" bosses and the use of randomisation and immunity may remove the enjoyment of this.
Due to the nature of the boss battle, there is going to be a lot more traveling involved for the player. This has the potential to become a fair bit boring for the player and to "spice things up" a lil, I implemented a poisonous floor that would apply a DOT (damage over time) to the player when they step on it. The player can use the stepping stones provided to get to the druid king shields.
To be honest, after 2 months of constant boss designing; I'm starting to get a little bored of it and I have the feeling that a break from doing so will not only benefit me but the overall quality of the game. That being said, I want to divert my focus to the content which is already present in the game and so I'm going to create a status effect system which will allow for more unique and exciting gameplay.
I'm looking forward to sharing all of this new content with you in the following weeks and im excited to hear any feedback!
This week didn't consist of much, I primarily focused on creating an "activation" system. Something that would allow me to control the current flow and state of the game. I want to improve the scale and progression of the game and to do so I created a "totem" of sorts which when activated will spawn the boss corresponding to that area.
The activation system works by sending an activation ID and the scripts that use the system will listen out for their designated ID. If the ID's match then an "Activate" function will be called. Since this is a system that I'm going to use throughout the entirety of the game, I really want to make sure that it is as scalable and easy to use as possible.
On a side note, this week I hit the 400 mark in terms of development hours, I cant wait to see the state of the game after the next 400!
Coming into this week I wanted to focus on utilising my previous fortnight's work and create the first boss fight for the player. I want each boss' theme to match their character and environment. By creating a boss which is matches the player's environment, it creates a sense of familiarity but also a new experience. The attacks and enemy types the player will encounter during these battles will be exclusive, meaning that the player is going to have to adapt.
I want to avoid taking the easy route of CTRL C / CTRL V'ing a standard enemy and just increasing their health / damage. I began by creating 3 attacks:
Close quarters jump slam attack which punishes the player for getting too close by dealing heavy damage and applying large amounts of knockback.
A medium-ranged melee attack which deals light amounts of damage and knockback.
A falling boulder attack which punishes the player for being too far away from the boss by dropping boulders around the further outskirts of the arena.
In the future I intend to build upon these attacks by improving their feeling and even adding more attacks if nessesary. For now this boss battle will be more than enough to challenge a player who desires stronger gear.
Although I've made really strong progress since starting my Roblox Studio journey, I have came to understand that my code (especially at the start) can DEFINETLY be improved. Because of this, the main goal of the last week wasn't to make new and exciting content but to go back and enhance the already made content and to only build upon what is already there.
I was really starting to get bored of the classic 2x2 box area which I was using to test my new additions. I took this as an opportunity to use Roblox Studio's built in "Terrain" tool. In my previous Unreal Engine endeavours I had rarely utilised its equivalent tool, finding there to be better options for my use cases. Nonetheless, I decided to give Roblox's version a go. Instantly, I knew this wasn't the route I wanted to take as I wanted to maintain the "Roblox" aesthetic with my project. Using the terrain generator, I found the shapes and materials to be overly realistic for a Roblox game, the high detail and overcomplex materials didn't sit right with me.
Content Filling:
Anyone can create an environment but not everyone can create an environment that people actually want to explore. Considering the goal is for players to explore and discover new secrets, I reckon its a good idea to give this area some TLC. I want to reward those who go out of their way to find new areas, this will usually be by giving them a new boss to battle but it also opens to the doorway for unique events and awards.
Boss Battles:
Throughout each area, there will be a handful of arenas that the player can stumble across. Each arena will contain its own unique boss fight, offering new and unique loot which will be much stronger than what they are used to. I want item farming to be a key but also enjoyable part of this game so its important that it is actual enjoyable and rewarding enough for the player. To do so, I intend on utilising the bosses environment to create a new experience for the player.
It's been about a month since I first loaded up Roblox Studio for the first time, I was expecting the learning curve to be much greater but I was fortunately able to adapt to the new language quickly.
The first week mainly consisted of getting to grips with the new engine and understanding the fundamentals. The usage of different services such as the "Replicated Storage" and "Server Script Service" was completely new to me.
What am I actually making?:
I've always wanted to make a Borderlands-inspired MMO RPG where players are able to find and battle a wide range of bosses which drop unique loot. I was inspired by the "weapon part" system that allowed for parts of a gun to contribute to the overall stats. In this instance, instead of using a gun to kill enemies, the player will use a sword which is separated into 3 different parts (for now), the blade, guard and handle.
The player will come across different materials of different rarities throughout their journey, all of them having unique stats. The player can use these materials to create weapon parts which they can use to make a new sword.
TLDR: An MMO RPG weapon crafting game where the player can craft their own swords to fight bosses.
Using OOP to create an enemy parent class:
I mainly focused on implementing OOP (Object Orientated Programming)-based scripts where I created a main base script for an enemy that will allow me to easily create new and unique enemies without having to repeat my code.
Creating a sword tool:
Because of the weapon part system, creating a sword script for every sword would be a great waste of time. so instead I create a sword script which takes the players sword values from the players inventory and calculates the new values when the player equipes the sword. This meant that I only need 1 script.