Miner stops on steel behind her

Started by Proxima, June 27, 2016, 04:32:37 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Proxima

Non-solving replay for Simple 39 showing a possible problem. The last miner assigned immediately stops because of steel above and behind her, which feels weird to me. Any thoughts?

Simon

I agree, this cancellation looks weird.

Early C++ Lix was more lenient here: The top half of the miner's very first stroke was immune against steel. I.e., steel pixels didn't cancel the miner, even though these pixels weren't destroyed either.

Last year, geoo merged the two half-strokes. I forgot what happened to the steel immunity of the first stroke's top half. Most likely, geoo has preserved the immunity in the top half. I should check the C++ source.

I know that the D miner has no steel immunity whatsoever. The basher has immunity in the top 2 hi-res pixel rows, so this concept is already in place. I'm open to re-introduce immunity.

-- Simon

Simon

Miner mask proposal

...XXXXX..........
.NXXXXXXXX........
NNXXXXXXXXXX......
NNXXXXXXXXXXXX....
NNXXXXXXXXXXXXX...
NNXXXXXXXXXXXXXX..
NNXXXXXXXXXXXXXXX.
NNXXXXXXXXXXXXXXX.
NNXXXXXXXXXXXXXXXX
NNXXXXXXXXXXXXXXXX
NNXXXXXXXXXXXXXXXX
NNXXXXXXXXXXXXXXXX
NNXXXXXXXXXXXXXXXX
NNXXXXXXXXXXXXXXXX
NNXXXXXXXXXXXXXXXX
NNXXXXXXXXXXXXXXXX
NNXXXXXXXXXXXXXXXX
NNXXXXXXXXXXXXXXXX
NNXXXXXXXXXXXXXXXX
NNXXXXXXXXXXXXXXXX
#XXXXXXXXXXXXXXXX.
XXXXXXXXXXXXXXXXX.
..XXXXXXXXXXXXXX..
....XXXXXXXXXXX...
......XXXXXXXX....
........XXXX......


# = effective coordinate of lix. This is inside the foot, 2 hi-res pixels above the floor.
X = pixel that we remove, we cancel if steel is here
N = pixel that we remove, we are immune to steel here

The miner mask in 0.6.x has no immunity pixels.

I'm considering the mask in the spoiler tag for 0.7.x. The immunity pixels have only an effect on the very first swing, even though they're part of every swing. Reason: Steel doesn't move. On subsequent swings, the immunity pixels were fully covered by non-immunity pixels in the previous swing.

C++ Lix didn't have full immunity in the top half of the first swing. The first swing was always carried out entirely, even if we hit steel. If we hit steel, we would cancel after the entire first swing instead of mid-stroke. According to my calculations, Proxima's replay should generate the same strange sight in C++ Lix.

-- Simon

namida

QuoteThe immunity pixels have only an effect on the very first swing, even though they're part of every swing. Reason: Steel doesn't move. On subsequent swings, the immunity pixels were fully covered by non-immunity pixels in the previous swing.

But if the mask changes, or the exact movement changes, etc, this may no longer be true. Wouldn't it be safer to simply do the check on every swing?
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)

Simon

Yeah, I worded it ambiguously. The immunity is in effect on every swing, i.e., the game ignores steel in the immunity-pixels during every swing. With "Have no effect in subsequent swings", I meant that barring special cases, there won't be steel within the immunity pixels on subsequent swings, yet we still grant immunity to steel there.

I'm not 100 % sure whether I want my own proposed behavior. It looks meaningful and covers Proxima's weird case.

-- Simon

Nepster

I am in favor of introducing even a bit more of steel immunity for miners. Something like the two outermost hi-res pixel layers of the upper half.

Contrary to the situation of bashers and diggers, miner tunnels are far harder to estimate and thus one might easily misplace miners a little bit. So being not too strict with steel checks means less frustration for players. A good test level for this is NepsterLix, rank 1, level 11 "Underground Labyrinth".

New Miner mask proposal

...NNNNN..........
.NNNXXXNNN........
NNXXXXXXXNNN......
NNXXXXXXXXXNNN....
NNXXXXXXXXXXXNN...
NNXXXXXXXXXXXXXN..
NNXXXXXXXXXXXXXXX.
NNXXXXXXXXXXXXXXX.
NNXXXXXXXXXXXXXXXX
NNXXXXXXXXXXXXXXXX
NNXXXXXXXXXXXXXXXX
NNXXXXXXXXXXXXXXXX
NNXXXXXXXXXXXXXXXX
NNXXXXXXXXXXXXXXXX
NNXXXXXXXXXXXXXXXX
NNXXXXXXXXXXXXXXXX
NNXXXXXXXXXXXXXXXX
NNXXXXXXXXXXXXXXXX
NNXXXXXXXXXXXXXXXX
NNXXXXXXXXXXXXXXXX
#XXXXXXXXXXXXXXXX.
XXXXXXXXXXXXXXXXX.
..XXXXXXXXXXXXXX..
....XXXXXXXXXXX...
......XXXXXXXX....
........XXXX......


# = effective coordinate of lix. This is inside the foot, 2 hi-res pixels above the floor.
X = pixel that we remove, we cancel if steel is here
N = pixel that we remove, we are immune to steel here

Simon

Nepster's proposal sounds good.

-- Simon