Lemmings Forums

Other Lemmings Projects => SuperLemmix => SuperLemmix Bugs & Suggestions => Topic started by: WillLem on July 10, 2023, 10:18:39 AM

Title: [SUG] New skill - Downwards-Builder / "Ladderer" [POLL]
Post by: WillLem on July 10, 2023, 10:18:39 AM
From this topic (https://www.lemmingsforums.net/index.php?topic=6400.msg99593#msg99593):

Quote from: Strato Incendus
Sand Pourer, Glue Pourer, Filler: I’ve always found the Glue Pourer the most versatile of these three, since it can act as a Filler and a Platformer, depending on the terrain. If there’s some predictable way in which the Glue could be made to “pile up”, the Sand Pourer’s uses could be implemented in the same skill.
In short: I think there should only be one of these three. But in order to be considered worthy of inclusion, it would probably have to be at least versatile enough to feature aspects of all three of these skills.
---
In the past, we contemplated the idea of the Roper being used as a downward Builder, specifically. Meaning, it should not be able to aim upwards, as it can in L2: The Tribes.
Title: Re: [SUG] New skill - Pourer (acts as both gap filler and downwards-Builder)
Post by: WillLem on July 10, 2023, 10:21:00 AM
I like the idea of a pouring skill, and the Glue Pourer is definitely the most useful from L2.

We could also benefit from a downwards-Builder, but with the Roper having been established in L2 as an "any direction" skill, I wouldn't want to nerf it for use in SLX. So, the question here would be - do we want the Roper, or do we want a downwards-Builder? If the former, then it would become the first and only skill in SLX to be mouse-point-controlled, which would be a huge challenge (but not out of the question).

If the latter, then perhaps we can merge these two ideas into one skill: the Pourer's liquid could have an always-diagonally-downwards trajectory, essentially creating a slide/ramp of terrain.

Support for this idea? Thoughts? Suggestions?
Title: Re: [SUG] New skill - Pourer (acts as both gap filler and downwards-Builder)
Post by: Strato Incendus on July 10, 2023, 06:48:20 PM
Quote from: WillLem
If the latter, then perhaps we can merge these two ideas into one skill: the Pourer's liquid could have an always-diagonally-downwards trajectory, essentially creating a slide/ramp of terrain.

Ooohhh… another great idea I had never thought of! :lem-mindblown:
Almost seems like our go-to fix to make any L2 skill more useful is “make it diagonal!” :thumbsup:

As I’ve outlined in the parallel thread, my exception to this just-invented principle of making a skill more versatile would be the vertical Digger (Twister). Since we already have to diagonally upwards-moving destructive skills.

But a downward Builder is indeed something we’re still sorely lacking. You can only go up (with a Builder) or remain flat (with a Platformer). Of course, there is the Freezer (former Stoner), but they are notorious for creating backroutes, especially when it comes to breaking large falls.

Much like I enjoyed using Fencers to create inverted Miner puzzles (think “Postcard from Lemmingland” from below), the downward Builder could flip another prominent level archetype on its head:
Rather than sending a lemming down (with a Floater / Glider) and then building / platforming from below to break the fall, you could send a lemming up (with a Climber / Glider / Shimmier / Jumper, possibly Ballooner / Twister), and then build (=pour) a path downward. We could group these types of levels into the category “Rapunzel levels”. ^^
Title: Re: [SUG] New skill - Pourer (acts as both gap filler and downwards-Builder)
Post by: WillLem on July 10, 2023, 10:34:49 PM
As I’ve outlined in the parallel thread, my exception to this just-invented principle of making a skill more versatile would be the vertical Digger (Twister). Since we already have two diagonally upwards-moving destructive skills.

To be honest, I'm thinking... swap the Laserer to vertically-upwards, then replace the Fencer with the Twister (which would do exactly what the Laserer currently does, but with the difference that it sends the lem up the tunnel).

Or, to keep things simple, just implement the vertical Laserer and have both Laserer types in the same game! (Maybe not, actually...)

But a downward Builder is indeed something we’re still sorely lacking ... Of course, there is the Freezer (former Stoner), but they are notorious for creating backroutes, especially when it comes to breaking large falls.

We're not worried about backroutes in SuperLemmix - that's a challenge for the level designer to overcome! ;P

you could send a lemming up (with a Climber / Glider / Shimmier / Jumper, possibly Ballooner / Twister), and then build (=pour) a path downward. We could group these types of levels into the category “Rapunzel levels”. ^^

Haha, nice idea :thumbsup:
Title: Re: [SUG] New skill - Pourer (acts as both gap filler and downwards-Builder)
Post by: Strato Incendus on July 11, 2023, 06:42:02 PM
I see little benefit in changing the existing Laserer to a vertical skill — aside from the continuing (to me worrying) trend of messing with several established skills. I don’t think SuperLemmix needs to do this in order to set itself further apart from NeoLemmix — the mere fact that SuperLemmix might have MORE skills (with the Spearer and Grenader already being exclusive to it) will be enough.

If we proceed to give other skills the Stoner-to-Freezer treatment (as you’ve already brought it up for Walkers, Laserers, and Fencers now), casual shifts back and forth between NeoLemmix and SuperLemmix will become harder and harder. Rather than lots of players using both engines, this will ultimately result in a split between dedicated NeoLemmix and SuperLemmix communities. (And it pains me to say that I would probably find myself on the NeoLemmix side, in such a hypothetical case.)



But to move away from this general “SLX quo vadis?” question, and back to the Laserer, specifically:

The diagonal Laserer has neat interactions with the Shimmier, from being able to stop them (by shooting from the opposite direction) to carving tunnels while the Shimmier is already in motion (by shooting in the same direction as the Shimmier is moving). The range is also an important feature here, since the Laserer can reach the ceiling easily.

A diagonal Twister would not accomplish the same thing, since it would have to be similarly close to the ceiling already as a Shimmier trying to hold on to it. If you have to build up to the ceiling first, then launch a Twister to carve out the tunnel, and then start a Shimmier from the top of the staircase, that’s a lot more effort than creating the tunnel with the Laserer, and then sending a Climber / Jumper up from elsewhere. Also, the extra Builders required to get the Twister close to a high ceiling are likely to break the level, with the Builder being one of the most powerful and versatile skills.

Why are we discussing this in the Pourer thread, though? :evil: I only made a side-remark about the Twister here. My point was about the unique utility of having a downward Builder at our disposal. ;)
Title: Re: [SUG] New skill - Pourer (acts as both gap filler and downwards-Builder)
Post by: WillLem on July 11, 2023, 08:58:31 PM
I see little benefit in changing the existing Laserer to a vertical skill
---
Why are we discussing this in the Pourer thread, though?

OK, I seem to have created a bit of unnecessary concern here. Let's agree we'll leave the Laserer as it is, not switch it to vertical. I've outlined a new idea for the "Twister/Propeller" here (https://www.lemmingsforums.net/index.php?topic=6407.msg99694#msg99694) which I think would work great as a vertically-oriented skill.

And yes, let's keep non-Pourer discussion out of this topic. It's very easy to get crossed wires when there are so many things being discussed at the same time. Apologies for any confusion.

And again - to be very clear - none of the current discussions are confirmation that anything will change, and I'll always announce any upcoming changes (and accepted suggestions) very clearly in this topic (https://www.lemmingsforums.net/index.php?topic=6336.msg98208#msg98208), so that they can be discussed further before actual implementation. I've revoked several ideas so far as a result of Forum feedback, so there needn't be any concern that I'll just change things randomly and without notice.
Title: Re: [SUG] New skill - Pourer (acts as both gap filler and downwards-Builder)
Post by: jkapp76 on July 12, 2023, 01:33:18 AM
Here's the glue-pourer in action.

It fills gaps, but will need modded to make downward walkways.
Title: Re: [SUG] New skill - Downwards-Builder / "Ladderer"
Post by: WillLem on July 12, 2023, 02:44:36 PM
I have to be realistic about this - as much as I like the idea, figuring out how to program the "poured stuff" is a bit beyond what I'm prepared to attempt on my own without help.

So, let's focus instead on simply a way of getting a "downwards Builder" - i.e. a slope/ramp/staircase of terrain that orients diagonally downwards from the point of origin.

I propose, then, the "Ladderer".

What I imagine is that this lemming will take out a stack of bricks that will "cascade" downwards, similar to a Jacob's Ladder toy (https://youtu.be/cWFBjZWrRdk), to form a staircase:

(https://i.imgur.com/l211pq8.png)(https://i.imgur.com/7mGgMVf.png)

(https://i.imgur.com/vVnt1IC.png)

Thoughts?
Title: Re: [SUG] New skill - Downwards-Builder / "Ladderer"
Post by: jkapp76 on July 12, 2023, 04:30:41 PM
I like this more than the liquid stairs.

This is the only version I can really get a grip of. You should be able to use some already-existing art from stackers/builders too.

My last house had a pull-down attic ladder like this so I can relate to the name ladderer.
Title: Re: [SUG] New skill - Downwards-Builder / "Ladderer"
Post by: Strato Incendus on July 12, 2023, 04:51:23 PM
Looks like you’re great at coming up with unique but straightforward skill names! :thumbsup:
(I’m saying that because I like the propeller idea for the Twister, too.)

The only caveat with both is that turning them into personified skill names doesn’t roll off the tongue as easily (“Ladder-rer”, “Propeller-rer” etc.). But then again, the “Laser-rer” has a similar problem. :evil:
Title: Re: [SUG] New skill - Downwards-Builder / "Ladderer"
Post by: WillLem on July 12, 2023, 06:56:49 PM
The only caveat with both is that turning them into personified skill names doesn’t roll off the tongue as easily (“Ladder-rer”, “Propeller-rer” etc.). But then again, the “Laser-rer” has a similar problem. :evil:

"Propellerer" would just be "Propeller", in that they are a lem being propelled, or a propelling lem!

"Ladderer" isn't too bad, but yeah it does have the same problem as "Laserer." Maybe we ought to change it to "Laser Blaster" :shrug: (we still need that :shrug: Lemoji (https://www.lemmingsforums.net/index.php?topic=4524.msg96285#msg96285)!)



Question regarding the Ladderer idea: what should happen when assigning a Cloner to a Ladderer?
Title: Re: [SUG] New skill - Downwards-Builder / "Ladderer"
Post by: WillLem on July 29, 2023, 04:33:30 AM
OK, so having decided to shelve the Runner, this one seems like the best idea to concentrate on for now. I'll have a look at it over the next few days :thumbsup:
Title: Re: [SUG] New skill - Downwards-Builder / "Ladderer"
Post by: Strato Incendus on July 29, 2023, 08:37:58 AM
Great, thanks a lot, WillLem! :thumbsup:

I’ve been thinking about the Ladderer a few days ago, because I realised the specific skill interactions that would be possible in SuperLemmix, due to it already having the Spearer and Grenader.

For example, a lemming could jump into the niche created by a Grenader, or onto a spear sticking in a wall, turn around and create a ladder from there. If we already have the Ballooner at that point, flying up a non-Climber-friendly section (be it due to gaps and/or non-straight walls) and then turning around to ladder from the top would also be a thing.

Other interactions that would also have been possible in NeoLemmix are laddering down from a Laserer tunnel, or from on top of a Freezer (Stoner). We might also see zig-zag bridges, built by combining Builders and Ladderers, and/or Platformers.

When creating ladders from the end of tunnels created by destructive skills, interactions with the Miner might end up being the most common.
Due to the angular shape of the steps, it looks like there won’t be any “make skills go through” interactions, like with Builder/Miner and Builder/Fencer. But I’m not sure we’d need those for the Ladderer anyway.

With regards to the sprites, I would prefer the one on the right, where the steps are laid down from the top, rather than “swinging into position” from below.



PS: Since the Runner thread is locked now, I just wanted to clear up what I meant with “on an unrelated note” ;)

Spoiler (click to show/hide)
Title: Re: [SUG] New skill - Downwards-Builder / "Ladderer"
Post by: WillLem on July 29, 2023, 04:06:37 PM
With regards to the sprites, I would prefer the one on the right, where the steps are laid down from the top, rather than “swinging into position” from below.

You've misunderstood here. The two aren't separate sprites, these show how the bricks will cascade out from a single starting point to form the full "Ladder" - like a Jacob's Ladder toy (see linked video in the same post).

We’ve moved pretty quickly from “let’s go back from the Hoverboarder to the Runner” to “drop the Runner entirely”, so that nobody had time to respond in between. ;)

Yes, I do move quickly on things and I apologise if anyone feels like they didn't have a chance to get involved with the final decision regarding the Runner, but I felt the whole thing had run its course (pun intended). I've been trying more recently to leave at least 24 hours between posting something and checking for replies, but I do tend to make decisions fairly quickly, and - what's more often the case - the decision is made for me by some aspect of a feature's development.

Some features warrant a bit more tenacity - for example, the current proposal to allow airborne Spears to interact with Zombies and Ballooners (https://www.lemmingsforums.net/index.php?topic=6413.msg99638#msg99638) is something I think is worth taking the time to explore and overcome any issues which arise. The Runner/Hoverboarder, by contrast, never really felt like it was worth the effort I was putting into it and was constantly generating bugs and unanswerable questions. So, it had to go.
Title: Re: [SUG] New skill - Downwards-Builder / "Ladderer"
Post by: Strato Incendus on July 29, 2023, 05:17:05 PM
Yes, I watched that Jacob’s Ladder video; I just didn’t fully realise how exactly it applied to the skill in motion.

So now I guess the frame where the brick swings into position from below refers to the vertical bricks of the ladder, whereas the bricks that swing into place from above are the horizontal bricks? ;)
Title: Re: [SUG] New skill - Downwards-Builder / "Ladderer"
Post by: WillLem on July 30, 2023, 01:28:01 AM
So now I guess the frame where the brick swings into position from below refers to the vertical bricks of the ladder, whereas the bricks that swing into place from above are the horizontal bricks? ;)

Something like that is what I imagine. Whether or not it's actually possible to do it this way remains to be seen...!
Title: Re: [SUG] New skill - Downwards-Builder / "Ladderer"
Post by: jkapp76 on July 30, 2023, 01:46:54 AM
The (Jacob's ladder) method seems to have the potential to be much faster than a downward builder would be.
I think a good old-fashioned downward builder would be good. But a faster ladderer seems much better to me.

This seems like something of a Lemmings 3 skill too. I think only L3 had downward building. It's nice to break loose
from the Lemmings 2 skills for a minute.

I'm beginning to think the ladderer will be more useful than the upward digger. I want to see how it works in conjunction
with builders and platformers too.

The runner seemed like a cool feature, but I can't see that being too useful often. I'm thinking the ladderer might be the one.

Title: Re: [SUG] New skill - Downwards-Builder / "Ladderer"
Post by: WillLem on July 30, 2023, 04:58:20 AM
Presenting the Ladderer!

(https://i.imgur.com/UBmxwzb.png)

Here's a demo video (https://youtu.be/8qz058_pXBU) of the current action.

Planned changes:

Rucksack will need to be a different colour to the Builder rucksack, and have a better animation for those last few frames of slamming the origin brick down.

We need some terrain checks - the animation should stop if the "ladder" comes into contact with terrain at any point.

Questions:

Should the ladder start at the same spot as the first Builder brick (current behaviour - see video), or the same spot as the first Platformer brick (i.e. lem's foot position, no height gain)?

Is the sound a bit much? The plan was for it to add some "weight" to the cascading bricks - what do we think?

What should happen when a Ladderer is Cloned? At the moment, the following happens:

Cloned Ladderer (click to show/hide)

Any other suggestions?
Title: Re: [SUG] New skill - Downwards-Builder / "Ladderer"
Post by: WillLem on July 30, 2023, 05:14:07 AM
Bonus challenge!

Can any mathematicians / logicians or anyone who's good at recognising patterns suggest a way that I can simplify this procedure by using a formula or algorithm to calculate the X and Y values relative to each LemPhysicsFrame?

There's a Mars Bar in it for whoever can solve this. NOTE: You'd be getting one-up on OpenAI if you can figure this one out - ChatGPT's answer didn't work!

Code: [Select]
procedure TLemmingGame.LayLadder(L: TLemming);
var
  X, Y: Integer;
begin
    case L.LemPhysicsFrame of
      9: begin
           for X := 1 to 5 do
             AddConstructivePixel(L.LemX + X * L.LemDx, L.LemY -1, BrickPixelColors[9]);
         end;
      11:begin
           X := 5;

           for Y := 0 to 1 do
             AddConstructivePixel(L.LemX + X * L.LemDx, L.LemY + Y, BrickPixelColors[9]);
         end;
      12:begin
           for X := 5 to 8 do
             AddConstructivePixel(L.LemX + X * L.LemDx, L.LemY + 2, BrickPixelColors[9]);
         end;
      13:begin
           X := 8;

           for Y := 3 to 4 do
             AddConstructivePixel(L.LemX + X * L.LemDx, L.LemY + Y, BrickPixelColors[9]);
         end;
      14:begin
           for X := 8 to 11 do
             AddConstructivePixel(L.LemX + X * L.LemDx, L.LemY + 5, BrickPixelColors[9]);
         end;
      15:begin
           X := 11;

           for Y := 6 to 7 do
             AddConstructivePixel(L.LemX + X * L.LemDx, L.LemY + Y, BrickPixelColors[9]);
         end;
      16:begin
           for X := 11 to 14 do
             AddConstructivePixel(L.LemX + X * L.LemDx, L.LemY + 8, BrickPixelColors[9]);
         end;
      17:begin
           X := 14;

           for Y := 9 to 10 do
             AddConstructivePixel(L.LemX + X * L.LemDx, L.LemY + Y, BrickPixelColors[9]);
         end;
      18:begin
           for X := 14 to 17 do
             AddConstructivePixel(L.LemX + X * L.LemDx, L.LemY + 11, BrickPixelColors[9]);
         end;
      19:begin
           X := 17;

           for Y := 12 to 13 do
             AddConstructivePixel(L.LemX + X * L.LemDx, L.LemY + Y, BrickPixelColors[9]);
         end;
      20:begin
           for X := 17 to 20 do
             AddConstructivePixel(L.LemX + X * L.LemDx, L.LemY + 14, BrickPixelColors[9]);
         end;
      21:begin
           X := 20;

           for Y := 15 to 16 do
             AddConstructivePixel(L.LemX + X * L.LemDx, L.LemY + Y, BrickPixelColors[9]);
         end;
      22:begin
           for X := 20 to 23 do
             AddConstructivePixel(L.LemX + X * L.LemDx, L.LemY + 17, BrickPixelColors[9]);
         end;
      23:begin
           X := 23;

           for Y := 18 to 19 do
             AddConstructivePixel(L.LemX + X * L.LemDx, L.LemY + Y, BrickPixelColors[9]);
         end;
      24:begin
           for X := 23 to 26 do
             AddConstructivePixel(L.LemX + X * L.LemDx, L.LemY + 20, BrickPixelColors[9]);
         end;
    end;
end;

The Frame number is the one on the left (9, 11, 12, 13 .. 24).

The idea is to get AddConstructivePixel down to a single call, which then uses a formula to calculate the values based on the frame number. It might be necessary to do 2 calls - one for the horizontally-drawn pixels, and one for the vertically-drawn pixels.

We can say "for odd frames, do this, and for even frames, do this" and we can also say "for {these} frames, do this, and for {those} frames, do this".
Title: Re: [SUG] New skill - Downwards-Builder / "Ladderer"
Post by: Strato Incendus on July 30, 2023, 08:44:39 AM
While the cloned behaviour does look odd, indeed, it’s precisely how it affects the Stacker, too: If you clone a Stacker mid-performance, only the upper parts of the stack will be built, while at the bottom, a gap remains. I’ve actually created a level recently (for NeoLemmix) that relies on this.

I think this behaviour makes the most sense if we think of the Ladderer as an angular Glue Pourer. Because that’s indeed what it currently looks like in action, at least to me. ;) The glue accumulates at the bottom, in this case.

I don’t know what happens in between Fig. 2 and Fig. 3. I assume the upper part of the ladder just disappears from one frame to the next.
If the animation played backwards at the end of skill performance, with the bricks being deconstructed from above, until only the part of the ladder that actually became terrain remains, that would fit with the glue-pouring idea.

Perhaps this could be implemented in general, so that it’s independent of the Cloner. A regular ladder would then simply not be deconstructed at all, because the entire terrain built by the skill remains. Meaning, the “deconstruct from above” backwards animation could still play — but the number of deconstructed bricks (=the variable you’d have to enter for this) would assume the value 0.
Title: Re: [SUG] New skill - Downwards-Builder / "Ladderer"
Post by: Simon on July 30, 2023, 11:20:35 AM
simplify this procedure by using a formula or algorithm to calculate the X and Y values relative to each LemPhysicsFrame?
2 calls - one for the horizontally-drawn pixels, and one for the vertically-drawn pixels.
for odd frames, do this, and for even frames, do this

The basic structure can become:

    if L.LemPhysicsFrame < 9 and L.LemPhysicsFrame <> 10 then begin
        Exit;
    end;
    if L.LemPhysicsFrame mod 2 = 0 then begin
       
// even frame
    end; else
       
// odd frame
    end;


Sadly, frame 9 is special: Frame 9 produces a pixel more than the other horizontal-building frames (11, 13, 15, ...). Above basic structure doesn't account for that yet. Ignore frame 9, complete your desired refactrorings for frames >= 11, then see how to marry the old code for frame 9 into the refactored code. Maybe you can produce a pixel more in frames 11, 13, 15, ..., too, and then they'll match the idea behind frame 9.

For the horizontal starting coordinate in even frames, you want an expression f with
f(12) = 5,
f(14) = 8,
f(16) = 11,
f(18) = 14.
This f will be: 3 * ((L.LemPhysicsFrame - 10) div 2) + 2

(How does one see this? First, choose the division by 2 and multiplication by 3 to match the slope, i.e., the pattern of how 2 steps in the input take you 3 steps in the output. Afterwards, shoehorn it onto the correct offsets with the additions/subtractions; for these, it's easy to make mistakes. Test the expression mentally with 2 or 3 examples.)

Find three more such expressions for the vertical starting coordinate in even frames, and for both coordinates in odd frames.

There are many possibilities for the refactoring. One idea: Create two local procedures, one for a vertical brick and one for a horizontal brick. Both will take as input only a starting point. Both will contain the loop and compute the end point for the loop from the passed starting point.

-- Simon
Title: Re: [SUG] New skill - Downwards-Builder / "Ladderer"
Post by: jkapp76 on July 30, 2023, 02:17:46 PM
I think the ladder should start at the same height as the platformer brick. If you're trying to save a large
crowd from a splat height you don't want them stepping any higher. This would also let the ladder one
Pixel lower.

The current cloned behavior is probably good either way.

Could use the L2 orange sack color, like the stacker?

The sound is pretty good. Seems loud. (I would have probably tried a higher-pitched dominoes-like click)
Title: Re: [SUG] New skill - Downwards-Builder / "Ladderer"
Post by: WillLem on July 31, 2023, 04:21:09 AM
While the cloned behaviour does look odd, indeed, it’s precisely how it affects the Stacker, too: If you clone a Stacker mid-performance, only the upper parts of the stack will be built

Yes, that is indeed the case. I think it's probably best to maintain this as it's likely what players will expect. I've now adapted the sprite so that it only displays the currently-drawn brick for each frame. That way, the Cloned lem only shows the bricks which will actually exist.

The skill shadow also follows suit, as can be seen in the video at the end of this post.

Ignore frame 9, complete your desired refactrorings for frames >= 11, then see how to marry the old code for frame 9 into the refactored code.
---
One idea: Create two local procedures, one for a vertical brick and one for a horizontal brick. Both will take as input only a starting point. Both will contain the loop and compute the end point for the loop from the passed starting point.

Thanks for this, Simon! I've managed to simplify it down to the following method. A similar version of this is also used for drawing the skill shadow:

EDIT: Posted this again after finding another way to simplify it further

Code: [Select]
procedure TLemmingGame.LayLadder(L: TLemming);
var
  i: Integer;
  PosX, PosY: Integer;
  FrameOffset: Integer;
const
  VerticalBrick: array[0..3, 0..1] of Integer = (
       (4, 0),
       (4, 1),
       (4, 2),
       (4, 3));

  HorizontalBrick: array[0..3, 0..1] of Integer = (
       (1, 0), (2, 0), (3, 0), (4, 0));
begin
  PosX := L.LemX + L.LemDX;
  PosY := L.LemY;

  /// Horizontal bricks
  for i := 0 to Length(HorizontalBrick) - 1 do
  begin
    // First ladder frame need an extra pixel at lem's foot position
    if L.LemPhysicsFrame = 10 then
      AddConstructivePixel(PosX, PosY, BrickPixelColors[9]);

    // Only draw horizontal bricks on the following frames
    if L.LemPhysicsFrame in [10, 12, 14, 16, 18, 20, 22, 24] then
    begin
        case L.LemPhysicsFrame of
          10: FrameOffset := 0;
          12: FrameOffset := 3;
          14: FrameOffset := 6;
          16: FrameOffset := 9;
          18: FrameOffset := 12;
          20: FrameOffset := 15;
          22: FrameOffset := 18;
          24: FrameOffset := 21;
        end;

      if L.LemDX > 0 then
        AddConstructivePixel((PosX + FrameOffset) + HorizontalBrick[i, 0],
                             (PosY + FrameOffset) + HorizontalBrick[i, 1], BrickPixelColors[9])
      else
        AddConstructivePixel((PosX - FrameOffset) - HorizontalBrick[i, 0],
                             (PosY + FrameOffset) + HorizontalBrick[i, 1], BrickPixelColors[9]);
    end;
  end;

  /// Vertical bricks
  for i := 0 to Length(VerticalBrick) - 1 do
  begin
    // Only draw vertical bricks on the following frames
    if L.LemPhysicsFrame in [11, 13, 15, 17, 19, 21, 23] then
    begin
        case L.LemPhysicsFrame of
          11: FrameOffset := 0;
          13: FrameOffset := 3;
          15: FrameOffset := 6;
          17: FrameOffset := 9;
          19: FrameOffset := 12;
          21: FrameOffset := 15;
          23: FrameOffset := 18;
        end;

      if L.LemDX > 0 then
        AddConstructivePixel((PosX + FrameOffset) + VerticalBrick[i, 0],
                             (PosY + FrameOffset) + VerticalBrick[i, 1], BrickPixelColors[9])
      else
        AddConstructivePixel((PosX - FrameOffset) - VerticalBrick[i, 0],
                             (PosY + FrameOffset) + VerticalBrick[i, 1], BrickPixelColors[9]);
    end;
  end;
end;

Maybe you can produce a pixel more in frames 11, 13, 15, ..., too, and then they'll match the idea behind frame 9.
I think the ladder should start at the same height as the platformer brick.

Agreed - in fact, lowering the starting brick by 1 pixel allows it to be 1 pixel shorter, meaning that all horizontal bricks are 4px long. So, this solves the "extra pixel on first frame" conundrum - the extra pixel was required so that the Ladderer had a pixel at their foot position, preventing them from walkng through the "checkerboard" if that first pixel wasn't there. Lowering the first brick 1px removes the need for this.

Furthermore, it grants an extra pixel of "Ladderer can start here", meaning that there's an extra frame of assignability - ideal for real-time play.

I've also started the ladder cascade on frame 10 instead of 9 now, so there isn't a skipped frame. This makes the animation and sound pattern a lot smoother.

Could use the L2 orange sack color, like the stacker?

The Stacker in SLX already has orange. I was thinking maybe purple, teal or dark brown...?

The sound is pretty good. Seems loud. (I would have tried a higher-pitched dominoes-like click)

Great idea! I have a set of dominos which make nice sounds, I'll see about getting a recording :thumbsup:

Here's a new video demo (https://youtu.be/SdfO2EznuJs), complete with skill shadow and corrected Cloner interaction:

(https://i.imgur.com/wLY87EK.png) (https://youtu.be/SdfO2EznuJs)
Title: Re: [SUG] New skill - Downwards-Builder / "Ladderer"
Post by: jkapp76 on July 31, 2023, 04:37:04 AM
I'm wondering if you stand at the end of the ladder and begin another ladder if it'll continue as one single long ladder? Or if it'd create a step where the new one begins. One single ladder would be cool
And be like the builder.

I attached the pull down ladder picture as it reminds me of the ladderer. I think a purple sack would get lost in the purple button color. Green and blue would get lost in the lemming colors. Teal sounds okay, or a light blue. IMO

Title: Re: [SUG] New skill - Downwards-Builder / "Ladderer"
Post by: WillLem on July 31, 2023, 05:04:35 AM
I'm wondering if you stand at the end of the ladder and begin another ladder if it'll continue as one single long ladder?

No, it doesn't unfortunately - it continues on directly from the last step, but is a little bit further forward. It also isn't Shimmyable on the underside, but we already have Builders and Platformers for that.

However, one thing I noticed when testing today is that the trajectory is identical to the Laserer - it's therefore possible to connect 2 laser tunnels (that were created by the same Laserer) using a Ladderer, like so:

(https://i.imgur.com/SAliPI0.png)

I also think that the Ladderer's near-immediate action more than makes up for its shortcomings, and - like the other construction skills - I'm sure it will prove to be very versatile.

I think a purple sack would get lost in the purple button color. Green and blue would get lost in the lemming colors. Teal sounds okay, or a light blue.

Agreed :)
Title: Re: [SUG] New skill - Downwards-Builder / "Ladderer"
Post by: Strato Incendus on July 31, 2023, 09:10:25 PM
Yes, the interaction with the Laserer angle is certainly a great unique new feat! :thumbsup:

The only way to add an interaction with the Shimmier… would be to remove the steps all together and turn the ladder into a ramp, while keeping the angle the same (45 degrees) as for the Laserer. The slope would be walkable from above and shimmier-friendly from below.

This would be closer to the old idea of using the Roper as a downward Builder. Back then, “Ramper” was one of the names we were considering. I guess that would technically be closer to a diagonal-downward Platformer than a downward Builder.

So the question is: Are we attached to the name “Ladderer”, and the shape of the Jacob’s Ladder to go along with it?
Or do we want to maximise game-mechanical use? In that case, the 45-degree ramp would be more versatile. “Ramper”, “Roper”, or “Glue Pourer” would all make sense as names here.

Since the idea of the lemming letting down a ladder isn’t too different from the lemming letting down a rope, “Roper” would be fitting.
Then again, usually, when people climb a rope in real life, it’s a vertical rope. So if anything, a Roper would be a downward Stacker that creates walls for Climbers… :D
Title: Re: [SUG] New skill - Downwards-Builder / "Ladderer"
Post by: jkapp76 on July 31, 2023, 10:27:41 PM
I think Will's ladderer animation looks great.

And I think Strato's idea to make the ladderer shimmier-interactive is great too.

I've been looking at Jacob's ladder toys and they seem to all be straight, not in the "stairs" shape. I think if he decides to make this ladder
straight it should still be called the ladderer. The proper extending animation makes it a ladderer more than the final shape.

I'm sure he's put alot of time and work into the current ladder animation and It'd almost be a shame to make it straight now, but I
see the advantages too. And the possibility of this interaction wasn't considered until late.
Title: Re: [SUG] New skill - Downwards-Builder / "Ladderer"
Post by: WillLem on August 01, 2023, 12:08:11 AM
The current plan is to release the new skills (Ballooner and Ladderer) in 2.6 - a pre-release RC version will be distributed to anyone that would like to volunteer to give the new skills a test run.

I'd like us to try out the Ladderer as it is now, because it's quite unique and may offer enough interesting possibilities in its current form. If it becomes clear that people specifically want the 45-degree ramp, then we can look at changing it later. I'd probably keep the name "Ladderer", and the ramp would cascade out in the same way.



On second thoughts, that's three people now who've suggested it should be a smooth slope (nin10doadict commented this on the video). Maybe we should just go with that...

I've put up a poll.
Title: Re: [SUG] New skill - Downwards-Builder / "Ladderer" [POLL]
Post by: Strato Incendus on August 01, 2023, 07:59:55 AM
As reigning King of Shimmiers, my vote is clear. 8-)

I’m sorry for potentially having created additional workload for you, WillLem. ;) However, if there is popular demand for the Ladderer being a 45° slope, then it would be more efficient to change the behaviour now than at some undefined later point in time. The programming effort would be the same, but if a majority of players end up being in favour of this, and we change it later, chances are higher that it will additionally affect existing levels.

Of course, that depends on whether SuperLemmix will be considered “stable” at that point or not. Then again, Mike is already maintaining a SuperLemmix version of his pack, as it seems. So I guess the transition from SuperLemmix being “in development” to being treated as “stable” by at least some players / level designers is going to be gradual.

Also, thanks to jkapp76 for discovering that most Jacob’s Ladders are indeed straight lines at the end of “unfolding”! :thumbsup: That way, we can indeed keep the name “Ladderer”. Now the question is just about game-mechanical use.



Another argument in favour of the slope, which has nothing to do with Shimmiers, is the ease with which lemmings can walk through the staircase from the opposite side. With Builders, this is something we treat as a given — and we actively have to use three-Builder walls to stop it.

With the Ladderer, if the staircase is angular, it should basically never be possible for a lemming to pass through the staircase from the other side, because the lemming will always run against a vertical brick and turn around. If you then have to bash through the ladder to let the crowd on the other side, you need to reseal that gap again with a Builder. Which kind of defeats the purpose of the Ladderer. It should be possible to e.g. only provide Ladderers on a given level, without always having to provide additional Builders and Bashers, just in case some lemming gets stuck on the other side.

The Cloner example in the video doesn’t test this, because for the one staircase where a lemming does pass through from underneath, there is actually another vertical step right before slipping through the terrain. Meaning, the vertical height he then has to overcome in order to slip through the staircase is just one pixel — not the standard brick height of a vertical Ladderer brick. Normally, the vertical height of the bricks seems to be at least two pixels? I don’t know how lemmings behave, then, if there is also a “ceiling” (=a horizontal brick) above that vertical brick.

Perhaps it is indeed possible for lemmings to slip through the angular ladder — of course, I haven’t been able to test this myself yet. ;) Even then, though, I’d argue this would be confusing for the player. Because there are lots of cases where horizontal terrain on top of vertical terrain means lemmings won’t be able to pass through that (such terrain configurations normally also stop Climbers). And then, there’s these weird fringe situations, in which the lemming only has to overcome one pixel or so, or in which Climbers can climb up a wall despite that wall having 1 pixel of protruding terrain. (For example, Climbers climbing through the wooden staircases in the Pillar tileset if you put a slight vertical dent into them from above.)

In short: The ladder at least looks like it should never be possible to pass through it from the other side (especially on flat ground, rather than from below, as in the Cloner example in the video). Even if it is possible to pass through the angular staircase from the other side, I’d argue it’s not what the player would expect. Hence, such player confusion should be avoided, if possible.



In contrast, if the ladder is a slope / ramp, lemmings will clearly be able to pass through it from below, just like with a Builder staircase, and then continue to walk on top of it. This would eliminate the nuisance of lemmings constantly getting stuck on the other side of the ladder (which is something that can already happen easily with Stackers).

There are also plenty of levels where such slopes are part of the terrain, of course (think of the blue lines in the Crystal tileset). The ladder would then behave the same way. Hence, it would be consistent with player experience from regular terrain, and therefore also consistent with player expectations.
Title: Re: [SUG] New skill - Downwards-Builder / "Ladderer" [POLL]
Post by: WillLem on August 01, 2023, 08:04:47 PM
I’m sorry for potentially having created additional workload for you, WillLem. ;) However, if there is popular demand for the Ladderer being a 45° slope, then it would be more efficient to change the behaviour now than at some undefined later point in time

No worries, tbh it was a satisfying challenge to get the angular ladder working, so that was its own reward.

The more I think about it, though, a slope would be better - it would continue on the same trajectory like Builders and Platformers, and could therefore be used to properly connect Laser tunnels, and it becomes Shimmyable, which is too much of a benefit to ignore, really.

Turns out, as well, that the slope would actually be a lot simpler to code, since it would be made up of bricks that are all the same size and shape rather than vertical and horizontal bricks, as it is currently; a slope, then, should be easier to bugfix and maintain, in theory.

With the Ladderer, if the staircase is angular, it should basically never be possible for a lemming to pass through the staircase from the other side

It is possible, but I can see why a player might expect it not to be.

There are also plenty of levels where such slopes are part of the terrain, of course (think of the blue lines in the Crystal tileset). The ladder would then behave the same way

Indeed! This is the exact piece that I'm using as a template for the slope ;P
Title: Re: [SUG] New skill - Downwards-Builder / "Ladderer" [POLL]
Post by: Strato Incendus on August 02, 2023, 11:45:07 AM
Great! :thumbsup: I'm looking forward to it!
Title: Re: [SUG] New skill - Downwards-Builder / "Ladderer" [POLL]
Post by: WillLem on August 02, 2023, 03:03:27 PM
Another video demo (https://youtu.be/-sTDePzdxYo) of the Ladderer in its new form, with 45-degree sloped ladder:

(https://i.imgur.com/S2i5Rjo.png) (https://youtu.be/-sTDePzdxYo)

The above video shows the general assignability of the ladder on various different terrain shapes, the "end of ladder" checks to stop the skill action when the ladder has hit terrain, plus the Shimmier interaction.
Title: Re: [SUG] New skill - Downwards-Builder / "Ladderer" [POLL]
Post by: jkapp76 on August 02, 2023, 03:22:52 PM
I don't see anything about this that I don't like.

Title: Re: [SUG] New skill - Downwards-Builder / "Ladderer" [POLL]
Post by: WillLem on August 02, 2023, 03:49:44 PM
I don't see anything about this that I don't like.

Me too, I'm pretty stoked with how nicely this one has come together.

There are 2 things that need to be addressed:

1) The Ladderer currently stops when the end of the ladder hits terrain; they should also stop when hitting one-way-fields/Blockers. Turning wouldn't work unfortunately (for many reasons), but stopping seems appropriate.

2) Lems can currently ladder through existing ladders, Builder bridges and other thin diagonal platforms. Do we want this? Personally, I think it's desirable, but I can see a case for it not being so:

(https://i.imgur.com/3aB5kY1.png)

(https://i.imgur.com/Obt0RDE.png)
Title: Re: [SUG] New skill - Downwards-Builder / "Ladderer" [POLL]
Post by: Strato Incendus on August 02, 2023, 08:06:37 PM
Great job once again, WillLem! :thumbsup:

The nice irony is that, due to the low resolution of Lemmings games in general, the diagonal line still looks a little like a staircase, indeed, because one can still recognise "steps" in it. I don't think that's a problem - it just goes to show that there is little difference between a ladder and a diagonal rope in practice. Only the Platformer doesn't have this feature, since he creates a straight line.

Now we have an analogous symptom to the "longer step / brick" (the "a little bit further forward" part you mentioned) that we had with the angular ladder, where two consecutive ladders won't form one straight diagonal line, but there will be a slight horizontal shift instead. I don't think this is a problem either, since the resulting "ceiling" is flat, so several ladders in a row are still Shimmier-friendly in one piece. This probably just has to do with the starting position of the ladder.

The other point you raised is related to that, I assume:

Quote
2) Lems can currently ladder through existing ladders, Builder bridges and other thin diagonal platforms. Do we want this? Personally, I think it's desirable, but I can see a case for it not being so:

I've noticed something similar with the Laserer, who will not cut through a Builder staircase if assigned on the last pixel before stepping through the staircase. The reason for that is that he actually holds the cannon above the staircase, so it makes sense he can't shoot through it. A similar behaviour can be exploited in NeoLemmix by having a Shimmier jump through a low-hanging Platformer bridge (the Reacher state takes him above the bridge, so that he then lands on top of it).

So I don't think this is a problem either. In fact, it can be useful to connect Builder staircases and ladders in a zig-zag pattern. :thumbsup:

Quote
1) The Ladderer currently stops when the end of the ladder hits terrain; they should also stop when hitting one-way-fields/Blockers. Turning wouldn't work unfortunately (for many reasons), but stopping seems appropriate.

Ah, you mean that the terrain created by the Ladder can't be affected by Blockers and one-way fields? Makes sense, just like a Spearer's or Grenader's projectile can't be affected by them. One-way fields (which Blockers have on their hands) only affect lemmings themselves, at the end of the day.

However, what happens when you assign a Blocker in front of a Ladderer to turn the lemming himself around mid-performance?
Here I'd expect the same behaviour as when turning a Laserer with a Blocker mid-shooting (I just saw a NeoLemmix level on which this is required :D ). Meaning, the Ladderer would create the lower part of the ladder in the opposite direction - similar to what happens when you clone a Ladderer.



Also, I just want to say I like the skill panel icon!
:thumbsup: It's just a little strange to me that the downward staircase in the icon looks like a Builder staircase, i.e., more "step-like", and at a flatter angle. I assume this might just be a preliminary version of the icon, and the final version will have the actual angle the skill uses? ;) If not, I don't have a problem with it either - it might just be a little more confusing for new players.
Title: Re: [SUG] New skill - Downwards-Builder / "Ladderer" [POLL]
Post by: WillLem on August 02, 2023, 10:42:25 PM
I've noticed something similar with the Laserer, who will not cut through a Builder staircase if assigned on the last pixel before stepping through the staircase. The reason for that is that he actually holds the cannon above the staircase, so it makes sense he can't shoot through it. A similar behaviour can be exploited in NeoLemmix by having a Shimmier jump through a low-hanging Platformer bridge (the Reacher state takes him above the bridge, so that he then lands on top of it).

So I don't think this is a problem either. In fact, it can be useful to connect Builder staircases and ladders in a zig-zag pattern. :thumbsup:

Yes, agreed. I don't think there's any need to prohibit this behaviour. It's something that can always be looked at further down the line if people think it shouldn't happen. Meanwhile, I quite like that it adds another element of versatility.

However, what happens when you assign a Blocker in front of a Ladderer to turn the lemming himself around mid-performance? Here I'd expect the same behaviour as when turning a Laserer with a Blocker mid-shooting ... Meaning, the Ladderer would create the lower part of the ladder in the opposite direction - similar to what happens when you clone a Ladderer.

Just tested this, and it is indeed what happens; the skill action continues on the opposite side.

It was actually remarkably difficult and fiddly to set this up though, given the relatively small area from which the Ladderer can begin Laddering, and the brevity of the action.


Also, I just want to say I like the skill panel icon![/b] :thumbsup: It's just a little strange to me that the downward staircase in the icon looks like a Builder staircase, i.e., more "step-like", and at a flatter angle. I assume this might just be a preliminary version of the icon, and the final version will have the actual angle the skill uses?

Actually, that is pretty much the final version. And, it's the same angle as the actual skill, but the bricks are only 2px wide (instead of 3px) in the skill panel version due to the size of the button. I suppose I could make them 3px wide and see if that looks any better.
Title: Re: [SUG] New skill - Downwards-Builder / "Ladderer" [POLL]
Post by: Strato Incendus on August 03, 2023, 06:28:55 PM
You’re right, I just looked at the video thumbnail again, which was already sufficient to see that the angle of the Ladderer on the skill panel is indeed correct. :D Sorry, I must have gotten the wrong impression while watching the video for the first time. ;)
Title: Re: [SUG] New skill - Downwards-Builder / "Ladderer" [POLL]
Post by: WillLem on August 22, 2023, 09:42:11 PM
Here's another demo video (https://youtu.be/azGtTj6bzoU) of the Ladderer as it is currently - it also shows a little of the Ballooner in action as well.



In case anyone's interested, here's how the new version of the ladder is coded. Much simpler than the previous version!

Code: [Select]
procedure TLemmingGame.LayLadder(L: TLemming);
var
  i: Integer;
  PosX, PosY: Integer;
  FrameOffset: Integer;
const
  LadderBrick: array[0..8, 0..1] of Integer = (
       (0, 0), (1, 0), (2, 0),
               (1, 1), (2, 1), (3, 1),
                       (2, 2), (3, 2),(4, 2)
               );
begin
  PosX := L.LemX + L.LemDX;
  PosY := L.LemY;

  for i := 0 to Length(LadderBrick) - 1 do
  begin
    if L.LemPhysicsFrame in [10, 12, 14, 16, 18, 20, 22, 24] then
    begin
        case L.LemPhysicsFrame of
          10: FrameOffset := 0;
          12: FrameOffset := 3;
          14: FrameOffset := 6;
          16: FrameOffset := 9;
          18: FrameOffset := 12;
          20: FrameOffset := 15;
          22: FrameOffset := 18;
          24: FrameOffset := 21;
          else Exit;
        end;

      if L.LemDX > 0 then
        AddConstructivePixel((PosX + FrameOffset) + LadderBrick[i, 0],
                             (PosY + FrameOffset) + LadderBrick[i, 1], BrickPixelColors[FrameOffset div 2])
      else
        AddConstructivePixel((PosX - FrameOffset) - LadderBrick[i, 0],
                             (PosY + FrameOffset) + LadderBrick[i, 1], BrickPixelColors[FrameOffset div 2]);
    end;
  end;
end;
Title: Re: [SUG] New skill - Downwards-Builder / "Ladderer" [POLL]
Post by: WillLem on August 25, 2023, 09:02:20 PM
I'm pleased to announce that the Ladderer is now confirmed for inclusion in SuperLemmix 2.6 - we're still ironing out a few kinks in pre-release testing, but it's pretty much good to go! :)

(https://i.imgur.com/x4E1aDG.png)