The best kittens, technology, and video games blog in the world.

Showing posts with label stepmania. Show all posts
Showing posts with label stepmania. Show all posts

Friday, July 19, 2019

Some Thoughts on Stepmania

The Dancing XiaoChou 3 by qchen from flickr (CC-NC-ND)

Back in 2009 I even wrote a rant about Stepmania, and here's another one.

In my younger days I did a lot of Dance Dance Revolution, and every now and then I come back to it.

I'd like to play with some modern songs. Supposedly official games exist, but they have like 50 songs per game, plus a few "$5 for 3 songs" DLCs, and mostly only work on some weird-ass consoles.

Basically the only option for it is using Stepmania, and downloading some user-made songpacks.

So what's wrong with all this

The first problem is that music is totally free online on youtube and such, but Big Copyright would never allow a healthy ecosystem of dance games, because they just love the whale exploitation model of "$5 for 3 songs", and the market is too small for someone to force them to be reasonable.

Stepmania tries to avoid any direct entanglements with all those copyright issues, and unfortunately that means it avoids actually trying to solve the problems.

User-made song packs have mixed quality

So I got a bunch of random songpacks, basically keyword matching artists I might like.

The songpacks are basically whatever the author decided to throw there, so I'm generally only interested in very small portion of each, but let's say I keep them all, as at this stage I don't know if those songs are any good or not.

Most of user-made content is decent enough, but it's far too common that there's bullshit songs with ratings like 12-20, which are presumably meant for the keyboard, or maybe arcade machines with safety rail, since it would be unsafe to even try on a soft dance mat, regardless of one's skill level.

There's plenty of songs which are poorly synced. There's plenty of songs which have very questionable ratings, and are actually a lot harder than other songs at same ratings.

This wouldn't be a huge deal if there was a way to filter that out easily, but there isn't.

Stepmania UI is atrocious, especially when you have a lot of songs

All right let's say I have a few thousand songs now. Stepmania will take forever to actually start, like literally over 15 minutes. It seems latest version and SSD finally made it tolerable, but seriously, just checking that a few thousand tiny files didn't change shouldn't take this kind of crazy time.

The next problem is how to actually choose those songs. Stepmania decided to copy dance mat only UI from arcade machines, without any keyboard backup. So instead of taking 1 second to type song title or artist name, it takes literal minutes to scroll through thousands of songs to get there, even at highest speed.

The UI has other issues - like it seems that I end up triggering song options about 1 in 10 times when trying to just start a song, and it registers it as Start button being pressed twice for whichever reason.

There's a lot of weird combos to control the UI, but other than "difficulty up", "difficulty down", and "change sort order" I have no idea what they are, and there's nothing intuitive about it. There should just be goddamn menus and keyboard controls for those rarely used functionality.

Once song starts playing it's pretty much fine.

Ideas for solutions

So it seems I have the same complaints today I had a decade ago.

Anyway, let's talk possible solutions.

These days it's just easier to write cross-platform games in something civilized, with Electron or whatever. Stepmania isn't really a terribly complicated program, so if anyone felt like it, they'd probably have something kinda working in a few days, and it would probably have better performance and usability even at such early point.

Much more interesting is automated step files filtering and analysis. Step files are literally asking for a neural network analysis to flag broken ones, figure out correct difficulty, and so on. Prototypes to just generate step files outright exist, and filtering/analysis should be a lot easier. It just needs to be takes out of research paper and given to users.

A far more interesting idea is just taking songs from youtube or whenever, and doing everything automatically from that point, but that's quite questionable. Stepmania songs are generally ~100s remixes of ~200s songs, so that would already be a major difference. The whole step file process might be too computationally expensive.

How would it work in practice

I feel first step would be writing some parsers to take step files in variety of kinda documented custom formats and export them as some json. It's probably going to be quite tedious, but nothing difficult.

Then figuring out how to interact with dance mats. Most of them are just USB HID devices, so it shouldn't be too hard. In principle Electron supports WebUSB, so dance mat support should be quite straightforward, at least when everything goes right.

With these two, getting simple Stepmania-like program with Electron shouldn't be hard, and that could be a platform for all those crazy ideas.

I'm not hating here

Stepmania is still one of the most successful Open Source games ever. I just think something much better is possible.

EDIT - USB APIs in browser

Well, I tried to use WebUSB API and Gamepad API in Chrome, both supposedly supported, and they don't see my dance mat on Windows or on OSX.

It's possible I'd have more luck with Electron.

EDIT - Stepmania keyboard shortcuts

And it turns out Stepmania actually added some keyboard navigation recently. So if I have songs sorted by artist I can press Control-M to go to M etc. That's fine to reach Katy Perry, maybe less so for Avril Lavigne. Still, even that little change cuts scrolling time by more than half.

Monday, June 29, 2009

Things I hate about Stepmania

Who doesn't love cat paws? by Shamey Jo from flickr (CC-NC-ND)It's been such a long time since my last flaming rant. In this episode of taw's flaming flames I focus on Stepmania. And I don't intend to differentiate between Stepmania the software, DDR as such, songs, and everything else - all of it is Fair Game.

First, I hate all the delays. The only part of Stepmania I care about is the one playing the songs and checking my steps, everything else is just an extra that should try its best not to get in the way. Stepmania spectacularly fails at it - there are delay screens and delay animations everywhere, some possible to turn off, most not really. I do not need the "CLEARED" screen, I especially do not need the score spin, and then 5 second delay back to the song selection wheel. Just give me the damn score, and get me back to the selection wheel immediately when I press START! PC is not an arcade machine!

Second, slowness. I mean, the non-deliberate delays. Now Stepmania is fast enough with 50 songs like arcade machines, but real installations will have over 9000 songs - what means a few minutes to start the damn thing. What is it doing during the startup, checking for rickrolls?

A minor related annoyance is the menu system. Configuration options are divided into way too many submenus that don't mean anything. You think they do? Now quickly tell me where are the options to speed up the wheel, and turn off all the delays that can be turned off... Yeah, I fail to see the logic behind it too. And while it makes sense to make the dance mat the primary controller, it would be nice if it was possible to use keyboard sometimes too. For the sake of example, let's say I'm looking for a Zelda song I really like but I don't remember the title. Right now I have to sort by title, go to Z(elda), L(egend of Zelda), T(the Legend of Zelda) and probably ten other places! How difficult would it be to add an option of search by keyboard for those times when I'm looking for something in particular? Remember, there are over 9000 songs, it's not an arcade machine!

Oh, and there entire difficulty levels system - I have so many complaints about it! For one, what does it matter to me if a song is an 8-feeter on standard, or 8-feeter on expert? It's an 8-feeter either way, but there's no way to browse all 8-feeters together. (for every possible value of 8 of course)

And I wouldn't really mind if the feet ratings were replaced with something else - foot ratings are sort of reasonably accurate for official releases, but for fan-made ones they can be horribly wrong. I wonder if we could take this 5-difficulty diagram or something like that, measure what player is good at, and convert that to player-specific difficulty ratings... That would be cool, wouldn't it?

Now something about songs - I really hate songs that do stupid tricks with arrows display. The root of the problem is that arrows move along with the beat timer, not along with wall clock time. This causes so many problems like:

  • Low bpm songs have extremely densely packed slowly moving arrows, and are hard to read
  • High bpm songs have very quickly moving arrows that don't last on the screen very long and provide very little reaction time
  • Songs that change bpm a lot, and you don't know when you have to hit the arrows
  • Songs that freeze beat timer and unfreeze it by surprise - unless you know when the unfreeze happens you'll miss the arrows.
In all cases you basically need to learn the song's arrows instead of looking at them on screen. These tricks could be fun if used occasionally, but they're overused to the point of being extremely annoying.

But most of all let me dance instead of waiting and I'll be happy enough.

Monday, April 02, 2007

Endless dancing with Stepmania .crs files

Disco Cat ! by Foxicat from flickr (CC-NC-ND)StepMania instead of just letting me dance wastes my time after each song on score screens, waiting screens, and selecting songs from the menu. Endless mode picks songs at random without any waiting, what would be cool if default courses provided by Stepmania didn't all suck:

  • Random "Standard" songs - many boring 4s, and 5s.
  • Random "Heavy" songs - "Max 300" and other 10s way too often.
What I want is a random selection of songs in specific range of difficulties. It turns out it's possible to do just that with very little hacking. Just enter Courses subdirectory in Stepmania directory, and create EndlessSixToEight.crs (or whatever.crs) file with the following content:
#COURSE:Endless 6-8;
#REPEAT:YES;
#SONG:*:6..8;
#SONG:*:6..8;
#SONG:*:6..8;
#SONG:*:6..8;
#SONG:*:6..8;
#SONG:*:6..8;
#SONG:*:6..8;
#SONG:*:6..8;
#SONG:*:6..8;
#SONG:*:6..8;
#SONG:*:6..8;
#SONG:*:6..8;
#SONG:*:6..8;
#SONG:*:6..8;
#SONG:*:6..8;
#SONG:*:6..8;
#SONG:*:6..8;
#SONG:*:6..8;
#SONG:*:6..8;
#SONG:*:6..8;
#SONG:*:6..8;
#SONG:*:6..8;
#SONG:*:6..8;
#SONG:*:6..8;
#SONG:*:6..8;
#SONG:*:6..8;
#SONG:*:6..8;
#SONG:*:6..8;
#SONG:*:6..8;
#SONG:*:6..8;
#SONG:*:6..8;
#SONG:*:6..8;
#SONG:*:6..8;
#SONG:*:6..8;
#SONG:*:6..8;
#SONG:*:6..8;
#SONG:*:6..8;
#SONG:*:6..8;
#SONG:*:6..8;
#SONG:*:6..8;
#SONG:*:6..8;
#SONG:*:6..8;
#SONG:*:6..8;
#SONG:*:6..8;
#SONG:*:6..8;
#SONG:*:6..8;
#SONG:*:6..8;
#SONG:*:6..8;
#SONG:*:6..8;
#SONG:*:6..8;
The first line specifies the title, the second line specifies that it's for endless mode, further lines are songs. 6..8 means random song with numeric difficulty 6 to 8. For selecting just a single difficulty, use something like #SONG:*:8;.

It's important to copy&paste the same line all over. If you write #SONG:*:6..8; just once, you'll be dancing the same random song in loop. 50 means about 90 minutes at typical song lengths (~105s), what should be enough. If it's not, just copy&paste another 50 lines.

Stepmania wiki contains more information about CRS format.