[DISC] Timebombers

Started by WillLem, February 04, 2023, 07:03:54 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

OK. Once and for all. Do we want Timebombers? (i.e. Bombers with a 5 second timer before explosion)

Yes!
4 (44.4%)
It depends how they're implemented (please reply if you choose this option)
0 (0%)
Don't mind either way
0 (0%)
No!
5 (55.6%)

Total Members Voted: 9

WillLem

Merged from 3 topics:

[DISC][FORK] SuperLemmix
[DISC][FORK] Adding Timed Bombers Back To NeoLemmix (Optionally)
[SuperLemmix] Timed Bombers




Note: Wherever the "oh no!" phase is mentioned in this post, it can be assumed that I'm also taking into account bombers exploding immediately in midair if the lem is a faller.




So, NeoLemmix is approaching its final version.

It's been a wish of mine since I first played NeoLemmix that the engine have a full-on "Classic" mode, which automatically disables all player assists (direction select, skill shadows, framestepping, splat ruler, CPM, etc) and leaves behind only the basic essentials, which I'd list as:

:lemming: Pause (no assignments)
:lemming: Fast-forward
:lemming: Skill panel hotkeys (up, down and numbered)
:lemming: Release rate hotkeys (only for up & down, no min/max jump)

And that's it! And, of course, timed bombers would be enabled in this mode as well. At present, it's theoretically possible to achieve all of the above except the timed bombers, since they don't exist in the current version of NeoLemmix.

I therefore propose a new fork of NeoLemmix (which I'd likely call SuperLemmix ;P) which allows both, optionally of course!

Unfortunately, adding timed bombers back to NeoLemmix is not as straightforward as copying and pasting the old code back in, as untimed bombers bring about a number of complications which would have to be addressed if both are to exist in the same engine. The current implementation of optional timed bombers in SuperLemminiToo has made some of these complications very apparent. Namely:

1) The actual assignment of the bomber would have to occur at the beginning of the "oh no!" phase, regardless of which option is applied. This is to prevent broken replays (i.e. the same replay should work regardless of bomber option). So, it would go like this:

With timed bombers enabled, clicking the lemming starts the 5 second timer, at the end of which the "oh no!" phase begins and the bomber assignment is written into the replay. In the case of untimed bombers, clicking the lemming starts the "oh no!" phase and writes the bomber assignment immediately, as per current behaviour.

2) For the first 5 seconds of each level, it must be possible for explosions to happen regardless of which option is applied, otherwise any level requiring an untimed bomber assignment within the first 5 seconds would be rendered impossible by having timed bombers enabled. I can think of only one way around this:

With timed bombers enabled, bombers assigned during the first 5 seconds of the level become "hot bombers," a new state which would have to be created for the purposes of the fork. The timer begins its countdown, but the lemming glows red. If clicked again, it skips the remaining timer countdown and goes straight to the "oh no!" phase. After the first 5 seconds of the level have passed, the lemming ceases to be a hot bomber and reverts back to a normal lemming, even if mid-timer.

This, as far as I can tell, allows the lemming to be both a timed and an untimed bomber simultaneously for just the first 5 seconds of a level. It only matters for the first 5 seconds, because after that timed bombers begin the "oh no!" phase anyway, as per untimed bombers.

There is only one problem with this.

If a level requires an immediate explosion on the first frame, even "hot bombers" can't account for this, since they require 2 clicks in order to explode, which costs 2 frames of game time. A level could be designed such that a single pixel would matter, and if the faller has advanced by even a single additional frame, we have a bug.

A possible fix for this would be to have the first frame of every level be a frozen "-1" frame iff timed bombers are enabled. This would allow the player to assign the bomber on frame -1, causing the lem to enter the "hot bomber" state, and then explode the bomber on frame 0. For frame -1, it must be impossible to assign any other skills, and the timer must not yet have started. In real time, of course, this would happen so fast that it would be almost imperceptible. But, for any level requiring that amount of precision during its opening frame, the code would be there to account for it.

As far as I can tell, the above proposal fixes the "first 5 seconds" problem. There may be something else that I've overlooked though, of course.

It also goes without saying that in the case of untimed bombers, current behaviour applies, but I thought I'd say it anyway 8-)




So, that's my idea. If I ever get around to learning programming properly, I'll definitely want to do this. If any existing Delphi programmers see this post and like the idea, please get in touch with me and allow me to be involved in the process of creating the proposed new fork! I'll want to give the UI a bit of a tweak as well, to differentiate it visually from NeoLemmix as it currently is.

Of course, at this point, this is all pie in the sky and might never happen. But, discussion is what Forums are for, so... :lemcat:

Silken Healer

How would bombers, which are not in the first 5 seconds, function when watching the replay? Would the replay make them timed or not depending on which mode was on (i.e. if timed bombers are enabled, count back 5 seconds from the bomber assignment in the replay and start the countdown then, otherwise they function as they do know)? And how would bombers which are in the first 5 seconds function in the replay? The replay wouldn't know when the lemming begins to glow red and when the lemming actually explodes. For all the replay knows, the first click on the lemming which makes it glow red and the second click that actually makes it explode could be anywhere from a frame to a maximum of five seconds away.

One solution to problem number 2, and the new problem I discovered, would be to scrap the hot bombers and to simply have to hold down a hotkey to explode a bomber immediately in the first 5 seconds. The one downside to this players might not be aware of this function but they'd have to specifically go out of there way to download this fork, which currently the entire point of is adding back timed bombers, so they'd probably be aware of everything it changes.

Another problem I thought up is when would the number of the bomber's skill panel reduce by 1? You'd expect it to reduce by 1 when the bomber is clicked on, not when the bomber explodes, but this would create a discrepancy between timed and non-timed bomber mode. I can't actually think up a hypothetical scenario where this would be a problem at the moment but I get the feeling it's the sort of thing that could cause problems.

Also, have you read Namida's discussion on why he wouldn't add timed bombers in NeoLemmix he had on reddit? It offers some useful insight, but the two most prominent points are cloners and skill shadows. I'd assume you wouldn't want timed bombers to work with cloners (if you assign a timed bomber to a lemming and then clone that lemming, the clone will explode and the countdown will begin at the same point at which you cloned them) as that would open up a whole other can of worms. And as for skill shadows, in Namida's post he phrased it more as a reason for rejecting them to be added ("We may as well not add them, as skill shadows would make them pointless anyway") rather then as actual problem so you could just make the skill shadow be where the bomber will explode in 5 seconds. Or if your goal is to have NeoLemmix emulate the classic games, maybe these should be removed altogether?




An admittedly awkward solution I thought up to solve all problems would be to scrap enabling timed/untimed bomber mode in the settings and to just have the function where a bomber explodes immediately if a hotkey is held down enabled all the time, not just in the first 5 seconds, and to store bombers and non-timed bombers separately in the replay. That way all other hypothetical awkward impossible scenarios are avoided too. (If you wanted to have untimed bombers be the default and got irritated having to hold down the hotkey you could maybe one day add a setting for this to be the other way round but most people who download this fork would be doing it because they like timed bombers).

However, new problems arise with this solution 1. A player might mistake a difficult situation for an impossible one and use an unnecessary untimed bomber, which would make them sad as if they decided to use this fork they'd probably want to use timed bombers all the time unless it's absolutely impossible. And more prominent 2. It's kind of awkward, avoids the real problem and is just putting a Band-Aid on a bullet wound. It's like saying "I can't think of a solution for this problem, so you can just temporarily switch back to the way that already works, and then switch back again" and as such it might go against the spirit of this fork as the whole point of this is because you wish to play Lemmings in a more classic way.

WillLem

#2
Quote from: Silken Healer on February 05, 2023, 02:15:50 AM
How would bombers, which are not in the first 5 seconds, function when watching the replay?

Depending on which mode was enabled, you'd either see a countdown (or not), and then the "oh no!" > explode phase as usual.

Quote from: Silken Healer on February 05, 2023, 02:15:50 AM
(i.e. if timed bombers are enabled, count back 5 seconds from the bomber assignment in the replay and start the countdown then...)?

The bomber assignment would always be written into the replay in exactly the same place, regardless of which type of bomber is active. So, the replay would start the timer 5 seconds before the assignment if timed bombers were enabled.

Quote from: Silken Healer on February 05, 2023, 02:15:50 AM
And how would bombers which are in the first 5 seconds function in the replay? The replay wouldn't know when the lemming begins to glow red and when the lemming actually explodes. For all the replay knows, the first click on the lemming which makes it glow red and the second click that actually makes it explode could be anywhere from a frame to a maximum of five seconds away.

The second click would be the actual bomber assignment. So, essentially, click 1 starts the timer, then click 2 assigns the bomber. This is actually how the timed bomber mode would function, essentially:

Click 1 = start timer
If Click 2, check for "hot bomber" state, if yes = assign bomber (if no = await 5 second timer, then = assign bomber)
If no Click 2, await 5 second timer, then = assign bomber

So, the bomber assignment would only ever happen at the beginning of the "oh no!" state, as with untimed bombers. The timed bomber mode would really be nothing more than an aesthetic which delays the bomber assignment by 5 seconds.

And, to reiterate how this interacts with replays, the replay would always read the bomber assignment as being the beginning of the "oh no!" state. If timed bombers are enabled, a 5 second countdown would arbitratily begin exactly 5 seconds (or however many frames) before this assignment.

Quote from: Silken Healer on February 05, 2023, 02:15:50 AM
One solution to problem number 2, and the new problem I discovered, would be to scrap the hot bombers and to simply have to hold down a hotkey to explode a bomber immediately in the first 5 seconds.

Hmm, I see where you're coming from with this idea, but ideally the player should only have to do 1 thing to activate a bomber, i.e. click the mouse. Hot bombers simply require an extra click of the mouse. A hotkey requires two actions (hold key, click mouse) as well as prior knowledge that the hotkey exists, as you quite rightly pointed out as the fatal flaw in this idea.

Quote from: Silken Healer on February 05, 2023, 02:15:50 AM
Another problem I thought up is when would the number of the bomber's skill panel reduce by 1? You'd expect it to reduce by 1 when the bomber is clicked on, not when the bomber explodes, but this would create a discrepancy between timed and non-timed bomber mode.

Yes, good shout. I guess that in this case, the panel would have to look for whether or not timed bombers were enabled. If enabled, the skill counts down at the point that the timer is started rather that when the bomber is actually assigned. Since both the timer countdown and the skill panel number decreasing are (necessary but) arbitrary player assists rather than actual game interactions, I can't see this being a problem as long as the code was there to account for it.

And, of course, in the case of replays, the scenario described above would equate "start timer" with "reduce skill panel number by 1"

Quote from: Silken Healer on February 05, 2023, 02:15:50 AM
I'd assume you wouldn't want timed bombers to work with cloners (if you assign a timed bomber to a lemming and then clone that lemming, the clone will explode and the countdown will begin at the same point at which you cloned them)

Yeah, this is something I didn't think of. Although, I can't see why the clone would behave differently to the original lemming. If the countdown is at, say, 3, then the clone would also start the countdown at 3. All that's actually happened here, if you think about it, is that a walker has been cloned. The bomber hasn't actually been assigned yet (since the bomber gets assigned at the beginning of the "oh no!" state, not at the beginning of the arbitrary timer countdown).

The code would have to say something like:

If cloner assigned, is the lemming a "countdowner" (perhaps "countdowner" would have to be a new state that the code could check for, in order to know to assign the lemming a bomber at the end of the "countdowner" state)? If yes, assign both the original lemming and the clone a bomber at the end of the countdown phase, but only reduce the skill count by a single bomber.

It's potentially complex code, but it solves the problem.

Quote from: Silken Healer on February 05, 2023, 02:15:50 AM
as that would open up a whole other can of worms.

I disagree. The game is Lemmings, not Worms.

But seriously though, code is a can of worms. It's up to the developer to solve the necessary problems to get the program to where they want it to be, not give up at the first hurdle. I'm sure we can agree on that.

Quote from: Silken Healer on February 05, 2023, 02:15:50 AM
And as for skill shadows, in Namida's post he phrased it more as a reason for rejecting them to be added ("We may as well not add them, as skill shadows would make them pointless anyway") rather then as actual problem so you could just make the skill shadow be where the bomber will explode in 5 seconds. Or if your goal is to have NeoLemmix emulate the classic games, maybe these should be removed altogether?

In "Classic Mode", skill shadows would be disabled anyway. Otherwise, yes, I can absolutely see why skill shadows renders timed bombers pointless.

However, I don't see it as a reason not to have them, more a reason why the player shouldn't use skill shadows if they have timed bombers enabled. Since NeoLemmix allows skill shadows to be disabled, the problem is already solved.

Another perhaps more convoluted way to solve it would be to always have skill shadows disabled for just timed bombers but not any other skill (or untimed bombers), buuut I'm not entirely sure about that tbh.

Quote from: Silken Healer on February 05, 2023, 02:15:50 AM
An admittedly awkward solution I thought up to solve all problems would be to scrap enabling timed/untimed bomber mode in the settings and to just have the function where a bomber explodes immediately if a hotkey is held down enabled all the time, not just in the first 5 seconds

Again, your idea requires the player to make 2 separate inputs, which besides being more labour intensive than simply clicking the mouse would also not be in keeping with the whole point of adding timed bombers back to the game, which is to make it feel more like original lemmings.

I'm not totally against the idea per se, I'd rather have timed bombers which require awkward imputs than not have them at all, but I just think "hot bombers" is a more visually-guided and intuitive idea simply requiring an extra click of the mouse.

Quote from: Silken Healer on February 05, 2023, 02:15:50 AM
store bombers and non-timed bombers separately in the replay

A good idea, but once which potentially breaks replays again, since the replays would once again be mode-dependent. I guess the engine would have to know to ignore timed assignments if the mode is untimed, and vice versa. That could fix things, for sure.

Quote from: Silken Healer on February 05, 2023, 02:15:50 AM
However, new problems arise with this solution 1. A player might mistake a difficult situation for an impossible one and use an unnecessary untimed bomber

Yeah, this is just an unfortunate consequence of having access to both types of bomber. Still, it's not a reason not to have the option in my opinion. SuperLemminiToo currently offers both, and I do in fact switch between the two quite regularly. Often, if I'm playing someone else's level, I'll solve it first with untimed bombers to make the solution easier to find, then I'll go back and try to execute the same solution with timed bombers just for the satisfaction of playing the level in that mode. I'm guessing that others who value the classic Lemmings gameplay would approach it a similar way.

namida

It's not just in fhe first 5 seconds of playing; it's the first 5 seconds of any lemming's existance / assignability. Including clones and (in the future) converted neutrals.

Then also consider that you'd have to apply it to Stoners too. When NL had timed bombers, Stoners were also timed.

You also wouldn't be able to reuse most of the nuke code for it, due to the very different mechanism of handling the countdown. You could reuse the code to display the digit above the lemming, but that's about it.
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)

WillLem

#4
Quote from: namida on February 05, 2023, 11:13:08 PM
It's not just in fhe first 5 seconds of playing; it's the first 5 seconds of any lemming's existance / assignability. Including clones and (in the future) converted neutrals.

The proposed "hot bombers" idea would work for neutrals in this way: I imagine that the game could add an additional frozen frame at the point of a neutral becoming a normal lemming in order to account for the double-click required to start the timer and then activate the bomber on the next frame. Such an additional frame would be virtually undetectable in real-time, and as with the proposed "-1" frame at the start of the level, only bombers would be assignable during the frozen frame.

Of course, it could be that other skills are assignable during that frame as well, but they perhaps wouldn't take in-game effect until the next frame. It would essentially be 2 frames for the price of 1, if you like. I'm not sure how problematic that could be, but I imagine not very as long as the additional frame doesn't count as being in real game time, and only exists to account for the need to essentially assign an untimed bomber to a timed bomber lemming.

Cloners I've dealt with in my reply to Silken, but I'll further clarify again here how I think the problem could be solved:

1) Timed Bombers are enabled
2) Faller/Walker lemming is "assigned" a bomber (the air quotes are because I imagine that the bomber assignment would not actually take place until the start of the "oh no!" phase), and so the 5 second countdown is triggered
3) At the point of countdown assignment, 1 bomber skill is removed from the skill panel but its actual assignment is delayed by 5 seconds
3) The countdown reaches 3 and the lemming is cloned
4) Both the original and the cloned lemming continue their countdown from 3
5) The engine recognises that both the original and the cloned lemming are in the "countdown" phase (this could be a new state recognised as "countdowner", or something similar)
6) At the end of the countdown phase, and the beginning of the "oh no!" phase, a bomber is assigned to both lemmings
7) Since the bomber skill has already been removed from the skill count, no further bombers are removed

Points 3 and 7 might need tightening up somewhat, but the basic premise is there and would work just fine.

The only issue that I can see is that lemmings currently cannot be cloned during the "oh no!" phase, and so it's currently impossible to clone an untimed bomber. I guess one way around this would be that SuperLemmix would have to have differing behaviour from NeoLemmix, namely that if an original/cloned lemming is assigned an untimed bomber, its counterpart lemming also receives that assignment on the same frame (but only 1 bomber skill is removed from the count).

This potentially brings about new puzzle possibilities, and so could be seen as desirable behaviour. It would, however, potentially break existing content. However still, it would further justify the existence of SuperLemmix as an independent engine.

Another possibility still is that cloned lemmings are not assigned bombers. This might even be easier to code, although it might seem very unintuitive to the player.

Yet another possibility is that, if a timed bomber is cloned, the game freezes and the player must select which of the cloned lemmings they wish to be the bomber. This would preserve existing behaviour, but would be very nasty for the UI.

Quote from: namida on February 05, 2023, 11:13:08 PM
Then also consider that you'd have to apply it to Stoners too. When NL had timed bombers, Stoners were also timed.

Couldn't the same basic code be used for both, at least in terms of how the assignments work for the various states?

Quote from: namida on February 05, 2023, 11:13:08 PM
You also wouldn't be able to reuse most of the nuke code for it, due to the very different mechanism of handling the countdown. You could reuse the code to display the digit above the lemming, but that's about it.

What about the existing code for timed bombers (and indeed stoners) back from when these existed in NeoLemmix?

Silken Healer

Quote from: WillLem on February 05, 2023, 09:11:37 PM
bomber assignment would always be written into the replay in exactly the same place, regardless of which type of bomber is active. So, the replay would start the timer 5 seconds before the assignment if timed bombers were enabled.

Ah, that's what I was asking. That makes sense.

Quote from: WillLem on February 05, 2023, 09:11:37 PM
Hmm, I see where you're coming from with this idea, but ideally the player should only have to do 1 thing to activate a bomber, i.e. click the mouse. Hot bombers simply require an extra click of the mouse. A hotkey requires two actions (hold key, click mouse) as well as prior knowledge that the hotkey exists, as you quite rightly pointed out as the fatal flaw in this idea.

[LEFT CLICK] + [LEFT CLICK] is definitely 2 things. You could technically argue that a click while holding down a key is one input. Also I thought up an idea for the prior knowledge problem - the way this was fixed in NeoLemmix was to include an intro pack, so what if you included an intro level that explains the hotkey.

Quote from: WillLem on February 05, 2023, 09:11:37 PM
I can't see this being a problem as long as the code was there to account for it.

I couldn't think of any problems here off the top of my head either, but a player having a different amount of bombers at a certain point in the level if they did the exact same actions but just had timed/untimed bomber mode on sounds like the sort of thing that could potentially cause impossible situations

Quote from: WillLem on February 05, 2023, 09:11:37 PM
It's up to the developer to solve the necessary problems to get the program to where they want it to be, not give up at the first hurdle. I'm sure we can agree on that.

I was thinking more about discrepancies between timed and untimed bomber mode. You'd only be able to clone bombers in timed mode, giving timed players a major advantage. Like consider the following example level, it would only be possible on timed bomber mode, not untimed bomber mode.


Quote from: WillLem on February 05, 2023, 09:11:37 PM
Yeah, this is just an unfortunate consequence of having access to both types of bomber. Still, it's not a reason not to have the option in my opinion. SuperLemminiToo currently offers both, and I do in fact switch between the two quite regularly. Often, if I'm playing someone else's level, I'll solve it first with untimed bombers to make the solution easier to find, then I'll go back and try to execute the same solution with timed bombers just for the satisfaction of playing the level in that mode. I'm guessing that others who value the classic Lemmings gameplay would approach it a similar way.

Tbh I was just throwing this idea out there, I thought you wouldn't want to do this because of reason 2 more than reason 1. but if you think it's good you could do it if you want, it's your fork.

Quote from: namida on February 05, 2023, 11:13:08 PM
It's not just in the first 5 seconds of playing; it's the first 5 seconds of any lemming's existance / assignability. Including clones and (in the future) converted neutrals.

Completely overlooked this.

Quote from: WillLem on February 06, 2023, 12:44:37 AM
The proposed "hot bombers" idea would work for neutrals, and I'm imagining that the game could add an additional frozen frame at the point of a neutral becoming a normal lemming in order to account for this possibility. Such a frame would be virtually undetectable in real-time, and - as with the proposed "-1" frame at the start of the level, only bombers would be assignable during the frozen frame.

Of course, it could be that other skills are assignable during that frame as well, but they perhaps wouldn't take in-game effect until the next frame.

Cloners I've dealt with in my reply to Silken, but I'll further clarify again here how I think the problem could be solved:

I feel like my solution would be a lot simpler and a worthwhile trade-off for a small chance of someone not knowing what it does (considering they'd have to go out of there way to download this fork, and that you could add an example level) then adding a frozen bomber only frame every time a new lemming comes into existance.

WillLem

#6
Quote from: Silken Healer on February 06, 2023, 01:05:10 AM
[LEFT CLICK] + [LEFT CLICK] is definitely 2 things

Right, but it's the same thing twice as opposed to 2 different things, one of which requires memory of which hotkey you need. I'd much rather have the double click, personally. Having said that, though...

Quote from: Silken Healer on February 06, 2023, 01:05:10 AM
You could technically argue that a click while holding down a key is one input.

Yes, I suppose you could. In fairness, your idea would solve a lot of the problems that arise from having both types of bomber in the same engine, and it's not a bad idea at all.

Maybe the best way to implement it would be to have the hotkey switch from one mode to the other, and allow the player to choose which is the primary mode via the option. So, if a player chooses timed, they get the timer unless they use the hotkey to assign an untimed bomber, and vice versa. The more I think about it, the more this idea makes a lot of sense. It would make switching between the two on the fly obviously much more convenient as well.

"Classic Mode" could then enable timed bombers and disable the hotkey.

OK, I'll concede that this could be a better way to do it :thumbsup:

Quote from: Silken Healer on February 06, 2023, 01:05:10 AM
Also I thought up an idea for the prior knowledge problem - the way this was fixed in NeoLemmix was to include an intro pack, so what if you included an intro level that explains the hotkey.

Well, yes... but, I still haven't played all the way though the NL Intro pack yet and I've had NeoLemmix for ages. There's already a huge amount of new stuff to learn, and such a level could just get lost in the noise.

Having said that, I'm becoming more sold on the hotkey idea iff timed bombers were the primary mode by default, and players could still choose their preference via the F2 menu. That way, whichever mode players wanted, they'd be able to enjoy it even if they didn't know about the hotkey.

This fixes a lot of issues, but leaves the problem of players encountering a level which seems impossible because it requires a bomber assignment within the first 5 seconds (de-neutralised lemmings included). If they don't know about the hotkey, or perhaps even that untimed bombers are a thing in this fork, then it's not great.

An undesirable but ultimately foolproof way around this could be using a dialog box in the event of a player making a bomber assignment within those first 5 seconds: it could simply explain the situation, inform the player of the hotkey, and have a "don't display this message again" checkbox. I'd definitely prefer that to a level which may or may not be seen by the player.

Quote from: Silken Healer on February 06, 2023, 01:05:10 AM
having a different amount of bombers at a certain point in the level if they did the exact same actions but just had timed/untimed bomber mode on sounds like the sort of thing that could potentially cause impossible situations

I'm not sure I follow you on this one. Can you give an example of such a situation?

Quote from: Silken Healer on February 06, 2023, 01:05:10 AM
You'd only be able to clone bombers in timed mode, giving timed players a major advantage

I addressed this in my above reply to namida.

To summarise the 2 main ways around the issue that I can think of:

1)  SuperLemmix would have to have differing behaviour from NeoLemmix, namely that if an original/cloned lemming is assigned an untimed bomber, its counterpart lemming also receives that assignment on the same frame (but only 1 bomber skill is removed from the count). This potentially brings about new puzzle possibilities, but potentially makes some existing NeoLemmix content incompatible with SuperLemmix, and so probably isn't the most desirable solution.

2) If a timed bomber is cloned, the game freezes and the player must select which of the cloned lemmings they wish to continue to be the bomber. This would preserve existing behaviour, and solve the problem posed by idea (2), but it would be potentially nasty for the UI.

Quote from: Silken Healer on February 06, 2023, 01:05:10 AM
Tbh I was just throwing this idea out there, I thought you wouldn't want to do this because of reason 2 more than reason 1. but if you think it's good you could do it if you want, it's your fork.

My thoughts here are that the engine needs a way to work both options, if both options are available. SuperLemminiToo simply has the option available, and player be damned if someone decides to make a level that's impossible with timed bombers. Whilst I'm happy that the option is there, it clearly doesn't address the obvious issues.

Each of our ideas is good enough to address most of the issues, and whilst neither are completely foolproof, I'd rather have an engine with either idea implemented than not have the option at all.

Having the option exist means that players can choose their experience, which would essentially be the point of the feature existing. Have a look again at the reddit post you linked. You'll notice that, even with namida's comprehensive explanation as to why timed bombers are essentially pointless, redundant and frustrating, the OP is ultimately still interested in finding a modern alternative to NL which offers the original features.

Basically, there is still a market for the timed bomber option, and SuperLemmix (if it ever exists) would cater to that audience. Admittedly, the timed bombers would only really be relevant in "Classic Mode", in all honesty, since the skill shadows do render them pointless. Perhaps, then, enabling timed bombers could disable skill shadows for just bombers, but nothing else. After all, there isn't a skill shadow for the nuke feature ;P

Quote from: Silken Healer on February 06, 2023, 01:05:10 AM
I feel like my solution would be a lot simpler and a worthwhile trade-off for a small chance of someone not knowing what it does (considering they'd have to go out of there way to download this fork, and that you could add an example level) then adding a frozen bomber only frame every time a new lemming comes into existance.

You're probably right about this. I generally need to have something in front of me to know whether it's a good idea or not. I had some ideas for improving the SuperLemmini taskbar which ultimately didn't quite look right when I actually had the chance to implement them.

Your hotkey idea probably is the better of the two suggestions, the more I think about it. It could work to simply switch from one mode to the other when held, with the player designating their non-hotkey preference.

WillLem

#7
Quick TL;DR summary of where I'm at with this so far:

:lemming: After some consideration, I prefer Silken's idea of using a held hotkey to switch between bomber modes. However, its implementation must still allow the player to select their primary mode. This way, whichever the player prefers, holding the hotkey allows them to temporarily switch to the other mode. This could potentially be massively useful for speedrunning, actually.

:lemming: The most comprehensive solution to both the "first 5 seconds" problem is to display a dialog box informing the player of the existence of the alternate bomber mode, and the hotkey designated to it. The dialog could even have within it an option to switch the primary mode, and allow the user to designate their own hotkey. It would also, of course, have a "do not show this again" checkbox, and would only appear in the event of a player assigning a bomber to a lemming within the first 5 seconds of its existence.

:lemming: The best solution I can think of to the cloner problem illustrated by Silken above is to only allow either the original lemming or the clone to continue the bomber state after the clone assignment has taken place. This could, again, be achieved by freezing the game and informing the player that they must select either the original lemming or the clone as the bomber, via some sort of in-game dialog. This would only need to happen with timed bombers, as untimed bombers cannot be cloned anyway. This is a messy solution, but does the job well enough.

:lemming: Admittedly, the timed bombers would only really be relevant in "Classic Mode", in all honesty, since the skill shadows do render them pointless. Perhaps, then, enabling timed bombers could disable skill shadows for just bombers, but nothing else. After all, there isn't a skill shadow for the nuke feature ;P

And, a new point for further discussion:

:lemming: Perhaps cloners and stoners could be removed from SuperLemmix altogether. It may even be worthwhile considering distilling the available skills down to, say, the best 16 and then having them permanently displayed in the skill panel, similar to the way skills appeared on the classic platforms.

Silken Healer

Quote from: WillLem on February 06, 2023, 04:18:35 AM
:lemming: The best solution I can think of to the cloner problem illustrated by Silken above is to only allow either the original lemming or the clone to continue the bomber state after the clone assignment has taken place. This could, again, be achieved by freezing the game and informing the player that they must select either the original lemming or the clone as the bomber, via some sort of in-game dialog. This would only need to happen with timed bombers, as untimed bombers cannot be cloned anyway. This is a messy solution, but does the job well enough.

If you do this, I'd add a "don't show again" option to by default keep the original lemming the bomber, as some players might get irritated with it showing up all the time, but yeah, that'd work.

Quote from: WillLem on February 06, 2023, 04:18:35 AM
:lemming: The most comprehensive solution to both the "first 5 seconds" problem is to display a dialog box informing the player of the existence of the alternate bomber mode, and the hotkey designated to it. The dialog could even have within it an option to switch the primary mode, and allow the user to designate their own hotkey. It would also, of course, have a "do not show this again" checkbox, and would only appear in the event of a player assigning a bomber to a lemming within the first 5 seconds of its existence.

When I said an "intro-pack" level I meant adding another level separate of the intro pack to have it. The level would catch the players attention but your way would also work.

Quote from: WillLem on February 06, 2023, 04:18:35 AM
:lemming: Admittedly, the timed bombers would only really be relevant in "Classic Mode", in all honesty, since the skill shadows do render them pointless. Perhaps, then, enabling timed bombers could disable skill shadows for just bombers, but nothing else. After all, there isn't a skill shadow for the nuke feature ;P

I'd say we may as well still let the player have the customization just in case.

WillLem

#9
Quote from: Silken Healer on February 06, 2023, 06:54:33 AM
I'd add a "don't show again" option to by default keep the original lemming the bomber, as some players might get irritated with it showing up all the time

Yes, but what if the player wants the clone to be the bomber? There would have to be some way of accessing this in-game, in real time, without the dialog appearing. Would the game have to freeze each time? Even though it's my idea, I'm not sure exactly how it could be implemented, in all honesty.

Quote from: Silken Healer on February 06, 2023, 06:54:33 AM
I'd say we may as well still let the player have the customization just in case.

Absolutely.

WillLem

#10
Another idea that occurs; what about having timed and untimed bombers as separate skills? The timed bombers could simply be displayed like this:



This would solve all problems regarding first-5-seconds assignments, cloners, stoners and any kind of in-game implementation, but would of course remove the choice from the player of which type of bomber they'd prefer to use, since it would be hard-coded into the level by the designer. It would also have to be accounted for in the Editor, but I imagine this wouldn't be too difficult to implement.

It is the most elegant solution, though, IMHO. Players would have to accept that, by playing any level in SuperLemmix, the level designer may have chosen to provide only timed bombers. But, it would also be possible to have a mix of the two, which might make for some interesting levels.

In this scenario, I'd most likely simply not have a skill shadow for timed bombers. If consensus was to make it optional, though, it'd have to be a separate option from enabling/disabling skill shadows for the other skills, ideally.

...

Since I imagine this is likely the easiest way to do it, I'll probably start with this and go from there.

Silken Healer

#11
I'm highly against timed bombers being a separate skill. I was hesitant for even to be able to switch between the two with a hotkey held down at any time, not just in the first 5 seconds of the level, but this seems like it defeats the purpose of having a classic mode and giving the player the choice. And if you were I definitely wouldn't remove a skill to make up for it. May as well keep it and you could almost definitely squeeze some room in for one more skill anyway.

Quote from: WillLem
Yes, but what if the player wants the clone to be the bomber? There would have to be some way of accessing this in-game, in real time, without the dialog appearing. Would the game have to freeze each time? Even though it's my idea, I'm not sure exactly how it could be implemented, in all honesty.

(Sorry, don't know how to quote from a locked topic). There might be one they always find themselves using, additionally the user could hold down a separate hotkey to make the clone/original lemming the bomber.

Quote from: WillLem
I'm not sure I follow you on this one. Can you give an example of such a situation?

As I said, I can't think of an example off the top of my head but the player would lose the bomber 5 seconds earlier in timed mode. Causing a game play discrepancy when the only difference is visual. It seems like it could be used to create an impossible level.



WillLem

#12
Quote from: Silken Healer on February 07, 2023, 05:49:34 PM
I'm highly against timed bombers being a separate skill ... this seems like it defeats the purpose of having a classic mode and giving the player the choice.

Yes, I agree. And, I've had a brainwave regarding this.

We ultimately need a solution to the various timed bomber issues that's clean, easy for everybody to understand, and causes a minimum of UI interaction.

So, maybe the engine simply shouldn't allow any lemming that has existed for less than 5 seconds to be assigned an untimed bomber (the failed assignment could be represented by a sound, and maybe the lem could highlight a different colour during this time to show that something is, indeed, different).

EDIT: Another way to implement this could be to start a countdown in either mode from however far away the newly-created lem is from being able to explode. So, if a lem has existed for 2 seconds and it is assigned an untimed bomber, a timer appears anyway and starts counting down from 3. The same lemming in timed bomber mode would need to be assigned the bomber immediately at the point of its existence, but the end result will be the same for both.

In the case of cloners, when timed bombers are enabled, the cloned lemming starts its countdown from 5, to prevent the opposite problem from occurring (i.e cloning a bomber with <5 seconds on the clock to create a "new" lemming that can explode in <5 seconds of its existence).

That way, it would simply become impossible to create levels which cause this particular problem, and it equalises timed and untimed bombers in the case of cloner usage.

With this in place, we can also get rid of the hotkey-switching idea and simply make it so that the player chooses their bomber option in the menu, and then lives with their choice for the duration of playing a level. As well as addressing the potential impossible situation outlined above by Silken (i.e. where the option affects skill count vs. assignment), not allowing switching in-level renders the option much less redundant, whilst also making it feel much more like a solid engine feature.

Level breakage we would simply have to accept. These things happen when creating a new fork, and it would further distinguish it from NeoLemmix as being its own platform; levels created for it would need to account for the new possibilities.

Quote from: Silken Healer on February 07, 2023, 05:49:34 PM
I definitely wouldn't remove a skill to make up for it. May as well keep it and you could almost definitely squeeze some room in for one more skill anyway.

It's not so much the panel room, it's more the desire to have an even number of skills. But, I take your point. Removing stuff will likely be just as much work as adding stuff in, given my current level of experience, so I'll probably want to avoid doing that anyway. (It's also another reason not to have timed bombers as a separate skill ;P)

I'd still like to increase the range of the Laserer if it proves easy enough to do without breaking anything in-game (of course, some levels may break as a result of this change, but as mentioned above I'm OK with that for now; it's worth experimenting again with the increased range anyway IMHO).

Quote from: Silken Healer on February 07, 2023, 05:57:26 PM
While your making this fork, would you also consider adding a few other suggestions to this fork which have been rejected and 1. Either you/lots of other people really wanted it or 2. It was rejected because of the "philosophy of NeoLemmix" (like timed bombers) which wouldn't apply here?

Of course, one of the reasons I want to do this is so that there is still a currently-maintained, forum-discussed platform for 2D Lemmings after the final version of NeoLemmix is released, but at this stage it's all talk. I am very inexperienced with coding and will likely only want to continue with it if I can make significant progress without too many headaches.

And, if you happen to know anything about programming and want to help me out with it, these things will be far more likely to happen! ;)

Silken Healer

#13
Quote from: WillLem on February 07, 2023, 09:34:44 PM
Level breakage we would simply have to accept. These things happen when creating a new fork, and it would further distinguish it from NeoLemmix as being its own platform; levels created for it would need to account for the new possibilities.

I'm highly against this too. I thought the main point of the fork was to play any level 100% classically and it can be quite frustrating if you don't know if you haven't figured out a solution or if it's impossible. All the time you spend figuring it out could be for nothing, but if you go and look it up there could of been a possible way to do it and you would've spoiled the puzzle. And if we can figure out a way to do this with little or no easiness to understand lost that is a worthwhile trade off imo.

Quote from: WillLem on February 07, 2023, 09:34:44 PM
I'd still like to increase the range of the Laserer if it proves easy enough to do without breaking anything in-game (of course, some levels may break as a result of this change, but as mentioned above I'm OK with that for now; it's worth experimenting again with the increased range anyway IMHO).

I'm against this too for the same reason.

I'm going to do a quick tl;dr of where I am at as well.

:lemming: Timed bomber and untimed bomber mode separate in the menu

:lemming: Skill shadows separate of this, the skill shadow will show where the lemming will be in 5 seconds in timed mode.

:lemming: Only the explosion is recorded in the replay. The replay will count back 5 seconds (or work out if its in the first 5 seconds of a lemmings existence and do it immediately if so) in timed bomber mode and start the countdown then. For cloners in timed bomber mode everything will be stored and replayed.

:lemming: If you hold down a hotkey and click a lemming in the first 5 seconds of it's existence it will bomb it instantly in timed bomber mode (maybe there could be some indication it's in the first 5 seconds of it's existence which can be enabled/disabled in the settings?)

:lemming: If you clone a bomber, hold down a hotkey to make the clone a bomber (or vise versa via optional setting) the original lemming will lose it's timer and the clone will pick up where it left off.

:lemming: Have a condensed version of the intro pack shipped which explains the new features. Additionally, maybe there could be a separate "SuperLemmix" rank which is recommended you at least play through that to understand the changes.

:lemming: Try to think up some solution to make NeoLemmix and SuperLemmix 100% compatible with this issue

WillLem

#14
Quote from: Silken Healer on February 08, 2023, 03:48:49 PM
I thought the main point of the fork was to play any level 100% classically

Yes, but there needs to be a way to implement the classic behaviour with a minimum of fuss. I believe that making all of the problematic situations impossible from a level creation point of view is the best way to go, all things considered.

Quote from: Silken Healer on February 08, 2023, 03:48:49 PM
and it can be quite frustrating if you don't know if you haven't figured out a solution or if it's impossible.

Well, that's the point - making those impossible situations impossible to create means that those levels couldn't exist on the engine in the first place. So, there will be 0% chance of a player becoming frustrated because an impossible situation has been presented in their chosen bomber mode; it simply couldn't happen. In the absence of a better idea for fixing everything, this seems to be the best the way forward for now.

Quote from: Silken Healer on February 08, 2023, 03:48:49 PM
the skill shadow will show where the lemming will be in 5 seconds in timed mode.

Having given this some thought, timed bombers shouldn't have a skill shadow at all. It completely defeats the purpose of them being timed and is against the spirit of the proposed "classic" mode, for which timed bombers would be a standout feature.

Quote from: Silken Healer on February 08, 2023, 03:48:49 PM
:lemming: If you hold down a hotkey and click a lemming in the first 5 seconds of it's existence it will bomb it instantly in timed bomber mode

Again, I've pretty much decided this won't be the case. Not allowing untimed bombers in the first 5 seconds is a far cleaner solution to all of the associated problems. We don't need the hotkey, or my proposed "hot bomber" state (which is admittedly an even messier solution). Far better to keep things simple where possible.

EDIT: Besides, if it's later agreed that the modes should be switchable in-game, this feature can always be added retroactively.

Quote from: Silken Healer on February 08, 2023, 03:48:49 PM
:lemming: If you clone a bomber, hold down a hotkey to make the clone a bomber

The more I think about it I'm generally against hotkeys being needed for any sort of skill assignment. I'd rather remove the cloner skill altogether than make this sort of mess. Whilst it was me who originally floated the idea, admittedly, I did so for the purposes of discussion; a number of problematic situations have been presented, each of which seem to require hotkeys, menu-diving or other UI headaches in order to crowbar the timed bomber feature back into an engine which has clearly outgrown it. For me, the purposes of this discussion was to try and find the "solution of least resistance".

Thankfully, a relatively simple idea has come up which eliminates this need for hotkeys and other UI mess (which goes against the spirit of "classic" lemmings gameplay anyway). For now, I'll be going ahead with that unless an even better idea is suggested in the meantime.

Quote from: Silken Healer on February 08, 2023, 03:48:49 PM
:lemming: Try to think up some solution to make NeoLemmix and SuperLemmix 100% compatible with this issue
(Pictured)

Not implementing a mode-switching hotkey solves this problem.




Just to re-iterate, breaking existing NeoLemmix levels is not a problem for me if this project does go ahead. NeoLemmix, Lix and SuperLemmini(Too) all feature levels which can't possibly be played on the other engines, either for physics reasons or game feature differences. I'd be absolutely fine with SuperLemmix being its own thing and thus having levels which aren't cross-compatible. If nothing else, it paves the way for it to take even bolder steps in the future (that is, if it ever exists!).

Therefore, existing-level-preservation will categorically not be a concern for me personally whilst I'm working on this (and that goes for my own levels as well!). Just thought I better make that clear at this point :)




I also thought I better mention that, if this project doesn't attract much support and if the ideas being discussed prove to be too far beyond my capabilities, I'll have to abandon it anyway. Let's keep it real at this point - SuperLemmix is just an idea, and I currently have no idea how to do any of this! :crylaugh:

Anyway, let's keep positive. I can certainly have a go at some of this and see how far I get. I've updated the OP with the ideas as they currently stand; the decisions aren't entirely final by any means, but provide a way forward.

WillLem

#15
- Timed bombers will come back as a separate skill in their own right called the "Timebomber"; after consideration of all the different factors surrounding their re-introduction into the engine, this is the one which causes the least problems.
- In the case of a cloned Timebomber, the clone's countdown timer will start from the same point at which the original lem was cloned, as with all other cloned skills.
- Timebombers will not have a skill shadow, as this defeats the object of them existing (which is to bring a bit of execution-based play back into the game).

Where I'm up to with this:

:tal-gold: Amiga timer graphic added, code tweaked to account for change in width from 4px to 6px.

I'm looking for the old timed bomber code in the NeoLemmix source, haven't found it yet. Will post again here when I have done.

Hmm. Can't seem to find it anywhere. I wonder if existing countdown code can be used to create a new state, "countdowner", which could then potentially be applied before any skill assignment.




I've decided that Timed bombers should be a separate skill, independent of Untimed bombers. After thinking of all the potential mess with cloner compatibility, replay cross-compatibility and "point of assignment into replay" stuff, it's just more headache than it's worth. Timed bombers being a separate skill is a much more exciting possibility since it means both types of bomber can be used in the same level, and also it solidifies that SuperLemmix is about bringing back some of the OG's execution difficulty.

WillLem

#16
Quote from: Ron_Stard on February 20, 2023, 04:57:38 PM
have you considered having both timed and untimed bombers as skills, and thus ending this rift?

Thanks for the suggestions! And yes, I'll be incorporating them both as separate skills. Seems the easiest solution overall :thumbsup:

Simon

#17
Quote from: WillLem on February 22, 2023, 01:19:24 AM
valiant attempt to cater to everyone.

Quote from: WillLem on February 14, 2023, 09:38:31 PM
Timed bombers should be a separate skill
cloner compatibility, replay cross-compatibility and "point of assignment into replay" stuff, it's just more headache than it's worth.

Timed bombers will not have a skill shadow

Then you're inflicting timed bombers on everybody whenever a level designer likes them. Doesn't sound like catering to everybody?

You could convert the timed bombers into untimed on the fly based on user option, and those converted bombers become ineligible assignment during first 5 seconds of lemming existence. Will probably run into design problems with the cloner. There seems to be no easy way out.

-- Simon

WillLem

#18
Quote from: Simon on February 22, 2023, 10:25:47 PM
You could convert the timed bombers into untimed on the fly based on user option

After a lot of consideration, I've decided that this is just simply too messy for me to try and handle as an inexperienced designer working mostly without direct help. I could try and mimic what Charles did with SuperLemmini, but there are a number of problems with having both types of Bomber available even in that engine, which is much simpler than NeoLemmix.

Quote from: Simon on February 22, 2023, 10:25:47 PM
and those converted bombers become ineligible assignment during first 5 seconds of lemming existence

Yeah, again, I did consider this but decided it would just overcomplicate things unnecessarily. I'd rather keep things as simple as possible, especially since I'm very much at the start of my journey as a programmer.

Quote from: Simon on February 22, 2023, 10:25:47 PM
Will probably run into design problems with the cloner. There seems to be no easy way out.

Yes, the Cloner is what swung my decision in the end. There is no clean way to get around the various issue that the Cloner presents.

For me, it comes down to either lose the Cloner or have both types of Bomber. I definitely prefer the latter.

So, they'll be implemented as a new skill called the Timebomber. It doesn't make sense to give them a shadow because this defeats the purpose. Yes, it allows level designers to force this skill type on the player, but I'm OK with that for these reasons:

1) For a while now, we've had many many "puzzle-oriented" levels, which get tiresome after a while. Timebombers are part of a number of features in this engine which will promote more execution-focused levels and gameplay, balancing things out a bit.

2) In theory, yes, the engine could get swamped with Timebomber levels and we'd have the opposite problem to the one presented by NeoLemmix. But, in practice, I think that it's more iiikely that there'll be a mixture of both types of level.

3) Lest we forget, it will be possible to have both types of Bomber in a single level. This could make for some interesting levels!

4) The DMA levels can be restored to their intended mode of play for all players.

...

I realise that this seems to constitute something of a contradiction, but I prefer to think of it as the other side of the same coin. It is, after all, the absence of Timed Bombers from NeoLemmix that prompted this fork in the first place.

The irony of all this is that I haven't done a single thing towards implementing them yet; I've so far been focusing more on all the other stuff on the list. I think that I need to get as much experience as I can before I attempt to implement what is effectively a new skill from scratch.

mobius

#19
timed bombers could be interesting to come back, I'd appreciate keeping skill shadows (At least as an option) though, would still support it even without them.

Grenader, spearer and those skills are really exciting though :thumbsup:
everything by me: https://www.lemmingsforums.net/index.php?topic=5982.msg96035#msg96035

"Not knowing how near the truth is, we seek it far away."
-Hakuin Ekaku

"I have seen a heap of trouble in my life, and most of it has never come to pass" - Mark Twain


WillLem

#20
Quote from: mobius on February 23, 2023, 01:18:02 AM
timed bombers could be interesting to come back, I'd appreciate keeping skill shadows (At least as an option) though, would still support it even without them. :thumbsup:

Glad to hear it, and thanks for the support!

The thing about Skill Shadows though, is that they would be completely pointless on a Timebomber; it would show exactly where it will detonate, thus making it effectively an Untimed Bomber with a delayed assignment. The whole point of Timebombers is to re-introduce some of the more execution-based gameplay, which Skill Shadows are very much the antithesis of.




I do see why Dullstar and Simon are right to at least suggest that I focus on making this engine more one thing and less the other, but ultimately I do want NeoLemmix players to be able to also get a good experience with SuperLemmix. Since all of these features exist, it makes no sense to strip them out altogether. The idea here is that they'll be reframed and more aggressively optionalised in order to promote the older style of play, not outright enforce it.

Most of my early years playing Lemmings were spent learning how to get those Builder and Bomber assignments just right purely by eyeballing, and it was as satisfying to pull off as it was to solve the puzzle. All I'm saying with SuperLemmix is, let's bring a bit of that back.

WillLem

#21
Added a poll.

WillLem

Any more votes on this one?

Note that the question is really "do we want Timebombers as well as untimed Bombers?" (i.e. not "instead of.")

WillLem

OK, so it seem clear that this very much divides Lemmings players into those that want the Timebomber, and those that don't (and in both cases, no matter what!)

Seems to me then that the "please everybody" thing to do probably would be to implement it as a user-side option. However, this would mean a lot of potential UI headache and messy implementation for a feature which many might end up just ignoring and ultimately never using. If I'm going to put the work in to bring the skill back, I want it to be a prominent feature of SuperLemmix. Its implementation should be clean, clear and enjoyable for those that fully support the feature.

I'm therefore going to go ahead and make the Timebomber a separate skill, and let the chips fall where they may in terms of who chooses to make and play levels in SuperLemmix. Hopefully, some of those who chose "No!" will give Timebomber levels a try and enjoy them for what they are, whilst those who chose "Yes!" have re-gained a classic Lemmings feature, and lost nothing.

So - just to make it clear - Untimed Bombers will remain part of SuperLemmix, and will simply be called "Bombers". "Timebombers" will be the classic Bomber skill with the 5-second timer.

Now comes the hard part, actually coding the damn thing! :forehead:

WillLem

#24
And we have the Timebomber! :lemcat: :lemcat: :lemcat:



The panel icon isn't done yet; just using the OhNoer animation for now until I can figure out how to load an image into that part of the code. Other than that, it's fully tested and working! It can also interact with other skills as well (i.e. other skills are assignmable during countdown).

Finished the panel icon! As soon as I've finished making a few other tweaks here and there, I'll do a proper release with all 24 skills included.

WillLem

Tested with the Cloner this morning. Works a treat, and opens up new level possibilities: