Dyson Forest everywhere [7434]

Problems and solutions for installing or running FreeOrion, including discussion of bugs if needed before posting a bug report on GitHub. For problems building from source, post in Compile.

Moderator: Oberlus

Post Reply
Message
Author
User avatar
mem359
Dyson Forest
Posts: 214
Joined: Sun Jun 08, 2014 1:18 am

Dyson Forest everywhere [7434]

#1 Post by mem359 »

On turn 245, every system with a planet spawned a new Dyson Forest.

Unfortunately, this was not repeatable. :x
I went to a saved game from a few turns earlier, and this time turn 245 passed without incident.

I figured I should document this anyways, in case it happens again in the future.
I was using the Mac 0.4.4 RC1 build.
Attachments
With 350 systems on low planet density, that is a lot of trees.
With 350 systems on low planet density, that is a lot of trees.
dyson_everywhere.jpg (60.76 KiB) Viewed 2026 times

User avatar
Geoff the Medio
Programming, Design, Admin
Posts: 13587
Joined: Wed Oct 08, 2003 1:33 am
Location: Munich

Re: Dyson Forest everywhere [7434]

#2 Post by Geoff the Medio »

The activation for that effect is a 10% random chance, so if you replay it ~20 times, there's a good chance you'll see it repeated. Or you could edit the script to make it happen 100% of the time...

The floater tree-creation effect is scripted a bit oddly, so this might be quite plausible... To select systems where to create trees, this scope condition is used:

Code: Select all

 scope = And [
    System
    Star type = [Blue White Yellow Orange Red]
    InSystem Source.SystemID
    Not Number low = 2 condition = And [
        Ship
        Monster
        InSystem Source.SystemID
    ]
]
If the floater is not in a system, then Source.SystemID is INVALID_OBJECT_ID. If INVALID_OBJECT_ID is passed to InSystem, then it just checks that candidate objects are in a (any) system. The star type condition is eliminating the empty "deep space" systems from getting monsters added.

The fix is probably to add an InSystem condition to the activation.

I'd also replace the "InSystem Source.SystemID" with "Object Source.SystemID" to match the system that contains the source object more clearly / explicitly.

The other thing to consider is the "Not Number low = 2" condition... What it does isn't immediately apparent int his case. Normally it'd check that there does not exist at least two monsters in the source object's system. If the source's system is no system, this would, I think, check that there does not exist at least two monsters total in the universe. Would that be consistent with the situation in the game before this happens? ie. There only exists a single floater monster, and no other monsters, in the universe? Would explain why this happens so infrequently as to not have been seen before...

User avatar
mem359
Dyson Forest
Posts: 214
Joined: Sun Jun 08, 2014 1:18 am

Re: Dyson Forest everywhere [7434]

#3 Post by mem359 »

I think we are talking about different things.
(And this might be due to a memory leak glitch or something, which would make it difficult to diagnose.)

The case I am describing is late game (turn 245), where there are no Floaters or Dyson Forests anywhere in my empire (although there are a handful in AI territory), and on this particular turn a new Dyson Forest spawned in every system in the galaxy (except the ones with no stars). This was spontaneous generation; there were not any Floaters or DF around these systems.

(Edit: I read Geoff's comment more carefully. Since this was a RC1 build, I can't turn on the Super-Tester to see how many monsters were in the galaxy on turn 244. And there were still 50-100 systems outside visual range. When I went to the save game on turn 240, by turn 244 there were 3 Floaters at the edge of sight.)

User avatar
Geoff the Medio
Programming, Design, Admin
Posts: 13587
Joined: Wed Oct 08, 2003 1:33 am
Location: Munich

Re: Dyson Forest everywhere [7434]

#4 Post by Geoff the Medio »

mem359 wrote:...on this particular turn a new Dyson Forest spawned in every system in the galaxy (except the ones with no stars). This was spontaneous generation; there were not any Floaters or DF around these systems.
Yes... that's the scenario I'm attempting to explain. If a monster is moving between systems, it's in system -1. If you pass system ID -1 to InSystem, it matches things in any system. Systems are considered to be in themselves for that condition. So, the effect that's supposed to create a forest in one system would instead create a forest in almost every system.
Since this was a RC1 build, I can't turn on the Super-Tester...
Species.txt is easily editable to re-enabled them.
...by turn 244 there were 3 Floaters at the edge of sight.)
Is that before or after all the Dyson Forests appeared? Dyson Forests spawn floaters, so I'd expect a few to have appeared if almost every system had a forest.

User avatar
mem359
Dyson Forest
Posts: 214
Joined: Sun Jun 08, 2014 1:18 am

Re: Dyson Forest everywhere [7434]

#5 Post by mem359 »

Geoff the Medio wrote:Species.txt is easily editable to re-enabled them.
I edited "preunlocked_items.txt" and "buildings.txt". If I start a new game, SuperTesters is build able, but if I load the saved game, it still doesn't show up in the menu.

However...
Every game that I started with the same seed / settings (and then built SuperTesters on turn 1) had Experimentors in the galaxy.
(Although their home world location was random.)
Geoff the Medio wrote:Yes... that's the scenario I'm attempting to explain. If a monster is moving between systems, it's in system -1. If you pass system ID -1 to InSystem, it matches things in any system. Systems are considered to be in themselves for that condition. So, the effect that's supposed to create a forest in one system would instead create a forest in almost every system.
Thanks for the explanation.
I had never seen Floaters/DF spawn while moving, only when they stopped in a system, so what you describe hadn't occurred to me.

But since Experimentors are almost certainly in my game (although not in sight yet), I could imagine a Floater getting caught traveling on a star lane that the Experimentors made disappear. (It is turn 245.)

In the other thread where the Experimentors were discussed, I wondered what happened to monsters that are in mid-travel on a disappearing star lane. This situation might be what happens to Floaters (stationary in "system -1").

That might explain why I wasn't able to replicate the problem, if the Floater didn't travel on that particular star lane (or the Experimentors didn't make it appear/disappear) when I replayed turns 240-245.
Last edited by mem359 on Tue Aug 12, 2014 5:52 pm, edited 1 time in total.

User avatar
Geoff the Medio
Programming, Design, Admin
Posts: 13587
Joined: Wed Oct 08, 2003 1:33 am
Location: Munich

Re: Dyson Forest everywhere [7434]

#6 Post by Geoff the Medio »

mem359 wrote:I edited "preunlocked_items.txt" and "buildings.txt". If I start a new game, SuperTesters is build able, but if I load the saved game, it still doesn't show up in the menu.
It might take a turn update to appear.

User avatar
mem359
Dyson Forest
Posts: 214
Joined: Sun Jun 08, 2014 1:18 am

Re: Dyson Forest everywhere [7434]

#7 Post by mem359 »

Geoff the Medio wrote:
mem359 wrote:I edited "preunlocked_items.txt" and "buildings.txt". If I start a new game, SuperTesters is build able, but if I load the saved game, it still doesn't show up in the menu.
It might take a turn update to appear.
Not showing up, even after a few turns.
It is unavailable due to "(FAILED) building unlocked for empire".

How does "preunlocked_items.txt" work?
If that is only read when the game is first created, then I wouldn't be able to activate Super Testers in a game that didn't start that way.

In any case, my guess is that the Experimentors made a star lane disappear while a Floater was traveling on it.

User avatar
Vezzra
Release Manager, Design
Posts: 6095
Joined: Wed Nov 16, 2011 12:56 pm
Location: Sol III

Re: Dyson Forest everywhere [7434]

#8 Post by Vezzra »

mem359 wrote:How does "preunlocked_items.txt" work?
If that is only read when the game is first created, then I wouldn't be able to activate Super Testers in a game that didn't start that way.
This. "preunlocked_items.txt" is only processed during universe generation.

User avatar
Geoff the Medio
Programming, Design, Admin
Posts: 13587
Joined: Wed Oct 08, 2003 1:33 am
Location: Munich

Re: Dyson Forest everywhere [7434]

#9 Post by Geoff the Medio »

You could add a tech (that has no prereqs) that unlocks it and that takes 1 turn and 1 RP to research.

User avatar
mem359
Dyson Forest
Posts: 214
Joined: Sun Jun 08, 2014 1:18 am

Re: Dyson Forest everywhere [7434]

#10 Post by mem359 »

Geoff the Medio wrote:You could add a tech (that has no prereqs) that unlocks it and that takes 1 turn and 1 RP to research.
I figured out how to do that, and the work-around was effective.

My last save was turn 240 (the DF explosion happened on turn 245), so things might have changed a bit...

On turn 243 (one turn for the fake tech, one turn for the Super-Test building, one turn to reveal the map), I discover that this game does NOT have Experimentors. So my pet theory was not appropriate.

The game had one DF (with 100 structure), one Behemoth of the Void, and four Floaters (including one named "Geoff the Medio"!!).
So there would have been at least two monsters (DF, BotV) in the universe.

User avatar
Geoff the Medio
Programming, Design, Admin
Posts: 13587
Joined: Wed Oct 08, 2003 1:33 am
Location: Munich

Re: Dyson Forest everywhere [7434]

#11 Post by Geoff the Medio »

I suppose, if the floater was moving, so had a system id of -1, the InSystem condition in the Number condition would actually be matching monsters that are also not in systems, so it wouldn't necessarily need to be the only monster in the universe... Just the only monster not in a system. Given the relatively small number of monsters you describe, it's still plausible.

Not sure why you were fixated on the Experimentors... They aren't needed for a floater to be not in a system... Almost any time they move, they'll be not in a system for a turn or more.

User avatar
mem359
Dyson Forest
Posts: 214
Joined: Sun Jun 08, 2014 1:18 am

Re: Dyson Forest everywhere [7434]

#12 Post by mem359 »

I was fixated on Experimentors, because that could create a case where a Floater was stationary, but outside a system.
I thought the spawning had to occur when the Floater was stationary in a system (but I guess I didn't have a reason to think that).

------

I don't know enough about the code to have an informed opinion, but I noticed this comment by Dilvish in the thread on monster spawning:
If one gave up the second check, and just spawned the fleetplans at all 60 and 140 respectively, then we would have maintained our 3:7 relative distribution, but we would have spawned monster fleets at every single system, which is not really desired.
Is it possible for the "second check" to get bypassed when the game was spawning Dyson Forests?

User avatar
Geoff the Medio
Programming, Design, Admin
Posts: 13587
Joined: Wed Oct 08, 2003 1:33 am
Location: Munich

Re: Dyson Forest everywhere [7434]

#13 Post by Geoff the Medio »

mem359 wrote:Is it possible for the "second check" to get bypassed when the game was spawning Dyson Forests?
I think that discussion was about monster generation at the start of a game. This is mid-game effects evaluation creating monsters, which is completely unrelated.

User avatar
mem359
Dyson Forest
Posts: 214
Joined: Sun Jun 08, 2014 1:18 am

Re: Dyson Forest everywhere [7434]

#14 Post by mem359 »

Geoff the Medio wrote:The other thing to consider is the "Not Number low = 2" condition... What it does isn't immediately apparent int his case. Normally it'd check that there does not exist at least two monsters in the source object's system. If the source's system is no system, this would, I think, check that there does not exist at least two monsters total in the universe. Would that be consistent with the situation in the game before this happens? ie. There only exists a single floater monster, and no other monsters, in the universe? Would explain why this happens so infrequently as to not have been seen before...
Besides turning on Super-Tester, I wiped out all (red) monsters except for 1 Floater, exited, hacked "ship_hulls.txt" activation to 0.9999, then loaded the saved game. The Floater was in transit for several turns. It did not create a DF until it reached a system (with a star), and only in that system.

I repeated this two more times, to make sure I wasn't just getting poor random numbers.
Not able to reproduce the DF-everywhere effect.

I'll assume this was a random glitch (not worth pursuing), unless I see this happen again in the future.

User avatar
Geoff the Medio
Programming, Design, Admin
Posts: 13587
Joined: Wed Oct 08, 2003 1:33 am
Location: Munich

Re: Dyson Forest everywhere [7434]

#15 Post by Geoff the Medio »

I was able to reproduce it just now in a moderator + 1 AI empire game. Only happened after I deleted all the other monsters in the universe, except one floater moving between systems. The same floater moved around for several turns without creating anything while there were two dyson forests elsewhere.

So probably the test is actually that there are not two or more monsters in any systems (as opposed to my previous interpretations of monsters total, or monsters not in system). Fix should be the same, and is already committed.

Post Reply