1. Project Heartbeat
  2. News

Project Heartbeat News

News roundup #7 - The funeral and Project Heartbeat Phoenix Beta 4 now available

(Originally from the EIRTeam patreon page)

Hello friends, it's time for our monthly project heartbeat development update, I have spent this month working mostly on PH, so phoenix got many massive upgrades and is inching ever closer to being released.

I don't know why but I have spent the last few weeks working HARD on Phoenix, squashing many editor bugs and improving things here and there.

The funeral


As you may be aware, diva is all but dead, which is very sad, this has incidentally led to a massive amount of new sales for me, so it's a bittersweet moment. I hope I can carry the project diva torch as best as I can. Of course my budget will never be anywhere near diva, but PH also doesn't cost nearly as much ;)

(P.S: If you are the owner of some music-heavy IP, like a music-focused anime or similar I'm open to negotiations of making a game using the PH engine, similar to miracle girls festival. I have console and mobile versions of the engine too).

Phoenix Beta 3


I released Phoenix Beta 3 last week, I could pad this post by copying and pasting you all the changes (and there are a loooooot of them) but I think it would be better if you read it straight from the source here.

The important changes, besides the massive amounts of fixes are:

  • UI is now true 3D, saving power and looking better, plus I added a frosted glass effect to transparent elements
  • Modifiers are fixed, including hidden
  • New console -> arcade conversion modifier, experimental
  • Input map migration from old PH to Phoenix
  • Disabled dx12 support (for now)
  • Workshop now shows a gameplay type display
  • Some changes to menus, specially pregame


Phoenix Beta 4


Today I'm also releasing beta 4, well, I've been releasing it as I worked during the week, but there's yet another shit ton of changes to the game and fixes to make it work better. Not much new stuff, but as I said before, phoenix is in a bit of a feature freeze until it's all sorted out and relatively bug free.

God I fear for the day Phoenix is released and I have to write the changelog for all cumulative changes... Anyways here they are:

[h2]The controller dilemma[/h2]

I was thinking about non-standard controller support in PH, and I came to a dilemma, I am considering only officially supporting non-gamepad-style controllers (like the xbox controller) and letting people use steam input to remap it. What do you guys think? (specially considering phoenix supports steam input, unlike stable PH).

[h2]Multiplayer[/h2]

I've worked hard on some phoenix multiplayer stuff, it's almost ready, most functionality is restored but I want to give it a good do-over. Either way, it should be made available soon.

Unfortunately phoenix MP uses a different, newer, Steamworks P2P API for communication, so you won't be able to do crossplay between stable and beta.

[h2]Results screen rework[/h2]



I redesigned the result screen, thanks to input from NeoRash from the PH server, the new one looks way nicer adn shows more info!

[h2]3D UI improvements[/h2]


(It totally looks like wallhacks lol)

Good news, I've revamped how the 3D UI system introduced last update works, it's simpler and does clipping properly, yay. I also managed to do away without dynamic canvas operations, unfortunately I've also managed to break DX12 and OpenGL whoops..

I may just drop OpenGL support entirely, but i could reimplement it if needed quite simply.

[h2]DJA rework[/h2]

In another episode of EIREXE tries to fix direct joystick access, I think I've finally done it this time.

I replaced how inputs behave, with the empty slide sound playing always, even when hitting.

I also used a multi band compressor to try and make the slide empty sound less annoying, let me know what you think!

Finally, I reworked how DJA behaves in general, including some funky deadzone intersection code that should make fast flicks more consistent.

Previously, when you hit a direction and then flicked back the opposite way there was a chance your input would "skip" the deadzone and thus never re-trigger the slide/heart action, now the game checks if a line drawn from the previous joystick position to the current joystick position would intersect the deadzone, if it does and if it would end up outside the deadzone again it takes care of triggering actions and releases the way it should.

[h2]Interval tree accelerated gameplay[/h2]

After many long years of pain dealing with inconsistent note clipping I decided to go the nuclear way. The new interval tree method the game uses allows for very fast lookups of what note groups are actually visible on screen with none of the issues that plagued old PH, specially regarding custom time out values.

[h2]Other fixes/small changes[/h2]

  • Fix MM+ song loading
  • Fix sine wave gimmick effects
  • Fix editor right click lockout
  • Fix editor timeline scale being wrong in some circunstances
  • Adjust slider piece particle and note hit effect
  • Fix difficulty creation
  • Fix editor settings selector
  • Fix creating variants
  • Improve mouse trap
  • Fix potential loading screen error when downloading UI skins
  • Fix workshop media auto downloads
  • Fix editor help links
  • Fix data race in get_song_select_sprite_set
  • Fix editor help links
  • Fix some timing point deserialization (intro skip, lyrics etc)
  • Fix song metadata editor question marks
  • Fix resource pack editor open pack window, scaling and inspector.
  • Adjust main menu scaling and theming
  • Fix practice mode layout
  • Fix lyric clipping
  • Fix error loading content dirs section
  • Fix ofsetting timing points in the editor only offsetting notes even if that setting is unchecked
  • Hide tempo change dialog by default
  • Optimize editor inspector updates by deferring them whenever possible
  • Optimize copying and pasting notes
  • Fix PPD song loader not loading YT json
  • Fix PPD video selector dialog
  • Make script editor dialog a normal window instead of a Popup
  • Fix script editor behavior and syntax highlight
  • Fix editor background scaling
  • Make editor playtest UI scaling match the game's
  • Optimize results screen
  • Fix some album art scaling issues
  • Fix workshop browser pagination wraparound and backing from detail view
  • Fix start menu party hat
  • Fix editor note layer order
  • Fix playtesting charts
  • Fix editor playtest not playing video at the correct time
  • Fix multi note deletion breaking
  • Fix audio loudness for MM+ variants
  • Fix DJA heart sustain note transfers
  • Fix "the save as button doesn't seem to do anything" and "after going into the song selector in the editor and then going back to a chart you can no longer press space to play until restarting the editor"
  • Rework some pre game screen architecture
  • Fix missing async task queue thread joins
  • Optimize song list container by using visibility notification rects
  • Fix note usage deserialization and related menu elements
  • Add CSV timing dumping


Swansong




Honestly haven't worked much on swansong, but I've made an execution system and switched to ghost of tsushima style GPU blood, it's fast as fuck and I think will look better once I add more randomness.

I'll post a video of the blood in movement on Patreon right after this post goes live.

After the combat and assassination system is semi-working, I would like to go work on parkour again, I have some ideas on how I'm going to do it.

I've also been drawing some concept art, it's not good but it shows an idea i had for a hanging city inside of a rock formation (a ravine?).

I also asked Guinii to make me some concept art for the protagonist, i'll showcase it here as soon as there's something done! I think you'll love the ideas I came up with.

Future




It's all looking very good, it's all going well, suspiciously well, this means we are well on our way to exiting early access relatively soon! Target is before august.

On another personal note, my car finally passed inspection (which cost me a pretty penny) and I unfortunately had to reject a job at a company for personal reasons, but oh well, at least I will always have frieren... except someone forgot to put the base in the box for the figure, ffs.

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.