UPDATE #3
Hi there! The past week I have spent a lot of time on fixing stability issues with the videoplayer, improving UI/database performance and adding a few new features.
For the optimisations I had to make some sacrifices in terms of code quality. Udon is extremely limited and I was required do some really hacky stuff in order to improve performance. But the performance is all that matters so I'm happy with these changes in the end.
Once the upcoming goals are completed and @Chatmans has finished a first default environment then I believe we will have a really stable and functional world.
Progress
- Videoplayer should be more stable (I sincerely hope it is haha)
- There is now a cooldown on how quickly videos can be changed to improve stability. It is a global cooldown and this is a similar solution to what pypy uses. The classic windows error sound will play when you cannot select a video yet, there will be visual UI feedback for this later.
- When the videoplayer errors it attempts to recover automatically.
- Lots of UI optimisations lowered CPU frametime from 20ms to 4ms, which is enough for 144 fps.
- Optimised the way in which the database is loaded, it now filters in 50ms instead of 800ms so it should no longer freeze your game.
- Added a system to immediately jump to a certain letter in the alphabet when looking for songs, instead of having to scroll there manually.
- Created a system that creates indices for the database to allow everything to be filtered/loaded quicker.
- Reworked how tags are stored in the database for quicker checks whether a video has a specific tag.
- We now have all marshall videos in the database, and a total of 467 videos thanks to @Silvan @ri and @Pika
Difficulties
- There are lots of known instabilities with SDK3 videoplayers. Its difficult to work around these but I think it is way better now.
- Udon is just so limited, as mentioned before, I am required to do some really funky tricks to get some features to work.
- The custom environments that @Chatmans is making for specific marshall songs are certainly doable but we learned a lot about optimising performance for VRChat. He is also having issues with baking lighting consistently. But I believe that we did learn a lot from our builds the past week so we know how to do more interesting environments while keeping performance good.
Goals
- Search function: I hope I'll be able to implement this without freezing games temporarily when searching. But it will be a very expensive operation.
- Visual indicator of song-select cooldown
- UI that displays the song that is currently playing
- A simple default world made by @Chatmans