1. Project Heartbeat
  2. News
  3. The early access finale update now in beta, tickless input system, SDL & more!

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.