Dec 9, 2016

Jokes First, Questions Later

It's been quite a while since I've posted on this blog; I've been pretty lacking in terms of content here even though I have content to provide. I'm unsure of how many people check this blog but I'm happy to update it again.

To pick up from where I left off I'm proud yet disappointed to say I've made progress on something completely unrelated to Project Fight Club. Instead, I spent the months of May and June on an update for MisterObvious's Animation Studio. To those unaware, it looked something like this:



The update started as a joke between the four of us (the other three being MisterObvious, BlazerC, and his brother Rhysmon). Back in 2014 shortly after PFCs inception, I made a joke saying there should be a tool that lets me recreate the falcon punch scene from the anime F-Zero: GP Legends. I myself never got around to creating it until around late May when I decided to tackle the project after successfully recreating You Have to Burn the Rope. Although I wanted to insert it in MisterObvious's game and just show everyone, I needed a reason to use it and to give the cutscene some context. We then created The Black Hole Event. In animation studio, an entity known as The Black Hole loomed over the map whose uncomfortable gaze gave the game's visitors an uneasy feeling of being watched. The black hole would grow ever so slightly whenever a player was banned ingame causing the black hole to grow to an astronomical size that nearly covered half the map in black nothingness. We then agreed the players of the game should combat the black hole in an effort to save the map. The rest of the lore can be told another time if anyone else requests it, but as with all good tales, it's better told by someone who was there so you should definitely ask around the local Animation Studio Senior Center to locate a black hole wheelchaired veteran.

The update added 4 enemies for the player to fight and a boss at the end of the update. The 4 enemies are named Roller, Doppelganger, Distraction Tree, and Golem. Over time the enemies grew in max health and spawn rate as servers grew larger and stayed longer. I'll be quickly going over each one and how they were programmed.




The Roller




The Roller's model was designed and built by my friend Rhysmon when I requested monsters. Originally planned to be a ranged enemy, I opted out for a constant nuisance that'd surprise players. The aptly named Roller would roll towards players and hop on their head, leeching the life of the player they latched themselves onto. The targeted player would need to either shoot the roller off or have another player assist in shooting them. Their weak spot is amongst the hardest to land being the hole in their mouth. They were relatively easy to kill having the lowest health pool of all the enemies but the highest spawn rate and areas of all of the monsters.

The Roller's AI is a simple one: roll towards them and pounce when close enough. The AI used a while loop that constantly looked for players via the :GetPlayers() function of Players. Once the table of players was acquired, it simply compared the distances between the player and the roller and picked the closest one to roll to. Once the roller was within 7 studs of the player it would speed up and jump towards them and weld itself to the player's head, dealing damage and healing the roller. Rollers didn't use pathfinding or any ledge detection because we thought pathfinding wouldn't be necessary since we wanted them to surprise players that pass through doors or pass by rocks they hid behind. We let them fall off the edge because, well, we thought it was hilarious.
Nobody liked you anyways



The Doppelganger



The Doppelganger's model was hastily made when I noticed a lack of ranged enemies; I just slapped on the classic zombie face with no eyes and gave them the same color and material scheme as the roller. I thought the idea of an enemy using the same weapons as the players would be a fun foe to go up against. The fact their bodies were the same and their combat styles were the same, I decided to make them wear the same hats as a random player in the game. Their weapons were randomly generated using the same algorithm as the vending machines that dispensed the weapons for the players and did the same damage as theirs. These guys were either a joke to fight against or were a huge trouble to deal with. They had the same base health as players and were the second most common to spawn. They tended to spawn in areas where players commonly hung out at.


Their AI was much smarter than the roller with pathfinding and edge detection. They were also fully animated and had accuracy based off the gun's stats. The game would roll a number between one to six; if six was selected, the doppelganger would aim for the head with one through five being the other body parts. They would run towards nearby players and fire when within a reasonable range. They also could toss their weapons in the trash if they managed to touch it, which was quite rare. If they tossed their weapon out, they began to break down crying exclaiming their frustration for tossing their firearm in the garbage.


dude y



The Distraction Tree


These were designed by MisterObvious while we were making monsters and boy are these just great. These were just fantastic: balancing the tone of the game to make sure the update wasn't too serious by giving them hilarious AI to match their old fashion appearance. These guys had the second most health of all the enemies and spawned in open green areas. When approached they'd spin and yell DEMACIA, harming players who get whacked by its distraction tail with the barb at the end, dealing more damage. The best part about these guys is that their crit spot is actually the face in its chest, which is actually its real face. Why else would it be called distraction tree?

These guys had the same AI as the Roller with the exception of its behavior when a player is near. They'd spin using BodyAngularVelocity isntead of, well, jumping. The best part about their AI was how they'd get on the roof because they'd hit the teleport pad on the floor. There wasn't much else to these fellas but they definitely rank amongst my favorite NPCs I ever made.





The Golem


The Golem's design was inspired by Runescape's Brawler enemy from the Minigame Pest Control. These hulking enemies were the bulkiest and the deadliest enemy of the four with a whopping 3.5k base health that could scale into the ten thousand range, a max speed that nearly doubles the default speed of the player, a tiny weak spot in its eye, and hard hitting moves to hit both single targets and groups of players. These spawned the rarest and only spawned in 3 places: behind the apartment, in the desert, and near the MisterObvious statue.

The Golem's AI shared the same pathfinding as the Doppelganger. The game would count how many enemies are near it; if there was only a single enemy, it will punch the player in the face, if there's more it'd slam the floor knocking nearby enemies into the air, damaging and stunning them. Being the tankiest and the deadliest of the four, they were notorious for killing multiple players and required multiple players on the server to take one down, especially when their health is at its max.

You can still find a Golem in Animation Studio, albeit a friendly one that goes by the name of Jimmy. You won't be able to see it attack but you can see it walk around the map.

I plan on posting a part two of the event going in depth on the weapon system and the game itself. I also have some PFC progress to share to those who follow this blog.

Apr 6, 2016

From the Ashes

It's been quite a while since I've made a blog post. The reason for that being quite simple: I haven't been working on much, until now. Sure, at one point I made Wax Champion for OPO, but I didn't believe it deserved a blog post. However, if enough people message me to make a blog post explaining how it works then I'll gladly go over the process of making the tool in an effort to educate those who are interested in making something similar. In other OPO related news, I haven't been given anything to make. I wanted to make more moves for Buddha but it hasn't been approved. To those who are familiar with this video, I'm also willing to make a post on how I created the tool. I won't be going over the code exact, but I can explain the thought process and all that.

Other than declaring this blog not-dead, the reason I made this post was to notify those who are interested that I'm continuing my pursuits on reworking Project Fight Club. I've been very hard at work on the core game. I've redone the main menu, I've fixed nearly half of the tools in the game to make them compatible with filtering along with balancing them, and I've been working on a new map as well, one I'm very excited to see finished. Project Fight Club will be remade to compete with the current line of front-end games you see on the Games page; it'll be ready for modern ROBLOX. What do I mean by that? Allow me to go more in-depth on the changes along with what PFC is trying to accomplish.

Many games on the Games page on ROBLOX share similar elements that make a game seem more polished: a main menu, preloading assets, customization, and microtransactions to name a few. I've always felt PFC was a nod to old fighting games in ROBLOX; games where players were given various tools and fought one another with them, similar to fighting with official ROBLOX gear. In order to preserve this design philosophy, the game's gameplay will obviously remain the same; you'll still see the same tools from before. What'll be new to the game are things like a round based system, a points system to determine a winner as opposed to endless fighting, and player customization. 

The new PFC will determine a winner by the amount of points earned in a single round. Points are given to players based off their actions. Things like: getting kills, healing, attaining high kill streaks, and shutting down players who've amassed countless kills in a life. Once a game ends, players will be rewarded with currency based on the amount of points earned. This currency can be used to buy boxes and skins and whatever else I have in store (no pun intended). Of course, you'll be able to purchase the currency or the boxes directly, but I won't be making them strenuous to earn by conventional means. I'm really against giving players a false sense of progress by making the rewards incredibly expensive, so it's completely optional.

I hope this sheds some light on the game as well as clearing any fog on what I mean by reworking PFC. I hope to make more blog posts in the future documenting my progress with PFC and any other project. In return for your loyalty, here's a sneak peek on the second map coming to PFC: