1. Project Heartbeat
  2. News

Project Heartbeat News

New song: Love Sacrifice

As 0.14 is still far away, I have decided to push this new song early into the public branch for everyone.
Enjoy!

[previewyoutube]https://youtu.be/ME5KysG3VQo[/previewyoutube]

This is Love Sacrifice, the new song featuring in Project Heartbeat and the first new song of the year. As it's tradition it's a Touhou cover from the Takanashi Koubou creator's circle.
The song is composed by SaiNa, sang by Queue, composed by BeatCharger and charted exclusively for Project Heartbeat by resident meme master Yahoo.

The artwork was made specifically for Project Heartbeat by the great Guinii featuring Touhou Project girls Renko Usami and Maribel Hearn of the lying in a field together in slightly gay fashion.

Hopefully you will enjoy this new song release! A few more songs are in the works, including a special non-eurobeat guest artist from Spain.

More news soon!

Thank you for your continued support.

0.13.7 patch notes

0.13.7
  • Prevent items from being moved around the timeline while playing
  • Remove show_console


0.13.6
  • Update engine version to godot 3.5 beta
  • Fix pre-game screen focus issues


0.13.5
  • Update yt-dlp
  • Bundle python interpreter with customized version of yt-dlp on linux


0.13.4
  • Ignore game inputs while multiplayer is paused


0.13.3
  • Make autosave optional in the editor


0.13.2
  • Fix double input issue for macros with hearts and multi notes


0.13.1
  • Fixed downloads failing under certain circumstances
  • Fix multiplayer

Project Heartbeat 0.13: Many new features, revamped PPD support w/ nnd support..

Song variants




You can now add variants to songs so they have alternative video/audio depending on what variant you selected! This is useful for different mixes of the same song.

New note type: Heart sustains




Yes, we've finally gone mad, heart sustain notes are now exposed in the editor, previously you needed a hack for them, but you are now allowed to use them for any song, go wild.

Video download queue




After 1000 years in development, the video queue is now ready to use! You can cancel queued downloads and all that fancy stuff.

Download all button




There's now a button to download all songs, this wasn't done before because we didn't have a way to cancel downloads, but now we do!

Negative start times


Songs can now start at negative times, this required some engine hacking but it does work fine!!

Display option changes




The game now has a new option for what monitor to use, you can now use the current monitor!

Latency changes




Some code regarding latency has changed, this should result in lower latency, we also no longer use the driver provided latency info, so we suggest using the latency tester to figure out your latency.

PPD support changes


[h2]Negative start times[/h2]

Just like with PH songs, PPD songs now support negative start times.

[h2]PPD Downloader improvements[/h2]

The PPD downloader can now download songs from any website supported by yt-dlp that provides h264 video! This includes NicoNico and google drive!

The PPD downloader will also download thumbnails from the video and use it as cover art

Additionally, it will also pre-normalize the audio volumes of the songs while downloading!

[h2]Unzipping improvements[/h2]

PPD songs now unzip much much faster and more reliably, for this change the folder download path has been changed to songs/ppd_{PPD Website ID} instead of using the title as before, this helps with dealing with japanese characters on some operating systems.

[h2]Remove install and song option[/h2]



You can now remove your currently imported PPD install, and individual songs too from the PPD manager!

[h2]Star counting[/h2]

The PPD importer now tried to parse the star count of PPD songs in many ways to try what sticks, it may still not work for all cases but it works for way more cases than before.

Video download changes


The video downloader now uses aria2 for faster download speeds, we also now use yt-dlp instead of youtube-dl!

Additionally I used some black magic to slim down the ffmpeg binaries, so the game now takes a fair bit less space on disk!

Background music disable option changes


Enabling disabling the background music in the main menu doesn't require a restart anymore.

Double heart custom sounds




Double heart notes now have a custom sound option available, so you can use a separate one from the default sound.

Editor changes


Me and Lino have been hard at work supercharging the editor

[h2]Timeline drawing optimizations[/h2]

Due to an oversight, timeline drawing got slower the more you scrolled through a very long song, this has now been properly fixed!

[h2]Playback speed[/h2]



You can now change the playback speed in the editor on the new bottom left slider, fancy.

[h2]Add an universal interpolator[/h2]



Lino made this fancy tool to interpolate any property

[h2]Metronome generator[/h2]



Editor now has a metronome generation tool

[h2]Fix timeline culling[/h2]



Timeline culling has been massively revamped, so you shouldn't get ghost notes when zooming in and out anymore!

[h2]Editor autosaves on playback[/h2]

The editor will now autosave when playing the song

[h2]Hold display[/h2]



The editor will now show the range of hold notes, so you can plan them ahead.

[h2]Editor scrolling change[/h2]



I made the editor scroll differently, the playhead will keep going until it hits the center, then the whole timeline will move with it.

[h2]Video stutter fix[/h2]

Playing a song with a video does not produce a stutter anymore.

[h2]Async shader compilation[/h2]

The game will now compile shaders in another OpenGL context, which should help prevent stutters when hitting notes for the first time in the session.

[h2]Game slimdown[/h2]

Using some black magic (AKA UPX), the included ffmpeg binaries have been slimmed down to oblivion, this made the game go from ~670 mb to ~460, PH is putting in some gains!

[h2]Arrange menu wheel[/h2]



Lino made this nifty tool to arrange notes in a straight line. It can be accessed with the tab key.

[h2]Automatically place notes in a straight line[/h2]



With autoplace enabled the editor will automatically put notes in a straight line at the bottom of the screen while creating them.

[h2]Editor angle snapping[/h2]



You can now snap the angle of a note by pressing control while placing a note.

Bug fixes/Minor changes
  • Editor: Compensate for first sustain correctly and optimize arrange code
  • Fix slide double rating
  • fix DJA
  • Disable mipmapping on vulkan
  • Fix issue showing the first phrase in lyrics
  • Fix loading screen stalls (not sure how though)
  • Fix reset inconsistencies
  • Fix visual bug that caused max hold score points to not be displayed properly
  • Add audio file existing on disk verification when uploading to the workshop
  • Fix button styling with anti alias
  • Fix multis in editor being broken due to engine bug
  • Update J. Stebbins credits
  • Fix difficulty edit bug
  • Select yes as default when opening the download song media popup
  • Editor: Sanitize angle upon angle arrange and note shift
  • Fix not being able to delete modifiers when using the keyboard
  • Update song list when _added_time is updated on startup (fixes subscribed song sort order being absolutely fucked)
  • Editor: Always assume 1/16th snap for arranging
  • Editor: Add a ScrollContainer for the arrange tab
  • Fix error on close related to vibration killing
  • Fix running game without steam
  • Editor: Autoplace notes which havent been moved around upon note time change
  • Editor: Autoplace multis automatically
  • Editor: Autoplace imported MIDI files
  • Editor: Make BPM be minimum 1
  • Stop vibration properly when a slide note drawer disappears
  • Editor: Automatically arrange angles when autoarranging
  • Make loadingu text fully white
  • Editor: Add a safety net for pos_modified on old charts
  • Fix incomplete PPD files killing the load thread
  • Editor: Make the toolbox and inspector resizeable
  • Editor: Take autoplaced notes as HBBaseNote instead of HBNoteData
  • Editor: Allow note creation from within scripts
  • Make slide multis ignore normal note presses


Future




Guinii, snail (new charter!!!) and Yahoo are working hard on the new charts and artwork, hopefully next update will come with one or two new songs!

I'd also like to announce I'm still seeking for more songs to license, either as free updates or post-early-access DLC (this is because the margins aren't big enough for me to pony up the costs of licensing yet, so I either need to make very good deals or I can't do it at all). I contacted KIRA but got no response :( would have been great!.

Either way, 4 songs by takanashi koubou are in the queue to be charted together with the remaining Sugano song.

More exciting stuff is coming PH's way, I moved into my own office and continue to work on it as my main work. I am obviously still in a pseudo-philosophical search for what to do, because I really want to do things other than PH, but it's been a year-long challenge so far.

My current pet project is a metal gear solid clone with cute witches, so let's cross fingers and hope it will become a real thing lol.

Thank you guys for your support. I continue pushing like a lion for you!

Happy holidays!

P.S: Might want to check the giveaway we are having on twitter right now!!

Update 0.12.13 now available

0.12.13
  • Fixed the editor experiencing performance degradation caused by drawing unnecessary interval lines in the timeline


0.12.12
  • Fixed a bug that would cause corrupt PPD songs to break the whole game


0.12.11
  • Fix PPD manager not saving ppd_ext.json properly sometimes
  • Update song list when _added_time is updated on startup (fixes subscribed song sort order being absolutely fucked)
  • Fix not being able to delete modifiers when using the keyboard


0.12.10
  • Updated Jessa Stebbins credits


0.12.9
  • Fix multis in editor being broken due to engine bug
  • Fix button styling with anti alias


0.12.8
  • Add audio file existing on disk verification when uploading to the workshop.
  • Fix visual bug that caused max hold score points to not be displayed properly.
  • Upgrade engine.


0.12.7
  • Fix loading screen stalls


0.12.6
  • Use yt-dlp instead of the previous video downloader software
  • Fix crash when reconnecting controller


0.12.5
  • Fix sustain culling and timeline zoom bugs


0.12.4
  • Fix slide double rating
  • Fix disabling background music in main menu (and make it not require a restart anymore)
  • Disable mipmapping on vulkan


0.12.3
  • Compensate for first sustain correctly and optimize arrange code in editor


0.12.2
  • Fix offline workshop support (hi steamdeck users)
  • Feature: Go back to previously selected folder when pressing "Go back"


0.12.1
  • Fixed in-game scaling of resolutions taller than 16:9 (fixes steam deck)

Project Heartbeat 0.12 Update Notes

Here we are again.

0.12 is ready, this update is pretty big, it also comes with some big news, off we go:

New song: Going my way (DJ Timotei EDIT)


[previewyoutube][/previewyoutube]

A new song licensed from the Eurobeat circle Takanashi Kobo, this song has been charted by Yahoo and illustrated by Reixart.

Website and user rankings








Project Heartbeat now has an official website, this includes web based leaderboards and user rankings a la osu, the ranking system's points have been tentatively named pp (for funny reasons).

Do note we want to revisit and probably redo this algorithm eventually, as it didn't perform quite as expected so a bespoke solution is gonna be needed.

You can find the website at ph.eirteam.moe

Steam Deck support




While we weren't among the lucky few to get a devkit, but we managed to get the game ready for Steam Deck anyways through some black magic (and some new Steam SDK releases). It will now use the new text input features of SteamOS 3.0 where available.

Another features include better scaling of the menus in general, particularly for the main menu.

Big picture mode gamepad text input support




When running the game inside Steam Big Picture you can now use the keyboard whenever you have to type something.

Controller overhaul


As part of the aforementioned deck support we have updated how the controller support works.
The selected controller is now the first one we detect an input from, when a controller is being used the mouse gets hidden.

Song search




What took you so long? - Kazuhira Miller, probably

h264 mainlined




After some investigation I discovered that neither my country nor my closest neighbor (France, unfortunately) recognize software patents, thus I've taken the decision to mainline h264 support for PPD migration.

Ordinary songs will continue to use vp9 for the time being, in case we have to remove it, but I don't think we will.

Previously you had to install a plugin, hopefully this simpler solution will make transitioning easier.

Editor shortcut remapping




You can now remap most shortcuts in the editor

Load time improvements




Load times have been greatly improved across the board by removing some 4D chess code I accidentally added, song load is instant most of the time, and audio normalization is cached, so even if the first load isn't instant subsequent loads should be.

GLES2 improvements


Some minor fixes have been made to make GLES2 support better for those that need it.

Rewritten main menu music playback


The code used to playback songs in the main menu has been made more reliable and more performant, now audio normalization is used where available, else it uses a compressor to try and keep volume under control.

Updated localization


Most localization files for catalan and spanish have been updated

Direct Joystick Access fixes


Last update we introduced direct joystick access, which allows controls to behave in a nicer way by combining the two axis of a joystick for detection, this didn't really work well so it was relegated to an optional feature, new changes and bugfixes should make it now better although some issues have been found that prevent it from becoming the default yet.

ShiftJIS support for PPD zips




When downloading PPD charts you may have noticed it sometimes failed to find the data.ini even though it was there.
This was caused because the file names were encoded in an encoding system known as ShiftJIS (JIS stands for Japanese Industry Standard) this encoding is fairly exotic in the west but very common in japan, at least years ago (everyone seems to finally have agreed on UTF-8).
The game will now try converting the raw file name data into ShiftJIS if it fails to decode it as UTF-8, which should be nice.

Editor changes




A bunch of editor changes, courtesy of lino.

Add X/Y snap for grid notes
You can now slide around notes in a straight line by pressing shift while dragging them

Practice mode stats in playtest
The practice mode stats have been added to playtest in the editor

Autoslide option
Added an autoslide option to make slide spacing be correct

More per-song editor settings

More editor settings will now be saved when you save your song:

  • Snap to the timeline
  • Show video
  • Show BG
  • Show grid
  • Snap to grid
  • Grid resolution
  • Autoarrange HV separation
  • Autoarrange diagonal separation
  • Use stage center for transformations
  • Angle circles from the inside
  • Circle size
  • Circle separation
  • Advanced circle mode



Use mipmaps on loaded images


Some mipmapping, filtering and other fancy stuff is now used when loading transparent things such as circle logos and any other gaphic, this is likely broken on some renderers for various complicated reasons, so please let me know if your images come up black so I can add exceptions.

Anti-cheat


After some digging I found some undocumented APIs that allowed me to retrieve metadata from the workshop uploaded by the game on the server-side, this has lead to the development of an anti-cheat solution that's not invasive. It isn't perfect, but not even invasive anti cheat is perfect so you can be sure I am not stealing your Maki Nishikino images.

Hold scoring changes


In order to make holds more consistent and less complicated, the score is now counted from (Note Time - Fine Timing Window).

Menu sorting changes


Difficulties within a song will now be ordered by stars, makes more sense.

Credits menu




A new credits menu has been added to options, this will show people who contributed to the game as well as some legalese. There is also a pretty neat surprise if you scroll all the way down on the "Game" section.

Bug fixes & minor changes


* e96a9d4a - Fix editor error when freeing (hace 8 semanas)
* c339fe7f - Include audio loudness in HBSong when saving (and make use of it) (hace 8 semanas)
* cd89e6b6 - Hopefully fix last subscribed sorting being broken when a song is updated (hace 8 semanas)
* d9ceb1a8 - Add audio nromalization data to all built in songs (hace 8 semanas)
* a8c5192e - Fix highest score not saving (hace 7 semanas)
* 916666ae - Remove yield that caused stall when returning to menu (hace 7 semanas)
* 6b05b942 - Fix slide chain multis in editor (hace 6 semanas)
* 3802e579 - Hide multi laser for weird multis when hit (sustains and slide chains) (hace 6 semanas)
* ce43c9f1 - Fix slide note scoring inconsistencies (hace 6 semanas)
* 0c4040ce - Fix NX-switch controller mode being used outside of the Switch (hace 5 semanas)
* 9d8cd77b - Saner defaults for lyrics (hace 5 semanas)
* 469c527d - Remove unused virgin eirexe achievement (hace 4 semanas)
* dfd9c68c - Fix expressionrunner performance bullshit (hace 4 semanas)
* 7c0c1ef8 - Ensure unique resource_paths in ResourcePackLoader (hace 4 semanas)
* 8034c611 - Move OptionControlsSection to use UniversalScrollList (hace 4 semanas)
* 9f5084fb - Remove remaining uses of legacy HBScrollList (hace 4 semanas)
* 715cd6f7 - Add some experimental jitter improvements (hace 4 semanas)
* 769a38e4 - Fix expressionrunner error logging (hace 4 semanas)
* 8aa05957 - Make expressionrunner cast to HBTimingPoint instead of HBNoteData (hace 4 semanas)
* 6c1f0f3c - Fix clear bar color in GLES2 (hace 4 semanas)
* 28798742 - Add extremely hitler nazi song verification (verify disallowed file types and subfolders not existing) (hace 3 semanas)
* cdc9a18c - Enable encoding text resources to binary to save space (hace 3 semanas)
* 23f8c77d - Cancel workshop preview image requests when it is safe to do so (hace 2 semanas)
* e186cca1 - More steam error handling (hace 13 días)
* a6b36811 - Fix GUI misalignment (hace 9 días)
* c029eec2 - Fix seeking issues when not using system clock (hace 9 días)
* 6e391e17 - Remove is_on_steam_deck() requirement for GamepadTextInput as per valve's recommendation. (hace 9 días)
* c5c466dc - Fix ending of songs without end_time in BackgroundMusicPlayer (hace 9 días)
* 136659d0 - Fix ACHIEVEMENT_PERFECT_BUILTIN (hace 3 días)
* dec02754 - Update all official songs with hashes and new meta (hace 3 días)
* 98f5a2df - Universal scroll list consistency fixes (hace 2 días)
* 744408c4 - Fix scrolling from top to bottom (hace 2 días)
* 04c35c48 - TTN 2019 chart changes (hace 2 días)
* f37fa92e - Some label overflow changes (hace 6 horas)
* 02b8da27 - Sanitize composers, writers, vocals arrays on set (hace 6 horas)
* 6dccf1f3 - Release holds when the song ends before the hold is finished (hace 5 horas)
* 652d15d6 - Fix vibration settings not saving (hace 23 minutos)

Future


3DPV system progress




In collaboration with the V-Sekai people I ported a tool called VMDMotion to Godot, although it's currently very slightly broken in the future it will finally allow VMD (mmd motion files) to be loaded into VRM avatars, which was always the dream.

Why not use MMD PMX files you may ask? Because MMD PMX files are not made for games, they are made for offline rendering most of the time, thus they may be too high poly to be used in a game while keeping good performance.

VRM models on the other hand are usually made for use in VR, thus they are high performance, this coupled with the extremely nice support from the godot_vrm plugin.

You can find info on my port of VMDMotion on our GitHub

Onto a new update!