Trying to make the DDR A3 theme mimic DDR Ace's announcer engine. I made some progress but hit a wall. This is the code I have on ScreenGameplay overlay. I know beware was the only one to achieve this on his special fork of StepMania. I guess I have to study DDR A - A3's engine OutFox/ITGmania #749
Replies: 1 comment
-
New updated code local t = Def.ActorFrame{} local soundTypes = {"combo_50", "cheering"} -- Sound types to alternate for pn in ivalues(GAMESTATE:GetHumanPlayers()) do t[#t+1] = LoadActor("GameOver") local currentSong = GAMESTATE:GetCurrentSong() if currentSong and currentSong:GetDisplayFullTitle() == "LET'S CHECK YOUR LEVEL!" then -- Calculate cooldowns based on BPM local comboCooldown = getCooldown(bpm) -- Function to determine combo thresholds based on BPM
end local comboThresholds = getComboThresholds(bpm) -- Function to determine cheering thresholds based on BPM
end local cheeringThresholds = getCheeringThresholds(bpm) -- Function to determine time thresholds based on song length
end local timeThresholds = getTimeThresholds(songLength) -- Function to play the next sound type -- Custom announcer lines for specific combo milestones and time intervals
} return t |
Beta Was this translation helpful? Give feedback.
-
I kinda am achieveing it to make it very close to DDR Ace but it seems like the announcer is too rigid. Like I notice while playing Ace the announcer can change depending on the frequency of the song and certain combo milestones. For example if you play beginner the announcer will sound earlier and a slower song that starts later the announcer will sound early and go off at the 50 combo milestone . This is the code I made so far. I renamed all announcer folders to stop engine sounds from playing
Here is my code I made.
local t = Def.ActorFrame{}
local soundPlaying = false
local lastComboMilestonePlayed = 0
local lastCheeringComboPlayed = 0
local lastTimeMilestonePlayed = 0
local comboCooldown = 5 -- Cooldown period for combo milestones
local cheeringCooldown = 5 -- Cooldown period for cheering
for pn in ivalues(GAMESTATE:GetHumanPlayers()) do
t[#t+1] = LoadActor("FullCombo", pn)
end
t[#t+1] = LoadActor("GameOver")
local currentSong = GAMESTATE:GetCurrentSong()
local bpm = currentSong and currentSong:GetDisplayBpms()[2] or 120 -- Default BPM if currentSong is nil
local songLength = currentSong and currentSong:GetLastSecond() or 180 -- Default length if currentSong is nil
if currentSong and currentSong:GetDisplayFullTitle() == "LET'S CHECK YOUR LEVEL!" then
t[#t+1] = LoadActor("LET'S CHECK YOUR LEVEL!")
elseif currentSong and currentSong:GetDisplayFullTitle() == "Lesson by DJ" then
t[#t+1] = LoadActor("Lesson by DJ")
end
-- Function to determine combo thresholds based on BPM
local function getComboThresholds(bpm)
local milestones = {}
local baseThreshold = 50
end
local comboThresholds = getComboThresholds(bpm)
-- Function to determine cheering thresholds based on BPM
local function getCheeringThresholds(bpm)
local milestones = {}
local baseCheeringThreshold = 75
end
local cheeringThresholds = getCheeringThresholds(bpm)
-- Function to determine time thresholds based on song length
local function getTimeThresholds(songLength)
local baseThreshold = 30
local milestones = {}
end
local timeThresholds = getTimeThresholds(songLength)
-- Custom announcer lines for specific combo milestones and time intervals
t[#t+1] = Def.ActorFrame{
ComboChangedMessageCommand=function(self, params)
local combo = params.PlayerStageStats:GetCurrentCombo()
local maxCombo = params.PlayerStageStats.GetMaxCombo and params.PlayerStageStats:GetMaxCombo() or 0
local songPosition = GAMESTATE:GetSongPosition()
local currentTime = songPosition:GetMusicSeconds()
}
return t
Beta Was this translation helpful? Give feedback.
All reactions