92 lines
4.6 KiB
Plaintext
92 lines
4.6 KiB
Plaintext
sm-ssc Scripts Directory: Introduction
|
|
--------------------------------------------------------------------------------
|
|
Hello, and welcome to the sm-ssc Scripts directory. You'll notice that our Lua
|
|
scripts have numbers at the beginning of them. This is to control the order of
|
|
execution.
|
|
|
|
In sm-ssc, scripts in subdirectories of Scripts/ (e.g. Scripts/01/somescript.lua)
|
|
are loaded before scripts in the root of Scripts/ (e.g. Scripts/01 base.lua).
|
|
This is important to know when making a theme for sm-ssc. It's also important
|
|
to know that StepMania 4 (as of alpha 5) will not read scripts in subdirectories.
|
|
|
|
In sm-ssc, there are five rings of script execution:
|
|
|
|
00 - Initialization
|
|
________________________________________________________________________________
|
|
01 - Base
|
|
There are three base scripts. "01 base.lua" is taken from StepMania 4's default
|
|
theme and sets up very important function overrides and the "Var" alias (for
|
|
lua.GetThreadVariable). The other two base scripts are sm-ssc specific.
|
|
|
|
"01 alias.lua" contains non-compatibility aliases. To quote the file itself:
|
|
"This is mainly here for making commands case-insensitive without needing to
|
|
clutter up the C++ code. It can also be used to add custom functions that
|
|
wouldn't otherwise belong somewhere else."
|
|
|
|
"01 compat.lua" sets up compatibility aliases for some commands. Some commands
|
|
were deprecated in sm-ssc (e.g. hidden), while others were renamed. If a problem
|
|
was solved differently in sm-ssc, the corresponding StepMania 4 functions should
|
|
live in here, and not the C++ code. (The prime example of this being
|
|
PlayerStageStats:IsFullComboW* from SM4, whereas we have
|
|
PlayerStageStats:FullComboOfScore, with the tap note score being passed in.)
|
|
________________________________________________________________________________
|
|
02 - Defaults
|
|
The "02" scripts are pretty much the same scripts you'd find in StepMania 4's
|
|
default theme. Some scripts do exhibit differences, however. The most notable
|
|
of these changes is to "02 Color.lua", which adds a color library to the old
|
|
StepMania 4 Colors script.
|
|
________________________________________________________________________________
|
|
03 - Extensions
|
|
Scripts that extend normal (StepMania 4 default theme) functionality belong
|
|
in the fourth ring. A number of these scripts come from KKI Labs (EnvUtils2,
|
|
CustomSpeedMods, UserPreferences2), while others are from other themes (HSV)
|
|
or written for sm-ssc (DateTime, Gameplay).
|
|
________________________________________________________________________________
|
|
04 - ?
|
|
FileUtils and WidescreenHelpers are in the fifth ring. To be honest, I don't
|
|
know why they were moved out here. -aj
|
|
|
|
================================================================================
|
|
previously:
|
|
SMOKE WEED '98 Scripts Directory Organization,
|
|
or "An applied case of application of prefixes to control order of execution".
|
|
|
|
Based on the original document for NCRX by Synikal, updated for SW98 by various
|
|
members of the NAKET Team.
|
|
-------------------------------------------------------------------------------
|
|
The general idea is that the order of execution in some scripts does matter.
|
|
We can use filenames in order to load certain files before others.
|
|
|
|
It is important to note that you do not always need to follow this order,
|
|
especially if certain scripts do not require any dependencies. Typically,
|
|
most scripts do not require hierarchy setup, only certain situations
|
|
require it.
|
|
|
|
Here is how we see the general hierarchy at NAKET HQ:
|
|
|
|
00 = Initialization. Things that get called at the beginning of a theme.
|
|
This is good for things that are required by everything. It's considered bad
|
|
form to execute your own code before init, but there are ways around it if you
|
|
do need to go around it.
|
|
|
|
Examples include 00 init.lua (SM4 default) and 00 themeInfo.lua (various themes).
|
|
|
|
01 = Base. After the initialization, the base layer goes on top and adds more
|
|
core functionality to StepMania themes.
|
|
|
|
Examples include 01 base.lua (SM4 default) and various 01 files in sm-ssc's
|
|
fallback theme. In sm-ssc, these are treated differently than in normal SM4;
|
|
01 files are used for aliasing/compatibility commands, which are just as
|
|
important as 01 base.lua.
|
|
----
|
|
From here on out, these aren't officially used by the normal StepMania
|
|
developers; they were invented by other themers.
|
|
|
|
02 = Extensions. Generally, these are third party extensions, such as the KKI
|
|
Labs stuff or vyhd's Genre Generator.
|
|
|
|
03 = Theme-specific. This layer came into existence with dubaiOne/moonlight.
|
|
|
|
It should be noted that this is still talking about StepMania 4 alphas, as
|
|
sm-ssc introduces loading Scripts/folderA, Scripts/folderB, etc. (just not
|
|
Scripts/folderA/folderB/ although why would you need that?) |