There are a plethora of fixes in this version. Mostly behind the scenes so from a user's point of view, not too much has changed.
The big points are:
- Vulkan 1.3 is now in. 1.3 is important to note because not all the video cards can do it. Cards older than about 10 years might not be able to do 1.3. I have done my best to lock this, so in theory Vulkan should not even show up as an option if your video card cannot do it. And if anyone asks, it is not easy to go to an older version of Vulkan as there are fundamental code changes between version which means the whole renderer needs to be rewritten.
- All 3 renderers (Dx9, Dx11, Vulkan1.3) have had EXTENSIVE optimization done. The big winners are Dx11 and Vk13 because due to their more modern nature, they were much more fixable (Vulkan even more so than DX). Dx9 did receive some boost but it's limited by how much optimizing it can receive.
- CPU multithreading is not enabled outside of loading and depending on how the performance reacts to these changes, it might not be needed. Vulkan does do it's own mini multithreading on the video card btw (which DX11 does not)
- One special note about Vulkan and Vsync. If you turn on Vsync, it DOES actually stick to your monitor's refresh rate HOWEVER because I had to enable a special version of the Vsync specifically for Vulkan, it won't display the limited fps count. So you will still see a high count despite the game running at the true limited number. The reason for this is the menus, without enabling this weird Vsync method Vulkan would refuse to return to the regular menu.
Multiplayer fixes:
It turns out, the reason the trucks went flying was because I decoupled the physics from the graphics. So now things were smooth offline (unless you are Rudee's HDD) but it went crazy when calculating online positioning. So that is hopefully fixed.
With that being said, in order to fix that I had to change the way online works. From now on people should HOST and/or JOIN using UDP/IP (direct connect) option. In terms of playing, it looks functionally the same as TCP/IP. You select to join and click UDP/IP and below a Direct Connect option appears with a box to enter the IP address. Key in the IP address, then select the Direct Connect (a temporary quirk sorry) and then click OK. It should connect now. This will also save the last used IP address so if you play and someone regularly hosts, you don't even need to enter the address a second time.
When hosting more than 2 people, it is recommended for the person with the better internet to host as he/she will act as a temporary server between all players and will relay information, meaning it uses a little more bandwidth than the others.
Long latent bug of checkpoints not triggering for the opponent during races (and thus leading to desync issues) has been fixed. Found by mistake while I was fixing online drags.
Since I only have 1 extra laptop, all the online testing has been done using 1v1. Implementing anything above 2 players in theory should work but I have no idea how the game will react or if there are any bugs. Please let me know.
One workaround fix for the current menus: I realized in online you cannot access the end/leave game anymore because I am hiding the menu bar and no amount of clicking brings it back. Well, now you can access it but first you have to hit F4 to bring it to windowed mode and the menu bar is visible. This is a permanent workaround until the menus are completely replaced.
Multiplayer Drags:
The above also helps out with playing drags in multiplayer. Back when I made comm patch 2, I mentioned how drags occasionally go out of sync (connected to the checkpoint bug). Well not anymore. Now they are always in synch. However, people need to be aware of a limitation which cannot be fixed with the current game.
1. The latency issue will mean that where the opponent is on your screen will never be 100% accurate. For normal racing it is not such a big issue but for drag racing where it's neck at neck this is gonna look a little off. Your truck will always be ahead of the opponent and if it's not, you are really behind :p
2. The timing on each players computer is correct. So every time the game says "go" it calculates the lap time correctly on each person's end. So at the end game, in close finish lines, once the game syncs you will have the correct result. I know this is a bit of a downer when you have to see a screen to know who really won but it's just not feasible with high latencies. The lower the latency the more accurate the opponent's position is.
3. Remember, the one downside right now is that if you have more than 2 people trying to join a drag it might crash or do weird things. This will be something that will be looked at when I change the menus as there needs to be a deterministic way of choosing who runs the drag and who spectates and right now with the current menu that is impossible to achieve.
Various fixes:
- There's a bloody toggle for those stupid facing trees. Have fun :p (it's in advanced graphics)
- Next to VSync there's a 3X Buffer toggle too. So now you can toggle vsync and triple buffer independently inside the game. The theory is that you usually want to run 3X Buffer with Vsync but mileage can vary... it's also something that I probably need to fine tune with my code, so once Rudee tells me it's broken we will have some fine time doing various tests to see if I can improve it ;)
- i fixed the offline rumbles crash because Kmaster can't stop clicking them. Joke, I actually had that fixed a day before he made a post about it
- If you have a missing file from the pod.ini the game now points out exactly what is missing. And upon clicking OK, the game exits correctly (no more lingering in the background where you have to kill the game manually)
I probably missed a bunch of other bugs that I fixed. Anyway, if a bug you mentioned in the previous thread is still there please mention it again. I have lost track of what I tried to fix. Implementing Vulkan was a bit of a pain in the ass but I have to admit, the end result is probably worth it.
https://www.mtm2.com/~mtmg/misc/Beta0.49hotfix1.zip
