Cat Saber is a Virtual Reality rhythm game inspired by Beat Saber.

Built using the C programming language on a custom engine (CATENGINE), one of it's goals is to be more performant than the original game.

Every aspect of it is designed to make sure that the game never drops a single frame and can run for hours on end without performance loss.

Another goal is to integrate some useful features seen in Beat Saber mods.
Leaderboards for custom songs, customizable sabers, notes and environment, precise JD adjustment, advanced counters, rewinding and replays, avatars, Twitch chat, song requests, stream overlay data, fitness tracking and more. These features will not break when the game updates and you don't have to rely on a modding community to keep it working since everything essential is built in.

Cat Saber is designed for hardcore gamers by hardcore gamers. It is pre-configured to minimize unnecessary distractions, show you the information that matters and to be the ultimate ranked grinding environment.

While Cat Saber might seem similar to the original game, no assets or code have been stolen or reverse engineered. Everything in Cat Saber has been created from scratch, with inspiration from my experience playing BS.



Support us on Patreon!


Development log:

18/05/2024: Redesigned note models

16/05/2024: Ported over parts of the jd adjustment and leaderboard score display to the new menu system as a placeholder, these will be redesigned later. Added option to enable/disable Twitch chat in chat config. Added settings file to userdata which can be used to adjust controller offsets, a better controller offset system will be added to the game later. Released v0.4 in-development build for Patreon supporters

15/05/2024: Created a Patreon page for Cat Saber, future playable dev builds will be posted there

13/05/2024: Improved menu system scalability and created a system for managing menu panel content switching. Added placeholder playlist browser view. Started implementing redesigned song browser. Improved application launch time with large song libraries, songs are now loaded in-game instead of the splash screen

10/05/2024: Started working on redesigning menus

09/05/2024: Completed work on the cover image system, however it currently only loads .png cover images due to the engine not supporting .jpg files yet. Support for .jpg will be added later

08/05/2024: Started working on song cover image loading. Fixed some beatmap related crashes. Switched to higher performance wall models. Fixed timing bars going off scale

06/05/2024: Added support for v3 map format. Rewrote note rendering to utilize the engine's instancing feature on top of the single pass multi view feature

05/05/2024: Removed demo download from the website since the demo version was too outdated and janky. The next publicly available version will be the full release when its ready, hopefully sometime later this year

04/05/2024: Improved trail system and redesigned the menu pointer and saber models

03/05/2024: Started working on saber trails and added basic trails to the sabers

02/05/2024: Added iforgor inspired latest note angle/cut/saber angle display to pause menu. Added short delay before map starts after unpausing with notes visible and a timer bar

01/05/2024: Replaced all placeholder error messages with proper ones. Made the song details bomb count functional. Changed menu environment skybox for better contrast against dark ui elements. Added glow to menu pointer laser beam. Added banners to menu environment. Improved glow around platform edges

30/04/2024: Added experimental glow rendering to saber blades

29/04/2024: Added experimental hit timing indicators to the ingame HUD. Started creating experimental glow rendering techniques

28/04/2024: Switched to new system for pre swing tracking. All scoring related systems (pre/post/acc) should work perfectly now. Redeems now show up in Twitch chat. Scores are saved and the leaderboard is now functional. Added fitness tracking panel placeholder to menu environment

27/04/2024: Added more debug visualizers to replays for accuracy calculation. Fixed all issues with accuracy calculation. Started designing another new system for pre swing tracking

26/04/2024: Added a bunch of debug visualizers to replays and the ability to step through and analyze individual frames. Overhauled pre/post swing tracking system

25/04/2024: Fixed some issues with the replay system discovered in yesterdays playtest; Added JD and headset position to replays. Fixed active replay not updating after finishing a level and submitting a new replay. Fixed issues with replay consistency, replays should now perfectly replicate the original play and result in identical scores

24/04/2024: Added a basic replay system

23/04/2024: Added placeholder menu background music, menu click, bomb and badcut sounds. Implemented song previews. Fixed potential chat related crash. Added scroll bar showing song list scroll position. Added random song button. Fixed hitscores not showing through walls

22/04/2024: Fixed all currently known issues with note animations. Tech maps with complicated patterns should be readable now. Fixed bug where gibberish could appear at the end of Twitch chat lines. Colorized usernames in chat and switched to using display names instead of raw usernames where possible

21/04/2024: Added rear and side orthographic swing cameras. Added song difficulty graph

20/04/2024: Improved pre and postswing tracking

19/04/2024: Added detection for bad cuts. Hitting bombs works correctly now. Fixed bug that could randomly break some counters. Added mapper names to song list

18/04/2024: Added JDFixer style JD adjustment in-game

17/04/2024: Fixed a bug that caused a large percentage of beatmaps to look totally messed up with notes in random positions etc. Added working health bar to counters HUD

16/04/2024: Added in-game Twitch chat. Added UserData folder for storing settings. Fixed miss counter registering multiple misses sometimes. Fixed accuracy calculation. Improved good cut detection and raised threshold angle from 45 degrees to 60. Fixed compilation with optimizations enabled. Changed the way hitscores are displayed

15/04/2024: Redesigned parts of the ogg loader to make it more flexible. Separated song and beatmap loading. Improved song and beatmap loaders. Song loader can now simultaneously load song previews. Song difficulty selection is now fully functional. Adjusted note jump animations to improve map readability

14/04/2024: Song characteristic and difficulty selection UI is basically done pending some backend changes. Started working on those changes, for example song loading needs to be decoupled from beatmap loading and at the same time the song loader will be improved to also load song previews

13/04/2024: Made the selected song details panel work again after being broken by the move to the new text system. Adjusted some UI elements and added antialiasing to panel borders and some other items. Started working on characteristic and difficulty selection

12/04/2024: Score percentage and score grade counters are now functional. FC lines around combo counter now work after being broken by the transition to the new ingame HUD. Fixed a bug where the main menu play button would stop working after finishing a song in some cases. Added a skybox rendering system to the engine. Added starry sky background to main menu environment

11/04/2024: Time Dependency, Average Cut, Score, and Multiplier counters are now functional. Fixed hitscores looking weird in front of notes in some situations

10/04/2024: Moved this project page to catsaber.net

09/04/2024: Added GPU metric to ingame engine performance monitor. Fixed bug where game process could stay running in the background after closing the window when using Virtual Desktop runtime. Updated demo build to v0.3.1

08/04/2024: Finished converting scoring hud to new text system. Removed some placeholder stuff. Made song time counter functional. Fixed bug where level could end while game was paused. Added engine ability to recolor models during rendering. Released v0.3 Demo build

07/04/2024: Added ingame performance monitor that shows main/rendering thread frametimes before and after vsync and FPS based on average frametimes

06/04/2024: Converted hitscores and ingame HUD to use new text system. Changed scoring HUD to be RT based to avoid unnecessary rendering of counters that don't need updating. Started working on making more of the HUD counters functional. Made the ingame logo transparent

05/04/2024: Finished making the new text generation system. Converted song list text rendering to use the new system. Text is now higher quality and has antialiasing

04/04/2024: Finished moving to new rendering system with the exception of scoring UI since that will be replaced with a new system soon. Adjusted default desktop view FOV and Z offset. Started working on a new text rendering system that will support our single pass renderer and produce higher quality text

03/04/2024: Started converting more of the game rendering to use the new single pass rendering system. Added a separate camera with smoothing and higher FOV for the desktop view. Added smoothing to controller tracking in menus

02/04/2024: Added experimental multi projection system to the engine and conducted a successful small scale test using it. This system allows us to render multiple game views from different perspectives without extra CPU usage

01/04/2024: Started experimenting with simultaneous multi projection techniques for better performance when rendering multiple views

30/03/2024: Updated default controller bindings so that triggers are used for selection on all headsets. Improved song loader a bit more so that it can load most custom songs without crashing. Successfully tested starting the game with my full custom song collection (over 11,000 songs)

29/03/2024: PC fixed

23/03/2024: Development PC exploded, progress will be halted until replacement parts arrive and the PC is fixed

22/03/2024: Remodeled obstacle to work with a new system. Added support for a new model format into the engine which supports bones and rigged models. Overhauled the whole obstacle system since v0.2's way was hacky and not designed with level switching in mind

21/03/2024: Moved beatmap and song loading to a different thread. Counters are now reset between maps. Created a system that allows instant playback of songs before loading is finished

20/03/2024: Made the pause menu buttons work so its now possible to instantly return to menu or restart the song

19/03/2024: Song list scrolling, list item highlighting and selection works now. Made the beatmap loader load the selected song but the menu UI for difficulty selection is not ready yet so it defaults to the first diff for testing purposes. Made the play button work and start the game with the selected song

17/03/2024: Started rendering list of songs to main menu. Added detection and haptic feedback for hovering over certain menu buttons

16/03/2024: Improved song loader to scan the whole custom song library for metadata needed to populate the song browser

15/03/2024: Started working on menu panel interaction. The current main focus is getting the in-game song browser functional to make the game more widely playable with the full custom song collection. Made the right saber follow the camera in FPFC mode for testing menu interaction. Added calculation for 2D cursor position within menu panels. Tested rendering dynamic content into menu panels

14/03/2024: Successfully integrated our custom ogg/vorbis decoder in engine, which mainly involved removing all CRT dependency from the decoder used during prototyping

06/03/2024: First successful test decoding of an ogg/vorbis file using our custom decoder. It will still require more polishing and optimization before being practically usable

24/10/2023: Started working on a decoder for ogg files

19/10/2023: Started working on menu designs. Songs are now loaded from a separate folder instead of being packed into the assets file, this will make it easier to add custom songs in the future. Improved beatmap loader a bit to make it easier to switch maps during testing. Adjusted lighting. Released v0.2 Demo version

16/10/2023: Mapped pause menu panel to a texture. Changed ingame environment to not look like the beat saber default environment to avoid copyright issues. Removed hack from engine that was used for transparency before png support

13/10/2023: Mapped the main menu panel to a texture which will make it possible to render content to the menu in the future

11/10/2023: Made the game window 1920x1080 by default with a cropped headset view so OBS game capture can be used for recording. Added engine logo splash screen because VR init takes so long, the splash screen itself doesn't add any artificial delay

10/10/2023: Came up with a better algorithm for handling menu pointers so switched to using that. Added acos function to engine. Sabers now switch to menu pointers while game is paused. Menu pointer laser now disappears when pointing outside menu panels

08/10/2023: Added PNG loader to engine and converted all game textures to PNG

07/10/2023: Added alpha channel support to PNG loader. Cleaned up code a bit and hardened it against exploits in case it gets used to load user generated content in the future

06/10/2023: First successful test of loading some PNG game textures using loader developed from scratch

02/10/2023: Started working on a PNG file loader. Goal is to be able to convert game textures to PNG to reduce storage/download size and support textures with transparency

28/09/2023: Added separate models for menu pointers. Added laser that shows up when pointing at menu panels

27/09/2023: Added pausing/unpausing and a placeholder pause menu panel. Player is now returned to the main menu after the song is over. Discord rich presence now accurately reflects game state (menu/playing)

26/09/2023: Created a prototype for curved menu panel interaction. Added paw prints to the environment to show where the center of the platform is. Started modeling work on menu environment. Implemented WIP menu environment and menu state in engine

24/09/2023: Implemented animation curves for hitscore movement and fading. Lines around combo counter now disappear if FC is lost. Added basic support for changing text color. Hitscores are now colorized. Added placeholder panel for Twitch chat

22/09/2023: Hitscores are now fully calculated, including preswing, acc, and postswing. Added basic fog to the environment. Added slanting feature to textmeshgen

21/09/2023: added flying hit score numbers and miss texts

19/09/2023: implemented swing angle tracking for both sabers and added cut accuracy score calculation

16/09/2023: created this project page for Cat Saber on catse.net and started this development log. logs below this point will be less detailed

14/09/2023: added system for continuous tracking of swing angles required by the scoring system

13/09/2023: added text mesh generation system and made the combo and miss counters functional

06/09/2023: released v0.1 demo build

08/08/2023: created a prototype for the note hitreg system

23/05/2022: initial engine groundwork complete, vr rendering, tracking, CRT free build

14/01/2022: started the catsaber project