This commit is contained in:
Jonathan Payne
2014-10-06 23:24:43 -07:00
13 changed files with 550 additions and 87 deletions
+57 -25
View File
@@ -5,11 +5,20 @@ from StepMania 4 alpha 5 to sm-ssc v1.2.5, see Changelog_sm-ssc.txt.
________________________________________________________________________________
================================================================================
StepMania current development
StepMania 5.0 beta 4 | 20140930
--------------------------------------------------------------------------------
To reduce the number of entries in this file, entries are dated to the Saturday after they occurred.
2014/09/27
----------
* [Preferences] DebounceCoinInput time pref added for machines that need a
different debounce time for coin input.
* [Preferences] DefaultFailtype preference reinstated to resolve default fail
type problems.
* [TimingData] TimingData::GetReturnsNumbers metric added to make TimingData
functions return tables of numbers instead of strings.
2014/09/20
----------
* [ScreenOptionsCustomizeProfile] New screen added for setting profile stats.
@@ -17,11 +26,13 @@ To reduce the number of entries in this file, entries are dated to the Saturday
2014/09/13
----------
* [Endless] Songs are repicked on each repeat of the course.
* [GameState] GetCurrentStage logic fixed to correctly return Stage_Final in all cases where it should.
* [GameState] GetCurrentStage logic fixed to correctly return Stage_Final in
all cases where it should.
* [JudgmentMessage] Tracks parameter replaced with Notes and Holds parameters.
* [NumPadEntry] New customizable lua class for custom screens.
* [ScreenHeartEntry] New screen added to default.
* [TapNote] Class exposed to lua through JudgmentMessage with all data on the TapNote.
* [TapNote] Class exposed to lua through JudgmentMessage with all data on the
TapNote.
2014/09/06
----------
@@ -32,10 +43,13 @@ To reduce the number of entries in this file, entries are dated to the Saturday
* [GameState] InsertCoin and InsertCredit lua functions added.
* [PrefsManager] FastNoteRendering preference added.
* [RageTexture] Reload lua function added.
* [RageTexture?] "__screen__" added as special screenshot texture name. Causes a skip.
* [RageTexture?] "__screen__" added as special screenshot texture name.
Causes a skip.
* [Screen] SetNextScreenName lua function added.
* [ScreenCredits] New ScreenCredits. Please update your theme if you applied theme changes to this screen.
* [ScreenMapControllers] Massively changed to make it not suck. New elements, new metrics, new actions.
* [ScreenCredits] New ScreenCredits. Please update your theme if you applied
theme changes to this screen.
* [ScreenMapControllers] Massively changed to make it not suck. New elements,
new metrics, new actions.
* [WheelItemBase] IsLoaded lua function added.
2014/08/30
@@ -47,9 +61,12 @@ To reduce the number of entries in this file, entries are dated to the Saturday
----------
* [ActorFrame] Internal diffuse and glow now apply to BitmapText children.
* [GameState] SetCurrentPlayMode and SetCurrentStyle lua functions added.
* [PrefsManager] BackgroundFitMode preference added to settle all problems with how backgrounds are stretched or fit.
* [ScreenSetBGFit] New screen for presenting the BackgroundFitMode preference. See _fallback/BGAnimations/ScreenSetBGFitMode overlay.lua for documentation.
* [ThemeManager] HasMetric/String now return false when the group name or metric name is an empty string.
* [PrefsManager] BackgroundFitMode preference added to settle all problems
with how backgrounds are stretched or fit.
* [ScreenSetBGFit] New screen for presenting the BackgroundFitMode preference.
See _fallback/BGAnimations/ScreenSetBGFitMode overlay.lua for documentation.
* [ThemeManager] HasMetric/String now return false when the group name or
metric name is an empty string.
2014/08/09
----------
@@ -68,25 +85,31 @@ To reduce the number of entries in this file, entries are dated to the Saturday
2014/07/26
----------
* [ActorScroller] Accidental "permanent loop" bug fixed.
* [Common metrics] AfterThemeChangeScreen, AfterGameChangeScreen, and AfterGameAndThemeChangeScreen optional metrics added to Common section.
* [Common metrics] AfterThemeChangeScreen, AfterGameChangeScreen, and
AfterGameAndThemeChangeScreen optional metrics added to Common section.
* [GameManager] SetGame lua function added.
* [Globals] OldStyleStringToDifficulty lua function added.
* [PrefsManager] SavePreferences lua function added.
ThreeKeyNavigation preference added.
ThreeKeyNavigation preference added.
* [SoundManager] IsTimingDelayed lua function added.
* [ThemeManager] SetTheme lua function added.
* [ScreenHowToPlay] CharacterName metric works again.
2014/07/18
----------
* [BitmapText] LoadFont is now obsolete. Set the Font attribute of the BitmapText instead.
* [ErrorReporting] New system that reports theme errors through dialogs and an on screen display. (Sorry guys, your themes are all full of errors, and you should fix them)
* [LogDisplay] New actor class used by ErrorReporting, possibly useful more widely. See _fallback/Scripts/04 LogDisplay.lua for docs.
* [BitmapText] LoadFont is now obsolete. Set the Font attribute of the
BitmapText instead.
* [ErrorReporting] New system that reports theme errors through dialogs and
an on screen display. (Sorry guys, your themes are all full of errors, and
you should fix them)
* [LogDisplay] New actor class used by ErrorReporting, possibly useful more
widely. See _fallback/Scripts/04 LogDisplay.lua for docs.
2014/07/05
----------
* [Actor] GetDestX/Y/Z lua functions added.
* [Profile] Lua functions for calculating calories based on heart rate added. See ThemerDocs/calories.txt
* [Profile] Lua functions for calculating calories based on heart rate added.
See ThemerDocs/calories.txt
2014/06/28
----------
@@ -102,27 +125,35 @@ To reduce the number of entries in this file, entries are dated to the Saturday
2014/06/07
----------
* [ScreenSelectMusic] SelectMenuInput message is now always sent when Select is pressed.
* [ScreenSelectMusic] SelectMenuInput message is now always sent when Select
is pressed.
2014/05/17
----------
* [GameState] StoreRankingName lua function added. Ranking names now allow lowercase.
* [Profile] SetLastUsedHighScoreName and GetHighScoreListIfExists lua functions added.
* [GameState] StoreRankingName lua function added. Ranking names now allow
lowercase.
* [Profile] SetLastUsedHighScoreName and GetHighScoreListIfExists lua
functions added.
2014/05/10
----------
* [Player] Tracks param added to JudgmentMessageCommand. (will change before beta 4)
* [Player] Tracks param added to JudgmentMessageCommand. (will change before
beta 4)
* [ScreenGameplay] Themable haste system added.
GetTrueBPS lua function added.
* [ThemeManager] GetMetricNamesInGroup and GetStringNamesInGroup lua functions added.
GetTrueBPS lua function added.
* [ThemeManager] GetMetricNamesInGroup and GetStringNamesInGroup lua functions
added.
2014/05/03
----------
* [ActorFrame] GetChild and GetChildren modified, see Lua.xml.
* [NoteSkinManager] GetMetric function added.
* [PlayerOptions] Entirely new API for setting player options. Superior alternative to ApplyGameCommand.
* [SongOptions] Entirely new API for setting song options. Same design as new PlayerOptions API.
* [NoteField] NoteField Board can now use any AutoActor class instead of just Sprite/Sprite-derived ones.
* [PlayerOptions] Entirely new API for setting player options. Superior
alternative to ApplyGameCommand.
* [SongOptions] Entirely new API for setting song options. Same design as new
PlayerOptions API.
* [NoteField] NoteField Board can now use any AutoActor class instead of just
Sprite/Sprite-derived ones.
2014/04/26
----------
@@ -151,7 +182,8 @@ To reduce the number of entries in this file, entries are dated to the Saturday
----------
* [ActorScroller] DrawByZPosition fixed for looping ActorScrollers.
* [Globals?] GetTimeSinceStart global lua function added.
* [Player] FirstTrack parameter added to JudgmentMessageCommand. (will change before beta 4)
* [Player] FirstTrack parameter added to JudgmentMessageCommand. (will change
before beta 4)
================================================================================
StepMania 5.0 beta 3 | 20140224
+1 -1
View File
@@ -2550,5 +2550,5 @@
<Constant name='top' value='&apos;VertAlign_Top&apos;'/>
</Constants>
<Version>StepMania v5.0 beta 3</Version>
<Date>2014-06-27</Date>
<Date>2014-09-15</Date>
</Lua>
@@ -0,0 +1,183 @@
-- This example describes everything you need to do in your theme to allow the
-- player to enter their heart rate for calorie calculation.
-- First, the metrics you'll need to add to metrics.ini.
-- [ScreenHeartEntry]
-- # The HeartEntryEnabled metric must be set to true so the branching logic
-- # will know that your theme supports the screen.
-- HeartEntryEnabled=true
-- # ScreenHeartEntry uses ScreenWithMenuElements as its fallback, so the
-- # metrics in the ScreenWithMenuElements section will also apply to it.
-- Now for the body of the screen. The things discussed here will have to go
-- in BGAnimations/ScreenHeartEntry overlay.lua
-- The positions the numpads for entering the heart rate will be placed at.
local heart_xs= {
[PLAYER_1]= SCREEN_CENTER_X * 0.625,
[PLAYER_2]= SCREEN_CENTER_X * 1.375,
}
-- heart_entries is a table that will be used to store the numpads that the
-- players will use.
local heart_entries= {}
-- Note that a numpad is only created for a player if that player is enabled
-- and they have the flag set in their profile to enable heart rate entry.
for i, pn in ipairs(GAMESTATE:GetEnabledPlayers()) do
local profile= PROFILEMAN:GetProfile(pn)
if profile and profile:GetIgnoreStepCountCalories() then
-- This is probably the part you'll want to configure the most, the
-- numpads. _fallback/Scripts/04 NumPadEntry.lua discusses configuring a
-- numpad in detail.
heart_entries[pn]= new_numpad_entry{
Name= pn .. "_heart_entry",
InitCommand= cmd(xy, heart_xs[pn], SCREEN_CENTER_Y+48),
-- Settings for value are optional, but you will probably want to
-- change them, so they are provided in this example.
-- If a simple colored BitmapText isn't what you want for displaying
-- the value being entered, read _fallback/Scripts/04 NumPadEntry.lua.
value_pos= {0, -48},
value_font= "Common Normal",
value_color= PlayerColor(pn),
-- Optional prompt settings.
prompt_pos= {0, -72},
prompt_font= "Common Normal",
prompt_color= Color.White,
prompt_text= THEME:GetString("ScreenHeartEntry", "Heart Rate"),
-- Optional button settings.
button_positions= {
{-30, -24}, {0, -24}, {30, -24},
{-30, 0}, {0, 0}, {30, 0},
{-30, 24}, {0, 24}, {30, 24},
{-30, 48}, {0, 48}, {30, 48}
},
button_font= "Common Normal",
button_color= Color.White,
-- Cursor settings. You probably want something more than a quad for
-- the cursor, so this example includes the command the cursor needs
-- to support to do its job.
cursor= Def.Quad{
InitCommand= function(self)
self:SetWidth(16)
self:SetHeight(28)
self:diffuse(PlayerDarkColor(pn))
end,
-- MoveCommand is used to move the cursor to a button.
MoveCommand= function(self, param)
-- param contains the position to move to.
self:stoptweening()
self:decelerate(0.15)
self:xy(param[1], param[2])
end,
-- FitCommand is used to change the size of the cursor to fit the
-- button after it has been moved.
FitCommand= function(self, param)
-- param is the actor for the button.
-- Note that this does not use stoptweening or finishtweening.
-- This is because it is executed with playcommand immediately
-- after MoveCommand, and thus the state changes it makes combine
-- with the actor state at the end of MoveCommand.
self:SetWidth(param:GetWidth())
end
},
-- cursor_draw controls whether the cursor is above or below the
-- buttons.
cursor_draw= "first", -- stick it under the buttons.
-- Don't let the player enter a silly value.
max_value= 300,
-- Automatically move the cursor to the done button when the player has
-- entered three digits.
auto_done_value= 100,
}
end
end
-- This function is the input callback. It handles button presses from the
-- player, passing them to the numpad so the player can enter their heart
-- rate, and detecting when the player is done.
-- See the AddInputCallback function for the Screen class in Lua.xml for a
-- full description of the event argument.
local function input(event)
local pn= event.PlayerNumber
-- If the PlayerNumber isn't set, the button isn't mapped. Ignore it.
if not pn then return end
-- If it's a release, ignore it.
if event.type == "InputEventType_Release" then return end
-- If the player doesn't have a heart_entry, ignore it.
if not heart_entries[pn] then return end
-- Pass the input to the heart_entry for the player. It will handle moving
-- the cursor. If it returns true, the player is done.
local done= heart_entries[pn]:handle_input(event.GameButton)
if done then
-- Play a sound for the player so they know the value was entered.
SOUND:PlayOnce(THEME:GetPathS("Common", "Start"))
-- Check whether all players that need to enter their heart rate are done.
local all_done= true
for pn, entry in pairs(heart_entries) do
if not entry.done then all_done= false break end
end
if all_done then
-- If the players are done, add the calories to their profiles.
for pn, entry in pairs(heart_entries) do
local profile= PROFILEMAN:GetProfile(pn)
if profile and profile:GetIgnoreStepCountCalories() then
-- calories is the value you might want to store off in a global
-- variable to display on evaluation.
local calories= profile:CalculateCaloriesFromHeartRate(
entry.value, GAMESTATE:GetLastGameplayDuration())
profile:AddCaloriesToDailyTotal(calories)
end
end
-- Since all players are done, transition to the next screen.
SCREENMAN:GetTopScreen():StartTransitioningScreen("SM_GoToNextScreen")
end
end
end
-- A simple timer that the player can watch while counting their pulse.
-- The menu timer isn't used because it has undesired side effects.
-- timer_text will be set to the BitmapText used to display the time. This
-- way, the BitmapText doesn't have to be fetched with GetChild every frame.
local timer_text
-- This is an update function for an ActorFrame. It will run every frame.
local function timer_update(self)
local time= math.floor((self:GetSecsIntoEffect() % 60) * 10) / 10
if time < 10 then
timer_text:settext(("0%.1f"):format(time))
else
timer_text:settext(("%.1f"):format(time))
end
end
-- args contains the actors that will be in the ActorFrame for this screen.
local args= {
Def.ActorFrame{
Name= "timer",
InitCommand= function(self)
-- Set the effectperiod so the timer can show an elapsed time.
self:effectperiod(2^16)
-- Set timer_text so GetChild doesn't need to be called every frame.
timer_text= self:GetChild("timer_text")
-- Set the update function so the timer will be updated.
self:SetUpdateFunction(timer_update)
end,
OnCommand= function(self)
-- Add the input callback so input will be handled.
SCREENMAN:GetTopScreen():AddInputCallback(input)
end,
-- The BitmapText used to display the elapsed time.
Def.BitmapText{
Name= "timer_text", Font= "Common Normal", Text= "00.0",
InitCommand= cmd(xy, SCREEN_CENTER_X, SCREEN_CENTER_Y-80; diffuse, Color.White),
OnCommand= cmd(strokecolor,Color.Outline),
}
},
}
-- The actors for the heart_entries are added in a loop so that only the ones
-- that will be used will exist.
for pn, entry in pairs(heart_entries) do
args[#args+1]= entry:create_actors()
end
return Def.ActorFrame(args)
+3 -15
View File
@@ -6,6 +6,7 @@ The first system simply uses the weight of the player and adds a small amount fo
The second system uses age, gender, weight, heart rate, and song duration to calculate the amount used during a song. This requires a theme to support it, and the relevant parts of Editable.ini to be set for the profile.
Editable.ini fields:
The default theme provides a profile editing screen for setting these fields in Stepmania without needing to edit Editable.ini by hand.
BirthYear, -- defaults to 1995
IgnoreStepCountCalories, -- Must be set to 1 to use the second system.
IsMale, -- Defaults to 1. Set to 0 for females.
@@ -29,22 +30,9 @@ CalculateCaloriesFromHeartRate()
Intended usage:
A theme that supports heart rate calorie calculation should take the following steps:
1. Create a new screen that the player will be able to use to enter their heart rate. It shall be called "ScreenHeartEntry" in this list, though a theme can name it anything.
2. During ScreenGameplay, track the amount of time that the player is hitting steps for. This duration must be in seconds.
3. When proceeding from ScreenGameplay:
3a. Check whether GetIgnoreStepCountCalories returns true for either player's profile.
3b. If it returns true for either player, go to ScreenHeartEntry instead of ScreenEvaluationNormal.
3c. This means changing the NextScreen metric for ScreenGameplay to use a function that checks the profiles and returns the correct screen.
4. On ScreenHeartEntry:
4a. Provide a timer that the players can watch while measuring their pulse.
4b. Provide a way for the players to enter their heart rate in beats per minute.
4c. When a player enters their heart rate, use Profile:CalculateCaloriesFromHeartRate().
4d. Do not add calories to a profile if Profile:IgnoreStepCountCalories() returns false for that profile.
4e. Pass the heart rate and the duration from ScreenGameplay to Profile:CalculateCaloriesFromHeartRate() and store its return value.
4f. Pass the return value of Profile:CalculateCaloriesFromHeartRate() to Profile:AddCaloriesToDailyTotal() to add them to the total for that player's profile.
4g. When all active players have finished entering their heart rate, proceed to ScreenEvaluationNormal.
5. This concludes the special steps required for theme support of heart rate calorie calculation.
1. Create ScreenHeartEntry as described in Themerdocs/Examples/Example_Screens/ScreenHeartEntry.lua. _fallback's branching logic will take care of checking whether the screen should be used.
Side notes:
CalculateCaloriesFromHeartRate and AddCaloriesToDailyTotal are separate functions so that a theme can display or use the calorie amount in other ways easily.
If IgnoreStepCountCalories is true for a profile, but the theme in use does not provide support using the steps listed above, that profile will not accumulate calories.
Note that calories will not accumulate during gameplay for a profile that has IgnoreStepCountCalories set to true. PlayerStageStats:GetCaloriesBurned() will also return 0 for that player. You'll have to store the value returned by CalculateCaloriesFromHeartRate in a global variable if you want to display it later on ScreenEvaluation.
+250 -41
View File
@@ -1,5 +1,5 @@
StepMania 5 Beginner's Guide
Written and edited by the spinal shark collective
Written and edited by the StepMania team
--------------------------------------------------------------------------------
Table of Contents
1 Introduction
@@ -8,6 +8,7 @@ Table of Contents
2.1.1 Notable StepMania Versions
2.1.2 StepMania Components
2.2 StepMania Configuration
2.2.0 Configuring Keys
2.2.1 Frequently Asked Questions that can be
Solved by Changing the Configuration
2.3. Installing Content
@@ -15,6 +16,8 @@ Table of Contents
2.3.2 Installing Noteskins/New Gametypes
2.3.3 Installing Themes
3. StepMania 5
3.1 Frequently Asked Questions about StepMania 5
4. Reporting problems
================================================================================
Chapter 1: Introduction
================================================================================
@@ -28,11 +31,9 @@ skip ahead to Chapter 3: StepMania 5. Otherwise, read on.
Chapter 2: StepMania
================================================================================
StepMania is an open-source rhythm game/engine, used by many projects, both
commercial and free. It is the software from which sm-ssc is derived, and as
a result, must be learned before using sm-ssc if you're not already familiar
with how it works.
commercial and free.
Some of the things an average sm-ssc user is expected to know includes the
Some of the things an average StepMania 5 user is expected to know include the
meanings/"proper names" of certain things, as well as how to install content
and configure the program to suit your playing style.
@@ -51,10 +52,13 @@ Knowing the versions of StepMania is helpful, as it will help you deduce what
you can and can not install. (Most songs are version-agnostic, though the
background animations may not be. Themes, Noteskins, etc. are tied to
specific versions.)
StepMania 5.0 is the only version actively supported by the StepMania developers.
All older versions have various problems and/or limitations that make them too
burdensome to continue supporting.
* StepMania 3.9
StepMania 3.9 is currently considered the stable version of StepMania. It dates
back to 2005, and is the version for which the bulk of content is produced.
StepMania 3.9 is the previous stable version of StepMania. It dates back to
2005, and is the version for which the bulk of content is produced.
* StepMania 3.9 Plus/StepMania 3.9 Plus Redux
3.9 Plus/Redux is a fork of StepMania 3.9 that adds features from
@@ -76,10 +80,31 @@ up until January 2008, when the last build that could be categorized as "CVS"
was released.
* StepMania 4.0 SVN/alpha
The current development version of StepMania. This is the version that sm-ssc
is forked off of. If you wish to port something to sm-ssc, it had better work
for this version first, unless you like working hard to port the theme past
various generations and default theme assumptions.
A development version of StepMania. This is the version that sm-ssc was forked
off of. This version is no longer supported and should not be used.
* StepMania 4.0 Beta
Various betas were released for StepMania 4. They are no longer supported, had
various problems, and should not be used.
* sm-ssc
sm-ssc was originally created to provide more theming functionality, as well as
keep the Lua-based StepMania alive (at that point in time, there were plans to
release a version of StepMania based on the old CVS codebase, circa ITG PC).
It eventually became StepMania 5.
* StepMania 5.0 beta 3
The previous beta release of StepMania 5. Includes many features from sm-ssc
and StepMania 4.0 as well as many new features. Any content that works in beta
3 will work in future releases in StepMania 5 (caveat: Many themes made for
beta 3 are full of mistakes, they will not work in beta 4)
* StepMania 5.0 beta 4
The current beta release of StepMania 5. This version has many additional
theming features and bug/crash fixes.
If you wish to port something to StepMania 5, or make a theme for StepMania 5,
it had better work for this version, because it will report your theme
mistakes to you on screen.
--------------------------------------------------------------------------------
2.1.2: StepMania Components
@@ -111,9 +136,9 @@ you may see in StepMania communities and online.
decide to quit. Like Nonstop courses, they have a normal lifebar as well.
--------------------------------------------------------------------------------
* Event Mode
Typically used during events, this disables the concept of stages and lets you
play songs until you decide to stop. It is quite useful in Home Mode, and this
guide recommends you enable it.
Designed to be used during events, this disables the concept of "stages per
game" and lets you play songs until you decide to stop. It is quite useful in
Home Mode, and this guide recommends you enable it.
* Gametypes
Gametypes are the different game modes StepMania can play. They generally
@@ -142,6 +167,8 @@ you may see in StepMania communities and online.
* Themes
Themes are skins for StepMania. They change the look and feel, and in post-3.9
versions, can also change elements of gameplay (scoring, grading) as well.
StepMania 5.0 adds many features to extend the limits of what a theme can
change.
--------------------------------------------------------------------------------
2.2: StepMania Configuration
@@ -151,7 +178,14 @@ Learning how to properly configure StepMania can save you headaches.
Most themes will have the Options menu in plain sight on the Title Menu.
From there, it depends on which version of StepMania you have, as the options
menus were re-shuffled around for the StepMania 4 alphas.
menus were re-shuffled around for the StepMania 4 alphas and later versions.
This is also known as the Service Options menu. In all versions on
StepMania 5, this can be reached by pressing the Scroll Lock key at any time.
The key set as the "Operator" key in Config Key/Joy Mappings will also bring
up the Service Options menu. Some people also call this the "service button".
Note that in StepMania 5, the theme can control what options appear on this
screen. The information below applies only to the default theme and themes
that choose to present the same options.
The typical StepMania 3.9 Options Menu:
* Appearance Options
@@ -180,9 +214,71 @@ The StepMania 4.0 alpha 4 Options Menu:
* Profiles
* Reload Songs/Courses
sm-ssc changes this up again, making the "Options" item on the Title Menu go
sm-ssc changed this up again, making the "Options" item on the Title Menu go
to System Direction (mostly-used options), leaving the normal options menu to
the Scroll Lock key. Blame Midiman. :)
The StepMania 5.0 beta 4 Options Menu:
* Calibrate Audio Sync
* Select Game
* Config Key/Joy Mappings
* Test Input
* Input Options
* Reload Songs/Courses
* Arcade Options
* Appearance Options
* Set BG Fit Mode
* Graphics/Sound Options
* Profiles
* Network Options
* UI Options
* Advanced Options
* Stepmania Credits
--------------------------------------------------------------------------------
2.2.0: Configuring Keys
--------------------------------------------------------------------------------
Controller mappings in StepMania are configured in the Config Key/Joy Mappings
screen. To reach it, hit the Operator key (Scroll Lock) and select Config Key/Joy
Mappings from the menu.
The first thing you will see will be a warning telling you not to unmap important
keys, such as the arrow keys and the enter key. This is because those keys are
necessary for navigating the menus, and unmapping them will leave you unable to
navigate the menus. If you accidentally unmap one of the important keys, you can
reset your key configuration to the default by using the "Clear To Default" action.
The warning will be dismissable after 2.5 seconds and will dismiss itself after 5
seconds. (time controlled by theme) After the warning disappears, you will see
the current keybindings, arranged into columns.
Each player has their own three columns. "Primary" and "Secondary" are the two
columns you can configure. "Default" is the column you cannot configure.
The key your cursor is currently on will be flashing between black and white.
(or whatever the theme set it to do)
To set an individual key, move your cursor to the slot you want to set and hit
Enter. The next key you hit will be set in that slot.
To set multiple keys in order, and save time going back and forth between the pad
and the keyboard, move your cursor to a slot and hit 'm'. This marks the slot,
adding it to a list. Hitting 'm' again will remove it from the list. When you have
marked all the slots you want to set, select the "Assign List" option. The screen
will then automatically move through the list of slots in the order they appear
on the screen, setting each one as you press the button for it.
("Assign List" requires you to mark the keys you want because having preset lists
for you to pick from for every game type and the common combinations of what people
will want to set in one go would be more work than it's worth.)
Any changes you make will only be saved when you choose "Save To Disk".
You can reload the settings from the disk with "Reload From Disk".
If you try to leave the screen after changing a key without saving, you will be
prompted to save. Choosing "Yes" will save the settings to the disk and leave the
screen. Choosing "No" will reload the settings from the disk, undoing your change,
and leave the screen. Choosing "Cancel" will do neither, leaving you on the screen.
--------------------------------------------------------------------------------
2.2.1: Frequently Asked Questions that can be Solved by Changing the Configuration
--------------------------------------------------------------------------------
@@ -194,12 +290,14 @@ A: Where you go depends on the version of StepMania you use.
[3.9] Machine Options
[4.0 alphas] Advanced Options
It will be the first option on each.
[5.0] UI Options, third option from the top.
Q: How do I play forever, without game overs?
A: Turn on Event Mode. Where you go depends on the version of StepMania you use.
[3.9] Coin Options
[4.0 alphas] Advanced Options, a bit down the page.
[5.0] Arcade Options, bottom of the page.
Q: What the heck is this thing that says "Toasty" and how do I get rid of it?
A: It's a reference to Mortal Kombat 2, where Dan Forden would pop out from
@@ -212,6 +310,7 @@ As for turning it off, turn Easter Eggs off.
It appears in different locations between StepMania versions:
[3.9] Gameplay Options
[4.0 alphas] Advanced Options, a bit down the page.
[5.0] Advanced Options, 8th option from the top.
--------------------------------------------------------------------------------
2.3: Installing Content
@@ -222,36 +321,44 @@ completely, as you have other things to do.
Before we touch on the specifics, there are a few skills you should learn.
* Mac Users of StepMania 4.0
Most of the game content is packaged in a file called StepMania.smzip. This has
the pros of not cluttering things up, but the con is that people don't know
where to put things.
Previous versions of StepMania had instructions to install things in the main
StepMania folder. This caused problems with UAC on Windows and went against
convention on Linux and OS X. Because of those problems, installing content in
the main StepMania folder is no longer the correct thing to do.
Wherever you have StepMania installed, make the following folders:
The correct place to install content on StepMania 5 is the User Data folder.
The exact location is different for each platform.
Windows: %APPDATA%/StepMania 5.0/
Linux: ~/.stepmania-5.0/
OS X: ~/Library/Application Support/StepMania 5/
Wherever you see the name "User Data folder", this is the folder it refers to.
OS X additionally has ~/Library/Preferences/StepMania 5/ for storing preferences.
Inside the User Data folder you can install content by placing it in the following folders:
* Songs
* Themes
* Noteskins
* NoteSkins
(and the various gametype folders, which are optional. You need at least one
non-lights gametype in order to play.)
* Noteskins/dance
* Noteskins/pump
* Noteskins/para
* Noteskins/techno
* Noteskins/beat
* Noteskins/popn
* Noteskins/ez2
* NoteSkins/dance
* NoteSkins/pump
* NoteSkins/para
* NoteSkins/techno
* NoteSkins/beat
* NoteSkins/popn
* NoteSkins/ez2
* Announcers
(but at this point, no SM4 announcers have been released)
(finding announcers made for SM5 is an exercise left for the reader)
* Packages
(optional, but recommended)
and then you can follow the rest of this guide.
If one of the folders listed above does not exist, do not worry. You only need
to create a folder if you need to install a piece of content that belongs in it.
* Not on Windows and want to deal with .smzip files?
There are multiple ways to deal this.
1) Put the SMZip file in the Packages folder.
2) Rename the file to have an extension of .zip and extract in the root
StepMania folder.
User Data folder.
3) Pass the smzip's filename to StepMania on the command line/terminal.
Dragging and dropping the .smzip may or may not work; we have not tested it.
Also, this may or may not exist in your version of StepMania.
@@ -266,7 +373,7 @@ For .smzip files, the section "Not on Windows and want to deal with .smzip
files?" details all possible ways of installing .smzip files, but the most
common ways are as follows:
1) For operating systems with a filetype handler (Windows), you can double
1) For operating systems with a filetype handler (Windows and OS X), you can double
click on the .smzip file and the StepMania tools will handle it.
2) Putting the .smzip file in the Packages folder, where it will be automatically
read by StepMania.
@@ -304,7 +411,7 @@ of a pack that exhibits this behavior.)
Overall, the setup should look something like this:
StepMania\
User Data folder\
Songs\
Song Group 1\
Song Group 2\
@@ -323,7 +430,7 @@ NoteSkins change the appearance of the arrows. They are also linked with getting
other gametypes supported in StepMania.
The noteskin installation process looks something like this:
StepMania\
User Data folder\
NoteSkins\
(gametype)\
(noteskin for gametype)\
@@ -346,7 +453,7 @@ kb7 (6 or 7 keys depending on when you try to use it)
Depending on if the theme is packaged in a SMZip or not, you have a few options.
If it is in a .smzip, you can put it in the Packages directory:
StepMania/
User Data folder/
Packages/
MyTheme.smzip
and StepMania will automatically read it.
@@ -354,27 +461,129 @@ On Windows, you can double click on the .smzip file to install it in your user
packages directory. THIS IS NOT RECOMMENDED BECAUSE IT CAUSES CONFUSION.
Since .smzip files are really .zip files, you could also extract them in the
StepMania root folder.
User Data folder.
If the themer has not packaged the theme in a .smzip, then you have to look
inside the archive to see how the directory layout looks.
1) Themes folder
If it has a themes folder when you open it up, extract in the StepMania root
If it has a themes folder when you open it up, extract in the User Data
folder, like you would a .smzip file.
2) Theme name as a folder
This one will have to be extracted in the Themes directory. You will get a
new folder with the files.
3) A bunch of folders + metrics.ini
The themer was lazy; you're going to have to make a folder in the Themes
directory and extract the theme in there.
directory and extract the theme in there. Then go tell the themer that they're a bad person.
When in doubt, read any documentation that comes with the theme for proper
installation instructions.
Do not attempt to use any theme made for a StepMania version older than StepMania 5.
It will not work at all. Only use a theme made for StepMania 5 beta 1, or beta 2
if you are a themer and you are working on that theme to make it work with
StepMania 5 beta 4.
================================================================================
Chapter 3: StepMania 5
================================================================================
The modern StepMania 5 originally began life as sm-ssc, a fork of StepMania 4
alpha 5 (later renamed to StepMania 5 after the reboot of SM4). sm-ssc was a fork
focused on adding features for theming, but also tried to make the process of
dealing with StepMania a little easier.
dealing with StepMania a little easier.
--------------------------------------------------------------------------------
3.1: Frequently Asked Questions about StepMania 5
--------------------------------------------------------------------------------
Q: How do I keep my background videos/images from being stretched/distorted?
A: StepMania 5 has a preference for this, the "Set BG Fit Mode" option on the
Service Options screen.
Each column on that screen is a possible setting for the preference.
Each column shows how a background with each of the 3 most common aspect ratios
will look with that setting. The green rectangle in each example shows where the
edge of the screen will cut off the background, and area not covered by the
background will be black. Themes that change the contents of the Service Options
menu might not have Set BG Fit Mode in the Service Options menu, so it is
recommended to change to the default theme to set this option if you do not see
it in the Service Options menu for the theme you are using.
Q: I'm a themer, how do I change the way ScreenSetBGFit looks?
A: First, make sure your metrics allow it to be accessed. If your theme sets the
LineNames metric in the ScreenOptionsService section, add "BGFit" to that metric.
Second, open Themes/_fallback/BGAnimations/ScreenSetBGFit overlay.lua and read
everything in there.
Third, create the screen in your theme using the knowledge gained from step two.
Q: I run multiple versions of StepMania and I don't want to copy all my songs to the new install location.
A: Close stepmania. Look in your User Data folder for Save/Preferences.ini.
On OS X Save/ will actually be under ~/Library/Preferences/StepMania 5/.
Open that file in a text editor. Add the full path to your Songs folder to the
"AdditionalSongFolders" setting. If the folder your songs are in is anywhere
under Program Files or anywhere else that UAC interferes with, you will probably
have problems when editing simfiles.
Q: I have thousands of scores in StepMania 3.9, how can I copy them to StepMania 5?
A: Create a new profile in StepMania 5. The profile's folder will be
"User Data folder/Save/LocalProfiles/000000/" (000000 is the first profile created,
if the new profile is the second profile, the folder name will be 000001, and so forth).
Place your Stats.xml from StepMania 3.9 into the folder for the new profile,
replacing any Stats.xml that is currently there.
Q: I have some scores in one profile and some other scores in another profile, how do I merge them?
A: Hopefully, this feature will be added soon.
Q: I want to make a theme, why do I have to learn Lua? Isn't making a theme just making graphics?
A: Themes are far more powerful in StepMania 5 than in previous versions.
Themes are more than just image files and can change every part of interacting
with StepMania. With this power comes the requirement of knowing how to use it.
If the thought of learning Lua and using it as a language frightens you, spend
more time reading the documentation and asking questions so you can learn to
understand how to use it.
================================================================================
Chapter 4: Reporting Problems
================================================================================
http://www.stepmania.com/forums/ is the official StepMania forum.
Use this for asking questions and generally posting about StepMania.
Please search the forums for threads that cover your question before making a
new thread.
https://github.com/stepmania/stepmania/issues is the bug tracker list.
Use this only for reporting problems or requesting features.
Please search the list before reporting a new issue.
#stepmania-devs on irc.freenode.net is the IRC channel where the devs hang out.
Use this to chat with the devs and discuss StepMania related things.
When reporting issues on the bug tracker:
1: Make the title of your issue short and informative.
"Crash report" is a bad title because it doesn't contain any context.
"Crash while juggling kittens" is a good title because it shows vaguely where the
problem is.
2: Include explicit steps for reproducing your problem.
If you can't explain how you encountered the problem, we can't fix it.
3: If you have new information to add to an existing issue, please comment on
that issue with the information you have.
4: Developers have limited time, issues will not be fixed or responded to
immediately. Responses may take a week or two, so be patient and be prepared to
go through a couple requests for more information.
5: It is important to include the name of the theme you are using with any issue
report. If the problem is not an outright crash and cannot be reproduced in the
default theme, it is likely a problem with the theme and should be reported to
the author of that theme. The main StepMania issue tracker is not the place to
report problems with any theme other than the default theme.
Requesting features on the bug tracker:
If you are a themer requesting a new theme API feature, be prepared to describe
very explicitly what you want. Same as for reporting bugs, be prepared to wait.
Spending time in the developer IRC channel discussing issues can help a lot.
If you are a skilled programmer, implementing the feature and submitting a pull
request is a good way to get it added to StepMania 5. See github's instructions
on forking a repository and submitting a pull request.
Binary file not shown.
@@ -36,7 +36,8 @@ end;
OnCommand=cmd(diffuse,PlayerColor(PlayerNumber);fadebottom,1);
};
};
t[#t+1] = LoadFont("Common","Normal") .. {
t[#t+1] = Def.BitmapText{
Font="Common Normal";
Name = "PlayerText";
InitCommand=cmd(x,-60;maxwidth,80/0.5;zoom,0.5;queuecommand,"On");
OnCommand=cmd(playcommand,"Set");
@@ -70,7 +71,8 @@ t[#t+1] = Def.ActorFrame {
OnCommand=cmd(finishtweening;diffusealpha,0.85;);
OffCommand=cmd(sleep,3;linear,0.5;diffusealpha,0;);
};
LoadFont("Common","Normal") .. {
Def.BitmapText{
Font="Common Normal";
Name="Text";
InitCommand=cmd(maxwidth,750;horizalign,left;vertalign,top;y,SCREEN_TOP+10;x,SCREEN_LEFT+10;shadowlength,1;diffusealpha,0;);
OnCommand=cmd(finishtweening;diffusealpha,1;zoom,0.5);
@@ -183,6 +183,8 @@
-- -- is a table of x, y, and optional z. Unused if you pass in a custom
-- -- value actor.
-- value_pos= {0, -48},
-- -- Optional. The font to use for the default value actor.
-- value_font= "Common Normal",
-- -- Optional. The color for the default value text. Unused if you pass
-- -- in a custom value actor. Default is White.
-- value_color= Color.White,
+33 -1
View File
@@ -1847,7 +1847,7 @@ ChoiceContinue="screen,ScreenContinue;text,Continue?"
ChoiceOnline="screen,ScreenNetworkOptions;text,Play Online"
ChoiceGameSelect="screen,ScreenSelectGame;text,Select Game"
ChoiceJukebox="screen,ScreenJukeboxMenu;text,Jukebox"
ChoiceReportBug="urlnoexit,http://ssc.ajworld.net/sm-ssc/bugtracker/;text,Report Bug"
ChoiceReportBug="urlnoexit,https://github.com/stepmania/stepmania/issues;text,Report Bug"
ChoiceIRC="urlnoexit,http://chat.mibbit.com/?server=chat.freenode.net&channel=%23stepmania-devs&nick=StepMania_player;text,Chat on IRC"
ChoiceSandbox="screen,ScreenTest;text,Sandbox"
#
@@ -3656,6 +3656,31 @@ DisqualifiedP2Y=
DisqualifiedP2OnCommand=visible,false
DisqualifiedP2OffCommand=
#
SmallBanner1X=SCREEN_CENTER_X
SmallBanner1Y=SCREEN_TOP-128
SmallBanner1OnCommand=visible,false
SmallBanner1OffCommand=
SmallBanner2X=SCREEN_CENTER_X
SmallBanner2Y=SCREEN_TOP-128
SmallBanner2OnCommand=visible,false
SmallBanner2OffCommand=
SmallBanner3X=SCREEN_CENTER_X
SmallBanner3Y=SCREEN_TOP-128
SmallBanner3OnCommand=visible,false
SmallBanner3OffCommand=
SmallBanner4X=SCREEN_CENTER_X
SmallBanner4Y=SCREEN_TOP-128
SmallBanner4OnCommand=visible,false
SmallBanner4OffCommand=
SmallBanner5X=SCREEN_CENTER_X
SmallBanner5Y=SCREEN_TOP-128
SmallBanner5OnCommand=visible,false
SmallBanner5OffCommand=
SmallBanner6X=SCREEN_CENTER_X
SmallBanner6Y=SCREEN_TOP-128
SmallBanner6OnCommand=visible,false
SmallBanner6OffCommand=
#
DetailLineFormat="%3d/%3d"
#
@@ -4690,3 +4715,10 @@ NullCountString=""
[TimingData]
GetReturnsNumbers=false
# Apparently these are still used. Let it be known that they're severely deprecated.
[DancingCharacters]
2DCharacterXP1=SCREEN_WIDTH*0.25
2DCharacterYP1=SCREEN_HEIGHT*0.5
2DCharacterXP2=SCREEN_WIDTH*0.75
2DCharacterYP2=SCREEN_HEIGHT*0.5
@@ -8,7 +8,8 @@ t[#t+1] = Def.Quad {
InitCommand=cmd(zoomto,40,20;diffuse,Color.Black;
diffusealpha,0.5;fadeleft,0.25;faderight,0.25);
};
t[#t+1] = LoadFont("Common","Normal") .. {
t[#t+1] = Def.BitmapText {
Font="Common Normal";
Text="AG";
InitCommand=cmd(shadowlength,1;zoom,0.875);
};
+1 -1
View File
@@ -2076,7 +2076,7 @@ SmallBanner6OffCommand=
[ScreenContinue]
ShowHeader=false
ShowFooter=false
ContinueEnabled=true
ContinueEnabled=false
#
TimerSeconds=20
TimerMetricsGroup="MenuTimerContinue"
+13
View File
@@ -240,6 +240,7 @@ static void GetWindowsVersionDebugInfo()
*/
}
else if(ovi.dwMajorVersion == 6 && ovi.dwMinorVersion == 1)
{
Ver += "Win7";
// todo: make this check work
/*
@@ -248,6 +249,18 @@ static void GetWindowsVersionDebugInfo()
else
Ver += "WinServer2008 R2";
*/
}
else if(ovi.dwMajorVersion == 6 && ovi.dwMinorVersion == 2)
{
Ver += "Win8";
// todo: make this check work
/*
if(ovi.wProductType == VER_NT_WORKSTATION)
Ver += "Win7";
else
Ver += "WinServer2008 R2";
*/
}
else
Ver += "unknown NT-based";
} else Ver += "???";
+1
View File
@@ -474,6 +474,7 @@ Section "Main Section" SecMain
File "Docs\Changelog_SSCformat.txt"
File "Docs\CommandLineArgs.txt"
File "Docs\CourseFormat.txt"
File "Docs\Userdocs\sm5_beginner.txt"
File /r /x CVS /x .svn "Docs\license-ext"
File /r /x CVS /x .svn "Docs\Luadoc"
File /r /x CVS /x .svn "Docs\Themerdocs"