Project Heartbeat cover
Project Heartbeat screenshot
Linux PC Steam
Genre: Music, Indie

Project Heartbeat

Project Heartbeat 0.20.2: Bug fixes & big performance improvements on windows!

Another minor update, this time featuring some good changes to my life for once!

BananaJuju collab





I managed to land a collab with popular monkeytuber BananaJuju, she will feature in the artwork for an upcoming song. The art was made by Mr. Seori.

Update on the two new songs



As I announced before I managed to license two big eurobeat classics, however the licensor has been ghosting me for a few months, so I have no idea what's gonna happen with that.

Update on my own life shenanigans



I recently got hired at a big game studio, so I unfortunately don't have as much time as before, but I spend all my weekends working on PH, and during the week if I have time, don't worry, I haven't forgotten about it!

The extra money and stability is nice, it also means I can finally get medical help for my leg since the public Spanish healthcare service didn't care much about it.

Engine continuous integration



I have set-up continuous integration for the engine, it's available here on the releases section.

You can get the engine and editor binaries from there, as well as the debug symbols (more on that later).

Return to MSVC



Many moons ago (around the time Phoenix was released) I decided to switch to MinGW for building the windows version of the engine, in hindsight that was a big mistake.

One of the big reasons was I/O performance, but there's also other things that broke, now that we have CI building using MSVC is a non-issue.

Fixed crash dumps



Breakpad is a tool that has been in the game for a while, essentially it allows me to get crash dumps generated by the game and know where in the code the crash was triggered.

Unfortunately breakpad on MinGW has been broken for a long time, so even though windows crash dumps were generated I had no way of decoding them, now that we are back on MSVC that's not a problem anymore.

Website rush note consistency fix



It was discovered that some charts on the website had incorrect percentage calculations applied to them due to a programming mistake related to rush notes.

Luckily Steven helped me derive the correct rush bonus and we managed to fix the issues.

Stricter anti cheat



Due to potential problems with cheating, the anti cheat system is now more strict, as always the anti cheat system is not invasive and runs entirely on the game's web backend.

Improved 3D UI clipping





Previously I went for a stencil buffer based solution for UI clipping, however I quickly realised this wasn't a very good idea, as it required many pipeline re-bindings which was slow, this has now been changed to use user-defined clipping planes which should be much faster.

Alternative timing mode





Previously I went for a stencil buffer based solution for UI clipping, however I quickly realised this wasn't a very good idea, as it required many pipeline re-bindings which was slow, this has now been changed to use user-defined clipping planes which should be much faster and also has the benefit of allowing for clipping as many things as we want!

Bug fixes



  • PH-222: Fix being able to create a slide note hold by selecting a checkbox in the inspector tab.
  • PH-239: Fix various issues with downloading media from the editor, such as overlapping windows and being able to take the download prompt to the main menu.
  • PH-261: Fix workshop songs with very long titles causing the container to overflow.
  • PH-292: Fix alt+scroll shortcut not working.
  • PH-299: Fix editor keybinds triggering inside text boxes.
  • PH-301: Add the ability to download song variants from the editor.
  • PH-301: Fix workshop description disappearing after opening the song twice in a row.
  • PH-310: Fix download list not clearing when a song is finished downloading and fix the queued song count not being updated
  • PH-313: Workaround timeline issues when using a resolution lower than 1080p.
  • PH-315: Fix localization of song list input prompts being missing.
  • PH-329: Fix non-workshop songs trying and failing to upload scores.
  • PH-333: Fix rush note consistency issues.
  • PH-341: Fix downloading multiple songs' media at once causing thumbnails and audio to fail to load.
  • PH-345: Fix deadlock when loading the options menu and then trying to load the songs menu.
  • PH-346: Fix error on close caused by steamworks data caching.


Future





As you can guess, getting my first job in 5 years hasn't really been particularly good for my sanity, so I starting taking my meds again, overall I'm very happy with my job, we have good conditions and the pay is okay. Hopefully I can invest some of the money back into PH.

Project Heartbeat 0.20.1 now available!

Wiki article
Patreon

Minor patch for 0.20 with some changes and fixes, patch notes also available on the EIRTeam Patreon and on the wiki.

Changes


  • PH-243: Improve behaviour of the timeline's zooming in and out by centering it on the mouse or on the current timeline center whenever possible.
  • PH-251: Re-add the ability to scroll workshop song descriptions.
  • Make the editor use the same mechanism to load song assets as the game itself.
  • Add ellipsis to song difficulties in the song list.
  • Improved performance of MegaMix+ art asset loading by making use of compute-shader based conversion of textures and mipmap generation (only available on Vulkan).
  • Updated don't die on me audio file.
  • Fixed some issues in the credits.
  • Added the ability to mute vocals on songs that have them.
  • Make per-song volume settings not require a restart of the song.
  • Make per-song volume settings work in the song list.


Fixes


  • PH-168: Fix Megamix+ Loader song thumbnails and artwork not loading properly.
  • PH-183: Fix song volume settings.
  • PH-252, PH-253: Fix issues with the clear bar not tracking progress correctly.
  • PH-256: Fix artifacting with the song list and workshop caused by improper clearing of the stencil buffer.
  • PH-258: Fix random button doing a pulse animation when switching tabs.
  • PH-259: Fix issues with editor timeline floating point arithmetic issues.
  • PH-263: Fix MegaMix+ songs not having vocals in the editor.
  • PH-264: Fix MegaMix+ songs not having backgrounds in the editor.
  • PH-265: Fix vocal track volume inconsistencies in the editor.
  • PH-267: Fix timeline waveform appearing lower the it should when first entering the editor.
  • PH-273: Fix standard deviation lines not being centered about the mean in the post-song stats tab.
  • PH-274: Fix issues with discord rich presence caused by no rate-limiting on the game's side.
  • PH-276: Fix spamming back button when dialogue box is open causing it to repeat the "close" animation repeatedly.
  • PH-278: Fix sorting by artist and by creator being case sensitive.
  • PH-279: Fix discord rich presence not showing when you are in the editor.
  • PH-280: Fix typo in the yt-dlp custom CLI arguments menu.
  • PH-281: Add missing ellipsis to custom yt-dlp CLI lines.
  • PH-282: Fix start menu birthday hat alignment.
  • PH-285: Fix skip intro prompt not showing up when first playing a song.
  • PH-286: Fix pausing in practice mode breaking the score scroll effect.
  • PH-290: Fix canceling out of the command line edit popup not reverting the changes made.
  • PH-292: Fix alt+scroll not working in the editor.

Project Heartbeat 0.20: All Aboard! Rush notes, bug fixes, new content & more

Originally posted to the EIRTeam Patreon

Welcome, I told you this one would come quicker! Behold 0.20, the final update of the Early Access period of Project Heartbeat, adding a new note type, some major optimizations, new songs and more!

New content & big stuff



New note type: Rush notes





Rush notes have been added to the game. Similar to ordinary notes, except you have to press them as fast as possible until you hit a charter-defined cap.

New Songs: Divine Luneth & Don't Die on Me



Don't die on me



Two new songs have been charted by mvluna and nikoxtz, with a cast of vocalists, resident PH vtuber Kyuuon and Actually_Sharpie, with artwork from EldrichGamingCorner!



Divine luneth





The wiki





Partnering with the people over at wiki.gg Project Heartbeat now has a wiki, it has some funky facts about the game and the people that worked on it that I don't think I've ever talked about, most important it will serve as a centralized knowledge base.

You can check it out here.

Hope you enjoy it.

Performance/Power usage improvements



The game now uses the latest development version of Godot 4.4, this means we now have 2D batching for the UI, pretty funky, in general this probably won't improve GPU performance much but it will improve CPU usage and power consumption.

New song creation dialog





The song creation dialog has been re-designed, to be more easy to use and more quickly explain the (current) youtube URL requirement.

yt-dlp improvements





yt-dlp will now automatically try to update itself on startup, this should lead to me not needing to push updates manually for that anymore.

You can also set your own yt-dlp command line arguments now!

Rich presence improvements





I've redesigned the way the game handles rich presence, it now shows more data, I also made it work with Steam!

PPD downloader revamp



The PPD downloader has been redesigned, it will now perform and act much better, with useful error messages.

Other minor changes




  • DirectX 12 support has been removed after being too problematic to maintain
  • Add a time out system to the control remapping to allow remapping of the same button as the cancel button.
  • Updated localization files.
  • Add UI tilting with the right stick
  • Optimize folder song sorting and make it use the same multi threaded filtering code as the main song list.
  • Show a spinner in the song list of a song who's media is in the middle of being downloaded.
  • Improved the song creation experience


Fixes


  • PH-77: Fix sorting in multiplayer results not working.
  • PH-79 and PH-201: Fix video being delayed in multiplayer.
  • PH-99: Make editor playtest show correct titles and reset the stats when restarting.
  • PH-118: Fix inconsistent visuals for emblem sizes in the pre-game progression window.
  • PH-120: Fix some notes lingering around when restarting a song.
  • PH-135: Fix some issues with F/F2nd DSC conversion
  • PH-143: Fix intro skip activating by just pressing Triangle
  • PH-152: Prevent pausing during song fade out.
  • PH-153: Fix game crashing when navigating to the latency graph when there's 0 notes.
  • PH-156: Fix some skins' accuracy bars not being visible due to a change in 0 width lines in godot 4.x vs 3.x.
  • PH-158: Prevent pasted notes from being autoplaced in the editor.
  • PH-163: Fix issue that would cause the play and stop buttons to be disabled in the editor when double clicking a song in the chart selector.
  • PH-164: Fix lingering sustain loop sound when exiting a test play session in the editor mid-sustain.
  • PH-167: Fix game not remembering workshop filter settings.
  • PH-169: Fix latency tester softlock.
  • PH-172: Fix OOBE not enabling/disabling health system.
  • PH-173: Fix subscribed songs not showing up in the song list unless a refresh was forced.
  • PH-175 and PH-190: Fix various issues with the new song list.
  • PH-177: Fix the keyboard shortcut for toggling the editor's grid not working.
  • PH-182: Fix "Pausing at beginning of a song for a few seconds causes video to freeze".
  • PH-185: Fix keyboard shortcuts for increasing/decreasing note separation not working properly.
  • PH-186: Fix menu wrapping in the sort options menu.
  • PH-188: Fix main menu geting stuck when entering and returning the workshop menu in quick succession.
  • PH-189: Fix Downloads page saying no downloads are queued even if downloads are in fact queued.
  • PH-196: Ensure song list preview doesn't show if we don't have a valid song loaded.
  • PH-200: Fix game crashing when someone joins your lobby while picking a song
  • PH-202: Fix lobby menu not returning focus to the button containers after accepting an UGC download.
  • PH-205: Fix issue where exiting the game while downloading media freezes the game until said media is downloaded.
  • PH-206: Fix backing out of some confirmation windows with back button.
  • PH-207: Fix switching tabs in resource packs menu not highlighting items properly.
  • PH-210: Fix song search failing to return focus to song list when canceling out.
  • PH-211: Fix tutorial screen page1 image scaling mode.
  • PH-212: Fix being able to get stuck in the resource packs options section.
  • PH-213: Fix game not recognizing charts with non.finite audio loudness value.
  • PH-214: Fix attempting to leave the editor with unsaved changes graying out the save buttons.
  • PH-217: Fix various issues with the clear bar not showing lines properly.
  • PH-218: Fix being able to switch tabs in the pre-game screen when adjusting the "Timing Window" modifier's window.
  • PH-219: Fix pre game options section clipping issues.
  • PH-220: Fix visualizer not being visible in the editor.
  • PH-223: Fix sustains not updating the potential score correctly.
  • PH-224: Fix restarting a song breaking the score scrolling effect.
  • PH-226: Fix some weird interactions with slide chains in the editor.
  • PH-227: Fix playing a chart breaking note type switching using the up and down key shortcuts.
  • PH-228: Fix timeline snap geting enabled by default, even if it was previously disabled.
  • PH-229: Fix a script error caused by creating a slide chain by selecting an area and pressing the slide button.
  • PH-230: Fix sort indicator in Free Play menu.
  • PH-231: Fix song menu elements being clickable when sort/filter popup is up
  • PH-232: Fix clear bar issues caused by multi slides.
  • PH-240: Fix workshop romanized titles being cut-off.
  • PH-241: Fix various issues with f2nd importer.
  • PH-245: Fix setting some font property values on some UI components in the skin editor


Future



I was thinking about what to do about the recent YouTube download issues, I was thinking of allowing audio and video uploads to the worshkop, but not sure!

This update took a bit longer than anticipated for various reasons, particularly my illnesses and my grandpa's surgery, whoops.



See you in 1.0!

Regarding slow speeds and 403 errors when downloading song media

Hello, quick heads up, you may face some problems downloading song media, this is a known issue within yt-dlp, unfortunately I am still in Galicia (I overstayed because my grandpa is getting surgery), I promise this is not a cop-out, if required I can show document proof of this.

I unfortunately am unable to properly update the game from here, in the meantime you can try to set the maximum simultaneous downloads to 1 to mitigate the problem.

Regarding the 403s, they are a known issue by the yt-dlp developers, but the fix is being worked on..

I assume this must be caused by YouTube's latest crackdown on adblock extensions changing things in their backend.

I will see what I can do in the future to prevent this, such as by having an archival format or something like that. Of course I can't just allow people to post songs with videos to the workshop, that's the nuclear option I reckon.

Sorry for the inconvenience caused!

News roundup #10 - All aboard the 0.20 hype train! Wiki, Rush Notes & more!?

(Originally posted to the EIRTeam Patreon, please support us there too!)

Ah yes, me and schedules, we don't seem to be in friendly terms.

I would like to apologize for the 1000th time for not making these news roundups in time, but we are inching closer to the release of 0.20. This update will include many new features, new content and engine improvements (about fucking time).

0.20 will be named the All Aboard! Update, earning its name from the fact that this will be the final early access era update (for real this time).

Let's dive into what I've been cooking...

The wiki





With how complicated the game (and its history) has been, I thought it would be good to start a wiki, for that we partnered with wiki.gg, the new PH wiki is available here. I already populated it with some content, including some Update pages, hopefully you can also contribute to it!

Rush notes





I promised I'd do them, and here they are, PH now has rush notes, there are still some minor tweaks left on them, but they will be here for 0.20.

Mechanically they aren't exactly the same as in diva, this is intentional, but I hope the slightly different mechanical behaviour is good enough! These notes have either an automatic (optionally user-defined) cap, once the cap is reached the rush note doesn't give any extra scoring.

Performance improvements





The engine has been updated to the latest development branch of Godot, this means that we now have a few extra features that allow improved performance on the Vulkan renderer, such as draw batching, generally you won't notice much change, other than a lower CPU usage, but it might improve performance on inhumanly dense charts.

Compilation made easier



While not documented yet, I've made compiling of the game engine much easier by moving it all to a monorepo, which can be found here.

DirectX 12 support removed



Due to it being a pain in the ass to maintain I've decided to remove support for DirectX 12 from the game, I assume not many people will miss it as it never worked well anyways.

New content



0.20 will include two new songs, hopefully you guys like them, there isn't much more for me to say until they are revelaed, sorry!

A truckload of bugfixes



I've fixed a loooooooot of bugs, some that existed since the game released, others that were caught recently, a reasonable amount of work was put into improving multiplayer, but no one has given me feedback on it yet.

Since we have a wiki now, you can read the in-progress update article here.

Project K status



I've decided to can Project K (the unrelated game I talked about last news roundup), as it wasn't really something I was going to enjoy doing. I'm now working on a different side project, but I probably won't talk much about it until the prototype is playable.

Future





There's very little work to be done on 0.20, the update will be released to verify that it's all fine, hopefully before the end of the year and then we will exit early access.

I was in talks with a pretty popular eurobeat producer to try and include some of her other songs in the game, but unfortunately after an enthusiastic initial contact it seems like they are now ghosting me, oh well.

I also tried contacting a major vtuber agency to make a game based on their talent using PH as a base and reusing their mocap models and animations for a cheap but nice game, unfortunately I also have been ignored, such is the life of the game developer.

I would like to make a few more trailers, to have ready for when 1.0 eventually drops, but I am not sure how to structure them, if anyone could lend a hand please let me know.

On another note, I've gone too silly with the cassette players and I now own more walkmans than anyone sane should, whoops.

Outside those minor things though, everything is going well, I'm more productive than ever which makes me very happy. Hopefully it remains like this for a while.

News roundup #9 - PH update, Surprises, Project K & more

Good morning, this is not a typical news post, as there isn't much about PH in here, just an update on me and how I'm doing.

A few weeks ago I released 0.19, the first post phoenix major update, it fixes many long standing bugs.

The update went well, sales have been boosted by the steam rhythm game fest and the fanatical bundle, so I'm quite happy in that sense.

I honestly haven't worked much on anything since that released, a few bug fixes here and there but nothing major, I feel a bit physically down recently.

I always debate how much I should share about my personal life in these updates, this is not my personal blog (I'd make a separate category for that if anything) but I feel like the things listed here are relevant to development as they have an effect on my productivity and ability to work on the game(s).

This is also made worse by the fact I'm a solo developer, so any personal happenings have a full stop effect on work on the game.

Project Heartbeat





Project Heartbeat is popping off hard, as I told you guys before, I will be working on some new features soon, rush notes are likely to be the next big feature to add to the game.

I would then like to work on the archival format.

I was thinking of using some of the LOD'd terrain mesh stuff from Project K to make the game's default background into a real 3D scene with 3D visualizer effects, not sure how well that would work but it would be very fast and probably be a nice thing to add.

I also have to re-review the replay system which I parked for now, essentially the way it worked was by capturing raw input actions and replaying them, it was more complex than it had to be because I wanted to know the hardware origins of each input so as to have the ability to analyze the inputs per-device. A simpler and more reliable approach could be to capture the final input events after being processed by the game, but this would mean losing some data.

As a middle ground we could do like Trackmania, which captures both actual game-affecting final input events and raw hardware input events, but only have the first one be used for actual replay playback.

The raw input events can be used to analyze replays by the community without compromising repeatability.

And yes, I am aware of multiplayer issues, I'm working on them!

New PH content coming!?



YES!! There's three new songs coming to the game, as well as a new built-in skin (that doesn't replace the original one we all know and love), more news soon. Two of them are Eurobeat classics /).

Project Surprise



I'm working on a PH related project that will be announced when it goes out of early access, don't worry, it's not Project Heartbeat 2.

Project K



Project K is my new game side-project, so as to not pollute this blog post with non-PH stuff you can find the full version here.

Health update



As some of you may know, I spend a lot of time in bed not doing anything, I used to blame this on depression (and it probably is still at fault somewhat).

It has been discovered in a recent blood test that I have a major deficiency in vitamin B9, aka Folate, which means I have probably been in need of a supplement for a long time but it wasn't discovered until now.

This would actually explain many things, such as my constant tiredness and difficulty losing weight, hopefully by taking folic acid supplements I can be back to normal in a few months, hopefully.

I would like to apologise for not finding this out earlier and the effect its had in PH development.

Personal update



Due to personal happenings I've not worked much on PH recently, again as this isn't strictly PH related I posted about it on the patreon post.

See you soon, hopefully for 0.20 or the end of early access?

Project Heartbeat 0.19 now available: Bugfixes, adjustments, and more

Welcome to this funky update, including not so many new features and a truckload of bug fixes!

New song: The nostalgic messenger



https://youtu.be/itBQ5pVuFN8

This is a song that has been in the works for two years, thanks to mvluna for the charting, to Cusi for the music and to RheaBee for the artwork!

Song list changes





After a lot of iteration and input from the discord I finally came up with a design I like.

The new design features difficulty lists that are easier to read at a glance, this will also be used for score based filtering (the individual difficulties that don't match the filter will be greyed out).

Currently the difficulty colors are either hardcoded (for the 5 canonical difficulties) or generated from a hash function, you will be able to set your own difficulty colors in the future though.

There's also a much requested unsubscribe button!



On another note, when scrolling through the song list (specially when wrapping around) you will now see some placeholders, these are there to prevent having empty spaces and to give you something to look at while the short scroll finishes, this prevents having to load all the song UI elements.

OOB system





This is something i've wanted to do for a while, basically, I want to have system that lets you configure basic PH features right on first start, such as the note skin or the health system. You can also just skip it and use the defaults like before!

New judgement graphics





Judgement graphics have always sucked in PH, they were nothing more than labels, i finally got around to designing new ones, I also made the combo count use some new number graphics as well, might use them for the score counter on the top right too, who knows.

Stats tab





The results screen now has a new fancy stats tab, I hope you guys like it! It was made with help from the PH discord and specifically from Steven, I still plan to make some cosmetic improvements.

On another note, the stats and the graph tab now do their math using a multi threaded task system, so they should no longer stall the game.

Results screen changes





I made some changes to the results screen based on user feedback, I hope you like them, there's still one more feature I want to add to it, but that will come later.

Pulsating buttons



I did some workaround to allow having animated buttons, the animation is rudimentary but works pretty well I think.

Slide note behavior changes



I have made the slide notes match the behaviour in the brazilian girl's game, specifically I made it so that it won't give you a WORST until its at the end of the window.
It's a bit hard to explain, but you'll understand when you try it.

Video player improvements



The video player subsystem has been improved and it now supports different playback speeds, so you can have videos in nightcore more and in the editor when changing the playback speed.

Range sliders redesign





The range sliders in the options menu have been redesigned to be much nicer and more usable by mouse.

Bug fixes




  • Fix not being able to move the start of sustain notes in the editor
  • Fix workshop browser not using the adequate input actions
  • Fix gamepad list display in options menu
  • Fix mouse auto hide behaviour
  • Fix song cache dialog overflowing
  • Fix song list song container clipping
  • Fix video scaling in editor playtest
  • Fix first time playing a song in the editor not setting stream position correctly.
  • Fix crash on negative duration songs
  • Fix content reloading showing a black square in the middle of the screen.
  • Fix scripts and midi loader popups having wrong column expansion settings
  • Fix offscreen sustain line drawing
  • Fix scripts and midi loader popups having wrong column expansion settings
  • Fix some practice mode stupidity
  • Fix laser renderer not being deleted with groups in the editor under some circunstances.
  • Fix editor shortcut creation
  • Fix running editor scripts
  • Make video downloads using audio only actually only download audio
  • Fix code editor font
  • Fix Game showing wrong emblem in progression list
  • Fix video restarting without notes in practice mode
  • Fix practice mode exit focus issues
  • Add subtick functionality to some missing places
  • Improve universal scroll list clipping and performance.
  • Switch to comfy-like heuristics for grouping slide chains (hopefully)
  • Removed old task queue and switch song filtering and sorting to use new engine features
  • Fix skin editor serialization
  • Fix skin editor font editing
  • Fix skin editor outliner right click menu not showing up in the correct location
  • Fix song list not selecting song when returning from gameplay session
  • Fix song start scheduling fucking with practice mode when first entering it
  • Fix some sort options not working properly
  • Fix practice mode sometimes causing stray note groups to exist
  • Use new video player playback speed mechanism in video player
  • Fix taill preview images overflowing music player thumbnail
  • Fix diagonal and full width snapping in the editor
  • Fix workshop browser filter by difficulty
  • Fix "Deselecting all difficulty filters breaks difficulty displays" and "the text above the filtered songs still says "(0-10+)" regardless of what the filter actually is"
  • Improve lyric phrase timeline item behavior
  • Various minor fixes to windowing
  • Fix sorting by highest score
  • Add a few resource pack things and generate mipmaps
  • Fix a few minor memory leaks
  • Fix content dir selection
  • Fix holds in autoplay
  • Fix: Disable and enable UI as needed for the tempo map tutorial.
  • Fix: Make sure autoplace works when moving notes around.
  • Port Arc tools to Godot 4 editor
  • Fix leaderboard score alignment Fixes #98
  • Fix some more buffer behaviour leftovers
  • Fix autoplay not doing holds properly
  • Fix histogram lines usign placeholder values Fixes #101
  • Fix auto translate triggering for percentage delta label. Fixes #102
  • Fix editor transform preview on export
  • Fix Full Width and Diagonal Step Arranging.
  • Fix potential memory leak in tabbed container
  • Fix star filter not working in workshop browser
  • Fix failure to start practice when song assets aren't loaded
  • Fix main menu bg swap not happening when returning from playing a song
  • Fix Song menu doesn't remember previously highlighted song
  • Fix options sections having a default scroll that made them cut off
  • Fix some more editor stupidity
  • Fix timeline scrolling and make more shortcuts visible to the user.
  • Fix opening charts by double clicking.
  • Fix order of arc and circle tools.
  • Disable minimap while area selecting.
  • Fix angle arrange again.
  • Fix timeline stealing clicks
  • Fix song list folders and workshop tab not working and resetting respectively
  • Fix some options menu spacing issues
  • Remove invalid deserialized charts from in-memory metadata
  • Fix sort prop not being applied to filter songs task
  • Reset scale up/down shortcuts properly.
  • Fix circle size sliders.
  • Fix zooming in the script editor.
  • Fix scrollbar issues when resizing editor modules.
  • Fix latency tester
  • Fix error cleaning up thumbnail requests
  • Improve & fix workshop automatic download after subscription
  • Fix rare main menu news list error
  • Fix note scaling in practice mode with custom note scales
  • Fix issue when mashing accept on restart
  • Fix crash on startup on some linux distros


Other minor changes




  • Adjust note hit effect and slider piece particles
  • Make use of new videoplayer.process_while_paused
  • Improve gamepad list display in options menu
  • Add practice mode video seek debouncing
  • Make importer replace chart check be checked by default like in 0.17
  • Replace results screen share to twitter with score URL copy
  • Add the ability to filter and sort in folders
  • Added appear animation to confirmation windows
  • Improve workshop item thumbnail behavior
  • Add subtle shadow to most labels
  • Generate mipmaps for song assets


Future



Some personal issues have prevented me from pushing this early, I managed to cause myself a neck contracture (I barely get out of bed recently so it's starting to affect me) and my grandma is in a coma, which is for sure not good for spirits, the doctors say she has porphyria.

Regarding Swansong: I have completely stopped working on it and I'm unlikely to resume it, as the people that were going to help me make it a reality are unable to work on it anymore, unfortunate, but it is what it is.



I have instantly pivoted to working on another kind of game, a less niche one, tailor made for consoles (particularly switch/switch2) so I can hopefully make some money, I don't want to talk about it until I have something to show though, I wouldn't want to disappoint again, but if you are around in the discord you probably know what it is.

On a more positive note, sales have been insanely good recently, so I'm very happy with that, I finally have some air to breathe financially!

See you next update, which will hopefully be the one that gets the game out of early access. Oh! about those rush notes I owed you... Soon!

Enjoy this picture of my late grandpa's work van and my MR2 to top off this update:

News Roundup #8 - Marching towards full release!

(originally posted to the EIRTeam patreon)

Hello people, long time no see! I have been working a lot on PH recently, fixing up stuff and finally adding new features, I hope you guys like what I've been cooking.

Most things are bug fixes, a detailed changelog of which will come when I release the next stable patch!

Song list changes





I pushed some experimental song list changes, after a lot of iteration and input from the discord I finally came up with a design I like, there are some minor bugs here and there still, but I think i'll be able to solve those.

The new design features difficulty lists that are easier to read at a glance, this will also be used for score based filtering (the individual difficulties that don't match the filter will be greyed out).

Currently the difficulty colors are either hardcoded (for the 5 canonical difficulties) or generated from a hash function, you will be able to set your own difficulty colors in the future though.



On another note, when scrolling through the song list (specially when wrapping around) you will now see some placeholders, these are there to prevent having empty spaces and to give you something to look at while the short scroll finishes, this prevents having to load all the song UI elements.

These will be updated to the new song list item design when it is finalized.

OOB system





This is something i've wanted to do for a while, basically, I want to have an out of the box system that lets you configure basic PH features right on first start, such as the note skin or the health system. You can also just skip it and use the defaults like before!

New judgement graphics





Judgement graphics have always sucked in PH, they were nothing more than labels, i finally got around to designing new ones, I also made the combo count use some new number graphics as well, might use them for the score counter on the top right too, who knows.

Replay work





While they aren't ready yet, I've been working on replays, I laid some of the ground work for them, most of the stuff involved making the holds and other parts of the game more deterministic.

Unfortunately, this also means the removal of the venerable rollback on unpause functionality, I hope this doesn't bother you guys too much, but it was going to be extremely hard (or impossible) to get it to work otherwise.

Stats tab





The results screen now has a new fancy stats tab, I hope you guys like it! It was made with help from the PH discord and specifically from Steven, I still plan to make some cosmetic improvements.

On another note, the stats and the graph tab now do their math using a multi threaded task system, so they should no longer stall the game.

Pulsating buttons



I did some workaround to allow having animated buttons, the animation is rudimentary but works pretty well I think.

Future





We are well on our way to going out of early access, I will do a small update to stable with the new features and bugfixes soon (tm), then I'll finally work on rush notes and then we might be ready for release, I hope.

It's really been a terrible month for me, at least I'm glad phoenix ended up coming out as good as it did, my motivation is on the ground but at least I get stuff done on a daily basis.



I am once again at a complicated crossroad, I feel very demotivated and things aren't getting better, I fear for my future. I've been trying to learn some 3d sculpting too, let's hope that comes out good.

I didn't work much on Swansong, I've actually spent a lot of time playing Ghost of Tsushima (great game btw).

I feel sad when I play games because I feel like I should be working, but when I look at the real amount of time I spent playing vs working I actually should probably work less and play more, but I don't enjoy it as much.

Life may be hard, but I'll figure it out.

See you soon, lads!

Project Heartbeat Phoenix Update: Now available

"After 10 thousands years in development, hopefully, it will have been worth the wait!"

Ladies and gentlemen, the time has come. We've gone through an insane amount of hardships together over the last year and this is the culmination of that work. Welcome to Project Heartbeat Phoenix.

Welcome home, rhythm game enjoyer



Project Heartbeat Phoenix is the most far-reaching update we've made ever since the game released back in March of the seemingly cursed year that was 2020.

This update touches every aspect of the game and improves upon it, not only is the engine brand new, so is the input system, the video decoding, the steam integration, the multiplayer, the rendering code, everything has been meticulously revamped to harness the power of the great Godot 4.

This update won't really blow your mind with fancy bells and whistles, as there aren't that many new features, what it provides however is an incredible improvement to the bare essentials, never before seen consistency and world-class rhythm game technology, this will not only improve the game, but also my ability to expand it in 1.0, let's get into the details.

The new approach





As some of you may be aware, in this year since the last major update I started a Patreon, this has not just resulted in a much-needed help to sustain myself (PH isn't profitable at all, with me not earning minimum wage most months) but also it has allowed me to have a "reason" to work on engine extensions that can be shared between different games.

The result of this is the new Steamworks, input glyphs and FFmpeg modules I developed for the engine, these are open source and available on the EIRTeam GitHub for everyone to use!

If you want to help me out further monetarily check out the Patreon, this is obviously optional and doesn't get you many benefits other than a different color in the discord.

New content



New song: Versos perversos



https://www.youtube.com/watch?v=L9slqe57vUQ

Licensed from the great Andrés Alguacil, AKA elBokeron, Versos Perversos is a relatively popular Spanish meme rap song that I added because I personally like it much, luunah decided to make an extra hard difficulty named "Lunatic", this won't become the norm but it's just a nice plus.

This is a collaboration I've been wanting to do for a while, I actually obtained permission from Andrés back in 2021 to use his work, but life and Project Heartbeat got a bit on the way.

The art was made by @Psycho_Loli on twitter. Please check out her work!

Charted by luunah and lino.

New song: War zone





Touhou Eurobeat, the source of all great things in Project Heartbeat, here's another Eurobeat song from our friends at Grazepoint, based on an original Touhou Project song, this was arranged by WORLDWIDEWOLF with vocals and lyrics from Timothy.

The artwork was made by our great resident artist @Guinii4 please make sure to check out her work!

The new game engine



Phoenix uses the new Godot 4 game engine, the result is increased performance, more renderer options and less headaches for me, yay.

The star of the show: Subtick system



https://www.youtube.com/watch?v=8EgtpCrbdSg

While working on what would later become Phoenix I had an idea, could we possibly make the game more consistent if we applied the same technology valve's Counter-Strike 2 uses for subtick input? The answer as it turns out, is a resounding yes.

You can learn more about how it actually works in the video above, I plan to do a few deep-dive tech videos describing how it actually works eventually ;)

Currently subtick is only used for gamepads, but I plan to add kb/m support in the future, and perhaps even touch support.

Input system





The input system has been replaced by SDL, this will finally rid us of strange issues the game was facing since release. Yes, this also means Steam Input finally works well with the game! Long-gone is the need to go into options to change your current controller manually, now you can even play using two or more controllers at the same time! (not sure why you'd do that, but you can).

New input glyphs





I decided to revamp the input glyph system used in the game, as mentioned before this is part of the three open source projects that I launched the patreon with! The new glyphs are nicer (courtesy of valve) and it also supports better keyboard glyphs.

Discord rich presence





I've reworked how discord rich presence works, it will now show the album art for workshop songs! It's also much more reliable and doesn't depend on Discord's stinky proprietary libraries :D

Multiplayer revamp





Multiplayer has been completely rewritten from scratch, the new code is more reliable and robust, it should allow for doing more complicated things like using modifiers or different per-song variants in the future!

New website









While already announced, the new website was developed as part of the development of Phoenix, I revamped the design, added many fancy new features, such as personal best history, search and more.

Real 3D GUI





In old Project Heartbeat the way the UI was made was by drawing two textures offscreen and then putting them on a bunch of 3D planes as textures. This had its share of inconvenience and performance issues, it also didn't allow any form of antialias or the ability to sample the background.

With the new rendering code I wrote, we now have a real 3D interface inside PH, this allows me to use MSAA x2 on the main menu for crisper rendering and also saves you a lot of power consumption, specially important for handheld devices like the Steam Deck, I've seen battery life of up to 6 hours on my own machine.

As I said before, the new real 3D GUI also allows me to read the background of the image, this means I can finally do the frosted glass effect I always wanted to do, I think it looks very pretty, I might make it configurable in the future, so please let me know what you think of it.

Video decoding improved





I rewrote the video decoding code we used, by taking heavy inspiration from the way Osu! does things but with a few twists.

You see, videos don't really come in RGB form, they usually come in a pixel format known as YUV.

The human eye is actually much worse at distinguishing colors than it is at distinguishing various shades of brightness, what most formats do is that they cut the pixel data into a big luminance channel and two smaller chromatic channels. Essentially this means that instead of needing three full resolution images for each color channel (R, G ,B) you can instead get away with a big image for luminance and two smaller ones for color information, and your eye is none the wiser!

Unfortunately, graphics cards can't really display YUV data directly, due to this the conversion had to be done on the CPU which was computationally expensive, there are some graphics API extensions that exist but there's not much reason to use them now that we have compute shaders.

And such is the approach used in Phoenix, it uses the massive parallel power of your GPU to convert YUV video into RGB, in practical terms, this means that converting a frame to RGB takes 43 microseconds instead of 7 ms on a powerful computer, which is a 160 % improvement.For now this technique is only available on the Vulkan and DirectX 12 rendering backends.

I also added the ability for video playback in nightcore mode, I hope you guys like it.

True Vulkan and DirectX 12 support



Old PH used a compatibility layer known as ANGLE to translate the original Godot 3 OpenGL calls into Vulkan (and formerly, dx12), this was fine, mostly, but PH now uses Godot 4, which has native Vulkan support.

I have decided against making DirectX 12 the default on windows, due to some potential memory leaks in the Godot code that were reported to me, but you can still try it if you want.

On the long run, PH should get native vulkan DXGI present so we can ditch DirectX altogether, but that's currently out of my expertise since I'm a bit of a Vulkan noob hehe.

OpenGL is still supported, at least for a while, but it's actually likely to perform worse on most systems, so I recommend not using it.

Results screen revamp





I redesigned the results screen, thanks to input from NeoRash, I think the new design is quite nice, now it shows more information than before.

Future





I am very excited (and honestly, nervous) about this release, this is basically the work of a full year condensed into a single update, gives me the same feels the initial release back in March 2020 gave me, it's a good feeling to finally be productive again.

Regarding Swansong, I haven't had much time to work on it obviously, but I already know what things I will be exploring when I inevitably return to it, but obviously my focus always remains on PH, specially since I expect an inevitable wave of new and interesting bugs with Phoenix.

See you in the next update where PH will finally go out of early access!

I would also like to thank steven for all the bug testing and hunting he has been doing, and the various analysis he ran on the game.

Project Heartbeat Phoenix Update: Release date announcement



Mark your calendars: May 20th is the day Project Heartbeat Phoenix releases to everyone!

Project Heartbeat Phoenix is our biggest release yet, featuring a new engine, improved performance and a first of it's kind subtick system.

Love will never be the same.