2020-10-03 06:50:15 +00:00
|
|
|
<?xml version="1.0" encoding="utf-8"?>
|
|
|
|
<project>
|
|
|
|
<!-- _________________________ Application Settings _________________________ -->
|
2022-03-08 08:13:53 +00:00
|
|
|
<app title="Friday Night Funkin'" file="Funkin" packageName="com.funkin.fnf" package="com.funkin.fnf" main="Main" version="0.3.0" company="ninjamuffin99" />
|
2020-11-08 00:56:29 +00:00
|
|
|
<!--Switch Export with Unique ApplicationID and Icon-->
|
2020-11-07 21:51:55 +00:00
|
|
|
<set name="APP_ID" value="0x0100f6c013bbc000" />
|
2024-03-28 08:34:43 +00:00
|
|
|
|
|
|
|
<!--
|
|
|
|
Define the OpenFL sprite which displays the preloader.
|
|
|
|
You can't replace the preloader's logic here, sadly, but you can extend it.
|
|
|
|
Basic preloading logic is done by `openfl.display.Preloader`.
|
|
|
|
-->
|
|
|
|
<app preloader="funkin.ui.transition.preload.FunkinPreloader" />
|
|
|
|
|
2020-10-03 06:50:15 +00:00
|
|
|
<!--Minimum without FLX_NO_GAMEPAD: 11.8, without FLX_NO_NATIVE_CURSOR: 11.2-->
|
|
|
|
<set name="SWF_VERSION" value="11.8" />
|
|
|
|
<!-- ____________________________ Window Settings ___________________________ -->
|
|
|
|
<!--These window settings apply to all targets-->
|
2024-03-28 08:34:43 +00:00
|
|
|
<window width="1280" height="720" fps="60" background="#000000" hardware="true" vsync="false" />
|
2020-10-03 06:50:15 +00:00
|
|
|
<!--HTML5-specific-->
|
|
|
|
<window if="html5" resizable="true" />
|
|
|
|
<!--Desktop-specific-->
|
2022-03-06 08:33:12 +00:00
|
|
|
<window if="desktop" orientation="landscape" fullscreen="false" resizable="true" vsync="false" />
|
2020-10-03 06:50:15 +00:00
|
|
|
<!--Mobile-specific-->
|
2022-03-06 08:33:12 +00:00
|
|
|
<window if="mobile" orientation="landscape" fullscreen="true" width="0" height="0" resizable="false" />
|
2020-10-03 06:50:15 +00:00
|
|
|
<!-- _____________________________ Path Settings ____________________________ -->
|
2023-08-28 19:03:29 +00:00
|
|
|
|
2020-10-03 19:32:15 +00:00
|
|
|
<set name="BUILD_DIR" value="export/debug" if="debug" />
|
|
|
|
<set name="BUILD_DIR" value="export/release" unless="debug" />
|
2020-10-09 21:24:20 +00:00
|
|
|
<set name="BUILD_DIR" value="export/32bit" if="32bit" />
|
2020-10-03 06:50:15 +00:00
|
|
|
<classpath name="source" />
|
2024-03-08 04:20:02 +00:00
|
|
|
<assets path="assets/preload" rename="assets" exclude="*.ogg|*.wav" if="web" />
|
|
|
|
<assets path="assets/preload" rename="assets" exclude="*.mp3|*.wav" unless="web" />
|
2021-02-10 20:18:14 +00:00
|
|
|
<define name="PRELOAD_ALL" unless="web" />
|
2022-03-06 08:33:12 +00:00
|
|
|
<define name="NO_PRELOAD_ALL" unless="PRELOAD_ALL" />
|
2021-02-11 19:14:02 +00:00
|
|
|
<section if="PRELOAD_ALL">
|
2022-03-06 08:33:12 +00:00
|
|
|
<library name="songs" preload="true" />
|
|
|
|
<library name="shared" preload="true" />
|
2021-02-10 20:28:05 +00:00
|
|
|
<library name="tutorial" preload="true" />
|
2022-03-06 08:33:12 +00:00
|
|
|
<library name="week1" preload="true" />
|
|
|
|
<library name="week2" preload="true" />
|
|
|
|
<library name="week3" preload="true" />
|
|
|
|
<library name="week4" preload="true" />
|
|
|
|
<library name="week5" preload="true" />
|
|
|
|
<library name="week6" preload="true" />
|
|
|
|
<library name="week7" preload="true" />
|
2022-07-07 01:49:42 +00:00
|
|
|
<library name="weekend1" preload="true" />
|
2024-04-05 05:24:03 +00:00
|
|
|
<library name="videos" preload="true" />
|
2021-02-10 20:28:05 +00:00
|
|
|
</section>
|
2021-02-11 19:14:02 +00:00
|
|
|
<section if="NO_PRELOAD_ALL">
|
2022-03-06 08:33:12 +00:00
|
|
|
<library name="songs" preload="false" />
|
|
|
|
<library name="shared" preload="false" />
|
2021-02-10 20:28:05 +00:00
|
|
|
<library name="tutorial" preload="false" />
|
2022-03-06 08:33:12 +00:00
|
|
|
<library name="week1" preload="false" />
|
|
|
|
<library name="week2" preload="false" />
|
|
|
|
<library name="week3" preload="false" />
|
|
|
|
<library name="week4" preload="false" />
|
|
|
|
<library name="week5" preload="false" />
|
|
|
|
<library name="week6" preload="false" />
|
|
|
|
<library name="week7" preload="false" />
|
2022-07-07 01:49:42 +00:00
|
|
|
<library name="weekend1" preload="false" />
|
2024-04-05 05:24:03 +00:00
|
|
|
<library name="videos" preload="false" />
|
2021-02-10 20:28:05 +00:00
|
|
|
</section>
|
2024-02-07 23:46:09 +00:00
|
|
|
<library name="art" preload="false" />
|
2024-03-08 04:20:02 +00:00
|
|
|
<assets path="assets/songs" library="songs" exclude="*.fla|*.ogg|*.wav" if="web" />
|
|
|
|
<assets path="assets/songs" library="songs" exclude="*.fla|*.mp3|*.wav" unless="web" />
|
2024-04-05 05:24:03 +00:00
|
|
|
<!-- Videos go in their own library because web never needs to preload them, they can just be streamed. -->
|
|
|
|
<assets path="assets/videos" library="videos" />
|
2024-03-08 04:20:02 +00:00
|
|
|
<assets path="assets/shared" library="shared" exclude="*.fla|*.ogg|*.wav" if="web" />
|
|
|
|
<assets path="assets/shared" library="shared" exclude="*.fla|*.mp3|*.wav" unless="web" />
|
|
|
|
<assets path="assets/tutorial" library="tutorial" exclude="*.fla|*.ogg|*.wav" if="web" />
|
|
|
|
<assets path="assets/tutorial" library="tutorial" exclude="*.fla|*.mp3|*.wav" unless="web" />
|
|
|
|
<assets path="assets/week1" library="week1" exclude="*.fla|*.ogg|*.wav" if="web" />
|
|
|
|
<assets path="assets/week1" library="week1" exclude="*.fla|*.mp3|*.wav" unless="web" />
|
|
|
|
<assets path="assets/week2" library="week2" exclude="*.fla|*.ogg|*.wav" if="web" />
|
|
|
|
<assets path="assets/week2" library="week2" exclude="*.fla|*.mp3|*.wav" unless="web" />
|
|
|
|
<assets path="assets/week3" library="week3" exclude="*.fla|*.ogg|*.wav" if="web" />
|
|
|
|
<assets path="assets/week3" library="week3" exclude="*.fla|*.mp3|*.wav" unless="web" />
|
|
|
|
<assets path="assets/week4" library="week4" exclude="*.fla|*.ogg|*.wav" if="web" />
|
|
|
|
<assets path="assets/week4" library="week4" exclude="*.fla|*.mp3|*.wav" unless="web" />
|
|
|
|
<assets path="assets/week5" library="week5" exclude="*.fla|*.ogg|*.wav" if="web" />
|
|
|
|
<assets path="assets/week5" library="week5" exclude="*.fla|*.mp3|*.wav" unless="web" />
|
|
|
|
<assets path="assets/week6" library="week6" exclude="*.fla|*.ogg|*.wav" if="web" />
|
|
|
|
<assets path="assets/week6" library="week6" exclude="*.fla|*.mp3|*.wav" unless="web" />
|
|
|
|
<assets path="assets/week7" library="week7" exclude="*.fla|*.ogg|*.wav" if="web" />
|
|
|
|
<assets path="assets/week7" library="week7" exclude="*.fla|*.mp3|*.wav" unless="web" />
|
|
|
|
<assets path="assets/weekend1" library="weekend1" exclude="*.fla|*.ogg|*.wav" if="web" />
|
|
|
|
<assets path="assets/weekend1" library="weekend1" exclude="*.fla|*.mp3|*.wav" unless="web" />
|
2021-03-10 05:27:57 +00:00
|
|
|
<!-- <assets path='example_mods' rename='mods' embed='false'/> -->
|
2022-04-18 23:36:09 +00:00
|
|
|
<!--
|
|
|
|
AUTOMATICALLY MOVING EXAMPLE MODS INTO THE BUILD CAUSES ISSUES
|
|
|
|
Currently, this line will add the mod files to the library manifest,
|
|
|
|
which causes issues if the mod is not enabled.
|
|
|
|
If we can exclude the `mods` folder from the manifest, we can re-enable this line.
|
|
|
|
<assets path='example_mods' rename='mods' embed='false' exclude="*.md" />
|
|
|
|
-->
|
2024-02-07 23:46:09 +00:00
|
|
|
<assets path="art/readme.txt" rename="do NOT readme.txt" library="art"/>
|
|
|
|
<assets path="CHANGELOG.md" rename="changelog.txt" library="art"/>
|
2023-06-08 20:34:06 +00:00
|
|
|
<!-- NOTE FOR FUTURE SELF SINCE FONTS ARE ALWAYS FUCKY
|
2021-02-01 06:50:30 +00:00
|
|
|
TO FIX ONE OF THEM, I CONVERTED IT TO OTF. DUNNO IF YOU NEED TO
|
|
|
|
THEN UHHH I USED THE NAME OF THE FONT WITH SETFORMAT() ON THE TEXT!!!
|
|
|
|
NOT USING A DIRECT THING TO THE ASSET!!!
|
|
|
|
-->
|
2023-06-08 20:34:06 +00:00
|
|
|
<assets path="assets/fonts" embed="true" />
|
2024-03-13 21:38:00 +00:00
|
|
|
|
|
|
|
<!-- If compiled via github actions, show debug version number. -->
|
|
|
|
<define name="FORCE_DEBUG_VERSION" if="GITHUB_BUILD" />
|
|
|
|
<define name="NO_REDIRECT_ASSETS_FOLDER" if="GITHUB_BUILD" />
|
2024-03-28 08:34:43 +00:00
|
|
|
<define name="TOUCH_HERE_TO_PLAY" if="web" />
|
2024-03-13 21:38:00 +00:00
|
|
|
|
2020-10-03 06:50:15 +00:00
|
|
|
<!-- _______________________________ Libraries ______________________________ -->
|
2023-02-22 01:58:15 +00:00
|
|
|
<haxelib name="lime" /> <!-- Game engine backend -->
|
|
|
|
<haxelib name="openfl" /> <!-- Game engine backend -->
|
|
|
|
<haxelib name="flixel" /> <!-- Game engine -->
|
2023-08-28 19:03:29 +00:00
|
|
|
|
2023-06-08 20:34:06 +00:00
|
|
|
<haxedev set="webgl" />
|
2023-08-28 19:03:29 +00:00
|
|
|
|
2023-02-22 01:58:15 +00:00
|
|
|
<haxelib name="flixel-addons" /> <!-- Additional utilities for Flixel -->
|
|
|
|
<haxelib name="hscript" /> <!-- Scripting -->
|
2023-12-14 22:34:02 +00:00
|
|
|
<haxelib name="flixel-ui" /> <!-- UI framework (DEPRECATED) -->
|
2023-06-08 20:34:06 +00:00
|
|
|
<haxelib name="haxeui-core" /> <!-- UI framework -->
|
|
|
|
<haxelib name="haxeui-flixel" /> <!-- Integrate HaxeUI with Flixel -->
|
2023-12-14 22:34:02 +00:00
|
|
|
<haxelib name="flixel-text-input" /> <!-- Improved text field rendering for HaxeUI -->
|
2023-02-22 01:58:15 +00:00
|
|
|
<haxelib name="polymod" /> <!-- Modding framework -->
|
|
|
|
<haxelib name="flxanimate" /> <!-- Texture atlas rendering -->
|
2024-03-28 01:32:13 +00:00
|
|
|
<haxelib name="hxCodec" if="desktop" unless="hl" /> <!-- Video playback -->
|
2023-06-16 21:37:56 +00:00
|
|
|
|
2023-05-17 20:42:58 +00:00
|
|
|
<haxelib name="json2object" /> <!-- JSON parsing -->
|
2023-12-14 22:34:02 +00:00
|
|
|
<haxelib name="thx.semver" /> <!-- Version string handling -->
|
|
|
|
|
|
|
|
<haxelib name="hxcpp-debug-server" if="desktop debug" /> <!-- VSCode debug support -->
|
2023-06-16 21:37:56 +00:00
|
|
|
|
2020-10-03 06:50:15 +00:00
|
|
|
<!--Disable the Flixel core focus lost screen-->
|
2021-01-25 10:04:31 +00:00
|
|
|
<haxedef name="FLX_NO_FOCUS_LOST_SCREEN" />
|
2020-10-03 06:50:15 +00:00
|
|
|
<!--Disable the Flixel core debugger. Automatically gets set whenever you compile in release mode!-->
|
2024-02-13 04:15:18 +00:00
|
|
|
<haxedef name="FLX_NO_DEBUG" unless="debug || FORCE_DEBUG_VERSION" />
|
2020-10-03 06:50:15 +00:00
|
|
|
<!--Enable this for Nape release builds for a serious peformance improvement-->
|
|
|
|
<haxedef name="NAPE_RELEASE_BUILD" unless="debug" />
|
|
|
|
|
2023-06-09 18:12:37 +00:00
|
|
|
<!--
|
2023-05-30 20:21:37 +00:00
|
|
|
Hide deprecation warnings until they're fixed.
|
|
|
|
TODO: REMOVE THIS!!!!
|
2024-02-06 00:46:11 +00:00
|
|
|
<haxeflag name="-w" value="-WDeprecated" />
|
2023-05-30 20:21:37 +00:00
|
|
|
-->
|
2023-05-17 20:42:58 +00:00
|
|
|
|
2023-05-30 20:21:37 +00:00
|
|
|
<!-- Haxe 4.3.0+: Enable pretty syntax errors and stuff. -->
|
2024-01-10 00:31:39 +00:00
|
|
|
<haxedef name="message.reporting" value="pretty" />
|
2023-05-30 20:21:37 +00:00
|
|
|
|
2022-03-08 08:13:53 +00:00
|
|
|
<!-- _________________________________ Custom _______________________________ -->
|
2024-01-10 05:20:00 +00:00
|
|
|
<!-- Disable trace() calls in release builds to bump up performance.
|
|
|
|
<haxeflag name="- -no-traces" unless="debug" />-->
|
2022-03-06 07:37:38 +00:00
|
|
|
<!-- HScript relies heavily on Reflection, which means we can't use DCE. -->
|
2022-03-08 08:13:53 +00:00
|
|
|
<haxeflag name="-dce no" />
|
2023-01-23 00:55:30 +00:00
|
|
|
<!-- Ensure all Funkin' classes are available at runtime. -->
|
2022-03-08 08:13:53 +00:00
|
|
|
<haxeflag name="--macro" value="include('funkin')" />
|
2022-08-24 09:44:22 +00:00
|
|
|
<!-- Ensure all UI components are available at runtime. -->
|
2023-02-28 18:17:28 +00:00
|
|
|
<haxeflag name="--macro" value="include('haxe.ui.backend.flixel.components')" />
|
|
|
|
<haxeflag name="--macro" value="include('haxe.ui.containers.dialogs')" />
|
|
|
|
<haxeflag name="--macro" value="include('haxe.ui.containers.menus')" />
|
|
|
|
<haxeflag name="--macro" value="include('haxe.ui.containers.properties')" />
|
|
|
|
<haxeflag name="--macro" value="include('haxe.ui.core')" />
|
2023-06-08 20:34:06 +00:00
|
|
|
<haxeflag name="--macro" value="include('haxe.ui.components')" />
|
|
|
|
<haxeflag name="--macro" value="include('haxe.ui.containers')" />
|
2023-01-23 00:55:30 +00:00
|
|
|
<!--
|
|
|
|
Ensure additional class packages are available at runtime (some only really used by scripts).
|
|
|
|
Ignore packages we can't include.
|
|
|
|
-->
|
|
|
|
<haxeflag name="--macro" value="include('flixel', true, [ 'flixel.addons.editors.spine.*', 'flixel.addons.nape.*', 'flixel.system.macros.*' ])" />
|
2022-03-08 08:13:53 +00:00
|
|
|
<!-- Necessary to provide stack traces for HScript. -->
|
2022-04-18 23:36:09 +00:00
|
|
|
<haxedef name="hscriptPos" />
|
2023-08-28 19:03:29 +00:00
|
|
|
<haxedef name="safeMode"/>
|
2022-01-18 23:28:41 +00:00
|
|
|
<haxedef name="HXCPP_CHECK_POINTER" />
|
|
|
|
<haxedef name="HXCPP_STACK_LINE" />
|
2023-08-28 19:03:29 +00:00
|
|
|
<haxedef name="HXCPP_STACK_TRACE" />
|
2022-03-08 08:13:53 +00:00
|
|
|
<!-- This macro allows addition of new functionality to existing Flixel. -->
|
|
|
|
<haxeflag name="--macro" value="addMetadata('@:build(funkin.util.macro.FlxMacro.buildFlxBasic())', 'flixel.FlxBasic')" />
|
2020-10-03 06:50:15 +00:00
|
|
|
<!--Place custom nodes like icons here (higher priority to override the HaxeFlixel icon)-->
|
2023-06-08 20:34:06 +00:00
|
|
|
<icon path="art/icon16.png" size="16" />
|
|
|
|
<icon path="art/icon32.png" size="32" />
|
|
|
|
<icon path="art/icon64.png" size="64" />
|
2021-02-16 06:53:25 +00:00
|
|
|
<icon path="art/iconOG.png" />
|
2022-03-06 08:33:12 +00:00
|
|
|
<haxedef name="CAN_OPEN_LINKS" unless="switch" />
|
|
|
|
<haxedef name="CAN_CHEAT" if="switch debug" />
|
2023-11-24 05:42:07 +00:00
|
|
|
<!-- I don't remember what this is for. -->
|
2022-10-26 05:14:29 +00:00
|
|
|
<haxedef name="haxeui_no_mouse_reset" />
|
2023-10-27 05:42:05 +00:00
|
|
|
<!-- Clicking outside a dialog should deselect the current focused component. -->
|
|
|
|
<haxedef name="haxeui_focus_out_on_click" />
|
2023-11-24 05:42:07 +00:00
|
|
|
<!-- Required to use haxe.ui.backend.flixel.UIState with build macros. -->
|
|
|
|
<haxedef name="haxeui_dont_impose_base_class" />
|
2024-03-26 16:33:54 +00:00
|
|
|
<haxedef name="HARDCODED_CREDITS" />
|
2023-11-24 05:42:07 +00:00
|
|
|
|
2022-02-10 01:24:33 +00:00
|
|
|
<!-- Skip the Intro -->
|
2022-02-10 01:34:32 +00:00
|
|
|
<section if="debug">
|
2022-02-10 01:24:33 +00:00
|
|
|
<!-- Starts the game at the specified week, at the first song -->
|
|
|
|
<!-- <haxedef name="week" value="1" if="debug"/> -->
|
|
|
|
<!-- Starts the game at the specified song -->
|
|
|
|
<!-- <haxedef name="song" value="bopeebo" if="debug"/> -->
|
|
|
|
<!-- Difficulty, only used for week or song, defaults to 1 -->
|
|
|
|
<!-- <haxedef name="dif" value="2" if="debug"/> -->
|
|
|
|
</section>
|
2021-02-20 02:11:33 +00:00
|
|
|
<section if="newgrounds">
|
|
|
|
<!-- Enables Ng.core.verbose -->
|
2021-02-21 18:08:30 +00:00
|
|
|
<!-- <haxedef name="NG_VERBOSE" /> -->
|
2021-02-20 02:11:33 +00:00
|
|
|
<!-- Enables a NG debug session, so medals don't permently unlock -->
|
|
|
|
<!-- <haxedef name="NG_DEBUG" /> -->
|
|
|
|
<!-- pretends that the saved session Id was expired, forcing the reconnect prompt -->
|
|
|
|
<!-- <haxedef name="NG_FORCE_EXPIRED_SESSION" if="debug" /> -->
|
|
|
|
</section>
|
2023-08-15 03:12:30 +00:00
|
|
|
|
2023-08-28 19:03:29 +00:00
|
|
|
<!-- Uncomment this to wipe your input settings. -->
|
|
|
|
<!-- <haxedef name="CLEAR_INPUT_SAVE"/> -->
|
|
|
|
|
2024-03-12 21:57:52 +00:00
|
|
|
<section if="debug" unless="NO_REDIRECT_ASSETS_FOLDER || html5 || GITHUB_BUILD">
|
2023-07-18 01:54:58 +00:00
|
|
|
<!--
|
|
|
|
Use the parent assets folder rather than the exported one
|
|
|
|
No more will we accidentally undo our changes!
|
|
|
|
-->
|
|
|
|
<haxedef name="REDIRECT_ASSETS_FOLDER" />
|
|
|
|
</section>
|
2023-08-15 03:12:30 +00:00
|
|
|
|
2023-10-17 04:38:28 +00:00
|
|
|
|
|
|
|
<section>
|
|
|
|
<!--
|
|
|
|
This flag enables the popup/crashlog error handler.
|
|
|
|
However, it also messes with breakpoints on some platforms.
|
|
|
|
-->
|
|
|
|
<haxedef name="openfl-enable-handle-error" />
|
|
|
|
</section>
|
|
|
|
|
2023-08-28 19:03:29 +00:00
|
|
|
<!-- Run a script before and after building. -->
|
2024-02-13 05:18:47 +00:00
|
|
|
<prebuild haxe="source/Prebuild.hx"/> -->
|
2023-08-28 19:03:29 +00:00
|
|
|
<postbuild haxe="source/Postbuild.hx"/> -->
|
|
|
|
|
2023-09-08 21:41:20 +00:00
|
|
|
<!-- Enable this on platforms which do not support dropping files onto the window. -->
|
2024-03-13 21:38:00 +00:00
|
|
|
<haxedef name="FILE_DROP_UNSUPPORTED" if="mac" />
|
2023-09-08 21:41:20 +00:00
|
|
|
<section unless="FILE_DROP_UNSUPPORTED">
|
2024-03-13 21:38:00 +00:00
|
|
|
<haxedef name="FILE_DROP_SUPPORTED" />
|
2023-09-08 21:41:20 +00:00
|
|
|
</section>
|
|
|
|
|
2022-01-20 22:47:42 +00:00
|
|
|
<!-- Options for Polymod -->
|
|
|
|
<section if="polymod">
|
|
|
|
<!-- Turns on additional debug logging. -->
|
|
|
|
<haxedef name="POLYMOD_DEBUG" value="true" if="debug" />
|
|
|
|
<!-- The file extension to use for script files. -->
|
|
|
|
<haxedef name="POLYMOD_SCRIPT_EXT" value=".hscript" />
|
|
|
|
<!-- Which asset library to use for scripts. -->
|
|
|
|
<haxedef name="POLYMOD_SCRIPT_LIBRARY" value="scripts" />
|
|
|
|
<!-- The base path from which scripts should be accessed. -->
|
|
|
|
<haxedef name="POLYMOD_ROOT_PATH" value="scripts/" />
|
|
|
|
<!-- Determines the subdirectory of the mod folder used for file appending. -->
|
|
|
|
<haxedef name="POLYMOD_APPEND_FOLDER" value="_append" />
|
|
|
|
<!-- Determines the subdirectory of the mod folder used for file merges. -->
|
|
|
|
<haxedef name="POLYMOD_MERGE_FOLDER" value="_merge" />
|
|
|
|
<!-- Determines the file in the mod folder used for metadata. -->
|
|
|
|
<haxedef name="POLYMOD_MOD_METADATA_FILE" value="_polymod_meta.json" />
|
|
|
|
<!-- Determines the file in the mod folder used for the icon. -->
|
|
|
|
<haxedef name="POLYMOD_MOD_ICON_FILE" value="_polymod_icon.png" />
|
|
|
|
</section>
|
2023-06-08 20:34:06 +00:00
|
|
|
</project>
|