StepMania 5.1.0 Alpha; release notes compiled and Markdown formatted by @kyzentun: This alpha release is primarily for noteskin authors and theme authors who are interested in creating noteskins or using the new features. If you are not a noteskin author or theme author, you probably do not want to use this 5.1.0 Alpha release. # New systems: The new systems in this alpha release are not in their final form. They will be extended and modified based on feedback from noteskin and theme authors who create new content. Keeping the systems simple and allowing new people to learn them gradually is one of the goals. ## RollingNumbers: This is the simplest one, so its first. The changes to RollingNumbers were more of an attempt to improve it than a serious rewrite like the other new systems. Changes to RollingNumbers are fully documented in Docs/Themerdocs/5.1_incompatibilities/RollingNumbers.md. ### Feature Overview: * More lua control: Various things that could only be set through metrics can now be set by calling lua functions. * Attributes: The attribute system from BitmapText is used, giving more freedom than the multiply color metric. * Configurable leading glyph: Any glyph can be used as the leading character for the number. This is for people that don't want zeroes in front. ## NewSkins: A new noteskin system has been created. The goals of the new system are to provide a solid base for future development, clear out cruft, remove metrics from noteskins, and provide more advanced features. The new noteskin system is fully documented in NewSkins/default, which is an example noteskin explaining all the features and demonstrating some of them. ### Feature Overview: * Pure lua: The metrics system is outdated and tends to obstruct advanced authors trying to handle varied cases. The NewSkin system does not use metrics at all. Everything is done in lua. * Not tied to game types: A NewSkin can be used in any game type, as long as it supports the buttons used by the current chart. * Adjustable column width: The NewSkin controls how wide each column is and the padding on the sides of each column. The hardcoded values from the Style are ignored, and will be removed in a future version. * Quantizable holds: Hold bodies can be quantized the same way taps are, if the noteskin author uses the feature. * Superior quantization: Quantizations are not forced to fit the traditional categories of 4th, 8th, 12th, 16th, 24th, 32nd, 48th, 64th. Instead, notes are quantized using a system based on how many times a quantization occurs each beat. The simfile format and internal note data structures are still limited, but the noteskin system is not. * Receptor warnings: The receptors are told when the next arrow is coming, even if it's off the bottom of the screen, so the receptor can warn of upcoming notes by changing color or something. * Superior multiplayer support: The NewSkin system does not force a hard limit of 2 players, and noteskin authors are encouraged to support as many players as feasible. Edit mode and gameplay will need upgrades before more than 2 players is really possible, but the NewSkin system is prepared. ## NewField: NewField is a completely new notefield system. It gives the theme more control over every aspect, and is self contained. Initial documentation is in Docs/Themerdocs/5.1_incompatibilities/NewField.md. ### Feature Overview: * Columns are actors: Each column is its own actor, with extra features. * More info for Notefield board: The Notefield board file in Graphics should be a lua file now. It is passed more info to make using it for a screen filter easier. Using the notefield board for a screen filter makes positioning logic much simpler because the themer doesn't have to worry about the current style or how many players there are. * Better multiplayer support: The NewField does not pull anything from a global player state. Instead, all behavior is set by whatever creates the NewField, or by the theme. It will not be an obstacle to having more than 2 players. Many other parts of the engine still stand in the way of multiplayer, but the NewField is prepared. ## ModValue: The new notefield system also has a completely new modifier system. This is extensible, predictable, and documented. Figuring out exactly what a modifier does no longer requires digging through ArrowEffects.cpp. Detailed control over exactly what the arrows do is possible. Full docs in Docs/Themerdocs/5.1_incompatibilities/NewField_mod_system.md. ### Feature Overview: * Field mods separate from Column mods: The field and the columns have different mods, for doing different things. * Per-column mods: Each column can have its own mods. * Mods for more things: FOV, vanish point, field transform, column transform, note transform, note/explosion/receptor glow/alpha, time offset, quantization, reverse offset, reverse, center. * Separate glow and alpha: Glow and alpha are controlled by different mods because the white flash that hidden/sudden force in the old system bothers some people. * No hidden quirk interactions: In the old mod system, C600 + Boost plays differently from M600 + Boost. That's just weird and wrong, so the new system does not do that. * Splines are mods: The spline mod system added last Christmas was not well integrated with the old mod system because the old mod system didn't have a place for it. So there were weird interactions between the two that made splines awkward to use. Splines are part of the design of the new system, so they are much easier to use now. * Mods are equations: At its simplest, a mod is an equation that takes one aspect of a note as input (say, y offset) and sets an attribute based on that aspect (say, x position). Possible equations range from simple numbers to wave functions and splines. * Detailed control: Building on the idea of using equations for mods, there are many minor variables that can be set when creating a mod to customize exactly how it affects the notes. * Built in timed mods: The columns and field have managers built in that can be told when a mod should start and end. The manager efficiently handles turning mods on and off at the right times. * Rate adjusted mods: Mods are tied to the current time of the field, so when the music rate changes, mods play out at exactly the same beat. This relieves the burden of writing lua code to find the current music rate and try to adjust tween times, or forcing people to only play on 1x rate. ### Options screen: Because the modifier system does not use PlayerOptions, large parts of the options screen do nothing. Mods that change the steps in a chart like Shuffle work the same, but mods that change the appearance of notes like Dizzy do nothing. This is because the system was not designed with OptionRow in mind (I hate OptionRow, it can't do anything I want to do, I don't use it). Instead, the NewField relies on the theme to set mods through lua function calls when ScreenGameplay starts. To assist themers, _fallback provides functions for setting speed, tilt (distant), mini, and reverse by reading them from PlayerOptions. There are also functions for setting hidden and sudden mods (with control over exactly where the line is, and only affecting note alpha. So no white flash), but they do not read from PlayerOptions and must be called directly. A future version will probably use lua option rows and a global lua variable to store the mod choices from the options screen before applying them on gameplay. # Todo: * Adapt the new mod system so that it can be used on any actor, not just on the notefield and notes. * Create lua option rows to assist themers putting newfield mods on the options screen. * Address the problem that prevents using the spin effect on mine notes. The notes need some efficient way for the effect clock to be tied to the time passing in the notefield, instead of being tied to PLAYER_1 or PLAYER_2. * Add stuff that edit mode needs, like drawing beat bars and timing segment info. * Sleep. # Things on the way out: ## Old NoteField related stuff: NoteField, NoteDisplay, ArrowEffects, NoteSkinManager, and (most of) PlayerOptions will probably be removed before Christmas. ## Styles It would be nice if both players were not forced to the same style. Everybody tries to skip past style select quickly, so it seems obstructive. If player's aren't forced to the same style, and the noteskin controls column widths, what point does the style have? Changing between styles on music select is already possible in more advanced themes. This will cement that, and allow more freedom when picking what to play next.