noahm / DDRCardDraw

Card draw / randomizer for use in music game tournaments including DDR, SMX, ITG, and PIU
https://ddr.tools
BSD 2-Clause "Simplified" License
32 stars 32 forks source link

Custom cards per game #321

Open albshin opened 2 months ago

albshin commented 2 months ago

Allow customizable cards per game. For example, maimai charts have Standard and Deluxe version of songs and it is important to differentiate between the versions. We need some visual indicator on the card itself.

noahm commented 2 months ago

Can you show me an example (or just explain) how standard and deluxe charts are displayed in game? Do they have different jacket art? Different colors in the UI? etc

Is this something that's already handled in performai card draw? If so, how does it work there?

albshin commented 2 months ago

It's an icon that shown above the album art. Deluxe is the white background with rainbow text and standard is the light blue background with white text.

Probably not the best example since the levels are different but there are Standard and Deluxe charts with the same level and difficulty.

Deluxe

Screenshot 2024-04-07 at 2 41 25 AM

Standard

Screenshot 2024-04-07 at 2 41 16 AM

I currently handle this on PerformaiCardDraw by replacing the BPM text with text that says either "STD" or "DX".

noahm commented 2 months ago

Ah, I see. So some charts (but not all) will have an alternate "mirror version" of themselves available that's technically a completely different chart, and to identify it from the other options you need to see both the difficulty category (e.g. master) and whether it's the standard or deluxe version. And it looks like you represent this in the data file as flags on the charts for being one or the other version.

I've understood for a while that some games (dancerush) just don't care to display bpm at all and I would like to have an easy way to display other info there depending on what makes sense for each game. The existing app already has special logic to display an icon for DDR charts when the shock flag is present, and I've wanted to make that something specific to the games own configuration rather than baked into the app's UI.

I'll think about this a bit more, but I'm already on a line of thinking where a game's data file can also include some extra JavaScript that can control what the appearance of cards looks like for that game. I'm not exactly sure how this will work yet, but I think this will be what is needed to allow the level of flexibility I'd like to see.

albshin commented 2 months ago

Just a thought but perhaps an easy way to do this would be allowing each game to implement their own Song Card which would enable custom styling per-game and also per-game logic. This way things like the shock arrow and isDegrs code can be moved to a DDR Song Card instead of being a part of the eligible-charts logic.