Wednesday, October 7, 2020

PaletteSwap

I'm happy to announce PaletteSwap, a tool for editing sprites and portraits in Super Turbo. This is the tool that I've been using to create the ST Alternate Color Set

I've created a video on how to use it:


Happy modding!


Feel free to drop by our discord: https://discord.gg/x3WWkGU

Wednesday, September 9, 2020

Chun Li ground links

I've been doing testing with my improved training mode, and have collected some data on Chun Li's ground links. I wanted to see exactly, in game, how many frames the player has to input ground links. 

Methodology

First, I set the game to no frame skipping. While my frame counter does take frame skipping into account, I wanted to avoid any confusion or source of errors.

I then picked a link. I'll use her low mk, low mk link for the image below. I press low mk for 1 frame. This is shown in the frame counter that I've highlighted with the red box below. I then wait 30 frames in the down/back position. I then press low mk again. This shows up as a 2-hit combo. In my notes, I would make this as "31 - combo". This means that 31 frames after pressing the first button, I pressed the second button. The 31 number comes from 30 frames of neutral, plus 1 press for the first press.



I'll give another, slightly more complex example. In the example below, I test standing mp to crouching mk. I'm initially 72 frames in neutral. I press mp for 5 frames. Then towards for 4 frames. Then down towards for 3 frames. Then neutral for 3 frames, followed by 13 frames in down. I then press and hold down and mk for 5 frames, but the number of frames held is irrelevant. The total here would be 5+4+3+3+13 = 28 frames. I would mark this as "28 - combo".


Results

Here are my results:

Low mp -> low hk (2f window)
27 - no combo
28 - combo
29 - combo
30 - no combo
31 - no combo

Low mk -> low hk (2f window)
27 - no combo
28 - combo
29 - combo
30 - no combo
31 - no combo

Low mk -> close stand hp (4f window)
26 - no combo
27 - no combo
28 - combo
29 - combo
30 - combo
31 - combo
32 - no combo

Stand close mp -> close stand hp (5f window)
26 - no combo
27 - combo
28 - combo
29 - combo
30 - combo
31 - combo
32 - no combo

Low mk -> low mk (4f window)
26 - no combo
27 - no combo
28 - combo
29 - combo
30 - combo
31 - combo
32 - no combo

Stand close mp -> low mk (5f window)
26 - no combo
27 - combo
28 - combo
29 - combo
30 - combo
31 - combo
32 - no combo
33 - no combo

Conclusion


I was surprised by a few things. 

First, I had no idea that low mk to low hk was a two frame link. It's a staple of my play, and I thought it was much easier. In fact, you must press low hk either 28 or 29 frames exactly after a low mk to link.

Secondly, I did not realize that close stand hp was such a fast move. Its startup speed makes it twice as easy to link as low hk. Afer a low mk, you can press the stand hp 28, 29, 30, or 31 frames afterwards and still link.

Thirdly, I didn't realize that stand mp makes links 1 frame easier than crouching mp or crouching mk. Using stand mp lets you press the second button on frame 27, increasing your window by one.

So all in all, the easiest link for Chun Li is close stand mp into close stand hp. This has a generous five frame window. I've been incorporating this into my play, but there is an important gotcha: while the close standing hp hits crouching opponents, the far standing hp will not. So if your opponent is crouching and you are a bit far away, your combo has the risk of whiffing if far stand hp comes out. In this case, the safest and easiest option is to use standing mp into crouching mk, which still keeps the generous five frame window and hits crouching opponents.

Friday, June 5, 2020

The case against double elimination

The origins of double elimination

Double elimination began as a tournament format in American arcades in the 1990s. The first major "internet tournament" was called B3, and was the precursor to Evo as we know it today. Before B3, there were local arcade tournaments. B3 was the first touranment organized by the nascent fighting game community, by the players, for the players, where people were traveling from across the US and even from foreign countries.

I was part of the B3 planning group, and there were two major constraints that we had to deal with. 

The first was that there was a limited number of arcade machines. There was a large number of people going to show up, and only a handful of machines. We needed to find a format that would accommodate a large number of players, but a limited number of machines. We had negotiated the venue for a day, and the tournament had to finish in one day's play time.

The second constraint was respect for traveling players. We had players coming from all over the US and even abroad. We knew that players had come to play, and we wanted to allow players to play as many games as possible, win or lose.

We discussed a few options:

1) Round Robin
In round robin, every player plays against every other player. Great format for a small number of people. But impractical for a large number of contestants. With 64 players, we'd have 2,016 matches to run. Completely out of the question.

2) Single Elimination
Fast, efficient, and brutal. This is the preferred format of Japanese arcades, although we didn't know it at the time. For a tournament with 64 players, there would be only 63 matches played, a very manageable number. With that said, we felt that it would be deeply unfair for players that had traveled from across the world to potentially play one game and be done.

3) Double elimination.
A reasonable compromise given the constraints. Everyone gets to play at minimum two games. The major disadvantage is that the losers bracket is a long, long morass. All in all, up to 127 matches are played. Another disadvantage is that you can easily get eliminated by a friend that you play with all the time at your local events. Nobody wants to fly across the country only to play someone you play at home.

We ended up going with a hybrid system. We broke up the entrants into two groups of 32, ran qualifying pools, and then put the pool winners into a 32 man double elimination bracket. This ensured that everyone got at least two games in, while cutting down the number of matches to a manageable level. 

Even in the tournament, people found themselves matched up against friends from their region, and so the organizers came up with the idea of "floating" -- adjusting your match and place in the bracket on the fly to prevent some match ups. This was a tremendous amount of work, and the organizing team, led by Tony Cannon, did a heroic job.

Some reading:

B3 was a great success, and after it followed B2, B4, and a string of tournaments that became Evo as we know it today. The pools->double elimination system worked well, players understood it, and it became the standard.

Online vs Offline

Skilled players used to be a small and select group. In order to be good, you had to be a strong, motivated player. You had to have access to core group of strong and motivated players. The "B" tournaments showed us that while there were many people with talent all over the globe, that talent did not translate to tournament success. You had to have talented and a strong group of players that played regular games. And not just regular games, but regular competitive, cutthroat games. 

The rise of online gaming completely changed this dynamic. Online play meant that anyone with motivation could find games at any time. We saw an explosion of success, as single isolated players with no local groups could become tournament powerhouses thanks to regular play and online tournaments. We now see regular tournaments all over the globe -- USA/Canada, Europe, Mexico, Brazil, Latin America all have strong and regular regional online tournaments.

Most of these tournaments, out of historical precedence, have adopted the double elimination format. The double elimination format, which originally was a compromise made in order to accommodate a limited number of physical machines, has become the de facto standard because "that's they way it's always been".

There is a key difference with online tournaments, which is that there is no time constraint on the number of matches. Since each player can play directly with another, the time constraint becomes the number of rounds. This is an important difference, so it bears spelling out:

In a physical arcade with a limited number of machines (1-3), the key determiner of tournament length is the number of matches played. If you have twenty matches to play on one machine, each group of players needs to line up, wait their turn, and play their match. Assuming five minutes per match, those twenty matches will take take 100 minutes, or almost a couple of hours to run!

In an online tournament, those same twenty matches can all be run in parallel. Each person connects directly with their opponent, runs their game, and reports the result. In our example, the twenty matches, that would have taken hours on a physical machine, can all be run in five minutes online.

The difference is colossal. Minutes versus hours. The key constraint that had led to the adoption of double elimination as a tournament standard, has been is completely removed.

Tournament Formats

It's now worth going back to the drawing board, and thinking about what tournament options we have that are available to us for streamed, online tournaments. We have a few guidelines to work with:

* Timeliness The tournament format should be timely. It should run in a predictable amount of time. Streamers often have a time budget, and viewers have a set amount of time. A tournament should neither take an inordinate amount of time to run, nor should it be highly variable.

* Fairness. The tournament format should reward top players. We should expect to see highly skilled players at the top.

* Excitement. The tournament format should culminate in a grand finals. The streamer should be able to build audience excitement over the course of the tournament, following key players, important matches, and build a narrative and story with the audience.
 
* Understandability. The tournament format should be easy to understand for viewers. Viewers join and leave streams at any point in the tournament. They should be able to jump in, and quickly understand the state of the tournament to participate as a viewer.

* Inclusivity. The tournament should be rewarding for new players. They should feel included, welcome, and have fun, regardless of performance.

* Maximizes matches. Last but not least, the format should allow players to play as many matches as possible. Players come to tournaments to test their skill against opponents in a formal setting. As many competitive matches should be played as possible.

The last point is perhaps the most important one. The point of a tournament is not to "weed out" weaker players until one reigns supreme. The point of a tournament is to allow as many people as possible to play competitive games, and to determine the winner!

With these in mind, let's grade double elimination in the online format.

Timeliness: Not great. There are many rounds, and the number of rounds is variable depending on the number of players.
Fairness. Overall pretty fair. Sometimes a strong player will get eliminated by two top players early -- usually if a top player loses their first round, they go and wreack havoc in the losers bracket. But other than that, the results are fairly consistent.
Excitement: The grand finals build up is good. Once the tournament is narrowed to the top 8, it's a good watch.
Understandability: This gets a poor grade. The loses bracket is hard to follow. As a spectator, you're more or less relegated to watching chosen matches from the streamer until the top 8. You constantly have to check the bracket to understand what's going on.
Inclusivity. Another low grade. A full quarter of the players will get eliminated 0-2. That's just not fun. It's not even about losing twice, it's losing twice and not getting to play anymore that's unfun.
Maximizes matches. Very poor. A small number of players get to play many matches, but half the players play only 2 or 3 matches, regardless of tournament size. Not good.


A grade of 2/6. We can surely do better than that! 

Let's consider another format : Swiss into single elim top 8. This is the format that is used in Chess, Magic: the Gathering, and many other events. 

In Swiss, everyone plays a set number of rounds (let's say 8). In each round, each player is matched up against an opponent with the same score. So if you are 0-3 after three rounds, your next opponent will also be 0-3. If you're 2-1, your opponent will also be 2-1. 

After eight rounds of swiss, the top eight players are taken into a single elimination bracket, and a final winner is crowned.

Let's grade this:

TimelinessExcellent. The tournament always takes the same amount of time, regardless of the number of players. This is because there are always a set number of rounds. The tournament organizer can make the tournament longer by increasing the number of rounds. The top 8 always takes the same amount of time as well, and goes by very fast in single elim.
Fairness. Very fair. Everyone gets to play eight full rounds, so even if you get a bad draw early and lose twice in a row, you can climb out of the bottom bracket by winning your next 6 and make it to the top 8.
Excitement: The swiss part is great, because the streamer can pick a feature match each round to showcase. You always have the full roster of players to choose from. The top 8 format is exciting, with strong players, and an undisputed winner.
UnderstandabilityMuch easier to follow mid stream. If someone starts watching mid tournament, all they need to know is what round it is
InclusivityGreat for new players. As a new player progresses in the tournament, they will face easier and easier opponents. No more getting crushed 0-2 and out.
Maximizes matchesExcellent. Everyone gets at least 8 matches. The very top players will get more than that, but only a few more. The top 8 takes three matches to complete, so the two finalists play 11 matches total.

This system beats double elimination in every dimension. It's a clear win. And, it's supported directly in challonge.

"All right, all right", I can hear you say. "That's all great in theory, but how does it work in reality?"

I'm glad you asked!
It's time to put double elimination to rest. All online tournaments should be Swiss.



Tuesday, June 2, 2020

Improved Training Mode

The problem

POF's improved training mode is a great tool for training, but I was always frustrated by a few limitations. One, the interface doesn't detect button releases. This means that when doing a negative edge special move, you can't see when you release the button. 

The second problem is that frame count isn't shown. You don't know how many frames each input was done far.

Virtua fighter has by far the best training mode. On the screen below, the numbers in grey represent the number of frames of no input, while the numbers in yellow represent the number of frames in active input.




I wanted to have a similar interface for Super Turbo.



Let's go over the features in detail. First, if you're standing and idling (meaning no inputs), you'll see a counter in grey showing you how many frames you've been idle



In this image, Ken has been idle for 40 frames as you can see from the grey number "40" at the top left. The counter stops at 999, as you can see for Boxer on the right.

The next feature is button release tracking. 



In this image, you can see that Ken spent 72 frames in idle, followed by pressing and holding the three kick buttons for 356 frames. He then released the heavy kick, holding the remaining two kicks for 85 frames. He then held the light kick button for 74 frames.

Let's see how these two features in combination show a negative edge move



Here, Ken is doing a piano negative edge fireball. You can see left midscreen, the grey 97 shows that he was idly for 97 frames. At this point, he presses all three buttons. First he hits and holds light punch for one frame, then light and medium punch for three frames, and then finally all three punches for 133 frames. He then does the fireball motion while holding all three punches. The fireball motion finishes with the stick in the towards position with all three punches held. Then one frame later, he release heavy punch, triggering the fireball special move. He then releases medium punch one frame later, and finally light punch seven frames later.

Another feature is frameskip tracking. Super Turbo skips frames. Even if the display shows only one frame, the engine might run two frames.Thanks to Born2SPD, I was able to account for skipped frames ensuring a correct frame count.

This is all great, but how do I actually run this?

I've put the script up on github here:

https://github.com/zass30/SuperTurboExtendedInputDisplay

1) Download sf2-hitboxes_and_VF_input.lua from this link.
2) Download and install pof or Born2SPD's training mode package.
3) Modify the batch file (the file you double click on) to say -lua "sf2-hitboxes_and_VF_input.lua"

Happy training, VF style!

Sunday, July 19, 2009

Evo 2009

I got 9th place at evo 2009 this year, for HD Remix. It's kind of funny, because I also got 9th last year, where I missed top 8 by a sliver of health.



I lost to John Choi, who crushed me in a ryu vs claw and then ryu vs chun li match. It really drove home to me that I didn't have a good answer to ryu, and I need to brush up on some character that will do better against shotos. I then lost a really good set to Graham Wolfe. We played Chun vs Boxer (he won), Chun vs Boxer (I won), then Chun vs Claw (he won). Thanks for the great games guys!

I mostly played Chun Li throughout the tournament, picking Dictator twice as well. I did a lot better than I expected, thinking that there would be a lot of talented new blood from xbox live. I'm really happy to have gotten 9th, of course, but I have to admit that I'm a little bit disappointed to have missed top 8 by such a close set two years in a row. With that said, I'm really happy with how the northwest group as a team did. Myself, Jason Cole, and BBH all tied for 9th, and Axel Kelly tied for 13th. I think that's a great team showing!

There was also a really fun team regional 3v3 tournament. The tournament was originally scheduled to be 5v5, but we had to pare it down to 3v3. Our 5 man team was going to be: RaybladeX, BBH, Jason Cole, Axel Kelly, and myself. Rayblade was judging so it made it hard for him to play, so we were left with four. Since all four of us wanted to play, the tournament organizer (EA Megaman) let us have a four man team, and we'd just pick three people per set. We ended up taking third place, I think doing a good job of putting the NW region on the map :)

I'm looking forward to see videos on youtube of both the 1v1 and the 3v3 tournament for commentary!

Thursday, March 19, 2009

ST: HDR patch

Looks like Capcom finally released a patch for HD Remix. Let's go over the good, the bad, and the ugly.

The good:
* Music seems fixed
* Lifebar glitch fixed
* I haven't had a disconnect yet (other than ragequits)
* Rankings are fixed, and matchmaking seems correlated to rankings. Within my first 7 games I was playing against strong players that were giving me a challenge. It was exciting and fun. That's good!

The bad:
* Players can see your win/loss record in the lobby now and just quit if they don't like it. That's idiotic. It shouldn't display at all
* Rankings are STILL by player, instead of by player/character combination. That's retarded. My Cammy is terrible. So is my Dhalsim. What does my Dhalsim score have anything to do with the score of characters I do play competitively? Rank player/character combinations.

The ugly:
* Akuma is still there. Just delete him from the select screen. He's completely broken and I'm willing to stand by that statement. He should be banned from tournaments.

Wednesday, December 31, 2008

Rapid Improvement: Part 2

In part 2 of this series, I want to focus on the next thing that causes beginners to lose games: Basic execution of special moves. There are two components to this.

1) reliable: Can you consistently do the move in training mode?
2) atomic: Do you think of it as one single action instead of a sequence of steps?

Reliable
I'm sure everyone can identify with the first part. "My opponent is jumping in, but I don't want to risk doing a dragon punch because I'm afraid I'll screw it up". You must have a strong command of the mechanics of doing the moves that you want to do. You simply cannot compete otherwise. I've seen beginners have a difficult time with what seem to be straightforward moves like Guile's flash kick:

* Insufficient charge
* Press button too early and get a hopping knee
* Press button too late and get a jumping kick
* Move joystick too slowly to up position
* Move joystick to forward position instead of up
etc..

Regardless of why they fail at execution, the impact of the failure is clear. Assume that you deal 15 damage on successful execution of a flash kick (to simplify I won't even go into the positional advantage of setting up a crossup afterwards). But if you fail, you eat a jump roundhouse, low roundhouse combo for 20 damage.

If you fail your flash kick half the time, then on average you are losing 5 damage per flashkick. Clearly blocking is better than taking 5 damage. The conclusion from this is: It's not worth trying for special moves unless you know you can do them.

Atomic
Atomic is the term I use when a move or sequence of moves is so ingrained that you cease to think of it as a series of joystick movements and button presses, and instead think of it as one "thing" to do.

It takes a lot of time and effort to think about what your next move has to be in a sequence. Here's an example from my personal play in another game, Virtua Fighter. In that game, the character Wolf has a combo whose stick motions are back, torward, punch + kick, torward, kick, up torward, punch + kick, towards, kick.

At first when I was learning this, I would get about one third of the way through the sequence on muscle memory, and then I'd have to think "what's next?", and remember the next series of button presses. By the time by brain finished remembering what was next in the sequence, I'd have very little time to actually execute.

If you can precache the entire sequence of desired moves into muscle memory, then you don't need to waste time thinking about how to do them during combat. This frees up a ton of time and attention on other things.

Level 2: The one hundred drill
In this drill, you go into training mode and do the move in question unil you have one hundred successes on each side, each day, for one week. So for example

flash kick, right hand side: 20 failures, 100 successes
flash kick, left hand side: 50 failures, 100 successes

Do this every day for one week, rain or shine, even if you are sick or tired. This will drill into into your muscle memory. You may be wondering why moves like flash kick, which are symmetrical, need to be drilled on both sides? The reason is that in play, you will be starting from a different blocking position on each side. So in play, the moves are different because they start from defensive crouch (which is different on each side).

Write down how many failures and how many successes you had each day, on what side. Post it on a public blog to track your improvement.

In the second week, do the same, but first to fifty successes.

After the second week drill is completed, do runs to twenty once a week to keep yourself in shape.