Skip to content

v-atamanenko/osu-octave

Repository files navigation

osu!octave logo
osu!octave

Open-Source, Usable Osu! Client.
Tailored and Adjusted for the Vita and Embedded

Download

What is thisCompatibilityHow to useCreditsLicense

What is this

osu!octave is a free and open source rhythm game designed to play osu!standard beatmaps, optimized for best performance and playability on PlayStation Vita.

Its core (as in, the very base of hit objects logic and some parts of architecture) is based on osu-ds, an unfinished osu! port to Nintendo DS made by Echo in 2009 and released under the BSD-2 license.

DISCLAIMER: osu!octave is not affiliated, associated, authorized, endorsed by, or in any way officially connected with ppy Pty Ltd, peppy, osu! or any of its subsidiaries or its affiliates. Please do not contact these people and organizations with any questions regarding osu!octave.

Compatibility

Platforms to run on

By design, osu!octave is a PlayStation Vita osu! client. However, considering that it only depends on C++17 and SDL2, it's totally possible to run it on any platform that can provide these two things and has 350MB+ of RAM and a 500MHz+, 2 core+ CPU.

The main obstacle to running osu!octave on Windows, Linux, or, for instance, Android is the limited flexibility of the current CMakeLists file and not-really-adaptive coordinate system.

If you're interested in porting osu!octave to a new platform, Pull Requests are very much appreciated! I promise to provide you with any help I can in the process.

Beatmaps compatibility

osu!octave should play any osu!standard beatmap, very closely to original. If you experience issues with a particular beatmap, please do create a new Issue.

Skinning

Almost every single audio and visual component of osu!octave is customizable via skins. If you're up for some skinning, take a close look at those that come by default. Skinning tutorial is coming soon.

Original osu! skins are not drop-in compatible with osu!octave but should be easy enough to adapt.

P.S. Please do contribute your own custom skins (if it's original content)! I'd love to see more cool stuff in the default skin set.

How to use

Installation — Vita

  1. You would need to have CFW-enabled PS Vita.
    (Guide: Setting up custom firmware on PS Vita)
  2. Download and install the latest osu-octave.vpk from the Releases page.
    (Guide: How to install homebrew apps)
  3. A) If you want to have some maps to play from the start:
    Download the latest data-maps.zip from the Releases page. Copy over this archive to ux0:/data/ folder on your Vita and unpack. The resulting directory structure must be like this: ux0:/data/osu/skins/.

    B) If you want to have a clean installation without default maps:
    Download the latest data-clean.zip from the Releases page. Copy over this archive to ux0:/data/ folder on your Vita and unpack. The resulting directory structure must be like this: ux0:/data/osu/skins/.
  4. Enjoy!

How to install beatmaps

Note: This step is not mandatory if you went with data-maps.zip data files. You already have something to play.

  1. Option A. Open up your desktop osu! installation directory, open the Songs subdirectory, and copy folders with the beatmaps you want to play to ux0:/data/osu/maps/ (on the Vita) or to maps directory inside the osu!octave installation (on PC).
  2. Option B. Download beatmap archives from osu.ppy.sh, these come in .osz format. Rename [beatmap].osz file to [beatmap].zip, unpack that zip archive, and copy the resulting folder to ux0:/data/osu/maps/ (on the Vita) or to maps directory inside the osu!octave installation (on PC).

How to play

If you've never played osu! before, you can check out the short original osu! tutorial. It explains the game basics pretty well.

In osu!octave you control the game primarily with your touchscreen (or mouse). There are a few useful buttons, too:

Button Action
start Pause menu
cross Skip the non-playable beginning of a map
squar / trian Click! (when chosen in Settings)
dpadv / dpadh Click! (when chosen in Settings)
trigl / trigr Click! (when chosen in Settings)

Credits

Origins

Borrowed code

  • osu-ds from which I took the core of the game — base architecture and logic for some hit-objects.
  • McOsu by Pascal "McKay42" G. from which I took the priceless slider curves interpolation code.
  • osu-sr-calculator by Mr. HeliX which I rewrote to C++ and use for—well—star rating calculations :)
  • opsu! by Jeffrey "itdelatrisu" Han which had acceptably accurate required spinner rotations counting algorithm that I used.
  • ...And countless StackOverflow answers that unfortunately I didn't bother to credit in the code. Bless you all, SO contributors.

Advising and testing

  • KonPet who helped me a lot with getting the original osu-ds to run, showed me how to set up the great and powerful NO$GBA, and answered some stupid questions about the osu-ds architecture.
  • CreepNT, S1ngyy, Graphene, Ivan "isage" Epifanov, CelesteBlue who answered my questions about SDL2, C++, and maths :)
  • yun (yun#1000 on Discord) who tremendously helped me with getting tricky osu! mechanics right and pushed osu!octave to the limit with their thorough, quality testing on the weirdest and hardest beatmaps.
  • Nabsi (Nabsi#4123), CatoTheYounger (CatoTheYounger#4245) who managed to bring valuable feedback and bug reports while beta-testing.

Assets

  • nekodex - welcome to osu! — a single by nekodex, used as menu background music. The permission to use it was not explicitly granted (I failed to contact nekodex), but seeing how it is free to download on the official website, I guess it's okay as long as I credit it? Dear Nekodex, please contact me if I shouldn't use your works here, thank you!
  • Sounds in default skin — are taken from osu! default skin template shared here on the forum. Same here, the permission to use it was not explicitly granted (I failed to contact peppy), but seeing how it is free to download on the official website, I guess it's okay as long as I credit it? Dear Peppy, please contact me if I shouldn't use your works here, thank you!
  • Beautiful yum skin — by yun! (yun#1000 on Discord)

License

  1. The code in this repository (.cpp, .c, .h, .hpp files and their individual lines) that was commited after January 15, 2022 is licensed under the following custom license unless stated otherwise inside the respective file:
Copyright (c) 2022, Volodymyr Atamanenko
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this
   list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
   this list of conditions and the following disclaimer in the documentation
   and/or other materials provided with the distribution.
3. Redistributions in either binary or source code form that imply rebranding
   the software (changing "osu!octave" name), direct selling, or otherwise
   gaining commercial benefits through the redistribution of the software
   must be agreed upon with the author (Volodymyr Atamanenko) in written form.
   Without said written agreement, such redistributions are prohibited.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  1. The graphical assets (.png files) located in the /skins/default/ directory and its subdirectories are subject to the same license above in p.1.

  2. The code in this repository (.cpp, .c, .h, .hpp files and their individual lines) that was commited before January 15, 2022 is licensed under the BSD 2-Clause license and copyright (c) 2009, Jonathan Chow.

  3. The graphical assets (.png) in other subdirectories of the /skins/ directory, sounds (.wav, .mp3 files) are the property of their respective owners/creators.

  4. All other files in this repository, unless stated otherwise inside the respective file, are subject to the same license above in p.1.