Bumping an ancient thread.
In case anyone still has a similar problem to my issue with landscapes, a more elegant solution to this problem is to handle it on a texture-by-texture basis, which I hadn’t realised was a possibility last year. Consequentially, I’ve got the following code as my Landscapes.mml file:
Code: Select all
<marathon>
<opengl>
<!-- landscape collection 1 (day) -->
<texture coll="27" bitmap="0" type="1" normal_image="Data/27 Day/00.dds"/>
<texture coll="27" bitmap="1" type="1" normal_image="Data/27 Day/01.dds"/>
<texture coll="27" bitmap="2" type="1" normal_image="Data/27 Day/02.dds"/>
<texture coll="27" bitmap="3" type="1" normal_image="Data/27 Day/03.dds"/>
<texture coll="27" bitmap="4" type="1" normal_image="Data/27 Day/04.dds"/>
<texture coll="27" bitmap="5" type="1" normal_image="Data/27 Day/05.dds"/>
<!-- landscape collection 2 (night) -->
<texture coll="28" bitmap="0" type="1" normal_image="Data/28 Night/00.dds"/>
<texture coll="28" bitmap="1" type="1" normal_image="Data/28 Night/01.dds"/>
<texture coll="28" bitmap="2" type="1" normal_image="Data/28 Night/02.dds"/>
<texture coll="28" bitmap="3" type="1" normal_image="Data/28 Night/03.dds"/>
<texture coll="28" bitmap="4" type="1" normal_image="Data/28 Night/04.dds"/>
<texture coll="28" bitmap="5" type="1" normal_image="Data/28 Night/04.dds"/>
<!-- landscape collection 3 (moon/dusk) -->
<texture coll="29" bitmap="0" type="1" normal_image="Data/29 Dusk/00.dds"/>
<texture coll="29" bitmap="1" type="1" normal_image="Data/29 Dusk/01.dds"/>
<texture coll="29" bitmap="2" type="1" normal_image="Data/29 Dusk/02.dds"/>
<texture coll="29" bitmap="3" type="1" normal_image="Data/29 Dusk/03.dds"/>
<texture coll="29" bitmap="4" type="1" normal_image="Data/29 Dusk/04.dds"/>
<texture coll="29" bitmap="5" type="1" normal_image="Data/29 Dusk/05.dds"/>
<!-- landscape collection 4 (space) -->
<texture coll="30" bitmap="0" type="1" normal_image="Data/30 Space/00.dds" opac_type="0"/>
<texture coll="30" bitmap="1" type="1" normal_image="Data/30 Space/01.dds" opac_type="0"/>
<texture coll="30" bitmap="2" type="1" normal_image="Data/30 Space/02.dds" opac_type="0"/>
<texture coll="30" bitmap="3" type="1" normal_image="Data/30 Space/03.dds" opac_type="0"/>
<texture coll="30" bitmap="4" type="1" normal_image="Data/30 Space/04.dds" opac_type="0"/>
<texture coll="30" bitmap="5" type="1" normal_image="Data/30 Space/05.dds" opac_type="0"/>
</opengl>
<!-- 360 degree landscape wraparound where applicable -->
<landscapes>
<landscape coll="28" frame="4"
horiz_exp="0"
vert_exp="0"
ogl_asprat_exp="1"
/>
<landscape coll="28" frame="5"
horiz_exp="0"
vert_exp="0"
ogl_asprat_exp="1"
/>
<landscape coll="29" frame="4"
horiz_exp="0"
vert_exp="0"
ogl_asprat_exp="1"
/>
<landscape coll="29" frame="5"
horiz_exp="0"
vert_exp="0"
ogl_asprat_exp="1"
/>
<landscape coll="30" frame="5"
horiz_exp="0"
vert_exp="0"
ogl_asprat_exp="1"
/>
</landscapes>
</marathon>
Both parts of this are important to make the textures look correct. In particular, ogl_asprat_exp is what makes the landscapes wrap around in OpenGL mode. (I’m sure there’s an explanation for why this is in the landscapes segment rather than the OpenGL segment, but I’m not sure what it is.)
Obviously, change values as needed.
My current Stupid Scripting Trick question concerns how the engine handles OpenGL scripts for scenery. I have the following code for some of my levels:
Code: Select all
<marathon>
<!-- Load Jjaro scenery objects -->
<scenery>
<object index="50" flags="5" destruction="27">
<normal><shape coll="25" seq="28"/></normal>
<destroyed><shape coll="25" seq="29"/></destroyed>
</object>
<object index="51" flags="5" destruction="27">
<normal><shape coll="25" seq="30"/></normal>
<destroyed><shape coll="25" seq="31"/></destroyed>
</object>
<object index="52">
<normal><shape coll="25" seq="27"/></normal>
</object>
<object index="53">
<normal><shape coll="25" seq="32"/></normal>
</object>
<object index="54">
<normal><shape coll="25" seq="33"/></normal>
</object>
<object index="55">
<normal><shape coll="25" seq="34"/></normal>
</object>
<object index="56">
<normal><shape coll="25" seq="36"/></normal>
</object>
<object index="57">
<normal><shape coll="25" seq="39"/></normal>
</object>
<object index="58">
<normal><shape coll="25" seq="35"/></normal>
</object>
<object index="59">
<normal><shape coll="25" seq="37"/></normal>
</object>
<object index="60">
<normal><shape coll="25" seq="38"/></normal>
</object>
</scenery>
</marathon>
The purpose of this is to restore the original Jjaro scenery objects in my Jjaro collection. (By default, it loads the Sewage scenery objects from Marathon 2/∞, because the Sewage collection is used for an entirely different environment… long story.) Functions fine. Even seems to work OK in film replay, which is important. I’ve got the following segment of code to load some scenery objects RADIX created into the Lava collection:
Code: Select all
<marathon>
<!-- Load Jjaro flora in lava set (objects 0-5 & 8) -->
<scenery>
<object index="0" flags="0">
<normal><shape coll="23" seq="21"/></normal>
</object>
<object index="1" flags="0">
<normal><shape coll="23" seq="22"/></normal>
</object>
<object index="2" flags="0">
<normal><shape coll="23" seq="23"/></normal>
</object>
<object index="3" flags="0">
<normal><shape coll="23" seq="24"/></normal>
</object>
<object index="4" flags="0">
<normal><shape coll="23" seq="25"/></normal>
</object>
<object index="5" flags="0">
<normal><shape coll="23" seq="26"/></normal>
</object>
<object index="8" flags="0">
<normal><shape coll="23" seq="27"/></normal>
</object>
</scenery>
</marathon>
I’ve loaded this code into Visual Studio Code’s XML editor, and there don’t seem to be any syntax errors. It works some of the time, but it inexplicably does not load the HD graphics I’d defined in my Miscellaneous.mml global script. Copying the OpenGL definitions back into the map script will load the HD graphics while I’m playing the game:
Code: Select all
<marathon>
<!-- Load Jjaro flora in lava set (objects 0-5 & 8) -->
<scenery>
<object index="0" flags="0">
<normal><shape coll="23" seq="21"/></normal>
</object>
<object index="1" flags="0">
<normal><shape coll="23" seq="22"/></normal>
</object>
<object index="2" flags="0">
<normal><shape coll="23" seq="23"/></normal>
</object>
<object index="3" flags="0">
<normal><shape coll="23" seq="24"/></normal>
</object>
<object index="4" flags="0">
<normal><shape coll="23" seq="25"/></normal>
</object>
<object index="5" flags="0">
<normal><shape coll="23" seq="26"/></normal>
</object>
<object index="8" flags="0">
<normal><shape coll="23" seq="27"/></normal>
</object>
</scenery>
<opengl>
<!-- Lava scenery - copied here due to Aleph One weirdness -->
<texture coll="23" bitmap="62"
normal_image="Data/23 Lava Scenery/62.png"
opac_type="1"
/>
<texture coll="23" bitmap="63"
normal_image="Data/23 Lava Scenery/63.png"
opac_type="1"
/>
<texture coll="23" bitmap="64"
normal_image="Data/23 Lava Scenery/64.png"
opac_type="1"
/>
<texture coll="23" bitmap="65"
normal_image="Data/23 Lava Scenery/65.png"
opac_type="1"
/>
<texture coll="23" bitmap="66"
normal_image="Data/23 Lava Scenery/66.png"
opac_type="1"
/>
<texture coll="23" bitmap="67"
normal_image="Data/23 Lava Scenery/67.png"
opac_type="1"
/>
<texture coll="23" bitmap="68"
normal_image="Data/23 Lava Scenery/68.png"
opac_type="1"
/>
</opengl>
</marathon>
Again, no syntax errors, and seems to behave fine while I’m playing the game. However, if I replay a film, it will behave strangely. The last scenery object definition, for object 8, actually changes a solid scenery object to make it possible to pass through. This behaviour still appears to be replicated in film playback; the film playback would quickly go out of sync if it were not. I have not been able to identify any desyncs.
However, all of the redefinitions of the shapes are lost in film playback; Aleph One reverts to my scenario’s default shapes for those scenery objects. Moreover, if I restart a new game on the same level after replaying a film, it still will not load RADIX’s shapes.
Furthermore, removing the OpenGL definitions from my global scripts does not seem to fix playback for the levels using RADIX’s shapes. I suspect the problem is linked to redefinitions of scenery in levels employing OpenGL scenery. I’ve had similar problems with levels employing similar scripts in the Pfhor collection that also employ HD shapes. I’ve been employing OpenGL scenery redefinitions for the level “Dimensional Bleedthrough” for over a year, and although this script usually functions correctly while I’m playing, it has never functioned correctly in film playback.
One final note: I was hoping that employing:
in the OpenGL field before loading all the textures would fix the problem, but it doesn’t seem to have had any effect. There is a reasonable chance that I am not using it correctly, however.
Does anyone have an explanation for what’s going on here? Am I neglecting to reset some other value somewhere that will stabilise the behaviour of these scenery objects? (I should note that the default lava scenery objects are not having any MML loaded into memory; it’s only the scripts using RADIX’s shapes where this occurs.)
“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