Eternal X 1.2

Discuss and unveil current Marathon projects.

Re: Eternal X 1.2

Post May 6th '20, 21:09

Huh. Why didn’t my test of “Babylon X” desync then? It should’ve desynced immediately if that’s the case.
“People should not be afraid of their governments. Governments should be afraid of their people.” —V, V for Vendetta (Alan Moore)

“The trouble is that we have a bad habit, encouraged by pedants and sophisticates, of considering happiness as something rather stupid. Only pain is intellectual, only evil interesting. This is the treason of the artist: a refusal to admit the banality of evil and the terrible boredom of pain. If you can’t lick ’em, join ’em. If it hurts, repeat it. But to praise despair is to condemn delight, to embrace violence is to lose hold of everything else. We have almost lost hold; we can no longer describe happy man, nor make any celebration of joy.” —Ursula K. Le Guin, “The Ones Who Walk Away from Omelas”

“If others had not been foolish, we should be so.” —William Blake, The Marriage of Heaven and Hell

“The law cannot protect anyone unless it binds everyone; and it cannot bind anyone unless it protects everyone.” —Frank Wilhoit

Last.fm · Marathon Chronicles · Marathon Eternal 1.2 · Where Monsters Are in Dreams · YouTube Vidmaster’s Challenge
User avatar

The Man
Sarasota, FL

Post May 6th '20, 21:15

Maybe it's time to admit precipitation was a cool hack for a single simple net level, but is currently unsuitable to a major scenario. Put it on the shelf, some day maybe a better Aleph One can handle it.
User avatar

treellama
Pittsburgh

Post May 6th '20, 21:28

Clearly the correct answer here is to leverage the stash feature to communicate with the HUD about where precipitation should be drawn, and the HUD handles the rendering ;)
User avatar

Wrkncacnter

Post May 6th '20, 21:46

I’m not ready to give up on this hoary old engine yet. If Ryoko can make this massive beauty work in Aleph One, then I think we need to put a little faith in its capabilities.

However, I have only one hypothesis as to why the “Babylon X” film doesn’t go out of sync. Just in case anyone thinks I might be making this up, here’s the film with precipitation, and here it is without it. As I write in the description of the latter version:

I don’t have much idea why this wouldn’t desync the level, since it should be calling the game’s internal RNG each time it creates an effect, because the sequence used for precipitation on this level is set to “display a random frame”, which would immediately call the game’s RNG. My hypothesis is that the RNG for “display a random frame” may be a separate function; Bungie may have used a separate function for this to prevent films from desyncing if someone edited a shapes file to add another frame to a sequence of random frames. Films could still desync if people edit shapes files in certain other ways, but this would prevent some film desyncs. I don’t know. It’s weird.


I suppose someone more versed in C++ than I am can look in the source code and see if this hypothesis is correct.

The other hypothesis I had has already been disproven. I thought that perhaps the game RNG reset after init(), but it turns out that we’re not actually calling initprecipitation() in Triggers.init() any longer; it only gets called on the first frame of Triggers.idle() now. I forget why Wrkncacnter made this change, but there was a good reason for it.

Anyway, if you have other potential edge cases we should test for, I’ll gladly make films to test for them; I just can’t think what other objections there are if the desync issue isn’t happening on this level.
“People should not be afraid of their governments. Governments should be afraid of their people.” —V, V for Vendetta (Alan Moore)

“The trouble is that we have a bad habit, encouraged by pedants and sophisticates, of considering happiness as something rather stupid. Only pain is intellectual, only evil interesting. This is the treason of the artist: a refusal to admit the banality of evil and the terrible boredom of pain. If you can’t lick ’em, join ’em. If it hurts, repeat it. But to praise despair is to condemn delight, to embrace violence is to lose hold of everything else. We have almost lost hold; we can no longer describe happy man, nor make any celebration of joy.” —Ursula K. Le Guin, “The Ones Who Walk Away from Omelas”

“If others had not been foolish, we should be so.” —William Blake, The Marriage of Heaven and Hell

“The law cannot protect anyone unless it binds everyone; and it cannot bind anyone unless it protects everyone.” —Frank Wilhoit

Last.fm · Marathon Chronicles · Marathon Eternal 1.2 · Where Monsters Are in Dreams · YouTube Vidmaster’s Challenge
User avatar

The Man
Sarasota, FL

Post May 6th '20, 22:43

Effects with delay call global random. Your precipitation may not use delay, but if the engine runs up against the effects limits because of precipitation and drops an effect with delay it’ll de sync.
User avatar

treellama
Pittsburgh

Post May 6th '20, 22:57

So in other words, if we don’t go too high, we should avoid the film desync problem? The solution seems to be “leave a bunch of wiggle room.”

We have already specifically limited the amount of precipitation in each level based on the number of objects that were already in the level. But I think we did that when we were still using scenery for precipitation, so it’s possible that the optimal number of precipitation objects might be different now that we’re using effects instead. I think we’d probably be aware if we were approaching the limits, though, because wouldn’t there be potential crashes in saved games if we were? I know I had to change a couple of limits in a couple of levels I added precipitation to (after we’d already changed the script to use effects), in order to prevent saved games from crashing.

Regardless, it sounds like we can probably avert this problem by just making sure we’re not using too much precipitation in each level. Currently, our limits are:

  • 896 in “The Near Side of Everywhere”
  • 768 in “Eat S’pht and Die” and “Babylon X”
  • 640 in “Pissing on the Corporation”, “My Kingdom Pfhor a Horse”, “Burning Down the Corporation”, “Second to Last of the Mohicans”, and “The Incredible Hulk”
  • 512 in “Unpfhorseen” and “A Friend in Need”
We can easily change these if something else would be more appropriate. (I think “The Near Side of Everywhere” might even be able to accommodate more precipitation, since it’s a rebellion level that doesn’t have any enemies or weapons.)

For reference, what is the engine’s hard limit of effects? I think we’re specifying a maximum number of effects of either 1,024 or 2,048 using MML, but I’m not sure how high the engine actually goes.
“People should not be afraid of their governments. Governments should be afraid of their people.” —V, V for Vendetta (Alan Moore)

“The trouble is that we have a bad habit, encouraged by pedants and sophisticates, of considering happiness as something rather stupid. Only pain is intellectual, only evil interesting. This is the treason of the artist: a refusal to admit the banality of evil and the terrible boredom of pain. If you can’t lick ’em, join ’em. If it hurts, repeat it. But to praise despair is to condemn delight, to embrace violence is to lose hold of everything else. We have almost lost hold; we can no longer describe happy man, nor make any celebration of joy.” —Ursula K. Le Guin, “The Ones Who Walk Away from Omelas”

“If others had not been foolish, we should be so.” —William Blake, The Marriage of Heaven and Hell

“The law cannot protect anyone unless it binds everyone; and it cannot bind anyone unless it protects everyone.” —Frank Wilhoit

Last.fm · Marathon Chronicles · Marathon Eternal 1.2 · Where Monsters Are in Dreams · YouTube Vidmaster’s Challenge
User avatar

The Man
Sarasota, FL

Previous

Return to Projects



Who is online

Users browsing this forum: No registered users

cron