Prerequisites
Before compiling Friday Night Funkin’, you need to install the required tools:Haxe
Download from haxe.org
Required for compiling the game
Required for compiling the game
Git
Download from git-scm.com
Required for cloning the repository
Required for cloning the repository
Installation Steps
1
Navigate to Your Workspace
Open a command prompt/terminal and navigate to where you want the source code:
2
Clone the Repository
Clone the official Friday Night Funkin’ repository:Then enter the directory:
3
Download Game Assets
The game assets are in a separate submodule. Download them with:
Important Legal Notice: By downloading these assets, you are accessing proprietary content protected by copyright and trademark laws. See the assets LICENSE for terms.
4
Install Haxe Package Manager
Install
hmm (Haxe Module Manager) for managing dependencies:Having trouble with Lime?
Having trouble with Lime?
If you encounter issues installing Lime, try using Funkin’s patched libraries:
5
Install All Dependencies
Install all required Haxe libraries defined in This installs 30+ dependencies including:
hmm.json:- flixel: Game engine
- polymod: Modding framework
- hxvlc: Video playback (desktop)
- newgrounds: Newgrounds API
- And many more…
6
Set Up Lime
Configure the Lime framework:Follow the prompts to complete setup.
7
Platform-Specific Setup
Complete the setup for your target platform:
- Windows
- macOS
- Linux
- HTML5
Download Visual Studio Build ToolsWhen prompted, select “Individual Components” and install:
- ✅ MSVC v143 VS 2022 C++ x64/x86 build tools
- ✅ Windows 10/11 SDK
You don’t need the full Visual Studio IDE—just the Build Tools are sufficient.
8
Build Native Libraries (Optional)
For native desktop builds, rebuild the platform-specific libraries:Replace
windows with mac or linux for other platforms.This step is optional but recommended for first-time setup to ensure all C++ libraries are properly compiled.
9
Compile and Run
Build and launch the game:Replace
windows with your target platform:windows- Windows desktopmac- macOS desktoplinux- Linux desktophtml5- Web browser
Build Configurations
Debug vs Release Builds
- Debug Build
- Release Build
Debug builds include development features:Enabled Features:
- In-game debug functions (time travel with PgUp/PgDn)
- VSCode debug server for breakpoints
- Asset redirection from source folder
- No compiler optimizations
- Verbose logging
- Active development
- Testing and debugging
- Content creation
Common Build Flags
Customize your build with feature flags:A complete list of build flags is documented in
project.hxp. The flags control compilation of optional features to reduce build size and dependencies.Asset Redirection
For rapid iteration during development:assets/ folder instead of the export folder, allowing you to test changes without recompiling.
Build Output Locations
Compiled builds are placed in theexport/ directory:
Verify Your Build
Once the game launches, verify it’s working correctly:1
Check Version
The current version should display as v0.8.3 on the title screen.
2
Test Main Menu
Navigate through the main menu options:
- Story Mode
- Freeplay
- Options
3
Test a Song
Play a song in Freeplay to verify:
- Audio playback works
- Notes appear correctly
- Input is responsive
- Graphics render properly
Quick Reference
Essential Commands
File Locations
Next Steps
Learn to Play
Master the controls and gameplay mechanics
Start Modding
Create custom content with the modding framework
Contribute
Submit improvements to the main repository
Join Community
Connect with other developers and modders
Development Workflow
Once you have the game running, here’s a typical development workflow:1
Make Changes
Edit source code in
source/ or assets in assets/2
Hot Reload (Optional)
Press F5 in-game to reload scripts and data without recompiling (debug builds only)
3
Recompile
Run
lime test windows -debug to rebuild and launch4
Test
Verify your changes work as expected
5
Commit
Use Git to commit your changes
The hot reload feature (
F5) works for most assets and scripts but does not reload song charts or compiled code changes—those require a full recompile.