From 158c015682ef9d4c89b78c6ca6c3a70308771f97 Mon Sep 17 00:00:00 2001 From: EliteMasterEric Date: Fri, 4 Apr 2025 15:16:26 -0400 Subject: [PATCH 01/12] Use public URLs for git submodules --- .gitmodules | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitmodules b/.gitmodules index ad8099e60..f9d5fd497 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,6 +1,6 @@ [submodule "assets"] path = assets - url = https://github.com/FunkinCrew/Funkin-assets-secret + url = https://github.com/FunkinCrew/Funkin.assets [submodule "art"] path = art - url = https://github.com/FunkinCrew/Funkin-art-secret + url = https://github.com/FunkinCrew/Funkin.art From 6543c5836393dfc1437f4d335a247f03a39ab19e Mon Sep 17 00:00:00 2001 From: Hundrec Date: Sat, 5 Apr 2025 22:23:56 -0600 Subject: [PATCH 02/12] Restore Contributing Guide to latest version Merge conflicts yay Co-Authored-By: Abnormal <86753001+AbnormalPoof@users.noreply.github.com> --- docs/CONTRIBUTING.md | 228 ++++++++++++++++++++++++++++++++----------- 1 file changed, 170 insertions(+), 58 deletions(-) diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md index d9eea297b..0f1985fab 100644 --- a/docs/CONTRIBUTING.md +++ b/docs/CONTRIBUTING.md @@ -39,6 +39,8 @@ This guide will cover best practices for each type of contribution. * [funkin.assets PRs](https://github.com/FunkinCrew/Funkin/blob/main/docs/CONTRIBUTING.md#funkinassets-prs) + * [Charting PRs](https://github.com/FunkinCrew/Funkin/blob/main/docs/CONTRIBUTING.md#charting-prs) + [Closing](https://github.com/FunkinCrew/Funkin/blob/main/docs/CONTRIBUTING.md#closing) @@ -58,7 +60,7 @@ This section provides guidelines to follow when [opening an issue](https://githu ## Requirements Make sure you're playing: -- the latest version of the game (currently v0.5.3) +- the latest version of the game (currently v0.6.2) - without any mods - on [Newgrounds](https://www.newgrounds.com/portal/view/770371) or downloaded from [itch.io](https://ninja-muffin24.itch.io/funkin) @@ -122,6 +124,9 @@ Also only report one issue or enhancement at a time! If you have multiple bug re Once you're sure your issue is unique and specific, feel free to submit it. +> [!IMPORTANT] +> **DO NOT CLOSE YOUR ISSUE FOR ANY REASON!** Your issue will be taken care of by a moderator! + **Thank you for opening issues!** # Part 3: Pull Requests @@ -133,6 +138,7 @@ When creating a branch in your fork, base your branch on either the `main` or `d > [!CAUTION] > Avoid using your fork's default branch (`main` in this case) for your PR. This is considered an [anti-pattern](https://jmeridth.com/posts/do-not-issue-pull-requests-from-your-master-branch/) by GitHub themselves! +> Instead, make a separate branch for your additions (ex. `docs/fix-typo` or `minor-bugfix`). Choose the `main` branch if you modify: - Documentation (`.md` files) @@ -165,81 +171,169 @@ This process reapplies your changes on top of the updated branch and cleanly res > This guide does not cover compiling. If you have trouble compiling the game, refer to the [Compilation Guide](https://github.com/FunkinCrew/Funkin/blob/main/docs/COMPILING.md). Code-based PRs make changes such as **fixing bugs** or **implementing new features** in the game. + This involves modifying one or several of the repository’s `.hx` files, found within the `source/` folder. ### Codestyle -Before submitting your PR, check that your code follows the [Style Guide](https://github.com/FunkinCrew/Funkin/blob/main/docs/style-guide.md). +Before submitting your PR, check that your code follows the [Style Guide](https://github.com/FunkinCrew/Funkin/blob/main/docs/style-guide.md). This keeps your code consistent with the rest of the codebase! +### Code comments +Code comments help others understand your changes, so the way you write them is important! Here are some guidelines for writing comments in your code: -- Leave comments only when you believe a piece of code warrants explanation. +- Leave comments only when you believe a piece of code warrants explanation. If a piece of code is self-explanatory, it does not need a comment. - Ensure that your comments provide meaningful insight into the function or purpose of the code. - Write your comments in a clear and concise manner. - Only sign your comments with your name when your changes are complex and may require further explanation. -### Example Comments +### Example code comments #### DO NOT: +Below are examples of what you SHOULD NOT do when writing code comments. ```haxe - /** - * jumps around the song - * works with bpm changes but skipped notes still hurt - * @param sections how many sections to jump, negative = backwards - */ - function changeSection(sections:Int):Void +/** + * jumps around the song + * works with bpm changes but skipped notes still hurt + * @param sections how many sections to jump, negative = backwards + */ +function changeSection(sections:Int):Void +{ + // Pause the music, as you probably guessed + // FlxG.sound.music.pause(); + + // Set the target time in steps, I don’t really get how this works though lol - [GitHub username] + var targetTimeSteps:Float = Conductor.instance.currentStepTime + (Conductor.instance.stepsPerMeasure * sections); + var targetTimeMs:Float = Conductor.instance.getStepTimeInMs(targetTimeSteps); + + // Don't go back in time to before the song started, that would probably break a lot of things and cause a bunch of problems! + targetTimeMs = Math.max(0, targetTimeMs); + + if (FlxG.sound.music != null) // If the music is not null, set the time to the target time { - // Pause the music, as you probably guessed - // FlxG.sound.music.pause(); - - // Set the target time in steps, I don’t really get how this works though lol - [GitHub username] - var targetTimeSteps:Float = Conductor.instance.currentStepTime + (Conductor.instance.stepsPerMeasure * sections); - var targetTimeMs:Float = Conductor.instance.getStepTimeInMs(targetTimeSteps); - - // Don't go back in time to before the song started, that would probably break a lot of things and cause a whole bunch of problems! - targetTimeMs = Math.max(0, targetTimeMs); - - if (FlxG.sound.music != null) // If the music is not null, set the time to the target time - { - FlxG.sound.music.time = targetTimeMs; - } - - // Handle skipped notes and events and all that jazz - handleSkippedNotes(); - SongEventRegistry.handleSkippedEvents(songEvents, Conductor.instance.songPosition); - // regenNoteData(FlxG.sound.music.time); - - Conductor.instance.update(FlxG.sound?.music?.time ?? 0.0); - - // I hate this function - [GitHub username] - resyncVocals(); + FlxG.sound.music.time = targetTimeMs; } + + // Handle skipped notes and events and all that jazz + handleSkippedNotes(); + SongEventRegistry.handleSkippedEvents(songEvents, Conductor.instance.songPosition); + // regenNoteData(FlxG.sound.music.time); + + Conductor.instance.update(FlxG.sound?.music?.time ?? 0.0); + + // I hate this function - [GitHub username] + resyncVocals(); +} +``` + +```haxe +// End the song when the music is complete. +FlxG.sound.music.onComplete = function() { + endSong(skipEndingTransition); +}; +// A negative instrumental offset means the song skips the first few milliseconds of the track. +// This just gets added into the startTimestamp behavior so we don't need to do anything extra. +FlxG.sound.music.play(true, Math.max(0, startTimestamp - Conductor.instance.combinedOffset)); +FlxG.sound.music.pitch = playbackRate; + +// Prevent the volume from being wrong. +FlxG.sound.music.volume = 1.0; +// IF fadetween is not null we cancel it +if (FlxG.sound.music.fadeTween != null) FlxG.sound.music.fadeTween.cancel(); + +// Play the vocals +trace('Playing vocals...'); +// Add the vocals +add(vocals); +// Play the vocals for real this time lol +vocals.play(); +// Set the vocals volume +vocals.volume = 1.0; +// Set the vocals pitch +vocals.pitch = playbackRate; +// Set the vocals time to the music time +vocals.time = FlxG.sound.music.time; +// trace('${FlxG.sound.music.time}'); +// trace('${vocals.time}'); +// functionThatWasntHereBeforeThisPRorSomethingIdKLOL(); +/* testsprite = new FlxSprite(0, 0); +testsprite.loadGraphic(Paths.image('test')); +testsprite.screenCenter(); +add(testsprite); */ + +// Me too [GitHub username] I hate this function it gave me pain and suffering - Girlfriend +resyncVocals(); +``` + +```haxe +#if FEATURE_DEBUG_FUNCTIONS +// PAGEUP: who knows what this does +// SHIFT+PAGEUP: There will be dire consequences. +if (FlxG.keys.justPressed.PAGEUP) changeSection(FlxG.keys.pressed.SHIFT ? 20 : 2); +// PAGEUP: who knows what this does +// SHIFT+PAGEUP: There will be dire consequences. +if (FlxG.keys.justPressed.PAGEDOWN) changeSection(FlxG.keys.pressed.SHIFT ? -20 : -2); +#end ``` #### DO: +Below are examples on what you SHOULD do when writing code comments. ```haxe - /** - * Jumps forward or backward a number of sections in the song. - * Accounts for BPM changes, does not prevent death from skipped notes. - * @param sections The number of sections to jump, negative to go backwards. - */ - function changeSection(sections:Int):Void +/** + * Jumps forward or backward a number of sections in the song. + * Accounts for BPM changes, does not prevent death from skipped notes. + * @param sections The number of sections to jump, negative to go backwards. + */ +function changeSection(sections:Int):Void +{ + var targetTimeSteps:Float = Conductor.instance.currentStepTime + (Conductor.instance.stepsPerMeasure * sections); + var targetTimeMs:Float = Conductor.instance.getStepTimeInMs(targetTimeSteps); + + // Don't go back in time to before the song started. + targetTimeMs = Math.max(0, targetTimeMs); + + if (FlxG.sound.music != null) { - var targetTimeSteps:Float = Conductor.instance.currentStepTime + (Conductor.instance.stepsPerMeasure * sections); - var targetTimeMs:Float = Conductor.instance.getStepTimeInMs(targetTimeSteps); - - // Don't go back in time to before the song started. - targetTimeMs = Math.max(0, targetTimeMs); - - if (FlxG.sound.music != null) - { - FlxG.sound.music.time = targetTimeMs; - } - - handleSkippedNotes(); - SongEventRegistry.handleSkippedEvents(songEvents, Conductor.instance.songPosition); - - Conductor.instance.update(FlxG.sound?.music?.time ?? 0.0); - - resyncVocals(); + FlxG.sound.music.time = targetTimeMs; } + + handleSkippedNotes(); + SongEventRegistry.handleSkippedEvents(songEvents, Conductor.instance.songPosition); + + Conductor.instance.update(FlxG.sound?.music?.time ?? 0.0); + + resyncVocals(); +} +``` + +```haxe +FlxG.sound.music.onComplete = function() { + endSong(skipEndingTransition); +}; +// A negative instrumental offset means the song skips the first few milliseconds of the track. +// This just gets added into the startTimestamp behavior so we don't need to do anything extra. +FlxG.sound.music.play(true, Math.max(0, startTimestamp - Conductor.instance.combinedOffset)); +FlxG.sound.music.pitch = playbackRate; + +// Prevent the volume from being wrong. +FlxG.sound.music.volume = 1.0; +if (FlxG.sound.music.fadeTween != null) FlxG.sound.music.fadeTween.cancel(); + +trace('Playing vocals...'); +add(vocals); +vocals.play(); +vocals.volume = 1.0; +vocals.pitch = playbackRate; +vocals.time = FlxG.sound.music.time; +resyncVocals(); +``` + +```haxe +#if FEATURE_DEBUG_FUNCTIONS +// PAGEUP: Skip forward two sections. +// SHIFT+PAGEUP: Skip forward twenty sections. +if (FlxG.keys.justPressed.PAGEUP) changeSection(FlxG.keys.pressed.SHIFT ? 20 : 2); +// PAGEDOWN: Skip backward two section. Doesn't replace notes. +// SHIFT+PAGEDOWN: Skip backward twenty sections. +if (FlxG.keys.justPressed.PAGEDOWN) changeSection(FlxG.keys.pressed.SHIFT ? -20 : -2); +#end ``` ## Documentation PRs @@ -297,7 +391,25 @@ If you simultaneously modify files from both repositories, then open two separat Be sure to choose `main` as the base branch for `funkin.assets` PRs, as no `develop` branch exists for that repository. +### Charting PRs +Charting PRs make changes such as **adding/removing notes** or **adjusting the placement of song events**. + +This involves modifying one or several of the `funkin.assets` repository's `.json` chart files, found in the `preload/data/songs/` directory. + +These PRs should only be opened in the `funkin.assets` repository. + +> [!CAUTION] +> **No Major Recharts!** Any PR that makes major chart modifications will be rejected. +> Keep your PRs to small tweaks and fixes. + +Here are some guidelines for opening a Charting PR: +- **Explain the issue.** Which song, variation, difficulty, and section/timestamp is the problem in? Help us understand with screenshots and videos. +- **Show your changes.** How does the chart look with your changes? Provide screenshots and videos here as well. +- **Minimize the diff.** If your changes are very small (e.g. a few notes), do not re-export the chart using the Chart Editor. Instead, manually edit the `.json` chart files to help GitHub display your changes cleanly. + +If your PR is accepted, you will be credited as a GitHub contributor (but not as a charter in the Pause Menu). + # Closing Thank you for reading the Contributing Guide. -We look forward to seeing your contributions to the game! +We look forward to seeing your contributions to the game! \ No newline at end of file From 3218ceeecdd75c0266b7631f4da6ce3e63cda3d7 Mon Sep 17 00:00:00 2001 From: Hundrec Date: Tue, 18 Mar 2025 04:00:18 -0600 Subject: [PATCH 03/12] Consistent hyphens in CODESTYLE.md --- CODESTYLE.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CODESTYLE.md b/CODESTYLE.md index 2b6333258..32723531e 100644 --- a/CODESTYLE.md +++ b/CODESTYLE.md @@ -14,8 +14,8 @@ Code Quality is handled by the `vshaxe.haxe-checkstyle` extension, which include * `IndentationCharacter` checks what is used to indent, `Indentation` checks how deep the indentation is. * `CommentedOutCode` check is in place because old code should be retrieved via Git history. * TODO items: Enable these one-by-one and fix them to improve the overall code quality. - - Reconfigure `MethodLength` - - Reconfigure `CyclomaticComplexity` + - Re-configure `MethodLength` + - Re-configure `CyclomaticComplexity` - Re-enable `MagicNumber` - Re-configure `NestedControlFlow` - Re-configure `NestedIfDepth` @@ -28,5 +28,5 @@ Prettier automatically handles formatting of JSON files, and can be configured i ### Prettier Notes * Prettier will automatically attempt to place expressions on a single line if they fit, but will keep them multi-line if they are manually made multi-line. - * This means that long singleline objects are automatically expanded, and short multiline objects aren't automatically collapsed. + * This means that long single-line objects are automatically expanded, and short multi-line objects aren't automatically collapsed. * You may want to use regex replacement to manually remove the first newline in short multi-line objects to convince Prettier to collapse them. From fcb47ff4fca1624ac6e97e890841178770130578 Mon Sep 17 00:00:00 2001 From: Hundrec Date: Tue, 18 Mar 2025 04:01:58 -0600 Subject: [PATCH 04/12] Grammatical fix in style-guide.md --- docs/style-guide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/style-guide.md b/docs/style-guide.md index 4c4e01492..4df4a163d 100644 --- a/docs/style-guide.md +++ b/docs/style-guide.md @@ -4,7 +4,7 @@ This short document is designed to give a run-down on how code should be formatt ## Notes on IDEs and Extensions -The Visual Studio Code IDE is highly recommended, as this repo contains various configuration that works with VSCode extensions to automatically style certain things for you. +The Visual Studio Code IDE is highly recommended, as this repo contains various configurations that work with VSCode extensions to automatically style certain things for you. VSCode is also the only IDE that has any good tools for Haxe so yeah. From b35059ec999fb47831521bdfb8bda94b369481c0 Mon Sep 17 00:00:00 2001 From: Hyper_ <40342021+NotHyper-474@users.noreply.github.com> Date: Fri, 4 Apr 2025 22:43:25 -0300 Subject: [PATCH 05/12] docs: (COMPILING.md) Remove outdated info about Lime fork --- docs/COMPILING.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/COMPILING.md b/docs/COMPILING.md index f193b7830..c18c5e5e7 100644 --- a/docs/COMPILING.md +++ b/docs/COMPILING.md @@ -21,8 +21,8 @@ - Windows 10/11 SDK - Mac: [`lime setup mac` Documentation](https://lime.openfl.org/docs/advanced-setup/macos/) - Linux: [`lime setup linux` Documentation](https://lime.openfl.org/docs/advanced-setup/linux/) - - Note: Funkin's fork currently doesn't come with the necessary binaries so you'll have to rebuild Lime. See [Troubleshooting](TROUBLESHOOTING.md#lime-related-issues). - - One of Funkin's dependencies uses libVLC, which requires you to install some packages to be able to compile: `sudo apt install libvlc-dev libvlccore-dev libvlccore9` + - One of Funkin's dependencies uses libVLC, which requires you to install some development packages to be able to compile. + Command for Ubuntu/Debian based systems: `sudo apt install libvlc-dev libvlccore-dev libvlccore9` - HTML5: Compiles without any extra setup 9. If you are targeting for native, you may need to run `lime rebuild ` and `lime rebuild -debug` 10. `lime test ` to build and launch the game for your platform (for example, `lime test windows`) From 8e8dcaa7f9bfe280395194ca264071ac513c04ff Mon Sep 17 00:00:00 2001 From: Hyper_ <40342021+NotHyper-474@users.noreply.github.com> Date: Mon, 7 Apr 2025 00:11:30 -0300 Subject: [PATCH 06/12] docs: (TROUBLESHOOTING.md) Correct outdated information about Lime troubleshooting The commit of Lime that Funkin uses now includes Linux NDLLs. These are built on a system with GLibC 2.38 though which breaks compatibility with lots of stable distributions troubleshooting was added for those systems too. --- docs/TROUBLESHOOTING.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/docs/TROUBLESHOOTING.md b/docs/TROUBLESHOOTING.md index b17ee72b1..f488f28de 100644 --- a/docs/TROUBLESHOOTING.md +++ b/docs/TROUBLESHOOTING.md @@ -36,7 +36,8 @@ (NOTE: Make sure you do this via `hmm` (e.g `hmm reinstall -f lime`) to guarantee you get Funkin's version of Lime.) - `Uncaught exception - Could not find lime.ndll.` ... `Advanced users may run "lime rebuild cpp" instead.` - - Usually specific to Linux. Running the commands below should fix it. + - If on Linux: + - The binaries GLibC version might more recent than the one your system supports. Running the commands below should fix it. ``` cd .haxelib/lime/git git submodule init @@ -47,4 +48,6 @@ sudo apt install libgl1-mesa-dev libglu1-mesa-dev g++ g++-multilib gcc-multilib libasound2-dev libx11-dev libxext-dev libxi-dev libxrandr-dev libxinerama-dev libpulse-dev lime rebuild cpp -64 -release -clean ``` - For Windows or MacOS you can download pre-built binaries from [Funkin's Lime](https://github.com/FunkinCrew/lime/tree/dev-funkin/ndll). + + - The binaries are missing for some reason. You can download pre-built binaries from [Funkin's Lime](https://github.com/FunkinCrew/lime/tree/dev-funkin/ndll). + You should copy them to `.haxelib/lime/git/ndll/64/`, where `` is the current platform you're on, which can be either Windows, Linux or MacOS. From 1434820d10d4843e7384b3d980b1426c3455520d Mon Sep 17 00:00:00 2001 From: Lasercar <64717068+Lasercar@users.noreply.github.com> Date: Sun, 6 Apr 2025 13:21:22 +1000 Subject: [PATCH 07/12] remove removed debug keys --- docs/Funkin' Debug Hotkeys.md | 5 ----- 1 file changed, 5 deletions(-) diff --git a/docs/Funkin' Debug Hotkeys.md b/docs/Funkin' Debug Hotkeys.md index 9c10f060c..dc567eda0 100644 --- a/docs/Funkin' Debug Hotkeys.md +++ b/docs/Funkin' Debug Hotkeys.md @@ -12,9 +12,6 @@ Most of this functionality is only available on debug builds of the game! - `CTRL-SHIFT-L`: ***FORCE CRASH***: Immediately crash the game with a detailed crash log and a stack trace. -## Loading State -- `SPACE`: Trace callbacks. - ## **Play State** - `H`: ***HIDE UI***: Makes the user interface invisible. Works in Pause Menu, great for screenshots. - `1`: ***END SONG***: Immediately ends the song and moves to Results Screen on Freeplay, or next song on Story Mode. @@ -31,8 +28,6 @@ Most of this functionality is only available on debug builds of the game! - `T`: ***TEST RANK ANIMATION***: Play the Gold Perfect rank animation on the currently selected song. - `SHIFT-ACCEPT`: ***BOTPLAY MODE***: Start a song with Botplay mode enabled. - `CTRL-Switch Song`: Play the first unlocked alternate instrumental as the song preview. -- `CTRL-LEFT`/`RIGHT`/`UP`/`DOWN`: ***OFFSET BF DJ IN CARTOON STATE***: While BF DJ's TV animation is playing, offset the DJ by 1 pixel in the opposite direction. `SHIFT` to move 10 pixels, `ALT` to move 0.1 pixels. -- `CTRL-C`: ***TRIGGER DJ CARTOON***: Play the Freeplay DJ's cartoon animation. Press again to return to its regular animation. ## **Title State** - `ESCAPE`: ***QUIT***: Quit the game. From 34bb58015d035acb137fa1e1a8fe3aab2e5ab0b3 Mon Sep 17 00:00:00 2001 From: Hundrec Date: Sat, 12 Apr 2025 22:33:34 -0600 Subject: [PATCH 08/12] Add Combo Milestones to Rejected Features list --- docs/CONTRIBUTING.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md index 0f1985fab..805a90853 100644 --- a/docs/CONTRIBUTING.md +++ b/docs/CONTRIBUTING.md @@ -74,6 +74,7 @@ Here's a list of commonly suggested features and the reasons why they won't be a | Toggleable Ghost Tapping | https://github.com/FunkinCrew/Funkin/pull/2564#issuecomment-2119701802 | | Perfectly Centered Strumlines | _same as above^_ | | MultiKey, 9k, More than 4 keys, etc. | https://github.com/FunkinCrew/Funkin/issues/4243#issuecomment-2692371969 | +| Flashy Combo Milestones | https://github.com/FunkinCrew/Funkin/pull/4700#issuecomment-2798916579 | | Losing Icons for DD and Parents | https://github.com/FunkinCrew/Funkin/issues/3048#issuecomment-2243491536 | | Playable GF / Speaker BF / Speaker Pico | https://github.com/FunkinCrew/Funkin/issues/2953#issuecomment-2216985230 | | Fresh (Chill Mix) as Title Screen Music | https://github.com/FunkinCrew/Funkin/pull/4282#issuecomment-2709334718 | @@ -412,4 +413,4 @@ If your PR is accepted, you will be credited as a GitHub contributor (but not as # Closing Thank you for reading the Contributing Guide. -We look forward to seeing your contributions to the game! \ No newline at end of file +We look forward to seeing your contributions to the game! From 926d8c0517d8c370ea39dd5d55f4b821b9ef2903 Mon Sep 17 00:00:00 2001 From: Abnormal <86753001+AbnormalPoof@users.noreply.github.com> Date: Tue, 22 Apr 2025 18:01:28 -0500 Subject: [PATCH 09/12] Contributor's Guide Maintenance Policy Co-authored-by: Hundrec Co-authored-by: Abnormal <86753001+AbnormalPoof@users.noreply.github.com> --- docs/CONTRIBUTING.md | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md index 805a90853..bccc5894a 100644 --- a/docs/CONTRIBUTING.md +++ b/docs/CONTRIBUTING.md @@ -74,7 +74,7 @@ Here's a list of commonly suggested features and the reasons why they won't be a | Toggleable Ghost Tapping | https://github.com/FunkinCrew/Funkin/pull/2564#issuecomment-2119701802 | | Perfectly Centered Strumlines | _same as above^_ | | MultiKey, 9k, More than 4 keys, etc. | https://github.com/FunkinCrew/Funkin/issues/4243#issuecomment-2692371969 | -| Flashy Combo Milestones | https://github.com/FunkinCrew/Funkin/pull/4700#issuecomment-2798916579 | +| Flashy Combo Milestones | https://github.com/FunkinCrew/Funkin/pull/4700#issuecomment-2798916579 | | Losing Icons for DD and Parents | https://github.com/FunkinCrew/Funkin/issues/3048#issuecomment-2243491536 | | Playable GF / Speaker BF / Speaker Pico | https://github.com/FunkinCrew/Funkin/issues/2953#issuecomment-2216985230 | | Fresh (Chill Mix) as Title Screen Music | https://github.com/FunkinCrew/Funkin/pull/4282#issuecomment-2709334718 | @@ -155,11 +155,23 @@ Choose the `develop` branch if you modify: Choosing the right base branch helps keep your commit history clean and avoid merge conflicts. Once you’re satisfied with the changes you’ve made, open a PR and base it on the same branch you previously chose. -## Merge conflicts and rebasing +## Maintaining your pull request +Keeping your pull request clean and easy to review increases the chance that it will be accepted! + +Our maintenance policy is as follows: +- If we require changes to your PR, we will label your PR `status: needs revision`. +- We may also leave a comment under your PR specifying what changes you should make. +- If you receive a comment, you have 90 days to implement the requested changes. +- After this period, your PR will be closed due to inactivity and labeled `status: stale`. +- Even after your PR is closed, you may request for us to reopen it. Just be sure to address the issues! + +This policy ensures that PRs awaiting review are up to date and ready to merge. + +### Merge conflicts and rebasing Some game updates introduce significant breaking changes that may create merge conflicts in your PR. To resolve them, you will need to update or rebase your PR. Most merge conflicts are small and will only require you to modify a few files to resolve them. -However, some changes are so big that your commit history will look like a mess! +However, some changes are so big that your commit history will be a total mess! In this case, you will have to perform a [**rebase**](https://docs.github.com/en/get-started/using-git/about-git-rebase). This process reapplies your changes on top of the updated branch and cleanly resolves the merge conflicts. From c5e5ab16dff95e88bced8ee42cf8de852cdd781f Mon Sep 17 00:00:00 2001 From: Eric Date: Fri, 25 Apr 2025 17:49:26 -0400 Subject: [PATCH 10/12] Recommend Funkin's fork of hmm (fewer issues with Lime) --- docs/COMPILING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/COMPILING.md b/docs/COMPILING.md index c18c5e5e7..cbf1db51b 100644 --- a/docs/COMPILING.md +++ b/docs/COMPILING.md @@ -11,7 +11,7 @@ 3. Run `cd funkin` to enter the cloned repository's directory. 4. Run `git submodule update --init --recursive` to download the game's assets. - NOTE: By performing this operation, you are downloading Content which is proprietary and protected by national and international copyright and trademark laws. See [the LICENSE.md file for the Funkin.assets](https://github.com/FunkinCrew/funkin.assets/blob/main/LICENSE.md) repo for more information. -5. Run `haxelib --global install hmm` and then `haxelib --global run hmm setup` to install hmm.json +5. Run `haxelib --global git hmm https://github.com/FunkinCrew/hmm.git` and then `haxelib --global run hmm setup` to install hmm.json 6. Run `hmm install` to install all haxelibs of the current branch 7. Run `haxelib run lime setup` to set up Lime 8. Perform additional platform setup From 4555b6736e6fbfabfde396b9c91cbfcec26b7365 Mon Sep 17 00:00:00 2001 From: Eric Date: Fri, 25 Apr 2025 21:40:52 -0400 Subject: [PATCH 11/12] Rewrote recommendation to use Funkin haxelib and hmm --- docs/COMPILING.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/docs/COMPILING.md b/docs/COMPILING.md index cbf1db51b..249327842 100644 --- a/docs/COMPILING.md +++ b/docs/COMPILING.md @@ -11,10 +11,11 @@ 3. Run `cd funkin` to enter the cloned repository's directory. 4. Run `git submodule update --init --recursive` to download the game's assets. - NOTE: By performing this operation, you are downloading Content which is proprietary and protected by national and international copyright and trademark laws. See [the LICENSE.md file for the Funkin.assets](https://github.com/FunkinCrew/funkin.assets/blob/main/LICENSE.md) repo for more information. -5. Run `haxelib --global git hmm https://github.com/FunkinCrew/hmm.git` and then `haxelib --global run hmm setup` to install hmm.json +5. Run `haxelib --global install hmm` and then `haxelib --global run hmm setup` to install hmm.json 6. Run `hmm install` to install all haxelibs of the current branch -7. Run `haxelib run lime setup` to set up Lime -8. Perform additional platform setup + - If you have issues installing Lime, try utilizing Funkin's patched libraries for hmm and haxelib: `haxelib --global git haxelib https://github.com/FunkinCrew/haxelib.git` and `haxelib --global git hmm https://github.com/FunkinCrew/hmm.git` +8. Run `haxelib run lime setup` to set up Lime +9. Perform additional platform setup - For Windows, download the [Visual Studio Build Tools](https://aka.ms/vs/17/release/vs_BuildTools.exe) - When prompted, select "Individual Components" and make sure to download the following: - MSVC v143 VS 2022 C++ x64/x86 build tools @@ -24,8 +25,8 @@ - One of Funkin's dependencies uses libVLC, which requires you to install some development packages to be able to compile. Command for Ubuntu/Debian based systems: `sudo apt install libvlc-dev libvlccore-dev libvlccore9` - HTML5: Compiles without any extra setup -9. If you are targeting for native, you may need to run `lime rebuild ` and `lime rebuild -debug` -10. `lime test ` to build and launch the game for your platform (for example, `lime test windows`) +10. If you are targeting for native, you may need to run `lime rebuild ` and `lime rebuild -debug` +11. `lime test ` to build and launch the game for your platform (for example, `lime test windows`) ## Build Flags From 6c2ebff680fa5a2404b171f09c71325f953b2546 Mon Sep 17 00:00:00 2001 From: Til <89487150+TechnikTil@users.noreply.github.com> Date: Fri, 25 Apr 2025 22:48:37 -0600 Subject: [PATCH 12/12] bump to 0.6.3 (#4448) Co-authored-by: Eric --- .github/ISSUE_TEMPLATE/bug.yml | 2 +- .github/ISSUE_TEMPLATE/charting.yml | 2 +- .github/ISSUE_TEMPLATE/compiling.yml | 2 +- .github/ISSUE_TEMPLATE/crash.yml | 2 +- docs/CONTRIBUTING.md | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug.yml b/.github/ISSUE_TEMPLATE/bug.yml index ddc6261b5..387d8b128 100644 --- a/.github/ISSUE_TEMPLATE/bug.yml +++ b/.github/ISSUE_TEMPLATE/bug.yml @@ -45,7 +45,7 @@ body: attributes: label: Version description: Which version are you playing on? The game version is in the bottom left corner of the main menu. - placeholder: ex. 0.6.2 + placeholder: ex. 0.6.3 validations: required: true diff --git a/.github/ISSUE_TEMPLATE/charting.yml b/.github/ISSUE_TEMPLATE/charting.yml index 810a3778d..61bfd25c4 100644 --- a/.github/ISSUE_TEMPLATE/charting.yml +++ b/.github/ISSUE_TEMPLATE/charting.yml @@ -46,7 +46,7 @@ body: attributes: label: Version description: Which version are you playing on? The game version is in the bottom left corner of the main menu. - placeholder: ex. 0.6.2 + placeholder: ex. 0.6.3 validations: required: true diff --git a/.github/ISSUE_TEMPLATE/compiling.yml b/.github/ISSUE_TEMPLATE/compiling.yml index a3370e3c5..8215ddd7b 100644 --- a/.github/ISSUE_TEMPLATE/compiling.yml +++ b/.github/ISSUE_TEMPLATE/compiling.yml @@ -34,7 +34,7 @@ body: attributes: label: Version description: Which version are you compiling? The game version is in the bottom left corner of the main menu or in the project.hxp file. - placeholder: ex. 0.6.2 + placeholder: ex. 0.6.3 validations: required: true diff --git a/.github/ISSUE_TEMPLATE/crash.yml b/.github/ISSUE_TEMPLATE/crash.yml index 04fea1d13..459ed92a3 100644 --- a/.github/ISSUE_TEMPLATE/crash.yml +++ b/.github/ISSUE_TEMPLATE/crash.yml @@ -46,7 +46,7 @@ body: attributes: label: Version description: Which version are you playing on? The game version is in the bottom left corner of the main menu. - placeholder: ex. 0.6.2 + placeholder: ex. 0.6.3 validations: required: true diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md index bccc5894a..234d44cf5 100644 --- a/docs/CONTRIBUTING.md +++ b/docs/CONTRIBUTING.md @@ -60,7 +60,7 @@ This section provides guidelines to follow when [opening an issue](https://githu ## Requirements Make sure you're playing: -- the latest version of the game (currently v0.6.2) +- the latest version of the game (currently v0.6.3) - without any mods - on [Newgrounds](https://www.newgrounds.com/portal/view/770371) or downloaded from [itch.io](https://ninja-muffin24.itch.io/funkin)