-
Notifications
You must be signed in to change notification settings - Fork 49
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Introduce pack.ini/group.ini #266
Comments
As someone who has been pushing for this for quite some time, I absolutely support this going forward. Here is the pack.ini that I have created for the release of The Starter Pack of Stamina 2: Due to this not being standarized at that time (or still) I just went with whatever was suggested by community and that one article online. But as you can see there are two additional things that are in the file I have provided: Other things that I can suggest with going from the stuff from above. As for naming convention |
This would also address: #171 |
Opinion: https://meow.garden/eliminating-the-9ms-bias/ - I like SyncBias name instead of SyncOffsetMS. It confuses with OFFSET. |
I'd love to see this as an opportunity to also include:
Other stuff that comes to my mind -- not really for people to tinker with manually, but maybe for tools?
|
I think that it would be a good idea to be able to specify all this info (or at least a subset of it) not just for groups but for individual songs as well. The reason is that I think it's not uncommon for people to make custom groups with a mix of various songs and it would be good if in that case at least the sync offset could be corrected even if the songs come from different packs. That could be achieved by looking for the And one special case where having all this info available at song level is particularly useful is putting songs in a USB profile. You can't have separate groups there so it's really important that each song can have its own set of metadata. On top of making sure that the sync is correct, that would potentially allow the engine to separate the songs into virtual groups based on the metadata. |
Background
Over the years many many packs have been released. They're often related to some sort of series such as
Mute Sims 1-X2
,Sudziosis 1-5.5
,Valex 1-10
, etc. Since many people keep all packs around since disk space and loading times have been less of an issue over the years, peoples' song wheels have grown quite a bit. There have been some ways to make scrolling not take as long such as using theIIDX style
song wheel so that when opening a pack, you only see the songs in the pack until you "exit" the pack.Packs themselves are missing a lot of other functionality that song items get, such as display names, transliterated titles, etc. A lot of this functionality can be added and we recommend the following:
Proposal
Introduce support for a file called
pack.ini
(orgroup.ini
since that is the technical internal ITGmania term). For starters we can have the following structure, with all keys optional falling back to current behavior.The
[Group]
header can be renamed to something else, but seemed fine.DisplayTitle
- will be what is displayed to the user and supersedes the actual folder name on disk. This will allow us to add unicode characters to pack names without breaking loading functionality due to OS issues (e.g. Windows handles loading files with unicode poorly)SortTitle
- This will be used for sorting purposes on the song wheel. This will allow users to control the ordering of song packs in the wheel. Many packs series have more than 10 releases so the sorting gets affected (i.e. 1, 11, 12, 2, 3, 4, 5). This will allow the display name to be different than how it's sorted.TranslitTitle
- Just a way to allow transliteration for packs, similar to songs.Series
- The name of the pack series. This will allow us to add subfolders to the song wheel (an additional option similar to theIIDX
style). The players song wheel will then be Series -> Pack -> Songs. Packs not part of a series listed can stand on their own (Pack -> Folder), i.e. the current default. The UI can display it accordingly.SyncOffsetMs
- Defines what offset the pack is based off of. This should also support two specific enums,NULL
andITG
, which should translate to0
and9
respectively. This can be used to implicitly normalize the sync across all packs on a setup and help remove the ITG bias overtime. We can introduce a preference to dictate the default sync of a setup.Implementation Details
There are a quite a few technicalities to consider here:
SONGMAN
and other classes has various functions that return group info. A lot of them are likeGetGroupName
,GetGroupForSong
,LoadFromSongGroup
, etc. We need to consider what should be the behavior of this change.Current behavior returns the path on disk. My proposal is to introduce a new class exposed to lua called
Group
which encapsulates all this information and then introduce getters for the fields/class itself wherever its necessary. That way current behavior doesn't change, and we have access to the new fields.We need to add engine side songwheel support for adding series/subfolders to the wheel.
Discussion
Since people might have a good number of opinions, we can use this issue for any further discussion and also to track the progress.
The text was updated successfully, but these errors were encountered: