Release 2022.3.3 · EntelectChallenge/2022-Arctica

Arctica - Release 2022.3.3 - More Bug Fixes

Hey guys! We see that many of you are up late, hard at work! #relatable

We have made fixes for two bugs in this release:

  1. The signalR message size error - the max message size has been increased to 40MB from 2MB
  2. A condition in the positions equality methods that we believe was causing the buildings to be placed on resource nodes.

Please let us know if this has fixed the issues!

As per @jenique’s comment, if these bugs still persist by the end of tomorrow, then we will be considering rolling back to a previous version of the game for the tournament.

Once again, thank you for the insane effort from all of you so far! We’ll be doing our best to keep addressing your concerns as they arise.

3 Likes

Thanks for the new release! Looks like the comparison bug that @Jordan fixed solved a lot of the issues (overlapping territories, building on resource nodes etc), including the large state updates and slow engine. I’m guessing since the sets couldn’t properly compare and deduplicate positions it just grew unbounded, slowing everything down. The engine is now able to stay within the 250ms tick rate (at least on my side).

I did however come across a curious bug where my bot’s resources encountered an overflow error somewhere, because my bot had -2 000 000 000 gold :sweat_smile: (bit of a killer when it comes to score). Recording of me stepping through the ticks:

Screencast from 16-08-2022 10 26 17

Details I can give:

  • Doesn’t seem like any bots were building at this point
  • This was endgame, so multiple bots were most likely mining at the same node
  • I confirmed that this wasn’t just in the game log, these values were sent to my bot as well
  • All 4 bots had their gold going bonkers
  • Happened just with gold, but I’m thinking this probably affects all resources that are mined/retrieved

I’m fairly certain that this has something to do with the fair resource distribution patch.

I’ll probably only be able to test the territory takeover tonight, but thanks so long for all the hard work!

1 Like

Of course! Glad that fixed a lot of the errors. Thanks for doing some good testing there for us @kobus-v-schoor.

General Notice: If anyone else encounters the integer overflow issue in their resources, please let us know so that we can get visibility on how often it happens.

The overflow issue seems very strange. I have some questions on that:

  1. Has it happened more than once?
  2. Are you able to reproduce it?
  3. Does the gold quantity climb to the max integer threshold at all before becoming negative?

I’m not sure if this is something that we can solve before the tournament. I’ll raise it with the team and we’ll definitely look into it. I’m hoping that it’s not a common issue, meaning that any matches with this issue can just be rerun. That of course means that we need to look out for this issue occurring.

1 Like

Is it not when you spend all your gold on buildings, and the daily taxman comes to collect gold that it goes below 0 that this happens?

I have personally not seen this issue after running a few games on the new engine

Unfortunately not, there’s no taxman in the game (consumption of gold each round is 0) - I’ve also set up a modified bot in which I’m now able to trigger it each game, I think I’ve found the cause just zeroing in on where it’s breaking in the code.

@Jordan Got the issue, with the new resource distribution it’s possible that some of your actions get zero’d out. For instance, say there is only 1 space left at a resource node, and all four bots attempts to mine at that node with 1 unit, the redistribution algorithm will cause all four actions to be adjusted to zero. This is all fine and dandy until you get to the ProcessActionComplete handler for resource retrieval, where there’s this line of code:

var totalUnitsAtResource = playerActions.Sum(x => x.NumberOfUnits);
double distributionFactor = Convert.ToDouble(calculatedTotalAmount) / convert.ToDouble(totalUnitsAtResource);

If all the new actions are zero’d out, that division leads to distributionFactor being set to inf, and when it finishes up all the calculations and get casted back to an int it probably gets set to MAX_INT or whatever csharp calls it.

The resource distribution algorithm needs to be adjusted so that newly adjusted actions with zero units are discarded rather than processed.

1 Like

I’ve seen it as well, much later in the game though, after 2000 + ticks, unable to recreate it, it seems erratic.

Gold value was around 20k+ when this occurred.

I’ve also experienced a disconnect from the engine at some point as well. I tried going through the logs to identify where this occurred however it’s at the max point that I can go up in my logger, need to do some more runs to see this occurs again.

@kobus-v-schoor Amazing! We’ll try and get a fix in for this ASAP! Thanks for picking this up, you are an absolute champion!

1 Like

You know your level of analytical ability and speed on these bugs is enough to put some fright into me…

I need to go plus ultra on this one…

@Jordan this bug seems to cause the bot to stop processing actions, hoping this gets in ASAP.
My population dropped down to 20 % because the engine stopped accepting actions and as such my campfire and lumber actions stopped working.