1. Project Heartbeat
  2. News

Project Heartbeat News

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.

News roundup #2 & #3 - Source code release, new song, website revamp & more

(This is a summed up version of news roundup #2 and #3, I forgot to post #2 to steam so I'm merging them together whoops, hopefully I won't make the same mistake again, you can see the #3 edition of new roundup here on our Patreon)

Hello, I am once again hoping I can manage to make the news posts become monthly from now on, anyways, since we are in early December I think it's time for the updates, there are many exciting new things I've been working on.

New song: Spread my wings


[previewyoutube][/previewyoutube]

A few days ago I announced (on Twitter/X whatever you wanna call it) the start of an official collaboration between Project Heartbeat and the Grazepoint eurobeat creator's circle, with the first song, "Spread My Wings" by DJ Timotei feat. Slothington from the album TouWHO?? 2.

This is the first chart made by mvluna and features artwork from resident artist Sadnesswaifu.

Source code release


While this has done a while ago I wasn't sure if it would stick, but now I am. I released the source code for Project Heartbeat publicly for everyone to take a look at, it's not open source but it's source code available, I will explore a proper open source release in the future.

You can check the source code here.

New engine branch updates




Since the last update many things have happened, the new engine version of the game was finally released for testing, although it's very broken. If you are interested in checking it out please go on the Discord server and look for the new engine info channel to learn how to access it.
New engine branch updates



As I said, it's very broken but it already integrates some goodies such as the new input glyphs and a new song that is currently being tested.

The new engine also has support for Steam Input emulate devices, long gone are the days of having double inputs!

While this is a preliminary port it doesn't make use of ALL the new engine features just yet (for example, the new mailbox vsync or the ability to switch controllers on the fly). But it will soon.

Please, test it out so I can work through the issues faster!

Website revamp updates




As a side project I started work on upgrading the website. I started by upgrading it to use the most recent version of actix-web and to use htmx, which should provide a more modern experience. As this means interactivity can now be expanded upon I am also working on the ability to search within the site for songs by name.

I also want to add the ability to see historical leaderboard data, that should be useful.

I would also like to do something similar to what Steven's website (Project HeartAttack) does with the songs, which is that it locally has the song data available which would be helpful. I would also like to add some form of cache for user data and avatars to increase performance of the site, as the current source of slowness is having to constantly call the Steam API which is incredibly slow.

last month I showed you a more conservative set of changes but I decided to go the extra mile and do a proper revamp to bring it more in line with the game's styling and make it more modern.

Among the new features are improvements to the responsiveness of the site on mobile devices, as well as a per-user progression history page, full with a graph (the graph is free of JavaScript btw!).

This obviously comes with massive improvements to the underlying technology powering the site, such as better database access locking and more.



There are a few things I haven't been able to implement properly yet, such as allowing the site to access the actual files of charts on the Steam Workshop, such as for using background images or some other statistics. My plan was to use the same mechanism dedicated servers in other games use, however it appears there's some kind of issue with permissions that affects Project Heartbeat only, I contacted Valve about this but they haven't been very helpful yet, hopefully this will be resolved.

As you can probably tell, the site is heavily inspired by Osu's website, if it ain't broken don't fix it.

The last thing that I want to do (which the server already has data for, I just haven't gotten around to making the actual page yet) is the ability to have a page dedicated to each score entry to see a graphed breakdown of information.

Once the replay system is working there will also be a button on the webpage that launches the game to show a replay, fancy.



Another thing I want to do to the site (and to implement in-game in the future) is badges/medals for certain achievements done to help the Project Heartbeat community, my plan is to have a general-purpose thank-you badge for people who have done great things (such as Steven and his PHA website) and a few more specific ones for things such as people who've charted officials or for having participated in the community-ran events. Of course there will be a special badge for patrons.

Project Swansong updates




The last few months have been spent on refining the parkour system for swansong. The game now uses pre-baked polygons for sideways ledge movement. This has been a majorly painful thing to do and the current solution still isn't perfect, but it will do for now, it will make it (hopefully) more reliable. I would like for the parkour demo to be ready before the end of the year, but with my health in decline i have no idea if I'll have the demo ready in time.

On other notes, I've integrated the Jolt character controller, which means the player can now go up and down steps, coupled with the IK system and the feet aren't staying in the air! This can be improved further (I have read some papers about how Assassin's Creed syndicate does it), but it looks better than most games for now.

I still haven't decided other aspects of the game, as I'm focusing on the parkour first (since it's the highlight of the game) but I have been thinking about how the gameplay loop will work and whether or not it will be semi-open world like AC1. After the parkour system is released to testing I will be focusing on combat.

This month I've spent a lot of time working on improvements to the reliability of parkour system, such as introducing an additional ring around grabbable ledges so that the character keeps a reasonable distance to it that is also consistent.

I also ended up completely rewriting the parkour logic to make more heavy use of shape casts and other trickery to make sure movements are possible, while this is a bit more labor intensive than the previous raycast only solution it seems worth it, as it has already shown a lot of promise in terms of reliability.

We are inching closer and closer to a playable prototype, hopefully by next month after I finish the wall grab point system.



Personal update




Life continues to look grim and I slip in and out of depressive and sometimes manic episodes, so I'm not putting in as many hours into working as I originally hoped. Sales also haven't been good at all, even with the boost of publicity from the winter sale. I tried to apply to a bunch of gamedev jobs without any luck at all. Hopefully things will get better over Christmas.

Goodbye friends, see you soon!

News roundup #1 - Swansong, The new engine, the 3 big projects

(Originally posted on the EIRTeam patreon)
Hello friends, it's time to give you an update on the development of Project Heartbeat and everything EIRTeam.

I'm currently on vacation, so i'm using this time to work on Swansong (more on that later) and enjoy time with my family. I hope you all are also having a good summer.

Swansong




As some of you may be aware, swansong is the parallel project I'm doing to try to develop a game after Project Heartbeat, this is an adventure game with a heavy focus on parkour inspired by Assassin's Creed, Metal Gear Solid and Death Stranding.

Development is going better than I expected, I have recently been working mostly on polishing stuff and on foot IK, the first phase of the development of the game focuses on having a working parkour system that I can share around for people to test, perhaps here on patreon.

The character model used in the screenshots above are from the previous iteration of the project (which was 2.5d) so the quality is not good, this model won't be used in the final game, it's purely for testing.

I am lucky to have a few artist friends who are very smart and are up to working together. I have however decided to only call them in when the gameplay is mostly working to avoid wasting their time.

Project Heartbeat's 3 big projects



(Actual image of PH on the new engine)

Porting of Project Heartbeat to Godot 4 is going well, 90% of things already work, the two big ones are the multi spinbox in the editor and youtube downloads.

For the initial release of the beta of Project Heartbeat on Godot 4 Multiplayer and leaderboards will be disabled, but they'll be brough back before release.

Some of the big upgrades to PH on godot 4 come from a set of new projects I started together with this patreon, the new video decoding code which is already public. The performance of video decoding appears better, although there are again some kinks to iron out.

The other two big projects are the Input Glyph system and the new Steamworks wrapper, these aren't released yet, but will be soon. With the new Input Glyph system we have working Steam Input, so you will be able to use it when PH on Godot 4. The changes also mean controller support will be improved, you will be able to change controllers on the fly much more easily, without having to fiddle inside menus.

(By the way, I'm still trying to come up with a marketing name for PH on Godot 4, something like PH: Evolution or something like that, any suggestions?)

Discord changes




Pascal now runs an events channel on the discord, you can check it out and subscribe to it using the special role to get updates.
Do note, I do not run this channel, it's entirely driven by people from the community, it's very nice to see.

The future

I'm gonna be frank with you folks, things are looking grim at this time, not just my finances but also my life in general.

As some of you may know, I've been suffering from major depressive disorder and ADHD since I was very young, this is making my life somewhat of a living hell. Having an overwhelming feeling of loneliness and feeling like I'm not worth anything. I have been coping as much as I can but I feel like I'm at a big crossroad.

Due to these issues I've always tried to be as independent when it comes to working as possible, as my very few experiences with a job have ended in what could be considered disasters (I was sacked for calling me boss a cunt). Unfortunately, when it's time to put money on the table there might be an actual need for me to find a regular job. My mother works at a medical manufacturing plant and my father is heavily disabled, so he doesn't have a regular job.

I have decided that if Swansong development hasn't picked up by the end of the year or PH hasn't rocketed off I will begin looking for a job, this will obviously mean less time to work on PH but I'll do my best.

Thank you for reading, let's keep on keeping on.

Minor update 0.17.5

0.17.5
  • Add bypass for wrong notes in multis that contain the note type pressed on non-macro acti
    ons
  • Add patron list to credits
  • Update yt-dlp


0.17.4
  • Fix accuracy display not being visually reset when restarting a song
  • Adjust slide chain loop's volume to match the start portion of it
  • Fix sus note property pasting issues
  • Fix heart notes being able to get FINE< ratings
  • Fix base BPM conversion from V1 to V2 charts
  • Add love


0.17.3
  • Fix issues with the leaderboards for monochrome stars
  • Use romanized song title in editor chart open popup
  • Make game fallback to the default SFX if the custom one can't be found
  • Fix intro skip not showing again when a song is restarted
  • Add love