YARG (a.k.a. Yet Another Rhythm Game)
YARG (a.k.a. Yet Another Rhythm Game) is a free, open-source, plastic guitar game that is still in development. It supports guitar (five fret), drums (plastic or e-kit), vocals, pro-guitar, and more! YARG is still in active development, so there may be bugs and missing features.
Important
YARG stands firmly against all forms of piracy. We neither support nor endorse piracy, as it is a violation of copyright law with serious legal consequences. Our platform's importable content—designed for creators to share their work and for educational purposes—does not justify or excuse piracy.
YARG itself does not use any ripped/pirated assets or music and never will. By using YARG, users agree not to promote or endorse piracy in any way through our platform. Upholding these principles ensures a community that respects copyright, creativity, and legal standards.
YARG stands for "Yet Another Rhythm Game" and NOT for pirates.
- 👉 Disclaimer
- 📃 Table of Contents
- 📥 Downloading and Playing
- 🔨 Building/Contributing
- ✍️ Contributing
- 🛡️ License
- 🧰 External Licenses
- 📦 External Assets and Libraries
- 💸 Donate
It is recommended you download YARG via the YARC Launcher. Downloading the portable option is not recommended as some features may not work.
Important
If you are on Linux, there are some additional things you need to do in order for controllers to work. See the Linux section for more info.
- Go to the YARC Launcher releases page, here.
- Click on the download option for your operating system.
- You may get a "this application is not safe" warning depending on your operating system. This is a false positive. Click here to learn more.
- Once in the launcher, click on "YARG" on the left hand side.
- Then, click on green "Update Stable" button.
- You will be prompted to choose an install folder. If you don't know what folder to choose, just click "Okay". Please ensure that the folder you select is empty.
- Wait for it to finish installing...
- Finally, press "Play Stable"!
- Additionally, if you want some songs, install "YARG Setlist" which is also on the left in the YARC Launcher.
There are some dependencies that will be needed in order for HID devices (such as PS3 and Wii instruments) to work.
- Install
hidapi
andlibudev
:- (Package names may differ depending on package repositories.)
- On apt-based distros (such as Ubuntu or Debian), use
sudo apt install libhidapi-hidraw0 libudev1
. - On pacman-based distros (such as Arch Linux), use
pacman -S hidapi systemd-libs
. - On Fedora, use
dnf install hidapi systemd-libs
.
- Finally, create a new udev rules file called
69-hid.rules
inside of/etc/udev/rules.d/
or/usr/lib/udev/rules.d/
, with the following contents:
KERNEL=="hidraw*", TAG+="uaccess"
- Without this file, YARG will not be able to access HID devices without special permissions such as being run with
sudo
, which is not recommended. - The file name may differ if desired, but it must come before
73-seat-late.rules
!
- Reboot your system to apply the new udev rule, then you should be all good to go!
Important
Warning
If you would like to build the game yourself, please follow these instructions.
If you don't follow these instructions, it is possible that YOU WILL NOT BE ABLE TO RUN THE GAME.
-
If you are planning to contribute, first make a fork of the project.
- Be sure to uncheck the option to only include the
master
branch! You will not be able to set things up correctly otherwise, as thedev
branch will not be included in your fork.
- Be sure to uncheck the option to only include the
-
Make sure you have the latest version of Blender installed. This is for loading models, even if you don't plan on editing them.
-
Clone the repository. If you are not familiar with git, GitHub Desktop or Visual Studio Code plus the GitLens extension are both good GUI options. If, however, you want to use the command-line:
- Download Git. Be sure it is added to system path.
- Also download Git LFS, and install it with the
git lfs install
command. - Open the command prompt in the directory you want to store the repository.
- Clone the project repository:
- Type in
git clone -b dev --recursive <repository url>.git
, replacing<repository url>
with either:- your fork's URL if you made one, or
- the main repository's URL (
https://github.com/YARC-Official/YARG
) if you just want to build the game. - A complete example using the main repository's URL is
git clone -b dev --recursive https://github.com/YARC-Official/YARG.git
.
- Because YARG contains submodules, you may need to do
git submodule update
when things get updated.
-
Install Unity 2021.3.36f1. Easiest method will be using Unity Hub:
- Download and install Unity Hub.
- Sign-in/create an account with a personal license (free).
- In Unity Hub, hit the arrow next to Add and select
Add project from disk
, then select the folder you cloned YARG to. - Click on the added entry for YARG. It will warn you about a missing editor version, select 2021.3.36f1 and install it.
- Unselect Visual Studio in the list of modules if you wish to use another editor or already have it installed.
-
Install the .NET SDK. This is required to develop and build the submodules.
- You will need the SDK specifically, not the runtime!
-
Open the project in Unity. When prompted about Safe Mode, click "Ignore".
- Do not enter Safe Mode, otherwise scripts necessary to build/install dependencies will not run, and the errors will not resolve.
-
Ensure all dependencies have been built/restored:
- Both of these steps should be performed automatically when Unity starts up, but they can be performend manually if needed.
- Click on
YARG
on the top menu bar, then click onRebuild YARG.Core (Debug)
. - Click on
NuGet
on the top menu bar, then click onRestore Packages
.
- You're ready to go!
Sometimes merge conflicts may happen between Unity scenes. These can be much more difficult to resolve than other merge conflicts, so we recommend using the Unity YAML merge tool to resolve these instead of attempting to do so manually.
Setup:
- Open a command prompt to the repository (on VS Code you can do Terminal > New Terminal)
- Type in
git config --local --edit
- In the file that gets opened, go to the bottom and paste this in:
[merge]
tool = unityyamlmerge
[mergetool "unityyamlmerge"]
trustExitCode = false
cmd = 'C:\\Program Files\\Unity\\Hub\\Editor\\2021.3.21f1\\Editor\\Data\\Tools\\UnityYAMLMerge.exe' merge -p "$BASE" "$REMOTE" "$LOCAL" "$MERGED"
- You may need to change the file path depending on where you installed Unity to.
- Save and close the file.
Resolving conflicts:
- Start the merge/cherry-pick which is causing conflicts.
- If the conflict doesn't resolve automatically, open the command prompt and use
git merge-tool
. - Verify that the conflict was resolved correctly, then commit/continue the merge.
If you want to contribute, please feel free! It's recommended you join our Discord so we can provide feedback quickly.
YARG is licensed under the GNU Lesser General Public License v3.0 (or later) - see the LICENSE
file for details.
Some libraries/assets are packaged with the source code have licenses that must be included.
Library | License |
---|---|
NuGet for Unity | MIT |
Unity Standalone File Browser | MIT |
Discord GameSDK | Licenseless |
Lucide | ISC |
Unbounded, Barlow, and Red Hat Display | Open Font License |
PolyHaven | CC0 |
BASS | Proprietary (free for non-commercial use) |
Please note that other libraries are not directly packaged within the source code, and are to be installed by NuGet, Unity's packaged manager, or via a Git submodule.
These are assets that are installed by NuGet, Unity's packaged manager, or via a Git submodule. These have varying licenses, but can all be downloaded/accessed by the links given.
Link | Type | Use |
---|---|---|
YARG.Core | Library | Provides most of YARG's backend (engine, replays, etc.) |
PlasticBand | Reference | Controller Support Info |
GuitarGame_ChartFormats | Reference | File Format Documentation |
PlasticBand-Unity | Library | GH/RB Controller Support |
HIDrogen | Library | Linux HID Controller Support |
EasySharpIni | Library | Parsing song.ini Files |
DryWetMidi | Library | Parsing .mid Files |
Minis | Library | MIDI Input for Unity |
DOTween | Library | Animation Utility |
UniTask | Library | Async Library |
unity-toolbar-extender | Library | Unity Editor Utility |
SoftMaskForUGUI | Library | UI Utility |
Unity-Dependencies-Hunter | Library | Unity Editor Utility |
tmpro-dynamic-data-cleaner | Library | Prevent Git Change Spam |
Some people have expressed interest in donating. This is an open-source project and therefore donating is not required. If you do want to still help out, spread the word or contribute!