Man, it’s almost 3am as I begin to write this, but I won’t be able to finish it, I need sleep. I’ve been up nearly 24 hours, but I couldn’t pull myself away. Things are really starting to come together, it’s not only looking, but also sounding really good. There’s been a bunch of new things added, lots of changes and lots of updates. I’ll try to make this quick, but there’s a lot to talk about.
I’ve changed the physics interaction system, I’m now using Hurricane VR. This allows for much higher quality interactions with accurate hand poses when grabbing objects, as well as defining weight and velocity limits, so when you pickup something big or heavy, it’s actually slow to move around and throw. The old system didn’t support this stuff, and it felt and looked really goofy one-handing a big heavy fuel barrel and then throwing it 20 metres as it spins 200 times. It also didn’t allow for accurate dynamic 2 hand placement, it was very hit and miss, often just ignoring some inputs altogether.
From the author of Hurricane VR is another new addition, HexaBody VR, which is a player controller with a physical body and lots of nice physics based interactions. Your hands are solid objects that you can place on top of anything in the world and climb by tucking your legs up (crouching) then pulling your hands down quickly to vault up. You can also define grabbable surfaces for traditional climbing using the grip buttons, but it’s nice this just works on anything you can rest your hands on. It feels really good to run and leap off a ledge and reach out to grab the lip of the next ledge and climb up. It has some nice little details such as variable height for crouching, so you can slowly crouch up and down at the perfect height. Your body interacts with physics based objects properly too, which is something the old system didn’t do.
Right now the movement and interaction feels almost perfect. Interacting with objects feels a lot like Trespasser, except you’ve now got two hands and it feels so much more natural with motion controllers.
I’m constantly impressed by how good the original game was and how far ahead it was in so many ways. I’ll start to work on something new and I find myself struggling to find a solution to what I thought would be a pretty simple task, such as assigning sounds to physics objects for collisions. My programming and scripting abilities are very limited, I can study code and make some changes here and there, copy and paste code from different scripts and get things working that way, but I can’t write code from scratch. I’ve been putting together simple scripts to handle the voiceovers, but once I started working on the sounds for the physics objects, I realised I needed to do a lot more to get it sounding right. There needs to be a variety of different sounds, the volume of which must be determined by the velocity of the impact. Trespasser not only did this, but it also had sounds for dragging and possibly even rolling. I came across an asset that does all this and more, it’s called Impact – Physics Interaction System. It’s a a material based system that allows you to define all the properties of certain materials so they respond accurately when you walk on them or when hit, producing sounds, particle effects and even leaving decals. I’m yet to actually begin working with this one, but it looks amazing.
Another new sound asset is an Ambient Sound system that allows you to create sequences made up of all the sounds you want to play in that area. You can then create the sound volume around that area and set fall offs so the sounds gently fade as you approach. It’s made a huge difference to the world hearing the ocean and gulls, the wind blowing along the cliffs, birds and insects etc, it’s really starting to feel alive.
Another nice little detail is particle effects such as falling leaves and subtle dust particles that gently float through the air. When combined with butterflies and birds flying about and now all the sounds, it’s just amazing to stand there and stare at it. Video coming soon.
When I first started working with Hurricane VR, I decided to take another look at HDRP in the latest 2021 version of Unity and see how things have progressed. I was seriously impressed with the performance, but once you start to take advantage of the benefits of HDRP, such as TAA, motion blur etc, it really starts to crawl, even in the small Hurricane VR demo scenes there would be 10-15 fps drops just from enabling TAA, and this was with DLSS enabled. Things got even worse when venturing inside the rooms of the demo scene, where a large room is divided into 3 sections, with two long glass divider walls, which caused the game to slow to a sickening level. It took me a while to realise it was the glass doing it, apparently DLSS just can’t handle multiple transparent surfaces and it kills the frames. With DLSS off it was much improved, but then TAA slows it down from over 90fps to under 80, sometimes dipping into the 70s. No TAA and with DLSS enabled is a strange one, I may be CPU bound here as I seen absolutely zero performance increases with DLSS enabled. HDRP also supports Fidelity FX, but enabling that actually sees a drop of about 20-25 fps. WTF? Bizarre. I did consider it still a worthwhile upgrade to potentially future proof the project so one day those features would be available, but the upgrade process to HDRP is terrifying as your world turns pink as incompatible materials fail to load and you spend the next 8 hours trying to convert your projects shaders and materials to work. In the end I had to purchase some add ons for existing assets to get HDRP compatible shaders, but in the end the results were nowhere near acceptable, it was incredibly slow, to the point where I suspect the conversion process doesn’t quite work properly, because I expected it to be much better. I can return to this one day and try again.
I have however updated to the 2020 version of Unity. This was brought on by the need to use OpenXR to get the most out of Hurricane VR. I was previously using SteamVR / Open VR with an old version of Unity and the now deprecated Single Pass rendering in my search for performance. OpenVR allowed me to use the AMD fidelity FX stuff (via a modded OpenVR plugin), but switching to OpenXR means that’s no longer useable. It’s not a bad thing though as I hadn’t been using it for a while anyway, as performance is so high now, it wasn’t ever needed and the trade off of visual quality simply wasn’t worth it. After coming back to the project after the summer break, I had been playing a bit of Skyrim VR, which I use with the AMD fidelity mod, along with super sampling and TAA. It looks super sharp and it highlighted just how much aliasing was in my game, especially with the Fidelity FX enabled. The latest version of AMDs tech is something that has to be done at engine level, it can’t be injected using the OpenVR plugin, so don’t get your hopes up with that. I had made so many other changes and optimisations that the game now runs at 90+ fps for about 95% of the time. The few places there are drops are where the draw distance is it’s longest and I’ve got a whole bunch of temporary assets not being culled and no occlusion objects are in place, so it’s overdrawing like mad. I’m confident I’ll have that under control soon enough and FPS will be locked at 90+ everywhere. I need to remind myself I’m running the game at essentially 4320×2160 on an i5 10600k and an RTX 2060, anyone with higher specs and lower res won’t have any trouble.
I scrapped the idea of a seperate tech demo. I just don’t have the time to work on something else that’s not essential to the project. I’m instead just going to release a demo of the Beach level once I’ve got it to a state I’m happy with. I need to sort out interactions between the player and dinosaurs so you can kill each other. Right now the Dino’s just kill each other, but they do chase you down and try to bite you. I’ve been in contact with the author of the Dino’s and he’s provided code to get it all working, I just haven’t had time to play with it yet. The plan is to kind of replicate the Pine Valley demo and have a Rex near where the Brachiosaurus were who hunts you down as you get closer. I can’t imagine you’ll get too far as these guys are fast, brutal and fucking terrifying. I can’t describe just how scary it is to have the Rex come after you in VR. I hadn’t actually set this up until just recently and I wasn’t sure if the Rex would hurt me or not, so I played seriously as if I was, trying to avoid him and survive and it just about gave me a heart attack.
Future playable releases will come as new areas are completed, eventually allowing you to explore the entire island. I can’t commit to a date, but it’s close.
Posted in Uncategorized
Tags: jurassic park, remake, trespasser, unity, VR