Note: The majority of this post was written several years ago for Hashnode. I've decided to port it here as my first blog post using my custom CMS.
Beginnings
(This might be a long post. It does not include EVERY detail, but it is a fairly in-depth overview of everything that went into the game.)
Remember back in 2019 when everyone was really excited for a new decade? I remember telling my friends that 2020 would be the "year of our lives" in some silly dramatic fashion. Like a new decade was going to be some kind of defining moment or whatever.
Shortly thereafter, the world ceased turning properly and completely derailed whatever was going on in the 20 years leading up to the moment.
Of course, most of us found ourselves vegetating within our households, so much so that we could have planted a garden with our frustration.
In retrospect, that initial period between late 2019 and early 2020 really was just surreal. My work closed. Everyone was at home. My college scrambled to assemble online classes. It was so weird.
I didn't really know what to do, since up until that point, I was constantly just... out of my house. So I just started playing competitive Counter-Strike religiously every day on my computer.

Image source: Valve
Unfortunately, there is only so much CS:GO that any sane person could possibly handle, so after awhile I ceased torturing myself with it.
It was at that point that I realized that I needed to do something productive, or I would risk literally melting into a pile of sludge.
I used to play a little brick game for many years when I was younger. The little brick game is now pretty much ubiquitous and is worth over 23 billion dollars at the time of this post.

Image source: roblox.com
If you haven't played ROBLOX, you are likely to know someone that has. Since I'm not talking about ROBLOX itself in this post, I'll just summarize what it is for anyone who may not know.
ROBLOX has been around since 2006, and at its core it is a platform where users can make and share games. These games can then be monetized for real money. The platform provides pretty much everything you need to make multiplayer games and monetize them.
Inspiration / Game idea
I decided to do something productive with my time after some little baby crying and self-pity, and make a game on the platform. To me, it felt like a natural and obvious choice since the platform provides a straightforward way to launch a game.
I had to sit down and contemplate what kind of game I was going to make, which is quite possibly one of the hardest tasks in existence.
I was really feeling some kind of base-building destruction game. I started fantasizing about defending some central part of your base with teammates. Maybe building walls around it and building cannons that you could shoot the enemy base with. I really enjoyed this idea so I decided to just start laying down some sort of foundation. I decided to name the project "Castle Crushers".
Prototyping
I started my journey with an empty plane and skybox, looking something like this:

I was going to have to go from this to a full-fledged game.
Lua
ROBLOX utilizes Lua, a scripting language that is interpreted at runtime. It's quite similar to Python in many aspects, although I might argue that it may be even easier to understand, if that is even possible.
Some game engines utilize Lua as a scripting language as well, typically for prototyping and such.
The actual core of ROBLOX is written in C++ and is composed of several significantly altered libraries. Unfortunately we are not allowed to tap into the C++ potential; we must create everything in Lua.
I firmly believe that actual gameplay mechanics are the most **important ** part of a video game. As such, they should be the first things to be completely prototyped.
Gameplay ideas
So, I get to creating. I created a directional building system similar to Fortnite's system. I added some simple cannons. I added a "heart" at the middle of the the base that you had to build around to prevent people from destroying it. Boom. I thought the idea was going somewhere.
I made a couple of posts on the ROBLOX developer forums asking for some people to come and help test my game. This resulted in some large swathes of people flooding the servers to help me test, during which I was severely reprimanded for the mediocre graphics in my game.
Yeah, I mentioned that I wanted to focus almost entirely on the gameplay. Which means that my initial 3D models were absolutely terrible.
Here was my mediocre rendition of a "cannon":

I don't have enough dignity to sacrifice to show you any other of the "models" I made myself.
Which is why I have to tell you about how I met Denis.
Denis
Somebody joined my game while I was testing it. I got to talking with them. They admitted my models looked like complete crap, but, for whatever reason, they confided in my programming abilities and thought that my ideas were pretty good.
This person's name was "Denis", and he turned out to be a professional graphics artist.
Within like a five minute Discord call, he created an entirely new, low-poly style cannon model:

I was absolutely amazed. We immediately agreed to work together on the game to create a unique experience.
While Denis worked on remodeling all of my crap, I worked on refining the game systems I built up to that point.
Alpha
Reddit and Discord
Making a video game is pretty freaking hard. We were developing our game quite rapidly, and it was getting pretty difficult to test it on our own. We had to start recruiting some eager volunteers to help us test it as we went on.
The best place for this turned out to be Reddit. I made a couple of Reddit posts that instantly went trending on the ROBLOX subreddit. The posts had a link to a Discord group I made a while before. The floodgates opened, and before I knew it there were hundreds of people in our Discord, many of which openly volunteered to help us with the testing process.
There were a lot of lessons learned here.
There was a resource mechanic in the game. Each round started with you having to gather resources (stone, wood, iron) with a pickaxe. People thought that was the most boring thing ever, so that got removed immediately. Now, you could gain resources simply by destroying other players' buildings, and you started with a set amount of resources sufficient to build fortifications and cannons.
Building system
Here is an example of the basic building system for the game:
And here we have the ability to make multiple floors!
Here, you can see how you can actually place cannons on higher floors of the building. You can even put an archway above the cannon, providing some extra protection for the fortification. There certainly was a lot going into the design of this system, but it ended up feeling pretty cool to mess around with.
Additionally, there were "tiers" for structures. You could build a wooden wall, or you could build a stone or iron wall. All that changed between them was their durability against cannon explosions.
Making the cannons
To make Denis's new cannon model really feel alive, I knew I had to make it have some nice movement. After tons of trial and error and weird angle math, I was able to get the barrel of the cannon moving up and down independently from the platform it stood on, which moved left and right. This resulted in a full range of motion that pointed the cannon towards the mouse, and also some nice visual feedback.
Here, you can notice how the trajectory for the cannon works. The parabola is calculated using a simple integral that relies only on the origin point, the point we need to hit, and distance. There are some issues with that simplicity, but it would work for the time being.
Different cannon types
Obviously, having just one type of cannon can get pretty stale. So, we implemented several cannon types
Then, it turned out that people really didn't enjoy being forced to use cannons instead of clobbering/shooting each other to death with hand-held weapons. They kept asking for weapons.
Weapons. Weapons. Weapons.
There were no weapons. I would have to add them.
Weapon system
Oh boy, this was gonna require adding such a huge mechanic to the game. I would have to integrate the weapons with the current building system and ensure that the controls for each work properly together.
Starting out
We decided to take a cue from most video games out there, and kind of break it down to three "classes" of weapons. Melee weapons, Ranged weapons, Magic weapons. So, we thought some simple starter weapons would include a sword, a bow, and a magical staff. We decided it would be cool for all of them to be made with a wood material, to show the sort of crudeness, "newbie" starter nature of the weapons.

The sword was quite simple, with a couple of swinging animations. It dealt damage to other players based on collision with the sword.
I made the bow slightly more interesting.
You can probably notice a couple of little visual glitches with the bow itself. Of course, it was later fixed to properly show the string moving as you pulled it back, along with fixing whatever is going on with my character's gyrating hand.
Then, we have the staff:
Here, you can see some actual particle effects going on, along with a little charging animation.
The "Cool Weapon Examples" section near the end of this blog post shows some more interesting clips of the more elaborate weapons added later on.
Player feedback
We hosted a couple of testing sessions including these new weapons, and absolutely everybody affirmed a huge increase in "fun factor". We definitely knew we were going in the right direction, because we felt it too as we were playing along with everybody.
Abilities
The natural next step in our weapon system was to give each weapon some unique abilities. The starter weapons each had their own, simple sort of ability. The bow had an explosive arrow, the sword had a "charge" ability that increased the character's speed, and the staff had a a big meteor.
The question now was, how was an ability system going to be balanced? Should the abilities just be on a cooldown? Should they be usable right when you spawn in? How should it worked? That's when we decided to create the "soul system."
Soul System
Here, killing enemy players rewards you with "souls" that allow you to use your abilities. Each ability costs more souls depending on its strength. Additionally, unspent souls persist after death. So, if you're more of a newbie player, you will get the opportunity to use your abilities provided you get at least some kills during the match. Killing enemies with the abilities also rewards you with souls.
Here, you can see the little visual effect for souls entering your body, inspired by the early God of War games. I also get some gold here.
Original gamemodes
The game originally had a few gamemodes that utilized the building mechanics: Base vs. Base, and Conquest.
Base vs Base
The concept of Base vs. Base was quite simple. it was basically the original concept of the game, after all. Each team used resources to build up their base. Then, they used cannons to try to destroy the enemy base.
Problems with this mode
Unfortunately, this gamemode was flawed. People just stayed at their base, building it up, or just trolled other players by spamming walls everywhere. People weren't really getting into epic conflicts, and it just wasn't what I was originally envisioning. This mode got scrapped very early on.
Conquest
The solution to the Base vs Base mode was definitely the Conquest mode. To solve the problem of people sort of vegetating and trolling within their base, we got rid of the base "hearts" completely, and had capture-able points littered throughout the map. Capturing a point gave access to its resources and allowed building in the area. Owning points allowed a team to get closer to victory. However, these mechanics ended up just feeling a bit odd, probably too novel, and not very straight-forward.
I'll go over how we fixed this after showing off some of our maps.
Maps
Denis worked extremely hard to create some wonderful maps that uniquely juxtaposed blocky environments with sculpted 3D models.
Inside & Outside
To show off some of Denis's great work, I'll show some images of our outdoor and indoor maps. First, one of our favorites, "Leviathan":

Here is an egyptian-themed indoor map:

Ziplines
To add a little bit of fun and variety to the maps, we decided to add ziplines. Check it out!
Here you can see some gray debug stuff, which was removed right after the ziplines were completed. Simple things like this just adds a lot of emergent gameplay. For instance, it became a fun challenge trying to headshot people right off of these things. Awesome!
Massive changes
After a lot of testing, it became very apparent that people just really did not care about the building aspect. What served as the very foundation of the entire game became the most overlooked feature. Interestingly, we observed older players enjoying and utilizing the building mechanics, while younger players typically ignored them entirely. Since ROBLOX as a platform is composed of younger players, it became clear that we had to narrow the scope of the game to involve just fighting with weapons.
This meant completely removing the building and cannon mechanics.
Beta and Release
As I stated before, making a video game is hard, even in the context of the ROBLOX platform. There is so much that goes into it that many people don't quite realize.
I was quite hungry to achieve something actually interesting, and I had always dreamed of having my own game with my own player base that I could truly feel proud of. I really did feel like I was close to achieving my dream, and was witnessing my own community developing right before my eyes. After removing the building mechanics, and after thousands of bug fixes and additions, we felt that we were ready to move into the "Beta" phase of the project.
The Community
The community aspect of this entire project can not be understated. There is nothing quite like witnessing the blossoming of a community centered around a project you're making. Starting from absolutely nothing to having tons of people being actively interested in something you're doing is truly special.
[ - Hello 2025! Picking up this blog post where I left off a couple of years ago. - ]
It was heartwarming to see the fan art being produced by members of our Discord server - every day we would get a couple of images, art, or ideas for the game from enthusiastic members of our server.
Testing
The community we built from the ground up was the instrumental piece of our testing process. Testing sessions were held weekly, generally on the weekend, and at times that would most suitable for all of the different time zones that our players and testers lived in. They were from all over the world - roughly ~30 different countries, so I did my best to find the best times possible to hold testing sessions.
The sessions would generally be reliably populated with ~20 or so people. Testers were rewarded with special in-game items and skins.
Game progression
At this point, the building system and everything related to it had nothing to do with the game anymore, though the mechanics were still present as vestigial artifacts in the code.
Once unlocked, new weapons were available to purchase with currency earned during battles. As the weapons were used, they would gain "mastery", which would unlock new abilities on the weapons at certain thresholds.
Character customization
There were a couple of cool ways to customize your character in-game. Beyond basic customization (skin color, hair, etc.), there were two major customizations: Skins and Kill Effects.
Skins
Players could earn skins in-game, or buy them with premium currency.
Opening chests would give a cool little unboxing animation!

Kill Effects
Players could unbox various "kill effects" - cool visuals that occurred when they defeated an enemy player. Here is an example of one:
Here, you see a skeletal hand come from the ground and pull the player into the earth. Cool!
Cool Weapon Examples
This crystal lets you "fly" temporarily, useful for traversing the map or getting out of tight situations:
This bow is pretty dope:
Boomerangs!
This gauntlet has the ability to summon a cloud, let you surf the air on it, and even use other weapons while doing so:
These are just a few examples - there were all sorts of cool weapons and abilities in the game.
Monetization
ROBLOX players can purchase a premium currency on the site called "Robux". They can spend this currency in the games of their choosing. In turn, developers can exchange this currency earned from their games into real money using the Developer Exchange.

Above is an example of purchase-able gamepasses that offered players several different in-game benefits.
Launch
After many months of testing, we decided to launch the game in an open beta state in August of 2020.
Youtubers
It turns out you can just email Youtubers with millions of subscribers, and some of them will actually reply to you. We got in contact with a couple, and set up several agreements where we would make them special skins, gift codes, etc. One played our game on stream several times, and was pretty enthusiastic about it - even agreeing to make several videos on it. Unfortunately, I had to shut all this excitement down - something I regret deeply and will address near the end of this blog post.
Trailer
Lessons learned
The game had a very shaky, eventful, and stressful launch. Despite all of our testing, feedback, and community enthusiasm, it was evident that we missed the mark on several important things during the game's launch.
Advertising
ROBLOX is a platform for people of all ages. The core playerbase, though, falls below the age of sixteen, with most being of elementary school-aged children.
Our advertisements were general, and we did not make any effort to target older players, which would have been a wise decision, since the older players tended to spend far longer time playing than the younger players. Older players also exhibited a more acute understanding of the game mechanics, and tended to play far more enthusiastically.
The result was that our core playerbase was composed of older players, while many thousands of younger players streamed into our game only to not stick around (generally).
Balancing
Despite our numerous testing sessions, and our own exhaustive playtesting, we ran into numerous balancing issues on launch.
New players were being absolutely demolished by experienced players, which often caused them to quit the game prematurely.
There we also numerous unforeseen issues with team balancing - odds were generally heavily tilted towards one team or another, and there was no mechanic to sufficiently balance the teams at launch.
Bugs
Many bugs that survived under the radar through playtesting reared their ugly head at launch. With our sample size now in the tens of thousands, bug reports were flooding in like mad. It was a race to try to fix all the bugs and balancing during the launch week.
The Decision
Unfortunately, my next semester of university was imminent. I was pulling 14 hour days working on this game, and the stress of the launch and momentum maintenance was getting to me. I realized that managing this game and community while taking a full courseload was an impossibility.
Several of the Youtubers I was in contact with were set to start making content for the game. This is where I pulled the rug - a move that I terribly regret in retrospect. I emailed them all and asked them to cease any content creation for the game because I feared it was not yet ready to be exposed to hundreds of thousands of potential players.
I thought that in the aftermath of the launch I would be able to make the proper adjustments necessary to get the game in the desired shape we wanted, but school quickly became my main priority, and the project was essentially shelved forever, now serving as an eternal monument of our efforts and memories.
Final thoughts
If you've made it this far into the blog post, I appreciate your interest in our story. This project encapsulates many things - a true friendship, a riveting community-building experience, and fantastic lessons that shape the way I develop today.
Although this project is collecting dust in a digital shelf somewhere, I'm still actively developing video games. I've long since abandoned the ROBLOX platform, as I now develop games on my own terms, rather than develop for a corporate platform.
I've got a new factory simulation game in the works that I plan to publish on Steam when it's in a good state. This one is gonna be cool - there's some mechanics in it that I haven't really seen done before in a factory game. I plan to see this one through to the end, and aim to keep the development cycle as low-stress as possible.