Have 3 separate errors piling up in the thousands in the content service that all seem to lead to one place:
team_settings_and_inventory?ice:(/Fortnite.com/Devices/team_settings_and_inventory_device:)EndRound
Steps to Reproduce
Check the error log of the islands
Expected Result
No errors
Observed Result
ErrRuntime_Internal
An internal runtime error occurred. There is no other information available.
Stack Trace
Verse unrecoverable error: ErrRuntime_Internal: An internal runtime error occurred. There is no other information available.
After further investigation, it looks like if anyone leaves the match, the error will happen when ending the round.
I have tried the following scenarios on a 1v1 match:
Team 1 player leaving the match, Team 1 winning the round
Team 1 player leaving the match, Team 2 winning the round
Team 1 player leaving the match then rejoining, Team 1 winning the round
Team 1 player leaving the match then rejoining, Team 2 winning the round
In all of the above, another player was present on the server in Team 2, and the error triggered every time. I have also reproduced some of these with 2v1, with the player in the team of 2 leaving.
The error did not trigger if no one left the match during the round.
@Flak is that something the team is aware of? I hope these extra details can help tracking down the issue.
Currently thinking this related to them being the last player in the game and then leaving, which no valid players are then left to use for EndRound so it just errors, but the server is closing anyways. Not sure if this could still result in the win/loss pattern youāre seeing.
Definitely not the last player on the server - in the scenarios Iāve provided above, there was always at least one player on the server, and the second player was leaving (and rejoining in some cases).
I have edited my previous post to highlight that, in case it wasnāt clear.
Check your verse code, ensure it is not trying to access or pass agent who has left as a parameter. I think the team is working on devices so that they are more resilient, but in the meantime try to subscribe to PlayerRemovedEvent and update your maps and arrays accordingly so they no longer contain invalid agents.
Even if no-one was left on either team, Iād still expect it to work, but as I mentioned earlier, it doesnāt matter how many people are left in either team, the error will trigger if anyone leaves.
I was originally using round_settings_device and passing an Agent to end a round, but somehow I always ended up in a āDrawā rather than Victory/Defeat, and using the teams settings directly was actually working.
Well, until last update that is
I will check tomorrow whether the error is a red herring and something happens after the round ends - and as you suggested whether a invalid player is being accessed.
I do keep players that left on the scoreboard as well, Iāll have to play with that setting to see if itās related.
So by now I am able to recreate the error 100% of the time. Out of curiosity Iāve been reverting to various previous check-ins, and at some point that error was not happening. It took a loooong time to pinpoint the version that caused the issue.
The culprit version only had cosmetic changes, such as moving walls, and one functional change, which was adding a barrier device to block bullets in a specific area.
So the first thing I tried was going back to the latest version again, and deleting that barrier. The error is goneā¦ Adding another barrier made the error come back.
I donāt know what to tell you, I have questionsā¦ like, is there a limit of the barrier devices you can have in the map? This was barrier #42ā¦ is 42 really the answer to everything?
I feel like my sanity is slipping away, but at least that error is gone.
As a side note, deleting the barrier made most of my custom devices lose reference to each other, or empty data arrays they had, so I had to re-hook all that up, but again, the issue is gone at long last.
Iāve noticed an issues when using the End Game Device. Not seeing any Runtime Errors, but rounds are sometimes not ending when End Game is called from Verse (passing Agent) and then also when a backup End Game Device is triggered from a Triggered Device. The issue appears to carry between all rounds in a session that experiences this issue.
The only thing Iāve been able to point at is:
Players leaving the game.
A current Matchmaking bug that doesnāt allow Matchmaking to be disabled.
Iāve been unable to recreate the effect with 100% accuracy to confidently pinpoint the issue.
I stopped using built in rounds personally. If I need rounds I just handle everything myself. Itās really a shame that so much of epics built in functionality is so buggy, I remember when I started how nice it was to have devices and game modes, but now it actually makes development more difficult.
Have you guys tried using the Round Manager to end the round instead of the Team Settings & Inventory?
The other things Iād try is using a Round Settings & Inventory Device thatās team is set to Any so no specific team is sent thru the end round device. As well as hooking up a trigger to either the round manager or ts&i devices and then triggering that and letting the device association do the End Round event.
If those fail then you probably need to just use conditions that are present within the round settings device. Im not sure there are any other options outside of these.
Yeah we tried we various devices but with no luck.
We also tried triggering with a normal trigger as you mentioned.
My other assumption is that player eliminated event was being executed outside the game thread, so we set a variable and trigger end game from elsewhere.
My assumption is that when a player leaves there is a dangling null pointer somewhere in the code for team collections, crashing the device when triggering an end game.
We will do more tests tomorrow but we also noticed that the crash seems to allow the game to keep running so we will just do some housekeeping on each round start to ensure no issues. If the issue continues to degrade the round we will have to just do our own round system like you mentioned.
Not sure if this insight adds any value to you but I think that there may be something going on with teams and end round conditions that is implied by this solution.
If you have last man standing in order to handle join in progress you have to set it to spectator. I did some tests before and the way that spectator spawn on join works is the players get spawned and instantly eliminated.
I am wondering if your join in progress setting may have anything to do with it. (you really never know when you let epic handle this kind of stuff, and is precisely why I ended up just doing a full replacement, too many inferred dependencies and workarounds involved)
(no idea if this will be useful but just figured Iād check since you seem to be out of options)