For starters I've implemented online multiplayer for Cube Royale. It's now fully playable over the internet for the first time. This has been in the workings for years and during June the blocks fell into place. I mentioned in the previous progress report that I was switching over to the Transport Layer and that made all the difference. Instead of fighting Unity's network system to make it work with VizionEck, I could build my own network system from the ground up. It saved a ton of time and increased quality too. I've yet to implement lag compensation tools so those will come at another time.
As an added bonus of using a custom network system, I was able to easily add match recording to VizionEck. This was a feature that I scrapped a long time ago because it would have taken too long to implement as a standalone mechanic. The current implementation works by recording all network traffic going into and out of the PS4, since this data is already in the correct format for a save file. Watching a recorded match is done by having the system pump that data back into my network system as if it was coming from online. All changes and improvements I make to the network system will apply to gameplay recording by default. The negative of this system is that watching a recorded match backwards in time is impossible, but that'd be a huge challenge even with a standard recording system.
The HUD received a few minor changes. I added a fourth bar (like a health bar but for some secret statistic) and also made the bars not break if their value goes over 100%. Instead the bars have overlapping overflow bars that look pretty nice and are easy to understand. The pause menu was redone to now have an actual menu of selectable objects, instead of just being a screen saying pause.
Performance took the biggest chunk of time for June. My slowest function was sped up by ~1,500% and my secret rendering function is now ~300% faster as well. These functions both loop through thousands of objects so even the smallest code changes helped a lot. I also implemented an LOD system for my secret rendering function so that increased the quality/amount of things I could have on screen. Damage calculation was reworked again to make it even lighter and work better online. On a frame by frame basis, all of my scripts are also now not generating garbage. This just means framerate hitches are way less common. Currently the game is a locked 60fps with a repeated frame occurring every once in a while, even with some action occurring. Much much improved compared to May, which was already improved.
Visually I did a bit of polishing and added a few smaller things. Weapons now shoot a near final version of what I'm going for and it looks pretty decent.
Gameplay like always received some polish, including making everything use non random random numbers. To the player they're still random, but to the PS4 it just means everyone agrees on exactly what happened. I implemented a minor thing that has been on the list for a few months, and with that I'm gameplay feature complete. Everything left is just balance and polish, or re-implementations that come up from beta testing (whenever that happens).