There are several notable features and innovative things about the game, so I’ll summarize them here. Innovation can come in many different flavors. Sometimes it’s pushing forward design in a new way, or usability, or technology, or even in introducing features or ways of doing things from one genre and applying them to another when it hasn’t been done before.
The things I’ll cover are:
Depth vs Complexity — Preserving depth with only a fraction of the complexity
User Interface for Friend Matches — One-click challenge / spectating, rare or unique in fighting games
Netcode — Pushing the technical envelope
Frame Advantage Visual Effects — The first fighting game in history to do this
Frame Step Mode — Possibly unique in its implementation, high value feature
Instructional Videos — Rare inclusion within the game itself
Ranked Mode Builds Tournaments On-the-fly — pushing the envelope on this rare feature
Team Battle Format — Unique implementation in the history of fighting games and has very good properties
Yomi counter mechanic — A new form of throw-escape
Single Player Content — Just a few notes
Depth vs Complexity
While this post is mostly about concrete features, it’s worth noting that Fantasy Strike has managed to deliver as much or MORE depth than some other major fighting games while needing only a small fraction of the complexity to do it. I’m aware that this is a subjective claim, that people will be skeptical, and rightly so because so many other fighting have done a questionable job with “accessibility.”
Often, other fighting games have put in beginner training wheels meant to be discarded later, or simplified things in a way that had no regard for depth or expert play (and then ruins it), or perhaps viewed the entire prospect of “accessible” as “features that beginners use against each other only.” This is none of that. It’s a serious attempt to capture as much or more depth that genre commonly offers while viewing “accessibility” as a process of getting everyone to the real, expert-level game as soon as possible. To get everyone understanding what’s going on, equipped to make decisions, and with execution tests low enough that the better decisions are what determines the winner.
It sure was a lot easier for us to achieve this kind of depth given that we were able to play the game for four years such that everyone testing it was able to execute everything they wanted all the time. We were, at all times, “playing the real game” and so tuning the dynamics to ensure interesting decisions (read: depth) was that much easier than if only a few people in the world could do optimal punish combos, etc.
I think explaining more about this, no matter how well-written, will not convince people as much as if you experience it yourself by trying to get good and seeing how much there is to the decision making involved. So I’ll leave it at that and move on to more objectively measurable items. But I do think that we’ve pushed the envelope in the realm of “high depth, low-complexity.”
User Interface for Friend Matches
This is the kind of innovation that isn’t new to the world, but it IS new to fighting games. For some reason, playing against specific people in fighting games is generally cumbersome and involves a lot of steps and UI that we do not need.
Imagine if you wanted to call someone on the phone. How would you do that? Would you create a lobby, then set the rules of the chat, then either create a password or friend code and invite a chatter, then place yourselves into virtual seats for your chat? No, you would not. You would touch their name on a list and call them.
In Fantasy Strike, you just click on anyone in your in-game friends list to challenge them. You don’t have to know or care which platform they are on, either (unless it happens to be a Switch vs PS4 thing, because Sony prohibits us from allowing those matches). You just click on them to challenge, and that’s it. No more UI than that is needed. When they accept, you are put into the same UI flow as if you were playing next them in the same room. You can play single-character matches or team battles, just like in local play.
It’s not an oversight that there’s no lobby system here. It’s intentional that you click once to challenge, they accept, then you are playing. Playing against friends in other fighting games can feel painfully outdated by comparison. Check out this chat log of me explaining my quest to add a friend, and hopefully play them, in Street Fighter 5.
“What if you want to WATCH a friend play?” you ask. Even then, a lobby is not the cleanest way. In Fantasy Strike, you can open your friends list, see all the friends who are in a game at that moment, and in one click, you can start watching their game. That’s it. Even if they aren’t currently playing game (maybe they will in a few minutes), you can still start watching them this way, and the next time they are in an online game, you’ll automatically start watching them.
Also, when you watch someone play, you automatically keep watching them play more games until you leave or until they kick you out. Even if they play multiple different opponents in ranked matches, then multiple different opponents in casual matches, then multiple different friend matches, you automatically follow them and watch all that with no further input after your first single click.
Has it ever been done in a video game? Yes. Has it been done in a fighting game? No, not to my knowledge. And if it somehow has, then bravo to whoever else did it. All I know is the standard method of watching people play in the genre is a lot more cumbersome than that, and I’m happy to push us forward. Someday, maybe UI this clean can be the standard, rather than the exception.
Fantasy Strike’s netcode is a different kind of innovation. Above I was talking about the user interface involved in playing online, but here I mean the technology that powers the online play itself.
Fantasy Strike uses GGPO’s rollback-style netcode, which at this point is not an innovation. It’s just…the bare minimum you should expect from any fighting game. The alternative would be to use input delay-based netcode, which means when you press a button, you do not see your character act on screen until your network signal reaches your opponent, then their signal reaches you. Waiting for that round trip makes everything feel slow and unresponsive.
Rollback style netcode allows you to instantly see your moves on screen, very much like if you were in offline play. The trick is that sometimes your opponent will “rollback” to a different state. This is generally rare and usually not that noticeable, and even in laggy cases where it is, input delay would be a lot worse.
So what’s the innovation then? Well, the devil is in the details. All implementations of rollback netcode (even involving GGPO) are not created equal. I’ve played other fighting games with rollback netcode and the results varied WILDLY. It’s not like there’s an on/off switch and if you set it to on, everything is great. There’s tuning, there’s optimization. The frame data of the game also matters and Fantasy Strike happens to lend itself well to online play, which isn’t exactly an accident either.
After spending almost 2 years improving the technical implementation of our netcode (shout outs to Thelo for his amazing technical work!), I’ve experienced the results myself: online play that is smoother than I even thought would be possible. I can play a friend in Kyoto, Japan for example (I’m in California), and we sometimes forget it’s even online play. I also regularly play people in Australia. And there, yeah, I know it’s online and there are rollbacks vs Australians. But it’s still better than I’ve seen before. I’m honestly surprised by it, and somewhere along the way, our various tweaks seemed to be greater than the sum of their parts.
So while this is another subjective area, all I can say is from my experience (confirmed by numerous others in our playerbase), this really does seem like a technical innovation that is pushing the envelope of fighting game networking. Not just that we use rollback netcode, but that our specific technical implementation is exceptional.
Note that my comments are specifically about the Steam version playing against other Steam players. We expect the same for console versions. But our launch has a last moment known-bug that affects only the Nintendo Switch version. While the netcode itself is fine, the Switch version has a very bad animation bug during online play. We already issued a patch and are waiting on Nintendo to deploy this fix. Please excuse our launch dust that might be obscuring the good netcode!
Frame Advantage Visual Effects
I covered this feature in more detail here. No other fighting game has ever done this, and it’s really incredibly useful. Every hit shows you visual effects that let you know who will recover first and by how much.
The point isn’t to react to that in real-time. It’s not about that. It’s that by surfacing this usually-arcane (but VERY IMPORTANT) information, it lets everyone understand what’s really going on. You’ll notice some moves leave you a minus frames that you didn’t realize. You’ll notice others leave you at plus frames. This is also all computed dynamically, so some moves can be minus or plus depending on how you time them and space them. It’s really useful to see that THIS time you did the move, you ended up being super safe. You’re getting instant feedback on your timings.
Yet it’s all intentionally a little bit camouflaged. It’s there if you’re looking for it, but not crazy distracting. I’ve actually felt other fighting games felt lacking since I’ve gotten used to having this feature. And by the way, our practice mode also lists numerical values for frame stats and advantage time on all moves as you do them. That HAS been done in a few fighting games before, but not many. I recently bought a major fighting game for $60, went to training mode, did a move that I felt was minus frames on hit and tried to turn on the data display to see how minus it was. But there wasn’t one. And the game felt really unfinished to me. This is a basic feature that feels really lacking when missing…yet it’s missing in MOST fighting games.
Frame Step Mode
In practice mode (aka “training mode” in most fighting games), there’s a dedicated button to pause the action at any moment by entering frame step mode. In this mode, you press another button to advance the action by one frame, or hold that button to advance several times in a row.
Furthermore, and very importantly, you can do inputs between frames. For example, if you want to press the C button the next frame, then hold C while you advance the frame. This lets you precisely input anything you want on any frame. You can also do this for the opponent/dummy character. There is no extra UI needed to do inputs for the dummy, you just use the player 2 controls and they immediately work. So you can choreograph any situation you want between the two characters, precisely, one frame at a time, with exactly the inputs you want on each frame.
This is incredibly useful and I’m not sure why it’s not a standard in fighting games. I’m not aware of any fighting game that has done this. Maybe there is one, and if so, great job to them. I’ve personally relied on this feature as a developer for the last four years (we put it in immediately at the start of development) and it now feels really lacking when I play other fighting games without it.
This feature is made even more valuable by the frame data displayed in practice mode, by the way. Every time you do a move, for either character, you instantly see that move’s frame stats. You know this move has 10 frame startup or whatever, and you can see if some other move leaves you at +4 frame advantage on block, etc. Having precise numbers for everything on-screen as you do things allows you even more precision in testing any scenario you want.
I’m sure there’s some fighting game that includes instructional videos. I can’t actually name one off the top of my head though. We have an interactive tutorial that covers the very basics to get going, and that’s common. But we wanted to also tell you all the properties of the moves for every character, and show you how those moves form a coherent strategy for the character. There are some things that a video is just more efficient at accomplishing than an interactive tutorial, and this is one of those things. In just 5 minutes, we can educate you a whole lot more with a character spotlight video than any other way.
It’s slightly unusual for the developer to make videos like this. We did though, and during development, several players told us that these were REALLY useful to them. They were emphatic about this, saying that it made all the difference to them. Explaining how a character’s moves work and what that character’s game plan is gave them a starting point when they didn’t otherwise know where to start. They said that helped them enjoy the game a lot more. Because of how strongly players said this, we decided to put them inside the game itself.
It could have just been a text list of videos to launch. But if we’re putting them in the game itself, I wanted excellent UI for the video player, as well as a slick interface for selecting each video. So we have this Netflix-like interface, which kind of jokes that each character has their own tv show. That would be cool, but it’s really how you select which character spotlight video to watch.
Ranked Mode Builds Tournaments On-the-fly
Most ranked modes do matchmaking by computing your matchmaking rating number, then finding an opponent for you with as close of a number as possible so that you’ll have as close to a 50-50 match with them as possible. That’s fine and normal to do, and there’s nothing wrong with that.
But…is it really the best, most fun way? I’ve found that tournaments offer a kind of excitement that this 50-50 style of matchmaking can’t. Back in the old days of arcades, it was exciting that sometimes you fought someone better than you or worse than you. And even in the current days of e-sports, tournaments obviously do not run on this 50-50 concept. In the first round of a tournament, does everyone fight someone of equal skill? No, and in fact the concept of seeding exists specifically to prevent that from happening. Ideally, the best two players who enter a tournament do NOT play each other in the first round.
As you go through a tournament, you are matched with people who happen to have the same number of wins as you that day (roughly speaking), which is a totally different concept of “same skill as you”. As you go, there is a rough correlation where each new opponent is probably more skilled than the last, and that is exciting, and then on top of that there’s variation in who happens to be playing better or worse today than usual, and that’s exciting too. There’s a texture you get from being matched like a tournament that’s compelling.
Fantasy Strike ranked mode is a rough simulation of this excitement. We do not build out entire brackets before the tournament starts, as you normally would, because that would greatly slow down matchmaking. We’re not willing to make that tradeoff. So instead, we build the brackets on the fly. First match, you’re matched randomly with anyone else in your league (bronze, silver, gold, etc). If you win, you are then matched with someone else in your league who also just had one win. Because the brackets are built on-the-fly, you are never waiting around for a bracket to fill, or for other matches in the bracket to finish. You also have no time pressure in that you could play your first match now, then your second match tomorrow if you like. It has all the flexibility of a standard queue, but the exciting texture of a tournament.
This kind of thing has barely been attempted before in fighting games, most notably by Street Fighter 4. Our system is so much easier to understand though, and has great UI to support it. There’s no need for multiple kind of points and arcane formulas. Here’s the complete breakdown of the rules:
If you win, you get one star for a first round match in a tournament, two stars for a second round match, and three stars for a third round match.
If you lose, you lose a star.
Get enough stars and you go up in rank.
In bronze league (the lowest), if you lose, you don’t lose any stars.
In diamond league (the second highest), you do not gain a star for winning a first round match. This means in a full diamond league tournament, the total number of stars given out EQUALS the total number lost by its entrants. There’s no grinding here. You have to really be better than everyone to advance in this difficult league.
In master league (the highest), we dispense with the stars and just show you your actual rank amongst all players. For example “you’re 3rd best in the entire game.” Winning and losing is governed by standard elo.
This system is easy to understand, easy to see what’s going on when you see the score screen after a tournament, gives everyone a sense of progression (even bad players!), gives everyone a real challenge (hello diamond and above), and reveals the harsh truth to the elite players.
Full disclosure: Mario Tennis uses a similar system of on-the-fly tournaments, but we were not inspired by them. Our system was already in development long before their announcement. We think it’s really cool they did it too though. (And again, this style of ranked play is practically non-existent in fighting games.)
Team Battle Format
Many other fighting games have a team battle. But none of them work the way it does in Fantasy Strike, and these details matter a whole lot. The very specific way it works is actually innovative and is a general contribution to game design that many other games could use.
The standard way to handle a competitive mode is players use double blind selection of their characters for game 1, then the winner can switch characters in game 2, then the winner of game 2 can switch characters in game 3.
That system is pretty good, and for a couple decades I had to defend it against new players who would point out issues and come up with other systems that were actually worse in ways they didn’t realize. The good of this system is that if you can play multiple characters, you get to. And that if you end up in a lopsided matchup, you do not have to stay in it. But the bad part is counter-picking, and more importantly, the effect that has on the matchups actually played.
I built a fighting game career on counter-picking. That is, picking a character specifically suited to beat my current opponent. I did it, I think, WAY more than average. I play multiple characters in every fighting game I play so I’m always able to do this, even at the pro-tournament level. I say this to remind you that I am no stranger to this. Quite the opposite.
Is it bad though? Well, the effect of it is bad. The part where you get to switch out of a bad matchup, that’s fine, but the net effect of the whole thing is as follows. Players generally end playing mostly a small set of matchups only, and it’s the set of most unfair matchups in the game. In a 3-game set, whoever loses game 1 will switch to the most unfair matchup they can for game 2, then either game 3 will be that same lopsided matchup, or if the other player won game 2, then they switch to the most lopsided matchup the other way. Over time, as players learn more characters, well over half the matchups played end up being the same few most-lopsided ones over and over.
Even if a game were impossibly well balanced and had like 100 matchups that were all 5-5, but 20 matchups that were 6-4 or 7-3, then you’d hardly ever play the 5-5 ones compared to the other ones, even though at first glance MOST of the game is the fair ones.
Notice that this isn’t just about poorly balanced games. Even the best balanced asymmetric game will suffer this fate. And if you remove the execution barrier so that learning new characters is just the strategy part (rather than strategy + execution) then the problem becomes worse. Even more people will counter-pick more often and things will devolve even more extremely into just a few matchups—the most lopsided ones in the game, whatever they are.
Furthermore, it creates a very brittle system for game balance. Imagine a character that has all 5-5 matchups, except ONE very unfair 9-1 matchup (oops). There could be 20 5-5 matchups here…or 30 or 40 or however many characters, but all it takes is ONE bad matchup to torpedo that entire character in the competitive metagame. In a game with standard counter-picking, that player will face that unfair matchup most of the time. As the game matures, they could get closer and closer to playing that one matchup in 100% of their sets, once the rest of the community is wise to this counter-pick. That’s pretty miserable and you’d hope such a character with almost all fair matchups would be more viable than that.
Fantasy Strike’s particular brand of team battle solves this. You do not play a small set of the most unfair matchups. Instead, you play an even spread of matchups across your characters and theirs. You are not locked into a single unfair matchup the entire time (as you would be normally without counter-picking). And if, theoretically, some character existed that had one bad matchup but all other fine matchups, they are still completely viable. These are incredible properties for a format to have. And furthermore, though you do have to play three characters, it’s impossible to lose the match without getting to play your “best” character. So if you do lose, it means you played your best character and lost, so blame yourself and not the format.
The rules are as follows:
Choose a team of 3 characters, play a best-3-out-of-5 match.
Each game, play a new randomly chosen matchup.
You'll go through all your characters before repeating.
Must win with all 3 of your characters to win the match!
That’s it, and we have clear UI that shows how this process works between each game of the set. Maybe the exact workings of this team battle seem very “inside baseball,” and I know it’s a lot of detail, but it’s dead simple to actually play. The take-away is that a system that gives players and spectators the maximum amount of matchup variety without any of the potential drawbacks I outlined above, and that also avoids the common problem of these kinds of games drifting to be mostly about a small set up lopsided matchups…well it’s quite a breath of fresh air to play.
The Yomi Counter Mechanic
The yomi counter is a new form of throw escape that’s not been used before in any other fighting game.
For some background, in the old days of fighting games, throws were very powerful. So powerful in the Street Fighter 2 series for example, that even at the pro level, even when players know a throw is coming, it’s still really hard to get out. Over time, game developers responded to cries of “throws are cheap” by making throws weaker and weaker and weaker. More startup, less damage, less range, and the ability to escape them, after the fact, for 0 damage.
I think this has, overall, been the wrong approach. Throws need to be good because they serve an important function in gameplay: to beat blocking. So weakening throws might please some players, but it hurts game dynamics. I think the better approach is to make throws very strong, as strong as back in the old days, but to answer a more specific criticism that players had. If you KNOW the throw is coming, shouldn’t you be able to get out? The alternative—that you STILL can’t get out—would be very frustrating indeed.
In Fantasy Strike, you cannot escape a throw after the fact. Once it starts, you will be thrown. It’s intentional that you can’t get out on reaction because if you could, throws would be useless. BUT you can always get out of a throw that you expect. The command is the simplest one possible: let go of all your controls. That includes letting go of block, so it’s dangerous and risky. You’re opening yourself up to a combo, by doing this. If you had the right read, letting go when you would get thrown causes you to reverse that throw and do a special animation against the attacker. In essence, you automatically throw them and you get full super meter for it.
This type of throw escape is good because it a) allows throws be very powerful without anyone being able to complain they can’t get out, b) makes the input for throw escape as easy as it can possibly be (“let go of the controls”), and c) makes you inherently risk something by trying it, so there are real decisions involved.
Opponent is doing inputs
so they CAN be thrown
Opponent let go of the controls
so they yomi counter YOU if you try to throw them
Another note about yomi counters is that they do NOT work against special or super throws. That would feel bad, but also this difference allows for more threats and more decision-making. You can JUMP out of all special and super throws, but you can’t yomi counter them; you YOMI COUNTER out of all normal throws, but you can’t jump out of them.
Single Player Content
This an an area that we didn’t exactly “innovate” in, but it’s still worth mentioning. We have an arcade mode at all, which SF5, a game that launched at $60, famously did not. And it has fantastic art (and voiceover and some visual effects btw) for story intros and endings. Here’s an example of a Fantasy Strike story scene (top) compared to Street Fighter 5 (bottom):
We have four survival modes. You fight different numbers of enemies in each, and in one you fight cool looking metal bosses with a lot of hit points and crazy moves. In the others, you fight a cool looking shadow boss every 5th opponent. One technical thing we pushed hard on is this: when you beat a survival opponent, the next one jumps in IMMEDIATELY. There is zero loading time. This was technical challenge, but I felt it was absolutely necessary because I cannot stand the excruciating loading times in many of the survival modes I’ve played.
We have a daily challenge mode that is kind of like an endless survival that you can only play once per day, and it shows how well you did against everyone else that day.
The most innovative mode takes its inspiration from card games like Hearthstone. It’s called Boss Rush, and you build a deck of powerups as you go through it and fight increasingly difficult AI bosses.
Boss Rush is where we can stop worrying about making things competitively fair and just let you do ridiculous things that are fun. You fight a series of eight (CPU-controlled) boss characters, and they get increasingly difficult. Part of that is their AI becomes smarter, but they also get crazy powerups like bombs dropping from the sky, dragons flying by, rivers with dangerous fish washing across the screen, and so on.
In order to deal with all that, you get powerups too. Before each fight, you pick one of three powerups. And before half the fights you get to pick a second, really powerful gold powerup from a random set of three. All of these are cumulative over the course of your run. So you’re building a “deck” of powerups and you get to think about synergies and combos amongst them.
The mode is like a rogue-like in that you keep your deck until you lose. If you lose, we throw your deck away and you have to start over with a new run. Can you make it through all eight bosses? Playing as every character?
My summary here is that while the actual gameplay of Fantasy Strike is fun, solid, and, I think you will find, surprisingly deep, we put a ton of work into everything that goes around that. Work that has to do with the game as a piece of software: the user interface, the technical side of online play, the loading times, and so on. In many ways, it’s an attempt to fix issues on many fronts that have bothered me in other fighting games for decades. I want us all to do better.
I actually hope that a lot of these things will just become standards. Imagine if it were normal to simply click challenge on a friend to play them. Imagine if you could tell the frame advantage of your moves all the time, easily. Imagine if intercontinental online play felt pretty good instead of a total disaster. Imagine if a competitive play system had forces that encouraged the widest variety of matchups instead forces encouraging the same few lopsided matchups. Let’s hope these kinds of innovations find their way into other fighting games in the future.