Let’s Make Some Hitboxes!
Greetings, Tusslers! First off, I know it’s not Friday, and I have no excuse but that I lost track of time. I can make up for it, though, because today’s update is a really good one! One of the most important things in making a character is getting the hitboxes right. It’s where you define what your attacks actually do, so I want to make sure they’re super easy to view, edit, and change. With that said, I present to you, the new and improved “CreateHitbox” subaction editor!
Now, I know what you’re thinking, but this isn’t me refactoring a perfectly usable thing into a better form as I figure out more about Unity and C#. The plan was always to allow for custom editor windows for subactions, and the one’s you’ve been seeing have been the default editor window (that I expect about half of the subactions will use in the end). The system has been in place for a while, but I haven’t had any custom editors to use with it until now! Here, you can see a one-screen representation of all of the hitbox data you can create a hitbox with. Let’s break it down bit by bit here.
Up on the top row, you see two text areas, one for the hitbox name, and one for the lock group. “Name” is pretty self-explanatory, it’s what this hitbox is called, and how you’ll reference it in other Subactions, such as activating and modifying it later. Lock Group is a little more involved. I believe I’ve explained it before, but for the sake of keeping it all in one place, only one hitbox per lock group can actually damage the target. When two or more hitboxes hit the target at once, it will choose the first hitbox (in order of the “CreateHitbox” subactions) to actually receive the hit from. This means you can use multiple hitboxes in the same lock group to essentially combine to create a single oddly shaped hitbox, or to define sweet and sourspots that you don’t want to both affect the target at once. You are free to leave this one blank, and if you do, it will be treated as if it were in a lock group of its own and always work (even if you have multiple hitboxes with blank lock groups). In most cases, especially if your attack has only one hitbox, you will probably be fine leaving this blank.
On the left side, there is a box labeled “position”. It’s fairly straightforward as well, just know that the X and Y boxes are the center of the hitbox, and are positioned relative to the center of the sprite on the fighter. So you can see here, a box centered at 0,0 is positioned right smack in the middle of Hitboxie’s sprite. Any changes you make here are reflected immediately in the hitbox up above in the viewer, so you can adjust your positioning precisely and see your results to make sure you’re getting what you’re expecting! And, thanks to the resizable viewer boxes, you can eyeball the general location of your hitbox before making a few final touches manually in the numbers.
Moving on to the right side, there’s two columns of data. One for the base values, and one for the “charge deltas”. We’ll get to charging later, so let’s go down the list of values first. At the top of the column is the launch angle. This is in degrees, with zero being straight forward, 90 being straight up, 180 being straight backwards, and 270 being straight down. You can also use negatives and values greater than 360 to loop around, so -90 is the same as 270, 390 is the same as 30, and so on. Also note that “forward” and “backward” are based on the direction the owner of the hitbox is facing, not the target. So, if you are facing to the left, an angle of 30 will launch the foe to the left and slightly upward.
Damage, Base Knockback, and Knockback Growth are all part of the launch power formula. The formula is a bit mathy, and this blog post is already getting quite long, so I’ll probably have a post about the formula itself in the future, but if you’re interested, it’s based on the Brawl formula (which is mostly the same as the Melee, 4, and Ultimate formula except when it comes to how air resistance factors in to slowing the fighters down. Again, a future blog post for those mechanics, but to answer the question, it’s mostly just because I know more about Brawl’s physics from my modding days and if I can do the research I’ll have an option to toggle Ultimate-style “balloon knockback”). The long story short: Damage is how much percent damage the move does to the opponent. Base knockback is the amount of flat knockback the move does regardless of damage, while knockback growth is the factor that determines how much the knockback increases based on the target’s damage.
Now, onto the charge deltas. In most hitboxes, these will be zero, but for things like smash attacks and other chargable moves, you can input an amount that each “stage” of charging increases the values by. There is a subaction called “ChargeHitbox” that lets you, in one subaction, modify those values by that amount, and specify a maximum charge level. If that level has not been reached, it will rewind the action a set number of frames to play the animation, and when it reaches that charge action again, at which point, it will loop until fully charged or the frame is manually advanced (usually by checking if the button was released). These values are a flat addition every time ChargeHitbox is called, and if you multiply them by the maximum charge level and add back in the starting value, you’ll get the final values for damage, base knockback, and knockback growth of a fully charged hitbox.
And finally, the bottom left section is what I refer to as the “advanced options”. In a majority of cases, you won’t need to touch these. Still, it’s good to know that you have these options, so here’s what they do: The shield damage multiplier is a multiplier applied to the damage on block to change how much shield damage the attack does. You can use this if you want an attack to be particularly effective against shields (Consider Marth’s charged neutral special) or even to have a powerful attack that’s safe on shield! Similarly, shieldstun multplier is the same, but applied to the amount of time your target is locked in shieldstun. This can be handy for a move that might be a bit unfair if too safe on block, or to make a move that can set up for future shield pressure by making the opponent locked down longer. At this point, it should be easy to figure out what hitstun multiplier means, but it is another multiplier to how long your opponent is kept in hitstun when struck. An example of a high hitstun multiplier would be something like Zero-Suit Samus’s neutral special, or Lucas’s down smash. Also try setting this to zero for a move that doesn’t interrupt your opponent at all, like a Fox laser!
The last one requires a bit of history. What the heck is a “Sakurai Threshold?” If you’ve ever looked at a data dump of Smash Bros hitboxes, you might have seen a lot of angles that have an angle of 361. This is a placeholder value for what is known to the community as a “Sakurai Angle”. It is a special angle that changes based on the amount of knockback dealt. If the knockback is low, it will move the foe horizontally, keeping them on the ground for follow ups, but if it’s high enough, they’ll get sent flying at a specific angle depending on the game. It is an interesting mechanic meant to keep grounded fighting rewarding, while still allowing those moves to potentially kill at very high percents. The drawback of this mechanic, however, is that the damage threshold to switch angles is fixed, and the aerial angle is always the same. This can lead to some angles feeling very common, and lead to a lot of moves feeling the same. In TUSSLE, however, both of these values are editable. The threshold you set here is an amount of knockback that needs to be exceeded before the angle you’ve specified is used. If the knockback is less than the threshold, they’ll be moved forward along the ground. This only applies to grounded opponents, aerial opponents will always be moved to the hitbox’s knockback angle. This parameter is going to take some experimentation to find good values for, but if properly used can make for some very interesting dynamic hitboxes! If you don’t want to bother, keeping it at zero means that your knockback angle will always be used!
And that’s all the current parameters a hitbox can be created with. If any new parameters get added, I’ll definitely write about it. Again, apologies for the late blog post, but I hope I’ve made up for it with a big information-packed post! Until next time, Tusslers!