Runtime and build
- Move all projects to .NET 10 with SDK-style project files and a shared
Directory.Build.props (WIN/LINUX, x86/x64 defines)
- Load managed and unmanaged dependencies from libs/managed and
libs/unmanaged through assembly and native library resolvers
- Compile party modes with Roslyn instead of CodeDom
- Update AppVeyor to the .NET 10 SDK and dotnet test
- Download the FFmpeg and gstreamer runtimes from the dependencies
repository during the build
- Remove the VC++ 2015-2022 runtime check, no dependency needs it anymore
Graphics and windowing
- Replace the Direct3D 9 renderer with Direct3D 11 (Vortice)
- Pace Direct3D 11 frames with a frame latency waitable swap chain
- Move window, input and message boxes to SDL3
- Replace System.Drawing with SkiaSharp and WinForms with SDL3 and a
software renderer
Video and audio
- Replace Acinerella with FFmpeg 8.1.3 (FFmpeg.AutoGen)
- Add hardware accelerated video decoding (D3D11VA, DXVA2, VideoToolbox,
VAAPI, VDPAU) with software fallback
- Convert YUV video frames to RGB on the GPU in Direct3D 11 and OpenGL
- Add the video options HardwareDecoding, GpuColorConversion,
DecoderThreads and VideoDownscaleResolution
- Update OpenAL to OpenTK 4 and NAudio recording to WasapiRecorder
Fixes
- Fix the song preview start and shorten the reporter buttons
- Fix a crash when opening the highscore without a selected song
- Use the options slide highlight in the party mode screens to avoid
brightness flicker on VRR displays
- Disable GameInput in the x86 build, SDL3 crashes in GameInputCreate
on 32-bit systems with the GameInput runtime installed
- Fix a truncation warning in PitchTracker
* Add team survival party mode
A new party mode for two teams that only needs 2 microphones. In every duel one player of each team sings against one of the other team. Whoever loses a duel loses a heart, players without hearts are out, and the team whose players are all out loses.
- Every player sings once per round before anyone sings again, the duels are drawn randomly
- Teams of different sizes are possible, in the smaller team some players sing a second time per round
- Hearts can be the same for everyone or set per player, to balance uneven teams or strong and weak singers
- Up to 3 jokers per player to skip a song
- On a tie, the duel is sung again
- A lost heart is animated, and the winning team is celebrated at the end
* Trigger CI rebuild
---------
Co-authored-by: Florian Ostertag <flokuep@users.noreply.github.com>