January 3, 2018 ryanjuckett One comment

Hyperbot: Making a Discord bot for INVERSUS

The official INVERSUS Discord server (found at discord.gg/inversus) has grown to house an active community of both veteran and new players. Creating the community was my first introduction to Discord and I quickly came to see the advantages of having a bot to help automate common questions and needs. I first searched for an existing bot to integrate with the INVERSUS server, but nothing was very focused on being build around the community for a competitive game. I wanted features such as players positing invitations to their private lobby by typing !invite or having the bot automatically let everything know when a new high score was reached on the leaderboards. Thus, once I got the time to learn a bit about node.js and the Discord API, I went ahead and build my own bot, named Hyperbot, that I could add to over time.

Putting Hyperbot on your Discord server

If you are in a similar position and want a reference bot to start from or just want to boot up Hyperbot as is, you can find the latest code and documentation on the full feature set on GitHub at https://github.com/hypersect/hyperbot

December 19, 2017 ryanjuckett No comments

Improving the Font Pipeline

This post will be a bit different than my normal technical posts. Rather than covering a successful finished system, this will be a glimpse into the process of (hopefully) getting to that point in the future.

With INVERSUS finally out on all platforms, I can clean up some of the engine’s rough edges, and one of the bigger pain points has been the font pipeline. When it comes to refactoring workflows and engine architecture, I think it’s important to find tractable small steps you can take on the path towards your desired goal. I have a fuzzy picture of how I’d like things to be, and I make small improvements while at the same time getting a better focus on the destination.

Problems Everywhere

In my experience, the complexity of properly rendering text is an underappreciated problem by engineers that have never worked on it. It seems so simple! There are really only three steps:

  • Choose the next glyph to draw
  • Choose where to draw the glyph
  • Draw the glyph

So which of those steps is the hard one? Unfortunately, if you want to render crisp text in multiple languages across the world, all of them are the hard one.

Continue reading

October 5, 2017 ryanjuckett No comments

The Complexity of Simplicity: Rendering INVERSUS Deluxe

When discussing the visual style of INVERSUS, there has always been an amusing contrast between the random YouTube comment saying that “this could run on an Atari” and the periodic questions asking how I’m actually managing to draw what is happening on screen. We’re going to take a detailed walk through how INVERSUS Deluxe composes a frame, but for fun let’s start off by looking at an actual demake of INVERSUS for Atari that Ed Fries was toying around with (believe it or not, just finding a way to render the obstructions on the map was non-trivial).

Can you spot the difference?

Continue reading

September 21, 2017 ryanjuckett No comments

INVERSUS Newsletter – September 20, 2017

More news means it’s time for a new edition of the INVERSUS Newsletter!

Launch Schedule

Let’s get straight to it. INVERSUS Deluxe is launching on Nintendo Switch™ on September 28th and Xbox One on October 4th!

As you may recall, all of the current players on PlayStation 4 and Steam will be getting access to INVERSUS Deluxe as a free downloadable expansion. But when? The plan is to publish the Steam update alongside the Nintendo Switch launch on the 28th. The PS4 patch doesn’t have an exact date yet, but it will be in early November. I’ll be sure to send out a reminder once I have it locked in.

Feel free to share the news on twitter and anywhere else people pay attention to!

Community Tournaments

Have you checked out the official INVERSUS Discord server yet? It’s a great place to meet others for setting up matches or just getting tips to improve your game. It’s also now the central location for setting up community tournaments!

Starting this Friday we will be running a double elimination tournament for Steam players. Click here to sign up and enter the bracket! We are managing the tournament through a service called Challonge that automatically emails you and your opponent when you have a match available. After you sync up and play, you can log in, enter your results and then the tournament will progress. Head over to the #tournaments channel on Discord to meet your competitors, ask any questions or just follow along!

August 9, 2017 ryanjuckett No comments

INVERSUS Newsletter – August 9, 2017

It’s time for another edition of the INVERSUS Newsletter!

INVERSUS just got a whole lot bigger and it’s headed to Nintendo Switch™ this fall!


Last time we talked, I was working away on the 1.5 update. Then I started adding more content. Then I decided to add some more new features. I certainly wasn’t done adding more unlocks. And then I went and gave the whole thing a big visual upgrade. Looking back at the current game and what I had been building, I realized that it had become this giant beast of an update and just bumping the version number wasn’t enough. This needed a name!

INVERSUS Deluxe is still going to be a free update for all existing players and it will be the version of the game launching on Xbox One and Nintendo Switch (more on the below!). Click play to check out the trailer!

Let’s talk details:

  • 12 new versus maps and 4 new arcade maps create a total of 50 unique maps for players to enjoy.
  • Test your skills in the new single-player versus mode by facing off against AI Bots that scale in difficulty from beginner to world-class player.
  • The addition of ranked online multiplayer rewards skill in both 1v1 and 2v2 games.
  • New real-time soft shadows and high definition materials add a depth and richness to the screen.
  • With the new split-shot ammo, players can fork bullets and shoot around corners.
  • Equipping new unlockable motion trails allow players to show off personality in the arena.

Nintendo Switch

Ever since the Nintendo Switch was announced, I’ve had people telling me how perfect INVERSUS would be on it. Today, I’m happy to officially announce that INVERSUS Deluxe is launching on Nintendo Switch and to officially confirm that it fits like a glove. The game controls great on everything from a single Joy-Con to a Pro Controller.

I was pleasantly surprised to find how well the game works for a portable console. Playing a round in arcade mode or challenging the AI in versus mode both hit that sweet spot for filling some time while you are out and about. On top of that, the game looks fantastic running at 1080p 60fps undocked.

The online experience works great on Nintendo Switch as well with full support for public matchmaking and private games with people on your friend list. I can’t wait to start competing for the top spot in the new ranked online multiplayer!

Demo Demo Demo

PAX West is coming up at the end of the month in Seattle. I’ll be there showing the game so come find me! I might even get some shirts printed up (if I can magically find the time to make that happen).

I also want to say thanks to everyone that’s come by at all the shows I’ve been at recently! INVERSUS made it’s way back to EVO this year and also got to make it’s first appearance at San Diego Comic-Con thanks to the Behemoth! It’s a privilege to get to meet all the players out there and it’s well worth getting sick almost every time despite how much hand sanitizer I try to use 🙂

February 16, 2017 ryanjuckett No comments

INVERSUS Newsletter – February 16, 2017

For the full newsletter, click here!

INVERSUS is headed to Xbox One with more maps, more power-ups and more ways to play!


The next update for INVERSUS is launching later this year on Xbox One, PS4 and PC! You heard that right. INVERSUS is finally headed to Xbox!!!

The 1.5 edition is also going to be the biggest content update the game has ever seen!

Key Features:

  • Compete on 12 new maps in Versus mode!
  • Master 3 new levels in Arcade mode!
  • Collect new split-shot ammo that can fork into multiple bullets!
  • Sharpen your skills against the community’s most requested feature: AI controlled bots in Versus mode!

Click play on the announcement trailer to see in motion:

PAX East

If you have tickets for PAX East next month, you can be one of the first people to try out INVERSUS 1.5! I’ll be there demoing the game on an actual Xbox One and look forward to testing all the new maps with everyone.


December 6, 2016 ryanjuckett 3 comments

Rollback Networking in INVERSUS

INVERSUS is a fast-paced shared-screen multiplayer game for up to four players. It is the type of game that would traditionally be local-multiplayer, and for a long time I thought latency issues would make it a poor candidate for online. Late in development, I committed to adding online support with the mindset that a “playable but inferior” experience would be better than nothing, but I ended up with something hard to differentiate from its local counterpart! While the subject of networking can cover everything from matchmaking, to choosing a map, and finally playing the game, I’m only going to be discussing the gameplay portion. I want to break down how I made the split-second actions of INVERSUS into a polished online experience.


INVERSUS uses a peer-to-peer rollback system. Before getting into the implementation details, let’s review how rollback networking functions at a high-level.

Rollback networking an evolution of synchronous networking systems where every player would send input commands to every other player. In these systems, a deterministic game simulation would advance one frame every time it had received commands from each peer. This architecture had numerous benefits, but one huge caveat that drove action games away from it: input latency. In order to allow time for receiving remote player input, the local input wouldn’t be injected into the simulation for a number of frames equal to the transfer speed.


Rollback fixes the latency issue by processing local inputs immediately while predicting the remote inputs. When the actual remote inputs arrive over the network, it checks if anything was mispredicted. If a misprediction was found, time will be rewound to the mispredicted frame and then simulated back to the present using the corrected input values and further predicted values. This rollback and correction process all happens in the span of a single frame such that user only sees a slight pop in the results.rollbackinput

As network latency increases, visual pops in motion will increase, but they will only be in relation to direct effects of remote player input. For example, the launching of a projectile might skip the first couple frames, but once the projectile is in flight it can be reacted to exactly as if it were in a local multiplayer game.

Rollback networking is designed to create a near zero latency experience for the local user and fair conflict resolution because every participant’s inputs are respected. When you move, you move right away. If you press a button on a specific frame to counter an attack, you will counter the attack. This architecture also creates a minimal overlap in which game and network code need to consider one another. When adding features to the game, there is almost zero concern about networking. Everything just works and that’s a rather freeing experience for the engineer.

The main downsides of rollback are that it does not easily support joining in-progress matches, and it does not scale to large player counts. It also doesn’t support a variable frame rate simulation, but I’ll discuss how it can still support variable frame rate rendering later.

Rollback is perfect for fast, twitchy, frame-accurate games that require responsive input and have short gameplay rounds. It is the standard approach for modern fighting games and should be the standard approach for any quick round-based game with direct player interaction.

Continue reading

October 19, 2016 ryanjuckett No comments

INVERSUS Newsletter – October 19, 2016

Here’s the latest edition of the INVERSUS Newsletter!

Today marks the third big INVERSUS update on Steam with version 1.3.0. The PS4 update will be coming soon after. Let’s dig into the highlights!

Online Multiplayer Refined

INVERSUS has competition at its core and today we’re making big strides towards getting players in matches more often and across more varied game modes!

Let’s talk about 2v2 battles. In the past, you could enter 2v2 as a solo player or by first making a team with a friend, but these two groups were matched up separately – solos could only match with solos and teams could only fight other teams. With the new patch, solo players and grouped teams can mix into the same 2v2 game. This means more matches for everyone!

Continuing with 2v2 improvements, I’m happy to announce that INVERSUS now supports multiple local players joining an online game! You and a friend can team up on the couch, enter matchmaking from the same computer and fight other players online. In private 2v2 games you can mix local players and online friends in any combination — even three players at your house playing with one player at a friend’s house.

The 1.3 update also changes the cadence of how public matches are played. In the past, you would search for players until the lobby was full. Then you would play continuously with that group until someone dropped out. Games would often last a long time and both players would generally leave in unison. This made it hard to find a match if you joined while all existing lobbies were full. You’ll now get prompted to search for a new opponent after every couple maps in a public game. This will either find any stragglers or rematch with your opponent for another bout.

If you want to see how all this works in practice, check out the demo video here:

IndieCade 2016

INVERSUS was on display in Los Angeles this past weekend at IndieCade! The game was setup in a theater as University of Southern California and part of a small tournament. Thank you everyone that showed up!

20% off on Steam

In celebration of the new update, INVERSUS is currently 20% off on Steam for one week! Spread the word and lets play some 2v2 matches!


September 16, 2016 ryanjuckett No comments

INVERSUS Newsletter – Sep 16, 2016

Here’s the latest edition of the INVERSUS Newsletter!

Lots of new features. Lots.

INVERSUS has bee getting a steady stream of patches since it launched one month ago. Today marks the release of 1.2.0 on Steam. So what’s all this new stuff?

Let’s start out with the 1.1.0 update that hit Steam and PS4 a couple weeks back:

  • A brand new seventh arcade map was added.
  • Players can now play single player arcade games while waiting for an online match. After the online battle is over, the single player arcade game is restored right where you left it!
  • Improved world wide matchmaking.

Now for today’s update (out on PC and coming to PS4 soon):

  • INVERSUS isn’t just black and white anymore. 45 unlockable color palettes are now in game! Choose the ones you like and the game will randomly shuffle between them every match.
  • Online gameplay gets more social with over 250 unlockable emotes! Equip up to four at a time and express your joy or disappointment between rounds.
  • Experience levels are tracked for arcade and versus mode. Level up by completing matches, winning games online and earning high scores. Your level is advertised in online lobbies and each level gained guarantees an unlocked emote or color after that match (unlocks are otherwise randomly awarded per match).
  • New leaderboards for versus levels, arcade level, and number of games won online.
  • Improved public matchmaking allows solo players to search across all game modes at the same time!

Showing to the World

Being part of the PAX10 at the start of the month went great. Check out that picture to the right of INVERSUS being played in the Omegathon!

INVERSUS was also recently in Busan, South Korea as part of BICFest. Unfortunately I didn’t get to go.

It would have been great to go to Tokyo Game Show this past week. If only I had known all the top PS4 players would be from Japan!

There are some more show dates forthcoming that I can’t announce yet so keep an eye out on twitter and elsewhere. (I try not to spam this list with small details).


You can now buy 4 Steam keys for the price of 3 over at inversusgame.com. If you’re looking to hop online with a group of friends, this the best way to get in.

August 16, 2016 ryanjuckett No comments

INVERSUS Newsletter – Aug 16, 2016

Here’s the latest edition of the INVERSUS Newsletter!

The first newsletter I sent out was in August of last year. I’m happy to mark the anniversary by saying that INVERSUS is out now! Reviews are popping up left and right online. Destructoid gave it a 9.5! Grab a copy and tell your friends!

Where to Buy

For the PC players, you can pick up your Steam key at any of these spots:

Steam Storefront


Humble Store

For all of the PlayStation players out there, you can find INVERSUS on the PlayStation Store!


Today is also launch day for the official INVERSUS soundtrack! It’s only €3.99 and available directly from Lyvo himself. Pick up a copy over at bandcamp or just about anywhere else you can buy music online.


If you’re looking for a place to find and meet other players, I set up an official Discord server. Click here to join!

You can also visit the Steam Community Forums to discuss the game.