HIGHPOINT Dev Blog: Late 2020 / Early 2021 Wrap-Up

Hello again, friends!

Another handful of months have flown by, and naturally we have another batch of updates to show and tell you all about! And this batch of progress is big — like, real big! We got a lot done in the late parts of last year and the early parts of this year, and we’re thrilled to be finally talking about all of it.

The game keeps getting better all the time — come see what’s changed since October!


Dev vlog #2

Accompanying this blog post is our freshly released second development vlog, which is probably our best video yet. We encourage you to check it out!

If you prefer your HIGHPOINT development updates more video-shaped, we’ve got just the thing, right here!

We’re really proud of how the second devlog episode turned out. We think it does a great job of showing off what’s new, while also communicating the personality of the game — what we feel makes the game special.

The remainder of this post covers practically the same updates as the vlog episode, but with more emphasis on the technical details. Plus there are a few items here that just didn’t quite fit into the video. It’s your choice which path you choose, but for the folks out there who dig a more technical blog format, read on!


Join us on Discord!

Before we jump into the updates, we want to invite you to join us in our Discord server if you haven’t already! We’d be happy to chat with you about this post, the vlog episode, Highpoint in general, game development, and who knows what else. Come by to ask us questions or just to hang out!

Okay, now on to the development updates!


Custom Match Lobby

Link up and have some chill fun with your friends even before the match starts.

Previewed in our previous Dev Blog, we finished up and implemented our Custom Match Lobby feature. Since then, we’ve gotten the chance to extensively use it during each of our playtests, and it probably won’t surprise you that our verdict is: it rules!

Friends: check. Customizations: check. Skateboard & boombox: check check

Forming matches (or some kind of session) with your friends is a thing that practically every multiplayer game has, so that part is nothing special. But what we love about ours is, you get to link up with your pals in a summery outdoor space under warm sunshine, and your pals’ bots are actually right there next to yours, where you all can customize your appearances together.

We knew when we were first designing this feature that we did not want to put the player in a kind of abstract space, alone except for a row of other players’ avatars squeezed between a bunch of overemphasized menus. We’ve seen that done before, and though it might work elsewhere, we knew that we needed something different. We needed something that feels like HIGHPOINT — something warm, playful, and airy. And so we pursued that! The outdoor setting for the lobby came together pretty quickly, meaning all that was left was the challenging-and-fun task of actually getting it to work.

You can almost feel the breeze

In the end, it did work, and we love it. Beyond looking so inviting, the lobby also allows you to do all the things you’d want when setting up a match:

  • Arrange teams to your liking — anything from 1v1 up to 3v3
  • Choose to be a spectator for the match, or change your mind and put your Bot back onto a team
  • Customize your appearance to match your teammates, or do your own thing and Look Your Best
  • Choose the arena you want to play in
  • Ready up when you want to lock in, or un-ready to make sure the game doesn’t start while you’re at the fridge AFK grabbing some pre-match ice cream
Customization just wouldn’t be the same without your pals fidgeting lovingly right next to you

This new lobby feature is the primary way you will link up and play HIGHPOINT with your friends at first, until further down the road when we’re ready to add more automatic and convenient matchmaking features. This explains why we’ve already begun calling it the Custom Match lobby at a time when it’s the only way to create a match in the first place — as opposed to calling it just “The Lobby”, since that name could become confusing in the long run. When the time finally does come for us to begin working on more premiere matchmaking features, be assured we’ll be vocal about that too!

In the meantime, we’re going to keep improving the Custom Match Lobby, but we are pretty happy with it even in its initial form. We look forward to having more players try it out so we can find out what everyone else thinks of it too!


Underpass Park Visual Update

Enjoy a bit more environmental personality when duking it out under the highway.

At this point in HIGHPOINT’s development, none of the game’s art assets are finished, or necessarily even close to it. We still rely on a lot of rough representation of art, just enough to get the point across and express our intentions, so that we can move on to the most demanding tasks of the hour and use our limited time and resources as efficiently as we’re able to. But sometimes we feel the need to go back and show some love to an art asset or an arena that maybe hasn’t gotten the attention it deserves.

In our last blog post, we showed off some visual improvements that we made to the Mountain Temple and the Sky City arenas. Since then, we found the time to give the same loving treatment to the Underpass Park arena.

Underpass Park is secretlyokay maybe not so secretly — our favorite arena. This is because it has the potential to express so much of the personality and mood of HIGHPOINT all by itself, all within one location. Before November of last year, though, Underpass was easily the most skin-and-bones of all of our current arenas, so it’s easy to explain why it deserved a visual update. It was badly in need of some further fleshing out — not a finalization of any sort, but the adding of rough detail to further identify and express our intent for it and its environment. It needed some additional broad strokes so it could exude the same basic feeling that the final version of the arena will embody more finely in the future. So we got to work!

Here’s what Underpass looked like before the update:

Underpass Park “before”

And here are some after shots:

In line with what we wrote about the Mountain Temple and Sky City last time, another goal for this Underpass Park update was to add some more uniqueness to each side of the arena. We want all of our arenas to be visually distinct and interesting in every direction. This update helps on that front as well, though there is still a lot more we plan to do!

All of our arenas still have a long way to go visually, but now Underpass Park is at least slightly closer to the end goal. We’re going to keep repeating this process of occasionally updating and improving the look and feel of each arena as needed until we’re ready for full art production down the road.


Spectate & Replay Improvements

Framing up the action for a gorgeous screenshot is now easier and better than ever.

In our last blog post, we noted that we added a new “Player View” camera to our spectator mode. Since then, we’ve added a few more features that should help you engage with the action even better as a spectator, and especially when reviewing a match in the replay player.

The Player View spectate mode lets you see the action exactly the way your friends saw it when they beat you 11 to nothin’. (You’ll get ’em next time though.)

One of the recent things we’re most excited about is, we prototyped out a “Photo Mode” that gives you the tools for taking cinematic-style screenshots of a cool moment. Here’s how it works:

  1. Pause the action at a cool moment in the replay.
  2. Frame up your shot, then press the keyboard key or the gamepad button to enable the photo mode controls.
  3. Adjust the camera’s focal length, i.e. zoom in or zoom out, using the zoom controls. Want a really wide-angle? Go for it! How about a zoomed-in telephoto style shot, like something taken by a professional sports photographer? Yes please!
  4. Optionally change the camera’s aperture and move your focal point. Make what you want to be in focus be in focus, and everything else will become nice and blurry. The aperture controls affect how blurry the out-of-focus areas are. Sometimes less is more, but at other times, more is more!
  5. Take your shot! Simply press the screenshot button on the gamepad or keyboard to capture the beauty forever.

How have we gotten this far into this section without any photos? Let’s fix that:

We’ve already gotten some good mileage out of this new feature, and it will only get better from here. In the future, we plan on implementing optional auto-focus behavior that can be enabled when using the Aim-At-Target and Follow Target spectate modes; this will allow you to keep the action moving and capture video clips while engaged in Photo Mode, and your target will remain in focus automatically. Along those same lines, we also plan on improving the sensitivity of these photo controls so they can be manipulated more smoothly and imperceptibly; this will help allow you to capture more cinematic and professional-looking video recordings in live matches and especially in the replay player. It will be exciting for us to see what you capture using all these tools once they reach your hands!

Stay tuned for more regarding our suite of spectate, replay, and Photo Mode features in the updates to come!


Directional Dunking

360-degree freedom when putting points on the board (and looking gorgeous while doing it)

The “big moment” in HIGHPOINT has always been diving on the goal to score. It’s what all the other actions and interactions in the match support and lead up to. It’s that thrilling moment where everyone holds their breath waiting for that telltale smash of the goal glass, or the delightful reverberation of the goal posts when the shot just misses, or that juicy smack of an uppercut connecting and sending the diving player flying away into oblivion.

Our diving & dunking mechanic has been feeling pretty good for a long while now, but players have been limited in one major way so far: they could only dive and score forward. This limitation had become more apparent as the action on the field became more variable and interesting — especially thanks to improvements to our passing mechanic. More and more, we were seeing plays develop where a great pass would hit a receiver right in front of the goal, but the momentum of that gorgeous play would fizzle somewhat because the receiver was facing away from the goal, meaning that player had to take a moment to turn around and reposition before being able to dunk it in for a point.

Losing momentum because you lack dunking freedom, and also because you stayed up too late watching infomercials again

We knew we wanted those kinds of plays to carry their momentum into the score, and for that to happen, we had to allow players to dive on the goal no matter which way they are facing. So we added support for three new dive directions — right, backward, and left — to complete the circle and let you dunk with 360-degree freedom.

We started with adding support for a backwards dive and dunk. We did some animation experiments and added some code to allow the game to determine which dunk direction to use by interpreting the player’s input and current movement direction. Things weren’t exactly pretty at first, but before long we had it figured out and an early version of the backward dunk came to life.

Referencing the forward dunk during the creation of the backward dunk animation. This was a very serious task and there was no messing around.

After a bit of refinement to the supporting code and after some improvements to the new backward dunk animation, things really started to get exciting. At this point we could only dunk in two directions, but even so, we were pretty much bouncing up and down with anticipation for when we were ready to test all of the new dunk directions together during a real match.

Jon’s inspiration for the backward dunk animation came partly from the German suplex from professional wrestling. For the left and right dunk animations, the inspiration came from a certain hall-of-fame NBA player (maybe you’ve heard of him) and one of his iconic dunks from the 1987 Slam Dunk Contest.

Once the right and left dives were implemented and feeling great, we tested the whole suite together at full speed. We assembled our usual playtest team and held a little dunk contest of our own. Here are some fun clips from that batch of testing:

This is one of those efforts that doesn’t need much of a design review. It just works. It’s exactly what we needed to both increase the fluidity of play and add even more pizzazz to goal scores. Even so, our work on this content is far from done. We have plans to add even more dunk animations for each dive direction, for added flavor — and especially to allow players to further customize and express their style on the field.

For now, let’s just say we haven’t finished using NBA dunk contests for design reference and inspiration.


Arena Play Space Improvements — a.k.a. Field 2.0

Making the arena play space work better, look better, and feel better to play on.

Here’s a little game development confession: a lot of the design work we do doesn’t come from a preconceived plan, or from eureka moments experienced while on an inspiring walk. Admittedly, a lot of the time it comes instead from experiencing tiny disappointments during playtesting, and the resulting need to address the underlying issues as they come to light.

Sometimes the underlying flaws are small and take a while to come into focus. That was recently the case for multiple aspects of the “field” — the common arena space you play within and interact with in a match. We eventually recognized a few problems with the field from a design perspective.

The first problem was, the boundary walls surrounding the field surface — which are intended to be transparent and non-obscuring — were just too unnoticeable. This was causing some players to wrongly conclude that the walls were purely decorative with no gameplay purpose.

The original boundary wall material, which was practically invisible

This problem needed a visual solution, and that came in the form of some new materials and a few new visual items. For one, a completely new, prettier, and more noticeable wall material now wraps around the entire field. Also, every ten meters or so along the boundary, purple beams now project upward from the floor, almost like the yard lines from American football. These are tied in with the field surface by a horizontal “ring” of purple that helps reinforce the shape of the boundary and helps make the whole combination feel slightly more solid.

Touring the new arena boundary

The cumulative result of these new visual features is a wall boundary that we feel is a lot more substantial, and one which communicates its role and behavior a lot better than before. The hope is that new players will more easily grasp that the wall is more than just decorative — you can bounce a pass off of it, even though it allows players to pass through unimpeded.

Wall bounce-passing is a gameplay and team-play technique we are trying to breathe more life into, because we think it can lead to some really interesting outcomes. We’re eager to find out how much these changes help communicate this, and how much of a difference they make toward encouraging players to get bouncy with their passes.

The second problem was, defensive players in their own “goal box” were being too easily defeated by an aggressive offense. This meant that goals were being scored a bit too often with no defenders left to deny the attempt, and that’s just way less interesting than dives that successfully make it past a defense of uppercuts and spin strikes.

The infamous “Goal Box Massacre” of January 2021

We addressed this problem by adding a small new mechanic: now when offensive players step into the other team’s “goal box” — the semicircular area directly in front of the goal — they start taking damage and losing energy. It only takes a second or two for an intruding player to be drained enough that knockback against them is doubled.

Now dipping into the other team’s goal box means you might get smacked with double knockback

This change is intended to give goalkeepers the upper hand, and give offensive players a tactical choice: Should they dip into the goal box to try to clear the defense and risk being KOd even by a light strike? Or should they hang back and attempt to score against a more defended goal, and stay alive long enough to maybe recover the ball if the score attempt is blocked? Interesting decisions are what games are all about, so it’s no surprise we already feel this small new mechanic is paying off.

The third and final problem was, the gaps we placed between the goals and the field surface were doing more harm than good. Instead of aiding defensive players by encouraging shooters to dive earlier as intended, the gap seemed to just gobble up everyone who ventured near the back of the end zone, and often made goalkeeping even more difficult — the exact opposite of our intentions.

The Goal Gap’s malevolent appetite could never be sated

The solution for this problem was pretty straightforward: just remove the gap. Which we did! But we didn’t let that stop us from making a visual update while we were at it.

In the spirit of a better looking field, we upgraded the look of the whole end zone area, especially right in front of the goal line. Where previously they were two separate pieces, now the capture area and goal line area are one single mesh, combined with better integrated material details to boot. Additionally, we made it so the goal box ring responds when opponent players intrude within the goal box, partly because it helped communicate to the intruding players that they were in danger town, and also because we just thought it would look cool (we were right).

The new end zone models are *chef’s kiss*

Now that the gap is gone, defenders have some extra space to use to their advantage. In tests, we already feel more confident when goalkeeping with the gap removed, but we’re eager to see improved stats on scoring and denials over the long run to validate this design decision.

After all of these visual and design changes to field elements, it’s no wonder why we just shorthanded all of it with the nickname “Field 2.0”. We’re still testing and reviewing the changes internally to get an idea of how effective they are individually and in combination, but the real answers will come when we’re finally ready for more new players jump in and give us their fresh feedback. (And we can’t wait for that!)


Ragdoll & Recovery

Failure tastes even better with an extra spoonful of ragdolling.

Physicality is at the core of HIGHPOINT’s gameplay. We’re always striving to the make the hits feel juicy, the goal scores feel powerful, and every other little interaction with the world feel substantial and reactive.

This physicality is also a design solution in some cases; for example, a while back we made it so collisions with the goal post — affectionately called “doinks” — ragdoll the player’s bot, because we want those pressured near-misses to have interesting consequences. This was an effective design solution because it added even more enjoyable tension to shots that veer too close to the posts, and because the collisions themselves are super satisfying and entertaining to witness.

Endless looping doinks for your entertainment

For a long time, though, ragdolling after a doink was irreversible, and so the player was automatically KOd a few seconds later, even if they landed back in-bounds. This was because, honestly, physics in a multiplayer game can be really tricky! At the time, we weren’t ready to tackle the challenges of “undoing” ragdolling, and so we lived with it being a KO-causer even though we wanted from the beginning for the player to be able to get back up afterward.

Since then we’ve learned a lot, and recently we did some serious heavy lifting specifically to make ragdoll recovery possible. The biggest part of this effort was overcoming a limitation with our bot character’s skeleton — the hierarchy of virtual bones that defines how the bot’s body moves with animation and physics. In order to make ragdolling work in a way that allowed the ragdolled bot to stay synchronized across every player’s screen, we had to add a new bone to our bot character’s skeleton, right at the top of the hierarchy.

Anyone familiar with character animation or rigging will immediately recognize this as a big “uh oh” situation. That’s because it meant that all of our character animations would break, and we’d then have to update, reimport, and fix every single one of them. But once we decided it was worth it — and after some calming breathing exercises — that’s what we set out to do.

At least this many animation assets were rudely discarded after we broke our character’s “spine”

It took us several weeks to convert all of our animations over to the new character skeleton, but along the way we took some opportunities to fix and improve some things that were overdue for our attention anyway. In the end we had a new skeleton, newly improved and converted animations, and the bot was behaving and moving better than ever in-game. And best of all, we were finally ready to move forward with properly adding ragdoll recovery.

Many coffees and some code later, our efforts started to bear ragdolly fruit. Now, when you slammed into the goal post, instead of being automatically KOd after a few seconds, you got back up. Then we sweetened the deal for opponents by reducing the core strength of the ragdolled bot to zero — making the immobilized bot a vulnerable (and distracting) target that the other team can punch into the stratosphere.

Getting back up after a doink. We still need an animation so the bot doesn’t just stand up instantly, but even so, we’re pretty happy with what we have!

Making things even more exciting, this significant effort opened the doors for other related features that we had wanted for a long time. First was addressing a limitation we were seeing when dive attempts were “body blocked” by other players. Previously, these in-air collisions could happen and the diving player would barely notice, or at worst, they would just lose their momentum and land back on the ground, ready to try again. Here’s probably the most infamous example of that happening during one of our playtests:

Our recent body-block shame on full display

In that clip, the diving player collides and loses momentum, but lands safely and just goes ahead and dives again a moment later to score. In this situation, we want to instead reward the defense for being well-positioned, even if their strikes miss. From a physicality perspective, a collision like that should cause one or both players to crash to the ground and cause the ball to go flying. Inspired by that and the new capabilities we had, we were finally able to make that change.

Now when a diving player collides with another player mid-air, the diving player will bounce backward, fumble the ball, start ragdolling, and finally get back up after a few seconds — very much like a doink. Critically, this new behavior rewards the defense for being in the right place at the right time: body blocks are now as effective as strikes for denying an incoming score attempt. As a bonus, this makes decisions about pressuring the goalkeeper even more interesting for the offense, as discussed earlier, because now goalkeepers can defeat a diving opponent simply by getting in the way of the dive path. Altogether, goalkeepers are more empowered than ever — and the fact that it’s hysterical when body blocks happen only adds to the fun.

Blocking a score attempt using only your face is the coolest play in the book

The other feature these efforts unlocked for us was making dive landings look and feel better too.

Early on, players were able to pick up the ball and dive all over the place without consequence, sometimes just to be silly, and sometimes as a way of getting across the field more quickly. This way of using the dive did not support the other design decisions for the game, so we did what we could at the time to try to discourage it. We added a temporary movement speed penalty to players when they land on the floor after a dive, and we also briefly limited the abilities they could use.

Nevertheless, some players still sometimes used the dive to get around, perhaps because these players thought the consequences were worth it, or maybe even because they were unaware there even were consequences at all. Either way, with improved ragdoll and ragdoll recovery now ready to go, we had what we needed to finally solve this issue properly.

“I meant to do that”

Now if a player lands back on the ground after diving, the game considers it a “crash landing” and (try to guess where this is going) their bot will ragdoll for a few seconds before getting back up. With this change, not only does it feel better when you crash down to the ground after a missed dive, but it also very clearly communicates that diving always carries risks: you’ll either crumple hard onto the ground, soar off the edge of the arena, or you’ll be smacked into the next dimension by a well-timed punch. Now it’s much clearer that, with diving, there’s inevitably a price to be paid. Now when you choose to dive, you’ll get a more interesting outcome, no matter what.


Final ‘Rapid-Fire’ Update Notes

Summing up some of our smaller updates by throwing bulleted items at you with abandon.

Here’s a list of some other updates or events from October onward that deserve at least a quick mention:

  • We made a new Ground Pound animation! During the big animation overhaul, we had the chance to fix some lingering animation issues, and in the case of the Ground Pound, we just went ahead and replaced the original placeholder animation entirely. In the midst of a pretty tedious process, Tom got to dust off his animation degree and had fun with this one:
  • Visor color is now customizable as part of your bot’s customization! This was a relatively small effort but we feel like it adds a lot:
  • Bot accent color materials received some love, and now look fresher than ever:
The updated “soft” palette using “wax” finish

Farewell For Now

That’s it! You’ve done it, you’ve caught up on everything we got done since October. Thanks for reading!

We say this every time, but it’s the truth, and it can’t be said enough: we’re so dang grateful for the HIGHPOINT community and your interest in the game’s development. This project wouldn’t be anywhere near as fun without your support. We love what we’re making, and we can’t wait to share more of it with you!

If you’re one of the many folks who have shared the game on social media, or if you’re among the friends we’ve been chatting with regularly on Discord or Twitter, we can’t tell you enough how much we appreciate you. Please keep it up because your support makes all the difference, and your kindness makes our day.

Thank you all so much for being part of this journey.

Much love as always. 💗

—The HIGHPOINT Team