Event Control deadlock

Michal Vodicka shared this bug 4 months ago
In Progress

Observed behavior

Event control does read and change Output: action slot 1/action 2, but does not trigger any action.

Any change in setup of given control wont fix this problem.

Where it was reproduced

Single player, multiplayer, official servers

Steps to reproduce

  • Make a simple grid, place in line: battery, event control, one armor block, and some functional block, such as connector.
  • Setup event control in this way:
    condition: block switch on/off
    action slot 1: event control->show on HUD
    action slot 2: event control->hide on HUD
    Selected blocks: connector
  • Test it (it works)
  • Then split the grid in the middle -> remove middle armor block
  • Now you can observe first bug. Event control still has reference to the connector, even tho its not on the same grid anymore. Switching connector on and off will also still work, which shouldnt. And selected blocks in event control will look like from subgrid (orange).
  • Next copy&paste or blueprint the grid with event control and battery.
  • Now event control will no longer show selected block ingame, but there will be nonexisting reference in SelectedBlocks in its BP and copies:
                  ...
                  <SelectedBlocks>
                    <long>125142700878893967</long>
                  </SelectedBlocks>
                  ...
  • This event control will no longer be working, you will be unable to see and remove the broken reference from the list in the game. The only way to fix this is to remove the block from your grid or manually temper the BP and delete your compiled version of the BP.
  • The problem will retain in the BP, so pasting or printing the grid within the game or on the server will also suffer from this issue.
  • The issue can be also caused manually by editing the BP and adding some reference.
  • There might exist more ways to damage the BP in similar way and cause similar bug asside from grid splitting.

Suggested solution


Game should be able to deal with grid splitting, but I find it more important to make code to deal with tempered or broken BP. There are multiple fixes that should be done, but I would order them by priority:

  1. Make a game be able to deal with tempered/broken BP and remove non existing reference.
  2. It is questionable if the reference should be fully removed if the block still exist in the game. It might be intentional that grid will split and merge again in the future.
  3. There is a general problem in concept how event control and other blocks were designed and programmed. The event control block selection is using the block ID instead of virtual ID or different designated identifier. Block ID should be reserved for phys engine tasks not for these tasks. Reusing ID that was designated for different behavior will keep causing issues and bugs and create maintanance problems in the future (including code expansion). To remove future problems it will be also needed to think of how the particual UI sector for this (and some similar UI sectors) works.

Replies (2)

photo
1

Hello, Engineer.


Sorry to hear you're experiencing issues.

We are aware of this issue. We will add this thread to our internal system ticket on this issue.

We will update this thread when we have more information.


Kind Regards

Keen Software House

QA Department

photo
2

This totally makes sense and lines up with why ECs that don't have reference blocks still work. Like block add/remove. Since it is not referencing a block that no longer exists, it still works.

Leave a Comment
 
Attach a file