Graph Theory in Roblox (Part 2 – A Problem)

In the previous article, I went over basic graph theory terms and concepts. Click here to read that article. In this one, I’m going to describe a game design problem I found while working on my project.

First, some background information on my project. Without going into too much detail, it involves two teams roaming a map killing neutral monsters as an objective. One of these neutral monsters I’m calling creeps or minions, similar to those in Defense of the Ancients 2 and League of Legends. In those games, minions align with a team and march  down set paths and assault enemy structures on those paths. However, in my game, minions aren’t on a team, don’t attack structures, and have no set path. Here’s an early draft of the map I’m using:

An early draft of the map (not final). Notice the navigable paths through the map. Click to view the full image.

Minions roam this map freely, and one challenge I’m facing is programming the minion roaming behavior.  I came up with a number of ideas immediately. Here’s some of them:

  • Just walk in some random navigable direction, changing direction if they run into a wall
  • Create a bunch of paths and pick one to follow
  • Pick a random target on the map and use Roblox’s pathfinding to do the hard work for me in finding a path to the point

Well, there’s going to be a lot of minions around this map. Maybe they’ll even travel in packs, who knows! I can’t have the minions raycasting for walls, and I can’t use expensive pathfinding for them to navigate. I also don’t want them switching directions a lot; I’d rather they travel a long path instead of small segments.

How did I apply graph theory to this problem? Find out in the next article.

Kicksticuffs: April Fools’ Day Review

thumbnail_kickHello! I wanted to give a brief review on the update to Fisticuffs! I made last Friday in celebration of April Fools’ Day. The update changed the entire theme of the game from punching to kicking – Kicksticuffs! Overall, the update was pretty well-received and visits increased the three days the update was live and I got some interesting feedback in the process.

The update was done a bit quickly as I thought of this on April Fools’ Day. I created a kicking animation and swapped out the animations in the punching scripts. I changed the hitbox from the punch tool’s invisible handle to the character’s right leg, and presto, I now have a kicking tool. All the punch types (er, kick types) maintained their same mechanics. I also redid all the strings and logos to use “kick” instead of “punch”.

The hitbox turned out to be a bit wonky. It wasn’t as consistent as the punch due to the fact the punch tool’s handle extends farther out than the ROBLOX’s character’s arm and is also thicker. Reducing that to just the leg made dealing damage a lot less consistent.

I also got lazy and didn’t realize the Super Punches didn’t override the animations properly and ended up still doing punches. I received a couple complaints that people were still punching and that they were performing better than those who were relegated to kicking. Unfortunately, I did not collect any data with regards to punch type performance during the Kicksticuffs period.

Speaking of data, the weekend of kicking brought 60% more game play sessions. Sweet! Unfortunately, the average play time took a dip of about 35% because players were only showing up to do a bit of kicking, then leaving for the regularly scheduled April Fools’ hijinks elsewhere. I was surprised to see that Friday (a weekday) beat out the Saturday and Sunday in max visits in one hour. It’s rare to see that happen, but not as rare as an update like kicking in a punching game.

Screenshot_91For those who really liked the kicking, I will be creating a cheap game pass that will turn kicking on for the buyer. Before that pass is released, the kicking hitbox issues will be fixed to give the consistency of punching. I don’t foresee any balancing issues with kick types, with the exception of Super Punches: kicking will be disabled for them due to animation replacement code being spaghetti necessary readability for that specific punch type.

All in all, the short-lived update went well, but I regret not doing some more preplanning to get the game a larger burst in popularity. It could have been much bigger. I wasn’t able to advertise the game using the doomed tickets currency, for some odd reason (my bids weren’t going through).

That’s all for now!
– Ozzy

Juggernaut 2: Jump Limits

Jumping around in the redone lobby of Juggernaut 2.
Jumping around in the recently redone lobby of Juggernaut 2.

Jumping. It’s an intrinsic mechanic to ROBLOX games that involve the default character figure. Unfortunately, jumping is one of the most unhealthy mechanics to have in a game like Juggernaut 2 that involves projectile shooting. In this post, I discuss how I take control of this mechanic and make it healthy for Juggernaut 2.

Continue reading “Juggernaut 2: Jump Limits”

Juggernaut 2: Beginning the Remake

I’ll kick off my blog’s content with a post about my current project on ROBLOX. It is a remake of Juggernaut, my game from two years ago which won Best Co-op of 2013. Until now, the game was known as Project Naughty Wolf to keep it relatively unknown.

Screenshot of Juggernaut 2 development
Screenshot of a testing session of Juggernaut 2. Names and chat blurred for privacy.

Continue reading “Juggernaut 2: Beginning the Remake”