Here’s a useful, ready-to-run script for a Friday Night Funkin’ (FNF) remix that improves the original gameplay feel — smoother controls, better input timing, and a simple “remix” toggle (harder/faster notes).
You can paste this into the FNF GameBanana modding template or use it in Psych Engine as a custom Lua script.
-- ============================================ -- FNF REMIX SCRIPT: Better + Tighter + Remix Mode -- Place in: data/yourSong/script.lua (Psych Engine) -- ============================================local remixMode = false -- toggle with keybind local originalSpeed = getProperty('songSpeed') local remixSpeed = 2.1
-- Tighter timing window (vanilla FNF is too forgiving) local judgementWindows = sick = 35, -- ms (default 45) good = 70, -- ms (default 90) bad = 110, -- ms (default 135) shit = 150 -- ms (default 180)
-- Override rating windows function onUpdatePost() if not inGameOver then for i = 0, 3 do setPropertyFromGroup('strumLineNotes', i, 'ratingWindows.sick', judgementWindows.sick) setPropertyFromGroup('strumLineNotes', i, 'ratingWindows.good', judgementWindows.good) setPropertyFromGroup('strumLineNotes', i, 'ratingWindows.bad', judgementWindows.bad) setPropertyFromGroup('strumLineNotes', i, 'ratingWindows.shit', judgementWindows.shit) end end end basically fnf remix script better
-- Remix mode: faster song + more opponent notes function onSongStart() if remixMode then setProperty('songSpeed', remixSpeed) -- Double opponent note count (simple remix feel) for i=0, getProperty('notes.length')-1 do if getPropertyFromGroup('notes', i, 'mustPress') == false then local noteType = getPropertyFromGroup('notes', i, 'noteData') local strumTime = getPropertyFromGroup('notes', i, 'strumTime') -- Duplicate note slightly offset for "remix" flavor local newNote = strumTime = strumTime + 60, noteData = noteType, mustPress = false, sustainLength = 0, noteType = 'normal' table.insert(notes, newNote) end end sortNotes() -- re-sort by time end end
-- Toggle remix mode with 'R' key function onKeyPress(key) if key == 'r' then remixMode = not remixMode if remixMode then setProperty('songSpeed', remixSpeed) triggerEvent('Screen Shake', '0.01,0.01', '0.06') playSound('confirmMenu', 0.7) else setProperty('songSpeed', originalSpeed) playSound('cancelMenu', 0.7) end end end
-- Better input response: remove input delay buffer function onNoteHit() -- instantly kills the "ghost tapping" lag feel setProperty('comboOffset', 0) end
-- Optional: smoother strumline animations function onUpdate(elapsed) for i=0,3 do local scaleX = getPropertyFromGroup('strumLineNotes', i, 'scale.x') if scaleX < 1.2 then setPropertyFromGroup('strumLineNotes', i, 'scale.x', scaleX + (1.1 - scaleX) * 0.3) setPropertyFromGroup('strumLineNotes', i, 'scale.y', scaleX + (1.1 - scaleX) * 0.3) end end endHere’s a useful, ready-to-run script for a Friday
You will never achieve a better Basically FNF remix script if you use the vanilla FNF engine. You need a modded engine:
NoteEvent triggers. Recommendation: Use this.A complete, user-facing feature to replace/upgrade the FNF Remix Script experience with a cleaner, modular, and extensible engine for creating, editing, and playing custom Friday Night Funkin' remix scripts and charts.
function applyGimmick1() etc.Would you like a downloadable example .lua + .json pair for a full remix script, or help debugging a specific mechanic you’re trying to add? -- Override rating windows function onUpdatePost() if not
The signature sound of a Basically FNF remix is the vocal stutter. A bad script uses setProperty('vocals.pitch', getRandomFloat(0.8,1.2)) every frame. This destroys your CPU.
The Better Way: Use a step-based pitch shift that changes only on quarter notes.
function onBeatHit()
if curBeat % 2 == 0 then
setProperty('vocals.pitch', 1.1)
else
setProperty('vocals.pitch', 0.95)
end
end
This gives the chaotic "Basically" vibe but keeps the audio engine from stuttering.
A script that listens to getProperty('songScore') and modifies the enemy (Dad/GF) vocal volume inversely. If the player is losing, the enemy vocals get louder to simulate "pressure."