Full notes
Full Parse-O-Rhythm update
Read the full published notes in a cleaner layout. The original post stays linked below.
What changed
- Compatibility
- UI and audio
- Gameplay
- Server
- Store
Welcome back yet again! This devlog is going to cover the past two weeks, since the announcement about the 1.3 public beta was last week (roughly).
In order to get 1.3 out the door, a lot of stuff, unexpectedly, had to be completely re-done before the update could be released, causing it to be delayed by a couple days. Let's talk about these features in this devlog!
Controller Navigation System
It all started a couple days before the release, when pausing was going through a final round of testing. You see, the way controller navigation works in the game is with an invisible "cursor controller" object that seeks out button "hitboxes"(which are also invisible). When I have them enabled, the hitboxes look like this:
When the player hits the D-pad, the following things happen in order:
The cursor controller fires a ray (imagine a laser pointer) in the D-pad direction.
If the ray hits any cursor hitbox object, it sends the coordinates of the object back to the controller cursor.
The cursor controller spawns a tiny object at the found coordinates.
The tiny object, upon collision with the cursor hitbox due to being the same coordinates, deletes itself.
At the same time, the cursor hitbox notices it's collided with the tiny object, and notifies the button it's paired to that it's selected.
Despite all this, there was a pretty significant problem. When the game is paused, this also means physics are paused, and thus, collisions cannot occur, which breaks the controller navigation system during a game pause. So, I needed to implement a new method that didn't use the coordinate and collision system at all.
However, what I discovered during this refactoring is that the controller navigation was possibly one of the worst things I've ever programmed. Functions had no use, signals went nowhere, there were chunks of circuitry with seemingly no purpose. So for the next two fateful days, instead of launching the 1.3 public beta, I ripped out tons of the controller navigation code for a way cleaner solution. The logic is still quite a lot for a devlog, but rest assured, the new method is actually comprehensible, expandable, and predictable. Phew.
Achievement System
During all of this, Rezarg, the one behind the game's achievement system, has been continuously revising the achievement bundle. The achievement system works by sending a request to a server, which then relays it to Steam - but this costs money to run, and the current way Parse's achievements was working was sending far more requests than were needed, clogging things up and causing bloat.
So, despite the end result looking way more tangled, the new achievement bundle is far simpler to use, is more efficient on requests, and doesn't get stuck in loops like the old system did!!
Recently, recently Rezarg came up with an even better solution that doesn't even require sending any pings to an external server, can register achievements far more quickly, is more secure and won't provoke Windows Defender as much! On top of being free to run compared to the old solution, this version can also work with other Steam features as well, such as DLCs and the Steam Workshop!! The new achievement infrastructure will be implemented before 1.3 fully releases in a week.
What's coming up?
My semester is beginning to wrap up at this time, so the only thing that'll be done this upcoming week is bug fixes for 1.3 and releasing it hopefully by the next weekend. I'm super excited to finally release this update with all its juicy features and get to work on 2.0! Thanks for following the devlog as always :)
-Encabulated Games
Source
Changelog.gg summarizes and formats this update. How we read updates.
