1. Project Heartbeat
  2. News

Project Heartbeat News

Project Heartbeat Phoenix: Beta 3 now available

Hello, I decided to start making changelogs for the big beta updates.

In case you aren't familiar with it, Phoenix is the name given to the new version of Project Heartbeat running on Godot 4, this version has been widely revamped with many new bells and whistles, including the new subtick system. You can learn more about it here:

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

This update consists of 80+ changes to the game's code, mostly fixes but some minor new features.

Fixes


  • Fix workshop browser
  • Remove controller selector since it isn't required anymore
  • Remove simplified chinese translation that wasn't ready for prime-time yet.
  • Fix loading screen crashes
  • Fix some BPM changes not being applied
  • Fix an issue that would cause the game to crash when opening the editor
  • Fix notes not cleaning up properly when being deleted in the editor
  • Fix and improve behavior cursor auto-hide
  • Fix editing angles in the editor by clicking on the stage
  • Fix some editor time conversion errors
  • Fix folders
  • Fix midi, DSC and PPD importers.
  • Fix minor (inconsequential) memory leaks
  • Fix result rating styling
  • Optimize stylebox vertex count
  • Fix clipping in pregame screen.
  • Fix 3D menu scaling
  • Fix editor trying to use hidpi and failing at it strepitously
  • Fix lyrics rendering
  • Fix UI scaling changing when exiting the editor
  • Fix some popups not spawning centered
  • Fix note input lockout during fade-in
  • Fix slide chain drawers not doing the appear animation properly
  • Reduce editor font size to better match old PH
  • Fix missing editor toolbar icon and recolor waveform icon
  • Fix note movement gizmo losing tracking when moving the mouse too fast
  • Fix song variants crashing the game
  • Fix editor area select
  • Fix song list search passing keyboard input through in some circumstances
  • Fix song restart fade-in input lockout
  • Re-add yellow selection triangle to notes in the editor timeline
  • Fix arrange wheel
  • Fix pregame screen modifier buttons not being usable with a keyboard/gamepad
  • Fix pause menu stealing focus when clicking in an empty place
  • Optimize credits section
  • Fix results screen minimap
  • Fix results screen graph
  • Bring back and further optimize pause menu blur
  • Fix slide hold score not showing
  • Fix editor shortcut styling
  • Fix song metadata editor using save file dialogs instead of open file dialogs
  • Fix note appear effect animation speed
  • Add hack to reimplement old engine note high amplitude high frequency effects
  • Improve modifier localization
  • Fix modifier selector scaling
  • Fix hidden modifier


Features
  • Add note usage icons to workshop browser item thumbnail


  • Add new result screen test button to debug menu

  • The main menu is now real 3D, which should massively reduce power consumption and make most GUI elements look better.
  • Menu elements now have a 0 cost frosted glass effect behind them.



  • Pre-game screen now has a small leaderboard with information about previous plays, this will be improved upon in a future patch.
  • Temporary project heartbeat phoenix logo
  • Add migration system for old engine input maps
  • Make sustains actually usable when using the hidden modifier

Moving Beyond Frame Rate | Project Heartbeat Phoenix

[previewyoutube][/previewyoutube]

The trailer I told you guys about in the last post is finally done and released, please check it out!

Cheers.

News roundup #6 - Project Heartbeat Phoenix

(This story was originally posted to the EIRTeam Patreon here)
Hello, sorry for the delay but I've been down for most of the month due to health issues, fortunately I've still managed to continue work full steam ahead.

Unfortunately due to a badly timed company restructuring I didn't manage to get into the big studio I told you guys about last time, that was a hard blow specially because it would have been very helpful economically, oh well.

Project Heartbeat Phoenix


I've been struggling with coming up with a catchy name for the new engine update, I think I finally have one I like, Project Heartbeat Phoenix, let me know what you think about it.

[h2]Subtick promo video[/h2]



I've been thinking about making promo videos for Phoenix, this includes the new subtick system, I already have a video ready that I will have Kyuuon voice, hopefully it's well received.

[h2]Fonts[/h2]

I did some work on unifying fonts across the whole game to better support non-Latin character languages, if I did my job well every single label now supports Chinese, Japanese, Korean and Cyrillic characters (I hope).

[h2]Localization[/h2]



I did some work on improving the localization system, it's now basically ready for me to send to translation companies to translate it.
I tried to find a service where I can let people contribute localizations, but I would have to self-host and thinking about it with the cost of proper translation it would probably end up being more expensive.
I also considered AI translation but people would probably not like it and Valve may be made about it.
My current plans for localization languages in PH will be:

  • English
  • Spanish
  • Catalan
  • Japanese
  • Chinese (Simplified)
  • Chinese (Traditional)
  • Russian
  • Ukrainian


It might take a bit for me to look into paying for these translations because I have to get the car fixed, but hopefully that will be done soon.

[h2]SDL on Windows[/h2]
The game now uses SDL for handling game pads on windows just like on Linux, this is likely to increase compatibility with different controllers and I might do something fancy with the PS4/5 LEDs in the future.

[h2]Other minor fixes[/h2]

  • Fixed a long-standing where the waveform would veer off-sync depending on the amount of horizontal scroll
  • Fixed async loading data races on boot
  • Fix main menu mouse accuracy
  • Fix scrolling using the mouse in various places


Swansong




As I said last month I've started working on the combat system for Swansong, it's not ready to show yet, but I've recently added sound events to the animation system, ragdolls and I'm currently working on blood by taking inspiration from Counter-Strike 2. I might even make a video detailing how the system works.

I have also been experimenting with some euphoria-style semi-procedural ragdoll physics, I'll probably use them for death poses and maybe for some combat reactions.

Future




Honestly it's been a rough month, I almost though about cancelling Swansong but I got a burst of motivation to work on it after seeing the combat system sorta seem to work.

I also went to the doctor the other day for a follow up on my kidney stones, seems like its genetic and all I can do is drink water and pray they dissolve before getting dislodged.

See you all next month!

The early access finale update now in beta, tickless input system, SDL & more!

Hello again friends, welcome again to the monthly progress post. I've been busy working on things for both PH and Swansong and I'm very excited to how well things are turning out.

I also had the opportunity to get interviewed for a job, i managed to pass two interviews and a technical test quite well, but I still haven't received a finally answer, it's at a pretty nice local studio so the money would come in handy, I could even hire people to work on PH if the workload is too big for me, so the continuity of the game wouldn't be a concern.

Project Heartbeat




[h2]New content on the way[/h2]



A few new songs are either charted or about to be charted, they will be added to the game as they are ready, at least 3 new songs are being worked on, here's a sneek peek at how the artwork for one will look.

It's made by Guinii, our resident anime women enthusiast.

[h2]The early access finale update[/h2]

I have decided to rename the Godot 4 port to the "early access finale" update, this update will be the final update before the game comes out of early access, however this doesn't mean I won't continue working on the game. I just feel like its in a very good position where it can be justified to be called a full game.

[h2]Challenges proposal[/h2]

After the very successful launch of the new website design I am pleased to announce that I've started work on challenges, challenges will allow players to fight against each other on randomly selected songs, details are still to be determined so I suggest you read my proposal here.

[h2]YUV -> RGB conversion on the GPU[/h2]



Normally, when video frames are decoded they don't use the typical red green and blue format.

Generally, these are decoded as three monochrome planes (essentially, three black and white textures), with the first texture being brightness information and the other two being color information.
This generally results in an imperceptible difference (at least to human eyes) and much more compact information storage.

Previously, PH would convert from YUV to RGB using the CPU for every rendered frame, even some that may never be shown at all. This was bad, so now the video is decoded as-is without conversion and is sent to the GPU as three YUV planes, it is then converted into RGB by the GPU.

The result is a >900% improvement in video decoding performance. Something to be at least a bit proud of I think.

[h2]Discord rich presence improvements[/h2]



Discord rich presence now uses a homegrown discord RPC wrapper, which means that it will work more reliably (specially on Linux) and it makes my life a lot easier.

I also added a new feature, the game will now provide discord with workshop preview URLs, this makes the album art for the song show up on your discord profile. Fancy.

[h2]DirectX 12[/h2]

On Windows PH now uses the new DirectX 12 rendering backend, this is to improve responsiveness and frame time consistency on windows, unfortunately there appears to be some kind of memory leak on some AMD drivers and on Intel Xe, so dragons beware.

Currently we are defaulting to Vulkan but you can give the dx12 backend a go with the following command-line argument:

--rendering-driver d3d12

[h2]SDL for input[/h2]



It's not news that Godot's input system is sub-par at best and questionable at worst. Hence why I decided to rip the entire input driver and replace it with SDL. SDL is a very common library for handling various aspects of application development, although here its only used for gamepad input.

The reasons are varied, but its mainly about preventing duplicate devices (such as virtual steam input devices) and properly mapping quirky controllers.

Currently SDL is only available on Linux, and it uses your system SDL2 library for now.

[h2]Input system changes[/h2]

PH's input system was originally meant to work around issues caused by godot's shoddy input handling, fortunately with the addition of SDL we can now be in the 21st century and accept inputs from various controllers at the same time, all without having to go into the input menu to change between controllers.

This may also open opportunities for coop charts. Let's see what you can come up with!

[h2]Timestamped input system[/h2]

One of the new stars of the show is the tickless input system, essentially inputs are constantly being read while the game is doing other things and a timestamp is assigned to each input event.

Before PH would process all input events at some point during the frame as if they happened at the time they were processed, this wasn't exactly the best idea, while it doesn't matter for most games for rhythm games like PH its quite noticeable

Once the game processes the input events, it knows at what time they happened, the game was already designed with this in mind, so gameplay can evaluated at any song position.

This results in essentially unlimited input polling rate (well, whatever your hardware can handle), even if the game is running at a lower framerate.

[h2]Nightcore modifier video support[/h2]

The nightcore modifier now supports playing back video, this uses a bit more CPU but it does work.

Swansong




This month I worked very hard on Swansong's combat system, although it's too green to show much at this time, maybe next month!

Future




Thank you for reading yet another monthly update by the time I post another update I will have turned 24, oh the missery of the passing of time!

I will keep on keeping on for as long as I can, have a good one my friends.

News roundup #4 - New website now released!

Hello friends, today marks the release of some things I've been cooking for a while, hope you like them.
This month has been as active as the last due to the holiday season, but I've still worked hard as much as I could to deliver these things to you.

The Project Heartbeat website revamp is something I've been cooking for a while. It has taken a few months of hard work and a lot of code restructuring to make it more extensible, faster, easier to use and prettier, let's get into the details.

The new website

[h2]New design[/h2]



The first thing you will notice upon entering the website is the new design, it's much fancier and represents the in-game aesthetics much better. More importantly this has resulted in a significant code restructuring which makes styling changes to the site much easier to do on my end.

The song pages now feature the song's background art, this is thanks to Steven's excellent Project HeartAttack website, which is also now linked on the song pages. Thanks Steven!

Of course, this is only temporary, I want to move to a locally cached version of song data, for this and other purposes, unfortunately valve hasn't been very cooperative with fixing with a certain bug I'm facing, so I cannot proceed with the reliable option I was thinking of.

[h2]Score progression[/h2]



The site will now store a history of your personal bests for songs as you get better at them, so you can see how much your score improved, a fancy graph is also included.

[h2]Score details[/h2]



You can now see a detailed breakdown of every one of your scores, this includes a breakdown of point distribution and yet another fancy graph.



The score page also will now have a thumbnail when you post it on Twitter, Telegram, Facebook and even WhatsApp, when clicking the in-game tweet share button the link to the score will be included in the tweet if it's a PB, however this functionality isn't ready just yet on the game side.

[h2]Profile changes[/h2]



You can now search on every player profile for songs based on name. You can also sort the results based on date achieved or rank, this can and will be expanded in the future.

[h2]Badges[/h2]



Another important feature is badges, which are granted to people who achieve certain things or that have contributed to the game. Although currently no in-game actions grant any badges they will in the future.

There exist three badges at this time, the early access badge which all users have, the master charter badge which is given to official charters and the Patreon Supporter badge which is given to people who support this Patreon page.

[h2]Song search[/h2]



Additionally, you can also search for song leaderboards in the new community songs page.

[h2]Performance and other technical funnies[/h2]

The new website uses the great htmx framework which makes a tightly integrated and high performance site like the PH site a breeze to make without having to involve complicated web frameworks.

Some performance improvements have been made, some actions that were done sequentially are now done in parallel and some queries have been optimized.

[h2]Future[/h2]

There are many things that I didn't implement just yet, like the aforementioned ability for the site to have access to the actual chart information and assets. This will come once Valve decides to fix the bug I am facing.

On another note, a feature I would like to include in the future at the suggestion of Steven is daily or weekly challenges, where people compete on a randomly selected song to attempt to obtain badges. I still haven't finalized how it will work, but I would like to give out three different badges per difficulty (for the podium), with a special badge reserved to whoever gets the highest score of the day/week on the song's hardest difficulty.

Swansong pitch




As swansong has evolved to the point where I can call it a viable game to build, I decided to focus my attention on defining most aspects of the rest of the game.

On January 1st 2024, after crying myself to sleep once again I had an epiphany, I finally came up with the full game-concept that I wanted, which I redacted the next day into a pitch that I can show to people, inspired mainly by the original Diablo pitch.

You can find the pitch here, please let me know what you think of it!

Future




That's it for this time, I hope everyone has an amazing new year and hopefully things will be better soon! The future is scary but exciting at the same time.