Eternal X 1.2

Discuss and unveil current Marathon projects.
User avatar
The Man
Vidmaster
Posts: 1119
Joined: Aug 6th '08, 05:23
Location: Sarasota, FL
Contact:

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
treellama
Vidmaster
Posts: 6107
Joined: Jun 2nd '06, 02:05
Location: Pittsburgh
Contact:

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
Wrkncacnter
Vidmaster
Posts: 1948
Joined: Jan 29th '06, 03:51
Contact:

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
The Man
Vidmaster
Posts: 1119
Joined: Aug 6th '08, 05:23
Location: Sarasota, FL
Contact:

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
treellama
Vidmaster
Posts: 6107
Joined: Jun 2nd '06, 02:05
Location: Pittsburgh
Contact:

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
The Man
Vidmaster
Posts: 1119
Joined: Aug 6th '08, 05:23
Location: Sarasota, FL
Contact:

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
pfhore
Born on Board
Posts: 22
Joined: Feb 22nd '08, 09:31
Contact:

With precipitation, I cannot load save file.

vhalt: game_wad.cpp:1842: Number of effects 768 > limit 128 (csalerts_sdl.cpp:249)

It seems the change of dynamic limit in MML doesn't apply when loading a save file...

Oh, When I play new game AND load the save file then, it works, weird...
User avatar
treellama
Vidmaster
Posts: 6107
Joined: Jun 2nd '06, 02:05
Location: Pittsburgh
Contact:

That's a bug in Aleph One:

https://github.com/Aleph-One-Marathon/a ... issues/201

Next version will fix it.
User avatar
The Man
Vidmaster
Posts: 1119
Joined: Aug 6th '08, 05:23
Location: Sarasota, FL
Contact:

Yep, that bug is why I took precipitation out of the current 1.3 development releases. (We renumbered the planned versions after Tacticus sent us new weapon sprites, because this is no longer primarily a bug fix release, and in truth hasn't been for most of its development. There will probably be a 1.3.1 after that, and then 1.4.) Even after Treellama releases a fix for that bug, though, I'm probably going to wait until the release of Aleph One 1.4 to put precipitation back in, because it has a new object type, ephemera, that will make for a much less janky interpretation of precipitation. (It'll be much faster and much less prone to weird crashes like this, and people will be able to choose whether to enable it in network games on their own side, rather than leaving it up to the host.) I'm a little bit disappointed that it almost certainly won't make it into Eternal 1.3, but there were too many problems with saved games to make it worth leaving in. Sorry for the inconvenience.
“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
Post Reply