Danser Go Save Abandoned

Dancing visualizer of osu! standard maps and custom osu! client written in Go. Also a generator for osu! videos.

Project README

danser-go

GitHub release CodeFactor Discord server

danser-go is a CLI visualisation tool for osu!standard maps.

As danser is in development phase, some things may break. If that happens please fill an issue with as much detail as possible.

WARNING: Because of MacOS' poor OpenGL support, danser-go won't run on that platform. Please use dual-booted Windows/Linux instead.

Examples

Running Danser

You can download the newest Windows/Linux 64-bit binaries from releases.

After unpacking it to your desired directory, you need to run it using launcher (using danser-launcher executable) or a command-line application/terminal:

Windows cmd:
danser <arguments>
Linux / Unix / git bash / Powershell:
./danser <arguments>

If you try to run danser (not danser-launcher) without any arguments there's a surprise waiting for you ;)

Run arguments

  • -artist="NOMA" or -a="NOMA"
  • -title="Brain Power" or -t="Brain Power"
  • -difficulty="Overdrive" or -d="Overdrive"
  • -creator="Skystar" or -c="Skystar"
  • -md5=hash - overrides all map selection arguments and attempts to find .osu file matching the specified MD5 hash
  • -id=433005 - overrides all map selection arguments and attempts to find .osu file with matching BeatmapID (not BeatmapSetID!)
  • -cursors=2 - number of cursors used in mirror collage
  • -tag=2 - number of cursors in TAG mode
  • -speed=1.5 - music speed. Value of 1.5 is equal to osu!'s DoubleTime mod.
  • -pitch=1.5 - music pitch. Value of 1.5 is equal to osu!'s Nightcore pitch. To recreate osu!'s Nightcore mod, use with speed 1.5
  • -settings=name - settings filename - for example settings/name.json instead of settings/default.json
  • -debug - shows additional info when running Danser, overrides Graphics.DrawFPS setting
  • -play - play through the map in osu!standard mode
  • -skip - skips map's intro like in osu!
  • -start=20.5 - start the map at a given time (in seconds)
  • -end=30.5 - end the map at the given time (in seconds)
  • -knockout - knockout mode
  • -knockout2="[\"replay1.osr\",\"replay2.osr\"]" - knockout mode, but instead of using danser's replays folder, sources replays from the given JSON array. Knockout.MaxPlayers and Knockout.ExcludeMods settings are ignored.
  • -record - Records danser's output to a video file. Needs an accessible FFmpeg installation.
  • -out=abcd - overrides -record flag, records to a given filename instead of auto-generating it. Extension of the file is set in settings. When the -ss flag is used, this sets the output filename as well.
  • -replay="path_to_replay.osr" or -r="path_to_replay.osr" - plays a given replay file. Be sure to replace \ with \\ or /. Overrides all map selection arguments
  • -mods=HDHR - displays the map with given mods. This argument is ignored when -replay is used. -mods=AT will trigger cursordance with replay UI.
  • -skin - overrides Skin.CurrentSkin in settings
  • -cs, -ar, -od, -hp - overrides maps' difficulty settings (values outside of osu!'s normal limits accepted)
  • -nodbcheck - skips updating the database with new, changed or deleted maps
  • -noupdatecheck - skips checking GitHub for a newer version of danser
  • -ss=20.5 - creates a screenshot at the given time in .png format
  • -quickstart - skips intro (-skip flag), sets LeadInTime and LeadInHold to 0.
  • -offset=20 - local audio offset in ms, applies to recordings unlike Audio.Offset. Inverted compared to stable.
  • -preciseprogress - prints record progress in 1% increments.

Since danser 0.4.0b artist, creator, difficulty names and titles don't have to exactly match the .osu file.

Examples which should give the same result:

<executable> -d="Overdrive" -tag=2 //Assuming that there is only ONE map with "Overdrive" as its difficulty name

<executable> -t="Brain Power" -d="Overdrive" -tag=2

<executable> -t "Brain Power" -d Overdrive -tag 2

<executable> -t="ain pow" -difficulty="rdrive" -tag=2

<executable> -md5=59f3708114c73b2334ad18f31ef49046 -tag=2

<executable> -id=933228 -tag=2

Settings and knockout usage are detailed in the wiki.

Building the project

You need to clone it or download as a .zip (and unpack it to desired directory)

Prerequisites

  • 64-bit go (1.19 at least)
  • gcc/g++ (Linux/Unix), WinLibs (Windows, TDM-GCC won't work, mingw-w64 is outdated)
  • OpenGL library (shipped with drivers, libgl1-mesa-dev when building on Linux servers)
  • xorg-dev, libgtk-3 and libgtk-3-dev (Linux)

Building and running the project

First, enter the cloned/downloaded repository.

When you're running it for the first time or if you made any changes type:

go build

This will automatically download and build needed dependencies.

Afterwards type:

./danser-go <arguments>

Running without arguments (as opposed in Running Danser) will give you the launcher, though you can't use drag&drop on the executable to preload a replay. If that ability is desired, build danser using dist scripts.

Credits and License

Software created by Sebastian Krajewski (@Wieku) and contributors

Unless stated otherwise, source files are distributed under GNU General Public License v3.0

Full credits and licenses of 3rd party assets can be found here.

Open Source Agenda is not affiliated with "Danser Go" Project. README Source: Wieku/danser-go
Stars
644
Open Issues
32
Last Commit
1 year ago
License
MIT

Open Source Agenda Badge

Open Source Agenda Rating