[BUG] Basher/steel interaction in SuperLemmini

Started by WillLem, January 13, 2021, 11:52:18 PM

Previous topic - Next topic

0 Members and 2 Guests are viewing this topic.

WillLem

Quote from: kaywhyn on January 16, 2021, 04:59:48 AM
(re: Basher terrain checks)
Best to see this on level 8 of Ron Stard's Rodents pack for SL. Have you solved it yet? It should be clear how the builders need to be placed, and so the solution is very dependent on where and when you start bashing.
---
edit: Ok I tested this on Tame 1, and how much a basher destroys a builder staircase going in the same direction as the basher is extremely dependent on where and when you start bashing.

Ah, I see what you mean now - by "added terrain", you mean a Builder bridge - apologies for not quite getting this at first :forehead:

Yes, I had a look at that level and I remember it being a difficult one to solve even in NeoLemmix, due to the fact that there's no way to know whether the Basher will make it all the way through without going ahead and trying it. Because of this, it actually stands up as a pretty valiant defiance of Skill Shadows and Framestepping, because neither of these things particularly help with completing this level.

SuperLemmini makes this even more difficult with what seems to be questionable Basher terrain checks. Best guess is that the high-res physics means that the Basher checks less terrain than they would in low-res physics; every pixel in low-res translates to 4 square pixels in high-res, so it's possible that the checks are more lenient under low-res physics.

Tsyu

#16
Quote from: WillLem on January 14, 2021, 01:22:46 AM
2) Confusingly, "Autosteel" and "Simple Autosteel" options are interpreted differently by SuperLemmini than by NeoLemmix, thus:

[SuperLemmini]{Autosteel} = The steel area fits the steel block exactly, and is indestructible
[NeoLemmix]{Autosteel} = The steel area fits only the visible part of the steel block, and is indestructible

[SuperLemmini]{Simple Autosteel} = No function (the steel is completely destructible)
[NeoLemmix]{Simple Autosteel} = The steel area fits the steel block exactly, and is indestructible
The "normal" autosteel behaving like simple autosteel is a bug. I fixed it just now for the next release.

Simple autosteel works fine for me. Are you enabling both "Autosteel" and "Simple Autosteel"? In both NeoLemmix 1.43 and SuperLemmini, you need to do that for simple autosteel to work.


EDIT: Regarding the behavior mentioned in the original post, it seems to simply be a consequence of mimicking Amiga behavior. If I play the original version of that level in the Amiga version, start building exactly where the lemming in the video starts (so that the right edge of the step is directly above the center of the bolt), and have the lemming bash after laying 15 bricks, it refuses to bash due to the steel. If I do the same thing except start building one pixel earlier, then the lemming starts bashing and then stops and turns around due to steel (like in the video). I also tested this in SuperLemmini (from both positions) and the same things happened. If you did move the right edge of that steel area by two high-res pixels (to match the steel blocks), then the behavior shown in that video is expected.

WillLem

#17
Quote from: Tsyu on May 10, 2021, 06:10:37 AM
The "normal" autosteel behaving like simple autosteel is a bug. I fixed it just now for the next release.

Simple autosteel works fine for me. Are you enabling both "Autosteel" and "Simple Autosteel"? In both NeoLemmix 1.43 and SuperLemmini, you need to do that for simple autosteel to work.

So, in my current copy of SuperLemmini (0.104a)...

This is with Autosteel only. As you can see, Bombers are able to destroy terrain up to the edge of the steel, and the steel block remains a steel block even when partially hidden behind terrain (good behaviour):



With both Autosteel and Simple Autosteel enabled, the behaviour is identical:



With Simple Autosteel only enabled, steel is not steel at all:



So, there seems to be only these two options, regardless of whether you have "Simple" and "Auto" checked together, it seems that "Simple" has no function in SuperLemmini. Also, there is currently no option for "NeoLemmix Steel" (steel is only steel when visible), but this isn't necessarily a bad thing IMHO.

For clarity: what do we understand as the definitions for each type of steel?

And, how will the bug fix affect levels which currently have "Autosteel" enabled? Will they behave as in the first 2 pictures above, or will they behave like "NeoLemmix steel" (i.e. steel is only steel when visible)?




Incidentally, I made a fully remastered version of the original games recently, which restores some missing terrain/objects and makes all steel behave "well" (as per the above examples). I'm not sure whether you'd want to use these as the official copy to distribute with SuperLemmini, but you are very welcome to do so!

Tsyu

Enabling Simple Autosteel without also enabling Autosteel won't enable any kind of autosteel, not in NeoLemmix 1.43 or SuperLemmini.

To put it another way, if you want any kind of autosteel at all, you must enable Autosteel. Then, if you want simple autosteel, you must also enable Simple Autosteel and leave Autosteel enabled. Enabling Simple Autosteel without also enabling Autosteel is the same as enabling neither option.

In case that's not clear enough, here is a list of all four combinations of those options and what they do in NeoLemminx 1.43 (and what they should do in SuperLemmini):


  • Autosteel off, Simple Autosteel off: No autosteel
  • Autosteel off, Simple Autosteel on: No autosteel
  • Autosteel on, Simple Autosteel off: Advanced ("NeoLemmix") autosteel - only visible portions of steel pieces are indestructible
  • Autosteel on, Simple Autosteel on: Simple autosteel - Steel pieces, even obscured portions, are indestructible unless erased

With my bug fix in place, autosteel should behave exactly as described in that list. (And if it doesn't, then that's a bug that I have to fix.) Unfortunately, this does mean that any level made with only the Autosteel option enabled that expects "simple" autosteel may not play properly anymore.

WillLem

Quote from: Tsyu on May 11, 2021, 06:10:03 AM
With my bug fix in place, autosteel should behave exactly as described in that list. (And if it doesn't, then that's a bug that I have to fix.) Unfortunately, this does mean that any level made with only the Autosteel option enabled that expects "simple" autosteel may not play properly anymore.

Thanks for clarifying. It should be easy to apply a pack-wide fix, I'll just use a RegEx to change all the values.