Project Heartbeat Phoenix Update: Now available

Project Heartbeat

Project Heartbeat is the ultimate cute community-driven rhythm game, featuring music from top artists of the Eurobeat genre made popular by the Initial D anime and manga.

"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. [h1]Welcome home, rhythm game enjoyer[/h1] 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. [h1]The new approach[/h1] [img]{STEAM_CLAN_IMAGE}/36814664/0ea829693112078f74b17e1a7efaab738624adbd.png[/img] 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 [url=https://www.patreon.com/EIRTeam]the Patreon[/url], this is obviously optional and doesn't get you many benefits other than a different color in the discord. [h1]New content[/h1] [h2]New song: Versos perversos[/h2] [previewyoutube=L9slqe57vUQ;full]https://www.youtube.com/watch?v=L9slqe57vUQ[/previewyoutube] 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 @[url=https://twitter.com/Psycho_Loli]Psycho_Loli[/url] on twitter. Please check out her work! Charted by luunah and [url=https://twitter.com/linobigatti]lino[/url]. [h2]New song: War zone[/h2] [previewyoutube=NVDN7tkNopY;full][/previewyoutube] 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 @[url=https://twitter.com/guinii4]Guinii4[/url] please make sure to check out her work! [h2]The new game engine[/h2] Phoenix uses the new Godot 4 game engine, the result is increased performance, more renderer options and less headaches for me, yay. [h2]The star of the show: Subtick system[/h2] [previewyoutube=8EgtpCrbdSg;full]https://www.youtube.com/watch?v=8EgtpCrbdSg[/previewyoutube] 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. [h2]Input system[/h2] [img]{STEAM_CLAN_IMAGE}/36814664/1702c79a85f690f7dee0cdadb2bc0d35e59512b3.png[/img] 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). [h2]New input glyphs[/h2] [img]{STEAM_CLAN_IMAGE}/36814664/bae87e7f79d1ee8b175d66a57e542b6055db5083.png[/img] 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. [h2]Discord rich presence[/h2] [img]{STEAM_CLAN_IMAGE}/36814664/cd2aa3c521bf3f25d8d09b1b9f3f2e06332d4e84.png[/img] 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 [h2]Multiplayer revamp[/h2] [img]{STEAM_CLAN_IMAGE}/36814664/38892a2cafc564dc15cbf3e1047cf66c406c7aab.png[/img] 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! [h2]New website[/h2] [img]{STEAM_CLAN_IMAGE}/36814664/445b907b359e6421252c7dd3d89af57ed7d8e4f9.jpg[/img] [img]{STEAM_CLAN_IMAGE}/36814664/db88a6f4c845cf5bb63f26b7cb9fe0b229520e8a.jpg[/img] [img]{STEAM_CLAN_IMAGE}/36814664/e013fc22dbd2e9498f4041292723bf0ceae78f81.jpg[/img] 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. [h2]Real 3D GUI[/h2] [img]{STEAM_CLAN_IMAGE}/36814664/fdb0e1bc43de6f11186ab80d2938ba01b0570006.jpg[/img] 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. [h2]Video decoding improved[/h2] [img]{STEAM_CLAN_IMAGE}/36814664/0ad43f36f2047f0cb15812d8406861a1d2836300.png[/img] 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. [h2]True Vulkan and DirectX 12 support[/h2] 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. [h2]Results screen revamp[/h2] [img]{STEAM_CLAN_IMAGE}/36814664/1ddd93da55eaba118e1843445e694651f4d89ed8.png[/img] 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. [h1]Future[/h1] [img]{STEAM_CLAN_IMAGE}/36814664/4b2fb8a07403414da64dba87d1146961a4a67e3c.jpg[/img] 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.