News Liste Void Crew

Hutlihut - Space Log #3: Addressing FPS issues
Void Crew
13.12.23 17:41 Community Announcements

Hello all Ectypes,



Our “Space Log” is a channel for communicating more to the Void Crew community. We want to share what we do, challenges we experience and our plans for addressing these challenges.

We hear you, there are issues and bugs on the must-fix list, that we work hard to solve. Our message to you is: We are committed to both expanding the game experience, AND fixing the problems and bugs.

One of the annoying problems experienced is known as the FPS issue.

So in this space log we talk about moving platforms, physics, how it connects to the current FPS issue and how we are planning to solve it.
---

Problem - Refresh rate capped to 60fps (...sort of)


When controlling the character or the ship, the refresh rate can appear to be capped to 60fps, but only when it comes to moving your character/ship. Other element movement, such as effects/animations or even camera movement when manning a gun can appear perfectly fine and render at the correct framerate.

…this is of course not ideal, but to understand why the game behaves in such a way and how we are going to solve it we will have to go over some technical details.

Background [Tech Talk] - Moving platforms


To make it possible for a player to walk within a spaceship while it's flying around we have to utilize moving platforms.
  • First, the player needs to be registered to be in the moving platform: that is done by either the player center point being positioned within defined room zones or by the player ground collision detecting that it is grounded to a moving platform type (this is used if you are outside, standing on top of the ship).
  • Second, when a player is registered to be attached to a moving platform, instead of calculating their position and velocity in world space we do it in the moving platform's local space.
  • The effect of this is that no matter the velocity and position of the ship, the player can reliably move around the inside of the ship.

[h4]Physics and why refresh rate seems locked [/h4]
Static colliders are great!
…you can create complex shapes, throw them into the physics engine and after the engine figures out how they plug into its world boundary internals, you can expect really good performance with little headache.

However - static also means not moving, unlike our spaceship. This adds a performance penalty whenever we move the ship by any amount, which scales depending on how many colliders we have on the ship, and how many interactions they have. Even though we try to optimize the collider amount down as much as we can, we can only do so much, before walking in and on the ship becomes a janky mess.





This also forces us to work strictly with the physics engines update loop. Any update outside the loop will force an internal recalculation, which will completely tank the performance. The former applies not just to moving the complex bodies (spaceships), but also anything touching/overlapping them, since even a small object can affect the rigidbody properties of anything it touches. In other words, if you throw a pebble at a truck, the physics engine still needs to calculate its new velocity, however small, and change the truck's position, whatever fraction of an atom distance it may be.

An obvious solution for this would be to enable rigidbody position interpolation.

What it would allow us to do is to get an estimated position of rigidbodies in between physics engine ticks depending on when we sample for such a position. This is where the moving platforms again introduce another issue: since the ship and players are their own rigidbodies their position interpolations are also done separately in world space. Result of that basically makes the character shake and jitter violently.

So the end results of all of this?
…we had to simply stick the player and ship movement to the physics update which we set at 60Hz.


[h4]Floating point precision [/h4]
The last problem we face with our moving platforms is caused by floating point precision.

Players are primarily experiencing this issue as slowly drifting camera/character rotation, though other things may start to misbehave as well as you get further and further away from the world center.
Floating points (number data types used for basically anything physics/graphics related) lose their precision as you use very big numbers, very small fractions of a number, or as you simply do operations with them. Generally, as long as you don't go too extreme, it's a non issue. It much more easily becomes a problem if you expect to return to the original value by doing the inverse of any operation you did before.

In our case that would be taking the players local position/rotation, using the ships position/rotation to calculate the players world position/rotation, move the player in world space and adjusting their new position due to any forces/collisions, and use the inverse of the ship position/rotation inverse to recalculate the new local position. All of this can cause the local position/rotation to drift by just enough to be noticeable. For example, an offset rotation of 0.005 degrees and physics tickrate of 60Hz (it's what we use) would result in 0.3 degree turn per second which is plenty high to be very noticeable.

Solution - …in the works


To solve all the listed problems with the ship and characters we will do something we already do with carryables: using separate physics scenes/environments.



What happens in the game at the moment is that all carryables, as long as they are on the ship, are being simulated in a completely separate ship simulation scene, separated from the main game scene. This was originally done to allow us to use the existing physics engine for all carryable movements, and moving the character simulation there is the obvious next step.

To make this work as best as possible there are multiple types of behaviors we need to support within different physics scenes:
  • Everything relating to character locomotion, this includes both moving the character and doing wall/ground collision detection.
  • Interaction logic - allowing terminals, physical buttons and carryables to be interacted with both in main and physics scenes.
  • External movement modifiers, making sure we can modify players position/velocity relative to the main scenes world space position.

Once support for everything is added we can:
  • Use ship and character movement interpolation (fixes the character/ship movement being capped at 60Hz)
  • Drastically reduce the moving ships internal element complexity (more overall performance)
  • - All those elements can live as static colliders exclusively in the ship simulation scene
  • Minimize floating point errors (no more camera drift)
  • - Simplification of calculation since all movements are done within the local space - Staying at the center of the world reduces distance based errors.

---
We hope to have above FPS issues fixed for Update 3 (released planned for Q1 next year), but up until then... Happy holidays and Metem Preserve You!

//Kristijonas (Lead Engineer) and Hutlihut Games Crew





Logo for Void Crew
Release:07.09.2023 Genre: Action-Adventure Entwickler: Hutlihut Games Vertrieb: Focus Home Interactive Engine:keine Infos Kopierschutz:keine Infos Franchise:keine Infos
Einzelspieler Mehrspieler Koop

Aktuelle Steam News
Neue Steam News in der ePrison Datenbank

Hutlihut - Space Log #12: Early Access Journey
Void Crew
07.11.24 23:01 Community Announcements
Void Crew + Hardspace Shipbreaker Bundle
Void Crew
23.10.24 17:36 Community Announcements
1.0 Release incoming!
Void Crew
18.10.24 16:59 Community Announcements
Hutlihut - Space Log #11: Incoming!
Void Crew
13.10.24 17:00 Community Announcements
Dev Stream #14 - Community Q&A - Highlights
Void Crew
30.09.24 11:31 Community Announcements
Dev Stream #14 - Community Q&A
Void Crew
27.09.24 13:05 Community Announcements
Q&A - Guest: Captain Jack - Major Update - Highlights!
Void Crew
14.09.24 17:15 Community Announcements
Dev Stream - Special Guest: Captain Jack - Major Update !
Void Crew
12.09.24 12:23 Community Announcements
Hutlihut - Space Log #10: The making of Void Crew OST
Void Crew
10.09.24 16:17 Community Announcements
Void Crew Birthday - Win Soundtrack - MAJOR UPDATE Highlights
Void Crew
08.09.24 16:58 Community Announcements
Dev Stream - Major Update out now! - Bosses & Relics
Void Crew
03.09.24 08:38 Community Announcements
Major Update - Bosses and Relics - Out Now!
Void Crew
02.09.24 13:02 Community Announcements
Bosses and Relics Trailer - Major Update - Incoming!
Void Crew
01.09.24 16:11 Community Announcements
Update 5 release date!
Void Crew
22.08.24 17:30 Community Announcements
Hutlihut - Space Log #7: Coming in UPDATE 5 - Bossfights, Relics and more!
Void Crew
08.08.24 17:32 Community Announcements
We need YOU to nominate Void Crew for the Unity Awards!
Void Crew
26.07.24 15:19 Community Announcements
Hutlihut Talks - Vlog #5 featuring Javier!
Void Crew
18.07.24 16:02 Community Announcements
Dev Stream #11 - Highlights - PATCH 7 (AND PATCH 8) HYPE!!
Void Crew
15.07.24 15:13 Community Announcements
Void Crew - HOTFIX - Patch 8 (0.26.3)
Void Crew
11.07.24 09:51 Community Announcements
Dev Stream #11 - New Patch! A few features and a lot of bug fixes
Void Crew
05.07.24 12:05 Community Announcements
Void Crew - Patch 7 (0.26.2)
Void Crew
04.07.24 09:43 Community Announcements
Dev Stream #10 - Highlights
Void Crew
21.06.24 13:39 Community Announcements
Dev Stream #10 - Update 4 is out! Endless Roguelite
Void Crew
14.06.24 12:03 Community Announcements
Void Crew - HOTFIX - Patch 6 (0.26.1)
Void Crew
31.05.24 12:44 Community Announcements
Update 4 - Roguelite Endless Mode - Out Now!
Void Crew
29.05.24 16:49 Community Announcements
Roguelite Endless Mode - Update 4
Void Crew
27.05.24 14:59 Community Announcements
Hutlihut Talks - Vlog #4 - Designing of Void Crew
Void Crew
20.04.24 16:00 Community Announcements
Hutlihut - Space Log #6: Incoming - Roguelite Endless Mode and more!
Void Crew
10.04.24 16:32 Community Announcements
Void Crew has been nominated in the Danish Game Awards (Spilprisen 2024)!
Void Crew
03.04.24 18:13 Community Announcements
Void Crew: Our Early Access Journey
Void Crew
27.03.24 17:07 Community Announcements
Void Crew - Patch 5 (0.25.2)
Void Crew
21.03.24 11:10 Community Announcements
Dev Stream #9 - Highlights
Void Crew
15.03.24 20:25 Community Announcements
Dev Stream #9 - How many times will the ship explode today?
Void Crew
14.03.24 12:12 Community Announcements
Void Crew - Patch 4 (0.25.1)
Void Crew
07.03.24 11:30 Community Announcements
Dev Stream #8 - Highlights
Void Crew
27.02.24 19:00 Community Announcements
Dev Stream #8 - Update 3 hype with Captain Jack!
Void Crew
16.02.24 12:23 Community Announcements
Update 3 - Extend the Game - Month of Stars and Love - Out Now!
Void Crew
16.02.24 10:33 Community Announcements
Extend the Game - Update 3 - Month of Stars and Love!
Void Crew
10.02.24 18:01 Community Announcements
Void Crew - 10 Guides To Get Started
Void Crew
08.02.24 19:59 Community Announcements
Hutlihut - Space Log #5: Wait - What are we doing again?
Void Crew
01.02.24 18:39 Community Announcements
Dev Stream #7 - Highlights
Void Crew
27.01.24 20:09 Community Announcements
Hutlihut - Space Log #4: My Spaceship is Alive! Using Animal Sounds
Void Crew
25.01.24 20:18 Community Announcements
Dev Stream #7 - With a special guest!
Void Crew
25.01.24 12:14 Community Announcements
Void Crew Gameplay Video
Void Crew
22.01.24 18:01 Community Announcements
Dev Stream #6 - Highlights
Void Crew
20.01.24 19:15 Community Announcements
Void Crew at Copenhagen Gaming Week: Highlights
Void Crew
18.01.24 18:38 Community Announcements
Hutlihut Talks - Vlog #3 - Tech Talk at Copenhagen Gaming Week
Void Crew
16.01.24 20:07 Community Announcements
Dev Stream #6
Void Crew
12.01.24 11:17 Community Announcements
Void Crew at Copenhagen Gaming Week (12. - 14. January)
Void Crew
11.01.24 23:36 Community Announcements
Happy Holidays from Hutlihut Games!
Void Crew
22.12.23 19:00 Community Announcements
Special Dev Stream with Jesse Cox - Highlights
Void Crew
19.12.23 19:18 Community Announcements
Hutlihut - Space Log #3: Addressing FPS issues
Void Crew
13.12.23 17:41 Community Announcements
Community First - Update 2 - Holiday Special!
Void Crew
10.12.23 18:06 Community Announcements
Hutlihut - Space Log #2: The Making of Temperance
Void Crew
07.12.23 19:34 Community Announcements
Void Crew - Patch (0.23.2)
Void Crew
29.11.23 10:21 Community Announcements
Dev Stream #5 - Highlights
Void Crew
24.11.23 19:53 Community Announcements
Dev Stream #5
Void Crew
23.11.23 11:19 Community Announcements