May 9, 2019

Unclean Endeavors Completed At a Bargain

Before I continue writing, I want to advise that the following article is a spoiler for the manga JoJo's Bizarre Adventure Steel Ball Run. If you are anticipating reading the manga or plan on waiting until the anime adaptation is curated, you may want to skip this article. For those who have already read the manga, or if you don't plan to, feel free to continue reading. It's important to know that my game does contain these tools and you are susceptible to spoilers. It's also important to note that the spoilers are mostly Stand abilities; there are very few spoilers in terms of plot.

JoJo's Bizarre Adventure Steel Ball Run Spoilers follow!




If you couldn't tell from the title of the article, I'm discussing my iteration of Dirty Deeds Done Dirt Cheap, which will now be addressed as D4C (and I'm sure you know what that abbreviation means anyway). After I finished reading Steel Ball Run, I was inspired to recreate D4C's Stand ability. I did some research on other iterations of the Stand on ROBLOX to see how others approached recreating the iconic ability. I felt like not many people have captured the raw power of the Stand, most likely to keep their respective games balanced. Luckily for me, I'm not making a game for people to compete in, I'm just making things and dumping them into my own place. You can't test it at the moment, but you will be able to soon.


I hope it's not a tool forever
When I produce something for the purpose of recreation, I often set a list of features I want to recreate and I try to process how to accomplish it. For D4C, I wanted to do the following:

  • Hop into a neighboring dimension
  • Swap bodies with another copy of yourself
  • Bring back a copy of someone else
  • Have the copy merge and kill who they're a copy of
  • Recreate Valentine's Heart Heat Attack from JBA: All-Star Battle

(I plan to expand D4C to include Love Train)

The first feature to tackle was the hopping dimensions part. Most iterations of D4C on ROBLOX didn't follow the same conditions Valentine had to activate his ability. Instead, they simply had a flag appear over the player to activate its ability. I wanted the player to activate the ability only when between two objects, just like in the manga. To accomplish this, I had the game draw several pairs of short rays, each opposite of each other, to detect whether there is two adjacent, but different, nearby objects; when one ray hit an object, it would add 180 degrees to the ray's direction to detect if the opposite side has also hit an object. Since it's only checking in a circle and both sides must detect something to work, it technically only has to check half the circle! Once the conditions were met, the server would hide the player but the user's client instantly makes the user visible. This way, the user can see what they're doing. The game also makes other players semi-transparent to indicate they're the real versions while also producing copies of the other players in the user's client; this lets us make the copies for the user's neighboring dimension. Valentine doesn't really have conditions on where he appears, he even appears on someone's back at one point, so I allowed the player to appear anywhere they want.


Looks like I was in a different room in a different dimension.

While you're in the other dimension, the game will make clones of all the players currently in the game. If you hover your mouse over your own copy, you will swap bodies with them, granting you their stamina and health. When the copies spawn, they start with max health and stamina. If you decide to swap back, you'll get your old stats back. When you swap, you also regain your limbs back. The way I accomplished this was by searching for any missing body part and using HumanoidDescription to insert their body part and replace it using BuildRigFromAttachments() followed by deleting the same parts on the clone. When you swap with one, you aren't actually swapping characters, you just swap places.


In addition to seeing yourself, you'll see clones of other players. When you select the clone, you will casually grab ahold of their neck as you walk around in the neighboring dimension. If you decide to return to the root dimension while carrying a clone, you bring them with you, immediately dropping them as you hop back. This clone will spend a few seconds trying to get its bearings and then it will begin to walk around. After the clone has been present for about a second, the clone will be marked as dangerous. Once marked, if the clone and the player it's mimicking go near each other, they begin to float towards each other until they're 3 or so studs near each other. Then, they die. The clone will constantly check if they're nearby their respective player. Once near, a BodyPosition and a BodyGyro object are put into both of their HumanoidRootParts and set their CFrame to the point between the two. Then it'll constantly check if they're within 3 or so studs between the two and if they are, they both die.

Didn't even get time to get up.

Finally, all that was left was the Heart Heat Attack from All-Star Battle. I absolutely loved the way the attack looked and felt in the game, so I really wanted to remake it. I wanted the user to grab another player and use their body to enter a different dimension, bring back other copies and just start wailing on the target. If you have 90 stamina and click on a player, you'll grab them back and do what was stated above, followed by you falling from the sky and landing on them. I didn't recreate the final blow from the game because I didn't have a physical stand for D4C in the game to do so, so I opted out with you just falling down. The game welds the targeted player to the user's head, allowing the target to move with the animation of the user. Once the animation reaches its end, the enemy player is then anchored and begins to play the "getting beat" animation. Once that happens, multiple clones come in and begin their animations. The tool does all the damage, not the clones, so it all happens regardless of what they're doing; you could kill the clones beating on you but that won't stop the damage. After several seconds, the user will fall from the sky while the clones simply disappear. I didn't want the clones to do some flashy flag-waving since that's Valentine's thing, not the user. Since the tool allows you to reappear anywhere, they simply did the same but to their respective dimensions. Just imagine it okay? 

I brought them back!
Perhaps in the future, I could include a way to bring your copy back to fight for you, like if you had a gun they would too so you can bring them back and they'll shoot at someone you target. In addition, I want to recreate D4C - Love Train at some point too, but that's for another time. Maybe when there are corpse parts involved. I also want to use the stand system in my game so it's more consistent with the others but I don't have a model of D4C yet. Oh well. There's always some other day.

Overall, I'm pretty pleased with how this all turned out. It could use some polish but I think I got the message across. This tool is an absolute joy to play with, especially when someone is attacking you; nothing is more satisfying than when someone is fighting you and you use their body and the wall you're up against to slip into another dimension. It's even more fun when someone is chasing you and you activate the ability as you turn a corner, causing them to lose you. The tool really makes you feel like Valentine, and I'd say that's mission accomplished.

1 comment:

  1. That's really cool!!!!!!!!!! I have not read steel ball run yet but still. seeing cool sh*t like this on roblox always makes me smile

    off topic
    excited to brag about project fight club to my friends someday when it's done!

    always here rooting for you - long time fan

    ReplyDelete