SuperLemmini Steel Behaviour

Started by WillLem, January 12, 2021, 03:05:12 PM

Previous topic - Next topic

0 Members and 2 Guests are viewing this topic.

Based on the description given below, how should steel behave in the remastered levels?

Current steel behaviour - steel can sometimes be destroyed, and the steel "area" often extends to the terrain around the actual steel block
0 (0%)
"NeoLemmix-style" Autosteel - steel can never be destroyed, and the steel "area" only covers the visible part of the steel block, so any parts hidden behind terrain will not function as steel
3 (37.5%)
Proposed steel - steel can never be destroyed, and the steel block is fully accounted for by its "area", even if partially hidden behind terrain
5 (62.5%)

Total Members Voted: 8

WillLem

OK, SuperLemmini users, I need your feedback here.

I'm looking at doing a remaster of the two original games, Lemmings and Oh No! More Lemmings. The versions that currently ship with SuperLemmini are great, and certainly represent the games well enough, however there are one or two things which could be improved, namely:

:lemming: recoloured entrances and exits for the "special" levels - these have already been done, and will definitely be included in the remaster

:lemming::lemming: "well-behaved" steel - at the moment, the current setup closely mimmicks classic Amiga steel, i.e. it can sometimes be destroyed by Bombers and Bashers, and the steel "areas" extend outside the actual steel block itself. Whilst this is consistent with Amiga lemmings, SuperLemmini is not Amiga lemmings, and has the opportunity to correct this behaviour.

To my mind, the "best behaviour" for steel is to represent it as a solid block whose area covers the exact space that the block occupies (i.e. regardless of whether or not it is behind terrain). Here's a visual representation:


The current behaviour - note how the steel area extends beyond the block itself; also "classic steel" is enabled in the SL versions of the levels, meaning that it can sometimes be destroyed depending on where the destructive skill is assigned relative to the steel block.


"NeoLemmix-style" Autosteel - this is the steel rendering method used in NeoLemmix; the steel area fits only the visible part of the steel, and, crucially, steel is always indestructable with this method. This is beneficial for knowing exactly whereabouts the steel areas are, but is inconsistent with the shape of the actual steel block (as marked by the yellow outline).


Here's what I propose - in the 1.43 editor, it's possible to make the steel areas fit the block exactly. This means that the steel blocks will be as "real world" consistent as possible, i.e. even if a steel block is partially hidden behind terrain, that part of it will still "exist" as steel. N.B. Since posting, I have discovered that this is exactly how SuperLemmini interprets "Autosteel" anyway, so it can be described as "SuperLemmini-style Autosteel" - image updated accordingly

I will also disable "classic" steel, meaning that steel itself cannot be destroyed, but the terrain immediately surrounding it can be.

I've added a poll to the topic to see what people think should happen with the steel areas; I'll go with whichever option gets the most votes.

:lemming::lemming::lemming: no "fake" objects - in the original LVLs, some of the water and fire objects are actually fake, i.e. they don't operate as water or fire (there are also fake steel and terrain pieces, but these are invariably set to "Erase" and so are not interacted with anyway).

These fake objects are, in all cases, outside the "playable" area of the level (i.e. they are not intended to be reached by any lemming). However, when remixing or converting levels, these fake objects can sometimes cause issues, either by not appearing at all (in the case of LVL to NXLV conversion), or by simply not having the expected function (i.e. water or fire).

It's my general belief that, if an object is visible, it should perform the expected function, even if it's only for decoration. Therefore, the remaster will enable these objects as "real" rather than "fake".




Thoughts, comments and discussion regarding the above is very welcome. If Tsyu ever makes a re-appearance, I'll suggest to him that the remastered version replace the current one, so it's important to get as much feedback as possible from the community regarding the state of these levels.

If the feeling is that they should remain exactly as they are, then I likely won't even bother to go ahead with the remaster at all. If, however, people can see the benefits of the proposed changes, then it is a job worth doing.

Note that all of the above can be done relatively quickly: the entrance/exit recolourings for the "special" levels have already been done, the proposed steel behaviour must be done manually but doesn't take too long (I can change the steel for a full pack in less than half an hour), and removing the "fake" check from objects can be implemented in minutes. So, time isn't a factor here - it's important to know what people think would be best.

If I receive no feedback at all, then I'll assume that people don't care either way, and go ahead with the remaster anyway.

namida

Except for perhaps a few edge cases that are very clearly meant to be steel (eg. Taxing 7), I would strongly suggest against the "simple autosteel" option.

The reason: If you put an eraser over some steel pixels, you would not expect those pixels to remain steel if you later put normal terrain in that spot (ie: only overlapping the now-erased area, not overlapping any steel that's still there). However, there is no visual difference between directly putting a piece over it, vs putting an eraser piece then a normal piece. This leads to a situation where you could have exactly the same visual arrangement in two places, with different steel behavior.

Only the "Autosteel" (not "simple autosteel") setup is visually accurate in all cases. Of course, the flipside here is that some visual effects in official levels don't work nicely with it (Tricky 4 / Taxing 7 is a particularly bad offender here).

The one thing I can say is that "classic steel" should be right out of the question. That steel behavior is objectively a bug, and should not exist in any engine that does not aim to be an exact replica, bugs and all, of DOS / Amiga / etc. Unfortunately, SuperLemmini - as I have mentioned before - takes a weird middle ground where it replicates some Amiga physics, even if they're bugs, but changes others. This makes it quite hard to have any "right" call in SL.
My projects
2D Lemmings: NeoLemmix (engine) | Lemmings Plus Series (level packs) | Doomsday Lemmings (level pack)
3D Lemmings: Loap (engine) | L3DEdit (level / graphics editor) | L3DUtils (replay / etc utility) | Lemmings Plus 3D (level pack)
Non-Lemmings: Commander Keen: Galaxy Reimagined (a Commander Keen fangame)

Proxima

Quote from: namida on January 12, 2021, 07:28:16 PMThe reason: If you put an eraser over some steel pixels, you would not expect those pixels to remain steel if you later put normal terrain in that spot (ie: only overlapping the now-erased area, not overlapping any steel that's still there). However, there is no visual difference between directly putting a piece over it, vs putting an eraser piece then a normal piece. This leads to a situation where you could have exactly the same visual arrangement in two places, with different steel behavior.

But this isn't a general "how should SL behave?" question; this is specifically for the remasters of the original levels. Would this situation ever be a problem with the original levels? (In Taxing 7, it would mean that the underside of the ship would have the steel area protruding into empty space -- but it's the underside of the ship, which you can't even access!)

WillLem

Quote from: namida on January 12, 2021, 07:28:16 PM
Except for perhaps a few edge cases that are very clearly meant to be steel (eg. Taxing 7), I would strongly suggest against the "simple autosteel" option.

To be clear, I wouldn't be implementing the proposed steel behaviour by enabling "simple autosteel", I would manually fit the steel areas to their corresponding blocks. So - in the example given - I'd fit the steel area to what's visible (likely using multiple smaller steel areas), since those steel areas are clearly not meant to be full-size blocks.

Quote from: namida on January 12, 2021, 07:28:16 PM
If you put an eraser over some steel pixels, you would not expect those pixels to remain steel if you later put normal terrain in that spot
--
Only the "Autosteel" (not "simple autosteel") setup is visually accurate in all cases

I agree here, and it's one of the things I like about NeoLemmix. However, I think that it makes more sense to allow a steel block to exist as a full block wherever there is any doubt as to its shape (i.e. if partially hidden behind terrain). Again - in the example of Taxing 7, there is no doubt as to its intended shape.

Incidentally, Taxing 7 takes the longest to do, steel-wise (I've already modified its steel in a different pack, which makes use of that part of the level). This and Watch Out, There's Traps About are the only 2 levels in the entire game which have "steel-shape-ambiguity." All others can have full-sized blocks (even when partially hidden) without it potentially affecting the level's solution.

As far as I know, Oh No! doesn't present any of these problems.

Quote from: namida on January 12, 2021, 07:28:16 PM
The one thing I can say is that "classic steel" should be right out of the question. That steel behavior is objectively a bug

I fully agree here, and it's one of the main reasons I want to perform this remaster - SL has the opportunity to go above and beyond in certain areas, and this should be encouraged. However, since there is a strong thread of traditionalism amongst its userbase, it seems important to allow this as an option.

As it happens, there haven't been any votes for this as yet, so it's clearly not something that is well-liked, even by the traditionalists!

Quote from: Proxima on January 12, 2021, 07:34:45 PM
But this isn't a general "how should SL behave?" question; this is specifically for the remasters of the original levels. Would this situation ever be a problem with the original levels? (In Taxing 7, it would mean that the underside of the ship would have the steel area protruding into empty space -- but it's the underside of the ship, which you can't even access!)

Yes, exactly. I can see why, as a dev, namida would be approaching the question from a more general-physics POV, but this is specifically about these packs and how they should behave.

Even for "inaccessible" areas, however, the question remains important for potential challenges, remixes, and other various cases (however, I do acknowledge that in the particular case of remixes, is it possible to modify things like steel behaviour anyway).

namida

Quote from: Proxima on January 12, 2021, 07:34:45 PM
Quote from: namida on January 12, 2021, 07:28:16 PMThe reason: If you put an eraser over some steel pixels, you would not expect those pixels to remain steel if you later put normal terrain in that spot (ie: only overlapping the now-erased area, not overlapping any steel that's still there). However, there is no visual difference between directly putting a piece over it, vs putting an eraser piece then a normal piece. This leads to a situation where you could have exactly the same visual arrangement in two places, with different steel behavior.

But this isn't a general "how should SL behave?" question; this is specifically for the remasters of the original levels. Would this situation ever be a problem with the original levels? (In Taxing 7, it would mean that the underside of the ship would have the steel area protruding into empty space -- but it's the underside of the ship, which you can't even access!)

Counter-argument: If there is an optimal answer to "how should SL behave", and said answer is currently one option for how it behaves, then by extension the answer (or at least, my answer) to "what option should I pick in my levels" will always be that optimal behavior.
My projects
2D Lemmings: NeoLemmix (engine) | Lemmings Plus Series (level packs) | Doomsday Lemmings (level pack)
3D Lemmings: Loap (engine) | L3DEdit (level / graphics editor) | L3DUtils (replay / etc utility) | Lemmings Plus 3D (level pack)
Non-Lemmings: Commander Keen: Galaxy Reimagined (a Commander Keen fangame)

kaywhyn

A definite no-no to the current steel behavior from me. It's just too inconsistent and fiddly, as in some cases you can destroy more of the steel than in some other situations. I don't exactly know if this is true for SL (I'm just not familiar with Amiga physics), but I know for sure that it's true for Dos. For example, in Compression Method 1, it's possible to bash through all the steel at the top on the right side to 100% the level, but in The Far Side, a miner can break through the steel plate on the left side with one of the floating islands in the middle before eventually stopping due to mining nothing but steel. Also, it's quite inconsistent that the current steel behavior is enabled for the non-custom SL packs, but then in custom packs the steel is indestructible and seems to have a really huge hit area so that bashers turn around sooner rather than bash directly up against the steel and then turn, as I saw when I did level 10 of Ron Stard's Rodents SL pack, which admittedly took me by surprise but also resulted in so much frustration because you had to assign the basher at the right position.

So, this narrows it down to either the autosteel or your proposed behavior, which I was torn between for a while. Honestly, I prefer the autosteel behavior which NL uses, since what you see is what you get. Any visible solid terrain that hides parts of the steel block should remain destructible and to deceive the player otherwise could be considered trolling, while steel is steel, it cannot be destroyed at all. However, ultimately, I say my vote goes to your proposed steel behavior. NL and SL are completely different engines, so therefore no need for SL to imitate NL with the autosteel option. In other words, let NL be NL for what it is, and SL be SL be what it is with its own set of physics/behaviors distinct from the former. Besides, simply use the visible parts of the steel in order to know if the solid terrain part will be destructible as well. Even then, I'm imagining that the steel behaviors would simply affect challenge results, as we all know that every level of the original games are solvable/possible regardless of the steel behavior used.
https://www.youtube.com/channel/UCPMqwuqZ206rBWJrUC6wkrA - My YouTube channel and you can also find my playlists of Lemmings level packs that I have LPed
kaywhyn's blog: https://www.lemmingsforums.net/index.php?topic=5363.0

WillLem

Well, according to the poll its seems that the proposed behaviour (i.e. the steel area fitting the block exactly, even if behind terrain, and never being destructible) is the most popular, so I'll call it. Incidentally, and somewhat confusingly, SuperLemmini recognises the "Autosteel" option in exactly this way; it doesn't actually recognise "NeoLemmix-style Autosteel" as described in the OP (i.e. the steel area fitting only the visible part of the steel), so this may not have been an option anyway! N.B. To prevent confusion, I have updated the OP with this information

So, this will no doubt save me some time during the remaster, as I have established via testing that "SuperLemmini-style Autosteel" functions in exactly the same way as fitting the steel area to the block manually.

Here's a detailed account of how each destructive skill interacts with this type of steel:

:lemming: Bashers - Bashers can tunnel perfectly flush with the top and bottom a steel block, as long as the tunnel does not cross the steel area by even 1 pixel; in which case, the Basher will detect steel and stop Bashing. They can Bash almost flush with the side of a steel block, but will stop an average of 2-4 pixels away from the edge, depending on their position and stroke at the point of steel detection. Bashers only check for steel when facing towards the block.

:lemming: Miners - Similar to Bashers, a Miner's tunnel can pass perfectly flush with the edge of a block (overlapping by as little as 1 pixel results in them stopping). When Mining directly into the side or top of a block, they will stop an average of 2-4 pixels away from the edge, again - depending on position and stroke. Unlike Bashers, miners also "check" steel when facing away from a steel block, but only for 2 frames, which translates to a negligible amount in-game.

:lemming: Diggers - A Digger can tunnel perfectly flush with the top of a steel block, stopping only when they hit the actual block itself. They can also tunnel perfectly flush with the side of a block, but - like Bashers - if their tunnel overlaps by even 1 pixel, they will stop digging. Diggers do not check steel when directly underneath a steel block, which may seem obvious but is worth mentioning anyway.

:lemming: Bombers - Bombers don't ever check for steel; a Bomber can be assigned anywhere in the vicinity of a steel block, however their crater will only destroy the terrain immediately surrounding it.

Under no circumstances is steel ever destructible when using SuperLemmini's "Autosteel" function, which is what all of us want anyway. Indeed, it seems to perform the function of assigning a steel area exactly to the size of the steel block, regardless of whether or not it is behind terrain, which it what has the majority vote in the poll.

So, I'll get editing soon and we'll have some nicely-behaved steel in the original games! :lemcat:

Tsyu

SuperLemmini actually does support NeoLemmix-style autosteel. To quote the level format documentation:
Quote
autosteelMode: (integer) (ignored if mainLevel is set) Sets the autosteel mode. Valid values and their effects are as follows:
--0: Disables autosteel. This is the default value.
--1: Terrain pieces listed in the current style's steelTiles parameter act as steel unless erased.
--2: Same as 1, except that parts of steel pieces that are obscured by non-steel pieces do not act as steel.

Mode 2 is the NeoLemmix-style autosteel mode.

WillLem

Quote from: Tsyu on May 10, 2021, 05:07:30 AM
SuperLemmini actually does support NeoLemmix-style autosteel
---
Mode 2 is the NeoLemmix-style autosteel mode.

In that case I'm going to have to release an update for the DMA remasters pack when the bug fix gets released, since it's all set to Mode 2 :P

Currently, Mode 2 acts like Mode 1 is supposed to, and Mode 1 has no effect at all - as shown here.