Author Topic: Update: 0.1.593 (Turret fix)  (Read 762 times)

Offline Rotacak on: October 18, 2018, 06:45:06 PM

  • Administrator
  • Hero
  • *
  • Posts: 704
  • Likes: 14
  • Gender: Male
    • View Profile
    • Awards
- fixed Turret (not) shooting
- added credits page

Funny story:
Maybe you are currious that the patch with the fix is 1 GB big. It have only one credits page and small fix. Actually the reason why turrents are shooting so bad was a bug in the engine. But not only common bug.

What happened: turrets could shoot only forward. Even they could rotate to a target, they still internally looks forward.

Why it was released like that: because in Unreal Engine editor it looks ok. Turrets correctly rotating and shooting. They only seems little lagged. But that is nothing unusual on my computer.

Why it was not easy to fix it: Because in the UE editor it looks ok. Even in the standalone version. But only when I packaged the whole game (= created the final game for a distribution) then the turrets stopped working. And to package the game will take DAYS. Don't know why, but with update to UE 4.18 is packaging extra slow. Moreover after few days of packaging it just crashed with linux version and packaging was not complete. This is just impossible to do anything with that when bug will appear only after packaging.

I decided that I have to build the game on my computer and not on my 10 years old shit server. My computer is also slow but still faster that the server. First build took about 4 days. CPU is 4 core and all cores runs all that days on 100 %. Slowest thing was compiling the material shaders (twice, windows + linux). But don't know why it was SO slow. Luckily, when you will compile shaders once, then you don't need to do it again. If you will not delete the cache.

Now I had to find the bug. So I had to add debug information for server and build the game and test it. These builds (windows server) were faster, about a hour maybe. Luckily I could connect with old client to the new server and debug server behavior. Thanks to that I could not to debug client but what happens on the server was more important.

What was the bug: Bug was in the fucking engine. Just that the bug will appear only in the packaged version was suspicious. Turret have socket on the barrel and targetting and shooting comming from this socket position and rotation. And socket is connected with the turret model rotation. But, this socket is NOT moved on the server. Suddently. Even when is everything correctly set. Socket is still on the default place and done.

Fix: I had to just change targetting from the socket position to a point in the air which is rotated in a similar way like socked should be. That fixed the targetting and shooting. But the lagging still preserved. That was fixed by increasing minimal net update time from default 2 to 50. That determine how often should packets of shooting be sent per minute. Maximum was set to 100 and should be adjusted automatically, don't know why suddently it is broken.
Also I had to limit allowed angle for building the Turret so now can be build almost only on a flat floors.

That is not the end: I had to build final builds for distribution. Count in that I forgot to remove some debug infos and forgot to build clients with shipping settings so I had to build final builds several times. But then the packaging ended after 30 minutes on the one file "pillar". It should be just saved to the disk. After third attemp (always stuck at the "pillar") I figured out that something is not good with my harddrive. Cannot be openned (in that time) and everything was stucked. It was external harddrive and when I disconnected it then everything continued = failed, but was not stucked anymore. Good, harddrive is bad. But after reset he still had all data and was accessible. But I could not copy even 100 MB file, it copied 20 MB, wait, 5 MB, wait, stuck.

Solution was to copy everything to the second drive. Everything means whole project, whole UE sources and whole shader caches. That is about 150 GB. How, when is not possible to copy even 100 MB file? While I was thinking, the temperature and the stress of the broken harddrive was reduced and it was possible to copy something from the broken harddrive again.

I successfully copied everything to the good harddrive. Rewrote everything to target it there too. And started packaging. And it started to compile all materials again! Even when the cache was there copied too! Probably is there saved/hashed also path to the cache and that was now different so engine decided to compile everything again.

I turned off the monitor and went to sleep. After few hours I wake up because there was too silence around. Turned on the monitor and I saw that packaging of the windows client was finished in 4 hours. Surprise. So I packaged rest of projects.

You can say, yes that is clear now, before it was so slow because of the damaged harddrive. But, why it was so slow even on the old server? Why all cores of my computers was on the 100 % usage all time? What they computing when problem was in the harddrive? Well, I don't care now.

I uploaded the builds to the Steam, tested them on the windows and the linux and released.

And now the answer for the question: "Why the patch have 1 GB?". Answer is: I have absolutely no idea.