0auBSQ / OpenTaiko

An improved and personalized version of TJAPlayer3-Develop-Rewrite, .tja chart player axed on entertainment and creativity.
MIT License
348 stars 88 forks source link

[Dan-i Dojo] Implement the new Dan chart format in extention of the old one, being a .json-like file #306

Open 0auBSQ opened 1 year ago

0auBSQ commented 1 year ago

Extention can be like .otd (Open Taiko Dan)

File format being like (example for a 4-song Dan) :

{
    "title": "Dan chart title",
    "subtitle": "Dan chart subtitle",
    "danPlate": "Dan plate title (generally 2 kanjis)",
    "danPlateSub": "Dan plate subtitle (generally english translation)",
    "level": "Global Dan star rating (should be hardest chart difficulty if oni)",
    "scoremode": "Scoring method if non-gen4",
    "songs": [
        "1st song uniqueID",
        "2nd song uniqueID",
        "3rd song uniqueID",
        "4th song uniqueID",
    ],
    "exams": [
        {
            "scope": "Global",
            "type": "g",
            "range": "m",
            "values": [98, 100],
        },
        {
            "scope": "Global",
            "type": "jb",
            "range": "l",
            "values": [12, 7],
        },
        {
            "scope": "Individual",
            "type": "r",
            "range": ["m", "l", "m", "m"],
            "values": [[10, 24], [2, 1], [120, 180], [16, 29]],
        },
    ],
}
TheFearlessDeath500 commented 1 month ago

Very cool idea, though I would suggest that the charts shouldn't be exclusively via uniqueIDs. Song paths could also be used as well, but I get why this would be easier in some way. In a SDVX simulator named unnamed-sdvx-clone (abbreviated as USC), there is a similar JSON file used called .chal. I've used it a few times before and it seems to be similar to your idea, but with a few tweaks. Here are some examples on how they could be used. (this is mostly for SDVX, but you can apply the same principle to OpenTaiko)

The chart entry is either labeled with charts ending in their file format-

Showing charts with filepath for easier access (similar to m3u8 or m3u playlist files)

Mostly used for locating a specific song in a specific directory located in the "Songs" folder by default.

"charts":[
    "SDVX III GRAVITY WARS\\Destroy\\grv.ksh"
]

Showing charts with their designated hash, preferably through an MD5 checksum or similar

(this is already done with your uniqueID implementation so i don't think this is important)

"charts":[
    "3c5fe60481790f658412909b39f464f2412622a5"
]

Showing charts with their name and level attached

Felt like this was missing, as there is no clear indication of what the difficulties should be. If a uniqueID is supposed to be the entire chart, how are we supposed to use it for a specific difficulty? If there is a difficulty option that you can set that is not global in your JSON preposition, please let me know.

"charts":[
    {"name":"black lotus","level":16}, // Case insensitive
    {"name":"び","level":18} // Can include utf-8 here
]

And that would be how USC handles challenge charts for the most part in their "Challenges/Skill Analyzer" mode. This is how I would suggest it, but the rest is up to you- it's your idea that you created after all. If there's something else that I can help with, please let me know.