Lemmings Forums

NeoLemmix => NeoLemmix Main => Archived Bugs & Suggestions => Topic started by: Simon on January 17, 2016, 12:27:07 AM

Title: [SUGGESTION] [PLAYER] [ADDED] Mass-assigning floaters to dense bunch
Post by: Simon on January 17, 2016, 12:27:07 AM
Status: Changes have been made to prioritization algorithm, see this post (http://www.lemmingsforums.net/index.php?topic=2389.msg55073#msg55073). Topic remains open so how to improve it further (if nessecary) can be discussed.
Title: Re: [player] Mass-assigning floaters to dense bunch
Post by: Simon on January 17, 2016, 12:29:14 AM
Have 10 lems densely packed. We want to assign floaters to all of them. Select floater. a) Hover with the mouse over the bunch, and click 10 times. Alternatively, b) hold select-only-walkers, and click 10 times on the bunch.

Expected: 10 floater assignments to 10 different lems.

Observed instead: 1 assignment, both in a) and b). The game seems to prioritize the existing floater for further assignments.

-- Simon
Title: Re: [player] Mass-assigning floaters to dense bunch
Post by: namida on January 17, 2016, 01:06:16 AM
The status of already being a floater has no impact either way on the priority. The highest-priority lemming remains the highest-priority lemming, both before and after being assigned the floater skill. Priority is not dependant on what skill you're trying to assign. Whether it should be or not is another matter...
Title: Re: [SUGGESTION] [PLAYER] [SEEKING INPUT] Mass-assigning floaters to dense bunch
Post by: mobius on January 17, 2016, 01:33:09 AM
I've mentioned this problem in the past [not here or for this, it was a long time ago]. Assigning floaters to falling lemmings can be really annoying. RTW makes a good example of this while using Lemmini:
(go to last level in video) https://www.youtube.com/watch?v=nk7igS5sB_I&list=PL_pnO1EM18vtukwX6tCO7GzmQk20tBCOD&index=20
obviously due to different reasons it's not quite as bad on NeoLemmix but the same problem is still here.

I think the best solution to this problem is to simply have the selection priority invert button work with not only walkers; but also fallers and any lemming doing anything other than a skill [building, bashing, climbing etc.]

Swimming and other non-permanant skills may present a problem here idk....
Title: Re: [SUGGESTION] [PLAYER] [SEEKING INPUT] Mass-assigning floaters to dense bunch
Post by: namida on January 17, 2016, 01:37:44 AM
This is essentially what the problem comes down to - there isn't one single answer as to how it should be handled; everyone has their own opinions, and it may even depend on the situation. However, a rule of "ignore lemmings the skill cannot be assigned to" may work as a fairly logical starting point.
Title: Re: [SUGGESTION] [PLAYER] [SEEKING INPUT] Mass-assigning floaters to dense bunch
Post by: mobius on January 17, 2016, 01:43:56 AM
actually I was just going to say that--since I've only seen this problem come up with floaters [though I feel like there is a similar or related issue but can't think of it right now.] you may even be able to get away with making a special exception in the case of floaters.
Title: Re: [SUGGESTION] [PLAYER] [SEEKING INPUT] Mass-assigning floaters to dense bunch
Post by: Simon on January 17, 2016, 01:44:15 AM
möbius: Thanks for pitching in with demand for this. ;-)

QuoteI think the best solution to this problem is to simply have the selection priority invert button work with not only walkers

Your idea works for mass-assigning floaters to fallers.

But a dense bunch of walkers couldn't be mass-assigned like that, because they don't stop walking after the assignment. Mass-assigning climbers to walkers is maybe more common, and would exhibit the same interaction with select-only-X.

With the current priority code, select-only-walkers or priority-invert alone can't solve the underlying problem.

I'm biased from having implemented my own solution, priorityForNewAc() (https://github.com/SimonN/LixD/blob/master/src/lix/lixxie.d). The code may be ugly, but the resulting behavior feels good.

Quote from: namidaHowever, a rule of "ignore lemmings the skill cannot be assigned to" may work as a fairly logical starting point.

Yeah.

-- Simon
Title: Re: [SUGGESTION] [PLAYER] [SEEKING INPUT] Mass-assigning floaters to dense bunch
Post by: namida on January 25, 2016, 10:19:36 AM
I've implemented some changes to this; probably not to the full extent that could be done, but it will have to do for now (as the priority detection code needs major overhauling at some stage anyway, so I don't want to do too much quick-fixing in it).

Basically - I've made it so that if a lemming is in a state from which it cannot perform a skill, it will be de-prioritized (but not entirely unselectable) if that skill is selected. For example, if you have the Glider skill selected, Floaters and Gliders will be deprioritized; if you have the Builder skill selected, builders, blockers, ohnoers, etc will be deprioritized.

This also extends to a few cases that aren't strictly speaking a matter of can't be assigned, but not very logical to do so - for example, you technically can assign the Swimmer or Disarmer skill to a ghost, but there's not much use in doing so, so they'll be deprioritized.

One side effect is that this priority change based on selected skill applies even to things where the selected skill is irrelevant, such as highlighting a lemming. For now, I'm not worried about this; if people report that it's problematic, I'll do something about it.

I've uploaded a new experimental version that contains this modified prioritization behaviour.

I'll leave this topic open for further discussion on this matter.
Title: Re: [SUGGESTION] [PLAYER] [ADDED] Mass-assigning floaters to dense bunch
Post by: IchoTolot on January 25, 2016, 11:51:05 AM
Quote from: namida on January 25, 2016, 10:19:36 AM
I've implemented some changes to this; probably not to the full extent that could be done, but it will have to do for now (as the priority detection code needs major overhauling at some stage anyway, so I don't want to do too much quick-fixing in it).

Basically - I've made it so that if a lemming is in a state from which it cannot perform a skill, it will be de-prioritized (but not entirely unselectable) if that skill is selected. For example, if you have the Glider skill selected, Floaters and Gliders will be deprioritized; if you have the Builder skill selected, builders, blockers, ohnoers, etc will be deprioritized.

This also extends to a few cases that aren't strictly speaking a matter of can't be assigned, but not very logical to do so - for example, you technically can assign the Swimmer or Disarmer skill to a ghost, but there's not much use in doing so, so they'll be deprioritized.

One side effect is that this priority change based on selected skill applies even to things where the selected skill is irrelevant, such as highlighting a lemming. For now, I'm not worried about this; if people report that it's problematic, I'll do something about it.

I've uploaded a new experimental version that contains this modified prioritization behaviour.

I'll leave this topic open for further discussion on this matter.

This sounds excellent! :thumbsup:    Catching lemming bunches with floaters will finally be easy :)
Title: Re: [SUGGESTION] [PLAYER] [ADDED] Mass-assigning floaters to dense bunch
Post by: Nepster on January 25, 2016, 07:05:20 PM
Very good change!

QuoteThis also extends to a few cases that aren't strictly speaking a matter of can't be assigned, but not very logical to do so - for example, you technically can assign the Swimmer or Disarmer skill to a ghost, but there's not much use in doing so, so they'll be deprioritized.
Do I understand it correctly, that assigning the completely useless Swimmer and Disarmer skill to ghosts is still possible in V1.39?
Title: Re: [SUGGESTION] [PLAYER] [ADDED] Mass-assigning floaters to dense bunch
Post by: namida on January 25, 2016, 07:08:51 PM
Quote from: Nepster on January 25, 2016, 07:05:20 PM
Very good change!

QuoteThis also extends to a few cases that aren't strictly speaking a matter of can't be assigned, but not very logical to do so - for example, you technically can assign the Swimmer or Disarmer skill to a ghost, but there's not much use in doing so, so they'll be deprioritized.
Do I understand it correctly, that assigning the completely useless Swimmer and Disarmer skill to ghosts is still possible in V1.39?

Yes, this remains possible. There's nothing that makes the ghost unable to receive the skill per se (compared to say, trying to assign a builder to a blocker); I figure it doesn't make sense to prevent an assignment altogether just because it isn't useful. However, I did indeed feel that deprioritizing the ghost in such a case was well and truly justified.
Title: Re: [SUGGESTION] [PLAYER] [ADDED] Mass-assigning floaters to dense bunch
Post by: Nepster on January 25, 2016, 08:01:42 PM
Sorry, but you already have instances, where a priori a lemming should be able to receive a skill, but it isn't allowed, because it is useless:
- A builder isn't a priori unable to receive skills, but making him a builder would simply not result in any change and the builder would be wasted. So one cannot assign builders to blockers, because it would be useless!
- Gliders cannot be assigned to lemmings already having the floating skill, because again this would be a waste of skills.
- Drowners can be assigned skills as seen by the Swimmer skill. However making him a Climber does not work. Even worse: The Stoner, which would be useful, doesn't work as well.
- In the gimmick "clone on assignment", diggers are not cloned. However one can assign cloners to regular diggers.
These examples should stay as they are - I mention them only to show you that you already disallow wasting skills. So the general rule is: One can only assign skills that the lemming is able to use.
If I use the climber skill on a lemming, I expect him to climb. If I assign it to a ghost, I would expect the ghost to climb as well. And in the same way I would expect the ghost to swim/disarm if I gave it the swimmer/disarmer skill.
Title: Re: [SUGGESTION] [PLAYER] [ADDED] Mass-assigning floaters to dense bunch
Post by: ccexplore on January 25, 2016, 11:00:40 PM
The simplest case that even exists in the original L1 game mechanics, is that it never lets you assign a skill to a given lemming if that lemming is already performing/having the skill (the latter for permanent skills like climbers and floaters).  This is even if you consider carefully that removing this check for builders, bashers, miners and diggers wouldn't necessarily have resulted in a wasted assignment (though likely so in most cases).  L1 even blocks you from doing basher/miner/digger skill assignments that it knows will conflict with steel or OWW (even though it can perhaps be argued that this is not as useful, and in fact they did remove this check by L2).  So I think overall, Nepster's principle is probably a good one to consider.

L1 is probably not the best to model after anyway.  It has fewer skills, and has known issues like having no prioritization schemes at all for climbers and floaters (thus leading to problems like the one noted in this topic).  L2 might be better, but I'm not sure if anyone knows all the exact details of its assignment logic.  Lix's is probably a good one to model after as more deliberate thought has been put into prioritization logic (and in fact fixes have been made in that area previously to address problems that had occurred in actual gameplay).
Title: Re: [SUGGESTION] [PLAYER] [ADDED] Mass-assigning floaters to dense bunch
Post by: namida on January 26, 2016, 08:02:03 AM
Discussion of whether that should be changed should probably be put in its own topic.
Title: Re: [SUGGESTION] [PLAYER] [ADDED] Mass-assigning floaters to dense bunch
Post by: Simon on January 26, 2016, 01:35:50 PM
The L2 assignment is blocking like old NL assignment: If there are a walker and a stunner under the cursor, and the game prefers the stunner, clicks do nothing. This is the prime cause of Ceci n'est pas une pipe's difficulty: Assign the bomber fast enough.

Lix doesn't feature highlighting, and I take some pride in how the assignment is good enough to render highlighting unnecessary. Theoretical problems with highlighting: You have to pick the lem ahead of time, before it becomes impossible to select it. This is only possible if there is a time when you can select the lemming. And highlighting is stateful.

In practice, there may well be people who don't like priority-invert, and would take highlight over it any day. And there will usually be time, especially with framestepping, when you can highlight the correct lem.

My judgment is that mass-assigning permanents is a must -- and it's awesome that it's in now --, following Nepster's rule is warmly encouraged,  and adding finer-grained priority and priority-invert are merely pretty nice.

-- Simon
Title: Re: [SUGGESTION] [PLAYER] [ADDED] Mass-assigning floaters to dense bunch
Post by: namida on January 26, 2016, 01:59:48 PM
QuoteThe L2 assignment is blocking like old NL assignment: If there are a walker and a stunner under the cursor, and the game prefers the stunner, clicks do nothing.

With the new priority code though, cases like this should rarely (if ever) happen, unless none of the lemmings under the cursor can be assigned the skill in question.

The only case I can think of is when something other than the lemming's current action blocks it (for example, if there are two lemmings under the cursor who are both walkers, one standing on steel, one not, and you try to assign a digger).
Title: Re: [SUGGESTION] [PLAYER] [ADDED] Mass-assigning floaters to dense bunch
Post by: Clam on January 27, 2016, 06:17:40 AM
I saw this thread title and immediately had a rather different idea. Stop me if this is too radical:

Hold Shift* and click to assign to all eligible lemmings under the cursor.

*I'm aware Shift is already used for something else. Ignore this for now, ok?

We've just saved ourselves 9 clicks!

Worth considering? Or am I just really lazy? :8():
Title: Re: [SUGGESTION] [PLAYER] [ADDED] Mass-assigning floaters to dense bunch
Post by: ccexplore on January 27, 2016, 10:34:32 PM
Quote from: Clam on January 27, 2016, 06:17:40 AMHold Shift* and click to assign to all eligible lemmings under the cursor.

If the game already allows for multiple assignments in same frame, this is a reasonable suggestion, though I wonder how often you'd need to do this sort of bulk-assignments to worth implementing this feature.  May it possibly be better to discourage level designs that necessitates such bulk-assignments in the first place? :-\
Title: Re: [SUGGESTION] [PLAYER] [ADDED] Mass-assigning floaters to dense bunch
Post by: Proxima on January 27, 2016, 10:49:03 PM
There's already one of Rubix's Lix levels where, while not required for passing the level, saving the maximum possible requires assigning 95 climbers faster than can be done by any means other than text-editing the replay.
Title: Re: [SUGGESTION] [PLAYER] [ADDED] Mass-assigning floaters to dense bunch
Post by: namida on January 28, 2016, 02:07:06 AM
Quote from: Proxima on January 27, 2016, 10:49:03 PM
There's already one of Rubix's Lix levels where, while not required for passing the level, saving the maximum possible requires assigning 95 climbers faster than can be done by any means other than text-editing the replay.

Doesn't Lix allow you to pause the game, then repeatedly assign skills without advancing the frame? (Whereas NeoLemmix intentionally does not, due to the one-assignment-per-frame limitation.)

Anyway, I feel that both the "mass assign" and the question of when assignments should be outright prevented are different enough from the priority issue in this thread that they should be in their own topics. Since it seems that this issue in and of itself seems to be sorted, I'll now close this topic.