x

Search in
Sort by:

Question Status:

Search help

  • Simple searches use one or more words. Separate the words with spaces (cat dog) to search cat,dog or both. Separate the words with plus signs (cat +dog) to search for items that may contain cat but must contain dog.
  • You can further refine your search on the search results page, where you can search by keywords, author, topic. These can be combined with each other. Examples
    • cat dog --matches anything with cat,dog or both
    • cat +dog --searches for cat +dog where dog is a mandatory term
    • cat -dog -- searches for cat excluding any result containing dog
    • [cats] —will restrict your search to results with topic named "cats"
    • [cats] [dogs] —will restrict your search to results with both topics, "cats", and "dogs"

Beacon cannot be combined with seamless travel.

It looks like this question.

Because it seems that none noticed it, I post again to get some help.

Product Version: UE 4.13
Tags:
more ▼

asked Jan 23 '17 at 04:27 AM in Bug Reports

avatar image

mikechan
3 1 3 5

avatar image Sean L ♦♦ STAFF Jan 24 '17 at 04:32 PM

Hey mikechan,

I'm currently looking into this issue; and I will respond as soon as I have new information

(comments are locked)
10|2000 characters needed characters left
Viewable by all users

1 answer: sort voted first

The short answer is beacons are derived from AActor and so they cannot seamlessly travel in a simple and straightforward manner.

Beacons, by their nature, were meant to be quick connections to retrieve some information or to tell a server something and disconnect. Internally, we tear down and recreate beacon hosts when we travel from level to level. Clients only need to be connected briefly to make a reservation (APartyBeacon) or to connect to a lobby before really traveling to the server (ALobbyBeacon).

If you look at APartyBeacon, it contains a UObject, UPartyBeaconState that contains the data that needs to survive server travel. It is connected to the online code and survives garbage collection via GetNamedInterface(). It's basically an AddToRoot() call. On the other side a new APartyBeaconHost is created and the UPartyBeaconState is retrieved, restoring the state prior to the travel.

Having a timeout value allows servers to travel without an active beacon while new clients wait for the server to get back into a good state to receive the connection again. Existing clients are already connected more officially and seamless travel as normal.

There are ways to improve this but since things are stable with the way we do it now there hasn't been time to address it more robustly.

Inside FSeamlessTravelHandler::Tick, we would have to add some code that migrates the net driver and all actors associated with beacons. That would prevent the crash people are seeing where the old UWorld is still associated with the beacon code and can't be garbage collected.

That isn't enough though, the seamless travel code would need code similar to HandleSeamlessTravelPlayer that finds the actors and properly sets them back up on the AGameMode or appropriate location. Otherwise you have to TActorIterator somewhere during InitGame in order to retrieve the actors that survived the garbage collection on travel.

I would be happy to advise if you wanted to try some of this migration yourself.

more ▼

answered Jan 24 '17 at 07:39 PM

avatar image

Crzyhomer STAFF
1.2k 34 26 103

(comments are locked)
10|2000 characters needed characters left
Viewable by all users
Your answer
toggle preview:

Up to 5 attachments (including images) can be used with a maximum of 5.2 MB each and 5.2 MB total.

Follow this question

Once you sign in you will be able to subscribe for any updates here

Answers to this question