Skip to content

Reintegrate melody mania 2025-05-05#525

Merged
basisbit merged 72 commits into
masterfrom
anst/reintegrate-MelodyMania-2025-05-05
May 26, 2025
Merged

Reintegrate melody mania 2025-05-05#525
basisbit merged 72 commits into
masterfrom
anst/reintegrate-MelodyMania-2025-05-05

Conversation

@achimmihca

@achimmihca achimmihca commented May 20, 2025

Copy link
Copy Markdown
Collaborator

What does this PR do?

Noteworthy Changes

  • Nuke build tool instead of plain shell scripts.
    • In a nutshell: There is a separate small dotnet project to build the game, plus some scripts to run the C# project (.sh, .cmd, .ps1).
      • Example (using Unix shell): ./build.sh RestoreMainGameDependencies
      • Example (using powershell): ./build.ps1 BuildMainGameWindows64
    • Further, third party libraries from NuGet are declared in another separate tiny dotnet project, such that dotnet tools can resolve the dependencies. Afterwards, the DLL files are copied to their destination location in the Unity project. Both (resolve dependencies via dotnet, copy to target location) is part of the Nuke build.
    • I want to adjust the documentation as part of this PR (how to build the game, etc.)
    • I want to adjust the build pipeline as part of this PR, such that the CI should be usable again (finally)
  • Use async/await instead of Unity Coroutines, see async/await with Awaitable instead of Coroutines and UniRx Observable #507
    • Makes the code more sane, more resilient, and improves error handling
    • This affects all concurrent code and tests, which is most of the interesting parts of the code base
  • Massive refactoring (moving files, clean up, etc.)
  • Tests for the Companion App
    • For example, "can establish connection to main game", "can enqueue song"
    • The tests expect an already running main game. They are not suited for the CI pipeline at the moment

Squashed Commits

I decided to save you the long history with thousands of commits.
Instead, there is just one squashed commit to get the current code base of Melody Mania.
Other commits in this PR are adjustments to make the code work again in UltraStar Play.

Closes Issue(s)

close #351
close #366
close #424
close #436
close #499 (obsolete because of #436)
close #453
close #503
close #504
close #507
close #509
close #512
close #513
close #514
close #516
close #522
close #524

More

  • Update documentation in wiki (how to build the game, etc.)

Partner Shop

  • Added link to partner shop in main menu
    • https://karaoke.style
    • You can easily print your own design on various products
      • Simply upload an image or making use of the extensive Spreadshirt library
    • Products include T-shirts, cups, basecaps, etc.
  • Idea is to open new ways to fund and evolve the project in the long-term
    • e.g. for users of UltraStar Play that do not want or need Melody Mania
    • I want to keep the shop mostly independent, only loosely connected to game
  • Behind the scenes this is a Spreadshop, i.e., a Spreadshirt shop configured by me.
    • Spreadshirt handles everything from print to shipping, I get my share
  • More on the shop soon-ish

achimmihca added 30 commits May 5, 2025 20:00
@achimmihca achimmihca marked this pull request as ready for review May 25, 2025 01:49
@achimmihca

Copy link
Copy Markdown
Collaborator Author

Finally, this is now ready to merge, as good as it gets for now.

  • Codacy issues are not important to me at the moment, see Fix Codacy recommendations #434
  • Playmode tests of main game are not executed because they have issues in the Docker container
    • Someone has to debug this on Linux. In my Linux VM, I was able to start the game and some playmode tests run successfully. But there seems to be more issues, which I do not have time for.
  • Playmode tests of Companion App are skipped because they require a running main game
  • I added PortAudio builds for Linux and macOS
    • This fixes "DLLNotFoundException" and makes it possible to enable "low-latency and multi-channel" mode on these platforms

@basisbit, please review and merge.
I want to update documentation and create a new release afterwards.

@basisbit

Copy link
Copy Markdown
Member

Github isn't even able to load the review page fully. I'll check it a bit locally after merging. Am busy this week, will do it next week.

Thank you again so much for all the public contributions! Melody Mania (and USPlay on Android) nowadays are the main software which I use for playing karaoke with friends at smaller meetups. I am so glad for all the neat features and improvements to the game. 🥳

@basisbit basisbit merged commit d32b877 into master May 26, 2025
4 of 5 checks passed
@basisbit basisbit deleted the anst/reintegrate-MelodyMania-2025-05-05 branch May 26, 2025 20:08
@ScallyGames

Copy link
Copy Markdown

Seems like I picked a tricky time to again try to do some development on Ultrastar 😅
The documentation still says to run "tools/setup.sh" but it seems like this merge has changed that whole process.
Updating the documentation is still an important step to get done to not lose potential contributors.

@achimmihca

achimmihca commented May 28, 2025

Copy link
Copy Markdown
Collaborator Author

Updating the documentation is still an important step to get done to not lose potential contributors.

Working on it right now, updating the whole Wiki. Also I want to clean up the backlog / issues.

I updated the Download-and-Install page.

Rest should be ready next week.

The documentation still says to run "tools/setup.sh"

Instead, run build.sh RestoreMainGameDependencies. Afterwards you can open it in the Unity editor.
Similarly, run build.sh RestoreCompanionAppDependencies if you want to open the Companion App in the Unity editor.

You can also create a build from command line, e.g. build.sh BuildMainGameWindows64.
Note that the build script is available for Shell (build.sh) as well as PowerShell (build.ps1).

Hope this helps!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment