tx00100xt / SeriousSamClassic-VK

Open source game engine version developed by Croteam for Serious Sam Classic with Vulkan support (Windows, Linux, FreeBSD, OpenBSD, macOS, Raspberry Pi OS). Based on https://github.com/sultim-t/Serious-Engine-Vk and linux port https://github.com/icculus/Serious-Engine
GNU General Public License v2.0
104 stars 12 forks source link

Was the weapon fire bug fixed in this release? #18

Open LethalManBoob opened 1 year ago

LethalManBoob commented 1 year ago

https://www.youtube.com/watch?v=PpfpfDNFdvQ This video shows an easy fix to the issue at the 7 min mark.

tx00100xt commented 1 year ago

Was the weapon fire bug fixed in this release?

I've been playing Serious Sam since 2001. For all this time I did not meet this bug. It's funny. In my opinion, this is not critical. Versions compiled with different EPSILON will be completely incompatible in multiplayer. https://www.youtube.com/watch?v=PpfpfDNFdvQ&t=465s . You can change the value in your build here: https://github.com/tx00100xt/SeriousSamClassic-VK/blob/main/SamTFE/Sources/Engine/Network/SessionState.cpp#L697

The Serious Sem Engine has more serious bugs associated with using floating point variables. In two arrays storing positions and rotation of dynamic objects (Entities), different floating point values are observed in different compilers. Because of this, the multiplayer of a serious sem is incompatible on different platforms. This is a really serious bug. Because the developers of the Serious Sam engine wrote code for one compiler.

Here is an example of a game multiplayer stream for different compilers. 2023-01-19_170250 In this case, this array of float is responsible for the position of entities on the map. there is also a difference in the float array responsible for the rotation of the entity. As a result, multiplayer on different platforms is incompatible. https://github.com/tx00100xt/SeriousSamClassic-VK/blob/main/SamTFE/Sources/Engine/Entities/Entity.h#L185 https://github.com/tx00100xt/SeriousSamClassic-VK/blob/main/SamTFE/Sources/Engine/Math/Placement.h#L35 https://github.com/tx00100xt/SeriousSamClassic-VK/blob/main/SamTFE/Sources/Engine/Base/Types.h#L641

https://github.com/tx00100xt/SeriousSamClassic-VK/blob/main/SamTFE/Sources/Engine/Entities/Entity.h#L186 https://github.com/tx00100xt/SeriousSamClassic-VK/blob/main/SamTFE/Sources/Engine/Base/Types.h#L668

There is a very interesting analysis of the multiplayer code of the serious sam engine, you can see it here. https://staniks.github.io/articles/serious-engine-networking-analysis.html