4.7 KiB
4.7 KiB
Kade Engine Lua Mod Chart Documentation
In the latest version of Kade Engine we introduced Mod Charts. Mod Charts are a way of changing gameplay without hard coded values, this is achieved by using the Lua Scripting language to create script files that run during runtime.
All files are located in assets/data/song/modchart.lua
Lua code will only be ran if that file exists.
Examples
Full Example
function start (song)
print("Song: " .. song .. " @ " .. bpm .. " donwscroll: " .. downscroll)
end
function update (elapsed) -- example https://twitter.com/KadeDeveloper/status/1382178179184422918
local currentBeat = (songPos / 1000)*(bpm/60)
for i=0,7 do
_G['strum'..i..'X'] = _G['defaultStrum'..i..'X'] + 32 * math.sin((currentBeat + i*0.25) * math.pi)
_G['strum'..i..'Y'] = _G['defaultStrum'..i..'Y'] + 32 * math.cos((currentBeat + i*0.25) * math.pi)
end
end
function beatHit (beat)
-- do nothing
end
function stepHit (step)
-- do nothing
end
print("Mod Chart script loaded :)")
Spinning Receptor Example
function update (elapsed)
for i=0,7 do
_G['strum'..i..'Angle'] = _G['strum'..i..'Angle'] + 15
end
end
Spinning Hud Example
function update (elapsed)
camHudAngle = camHudAngle + 0.005
end
Spin at a specific part of the song
function update (elapsed)
if curStep >= 352 and curStep < 400 then
local currentBeat = (songPos / 1000)*(bpm/60)
for i=0,7 do
_G['strum'..i..'X'] = _G['defaultStrum'..i..'X'] + 32 * math.sin((currentBeat + i*0.25) * math.pi)
_G['strum'..i..'Y'] = _G['defaultStrum'..i..'Y'] + 32 * math.cos((currentBeat + i*0.25) * math.pi)
end
else
_G['strum'..i..'X'] = _G['defaultStrum'..i..'X']
_G['strum'..i..'Y'] = _G['defaultStrum'..i..'Y']
end
end
Showing/Hiding receptors/the hud
function start (song)
showOnlyStrums = true -- remove all hud elements besides notes and strums
_G['strumLine1Visible'] = false -- remove the first line of strums (the ai notes)
end
Available Hooks
Current calls to functions include,
Name | Arguments | Description |
---|---|---|
start | Song Name | Get's called when the song starts |
update | Elapsed frames | Get's called every frame (after the song starts) |
stepHit | Current Step | Get's called when ever a step hits (steps are in between beats, aka 4 steps are in a beat) |
beatHit | Current Beat | Get's called when ever a beat hits |
Global Variables
Kade Engine provides a list of global variables to be used in the lua scripting interface.
G Name | Type | Description |
---|---|---|
bpm | Float | The current BPM of the song |
fpsCap | Int | The current FPS Cap (set by the player) |
downscroll | Bool | Whether the player is in downscroll or not |
hudZoom | Float | The amount of zoom the Hud should be zoomed in/out |
cameraZoom | Float | The amount of zoom the Main Camera should be zoomed in/out |
cameraAngle | Float | The angle that the Main Camera should be rotated |
camHudAngle | Float | The angle that the Hud should be rotated |
followXOffset | Float | The x offset to be added when the camera moves between a character |
followYOffset | Float | The y offset to be added when the camera moves between a character |
showOnlyStrums | Bool | Whether to show the Hud and Strums or only the Strums |
strumLine1Visible | Bool | Whether to show the first strum line or not |
strumLine2Visible | Bool | Whether to show the secondstrum line or not |
strum0-7X | Float | (0-7 is strum0,strum1,strum2,etc) get/set the X coordinate for the strum |
strum0-7Y | Float | (0-7 is strum0,strum1,strum2,etc) get/set the Y coordinate for the strum |
strum0-7Angle | Float | (0-7 is strum0,strum1,strum2,etc) get/set the Angle for the strum |
defaultStrum0-7X | Float | (0-7 is strum0,strum1,strum2,etc) get the default X coordinate for the strum |
defaultStrum0-7Y | Float | (0-7 is strum0,strum1,strum2,etc) get the default Y coordinate for the strum |
defaultStrum0-7Angle | Float | (0-7 is strum0,strum1,strum2,etc) get the default Angle for the strum |