Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Topics - WillLem

Pages: 1 ... 4 5 [6] 7 8 ... 22
76
If I can get this working, would anyone like to see this feature in SuperLemmix? Would you use it?

As a side question - should Failure/Success jingles be brought back (bear in mind that such jingles can be long music tracks, not just a few seconds) so that the music in the Postview screen can be different depending on whether or not the level is completed?

Or, should these screens remain silent?

77
As of SuperLemmix 2.4, lemmings are now drawn on 2 different, adjacent, layers. This is so that we can have certain lemming states always appear behind other lemmings, regardless of where they are in the lemming index.

An obvious example of where this is beneficial is the exploder states. The explosion graphic is large, and even though it only appears for a single frame, it may be useful when fine-editing a replay to be able to see exactly what's going on with the nearby active lemmings:


Freezer explosion - note the other lems walking in front of the explosion graphic, even though the Freezer is "earlier" than them in the index, and so would normally appear above them.


Timebomber explosion - note that other lems, including the Freezer lem in the ice cube, appear above the explosion graphic.


Grenader explosion (it's a bit clearer here that the Frozen lem appears in front - we want this, since it's better to be able to see the position of the Frozen lem for that single frame, and the grenade destroys the ice cube anyway).

Freezer lems are actually drawn on the same "lower" layer as the explosion graphics. In the above examples, the indexing draws the Freezer lems first because they existed "earlier" and so are drawn further forward. Conversely, in this following example, the Freezer appears behind the other lemmings despite existing "earlier", because the other lems are being drawn on the "higher" layer:



This was done primarily to fix a bug where the Frozen lems appeared in front of lems that existed later, thus breaking the illusion of them being inside the ice cube. Rather than mess about with the indexing itself, it seemed a better idea to simply draw them on a lower layer.

Then, it seemed a good idea to also draw other explosion-related lemming states here - currently, all Freezer states, ohnoer, and all explosion graphics are drawn on the lower layer. We can extend this idea to other lemming states as well, if needs be.

78
From a conversation on Discord:

Quote from: jKapp76
On (menu) screen, when using up and down arrows do not continue but stop at highest or lowest setting... like old neolemmix. Sometimes it's hard to know if you're on the lowest setting because of a strange name.
...
Right now you tap the up arrow but when you get to the highest level it resets to the lowest.
if you press the up arrow, you scroll through tricky, taxing, mayhem... then it starts over.
...
Old neo used to stop at the highest option. Some level packs are hard to tell if you're at the last option.

79

This is an edited version of namida's NLQuickMod tool, which can be used to edit values such as the lemming count, time limit and even entire skillset for multiple levels simultaneously. It's a great tool, especially useful for making remix/challenge/test packs.

For the SuperLemmix version, I've updated the skillset to include the new skills and tweaked the layout a bit. See future posts for any other changes.

Get the latest version here.

80
Now that we have a way to display singular and plural custom names, it's a better time than ever to have level info display on the Window caption (aka Title bar):



Here's an example of singular form:



And, custom lemming names (in this case, Lemminas):



In light of this change, I feel it's now no longer necessary to display the "rescued" count as a negative number in the panel. Instead, the number is displayed in red until the save requirement has been met:





In addition to this, the caption reads "Mass Replay Check" when a MRC is being performed.



81


I really can't decide on this one... :forehead:

I made a very silly video a few years ago (back when my beard was huge!) which more or less sums up the problem I have with "steel is only steel when it's visible" - basically, despite it being a much more consistent way to handle steel areas in a level (I can fully admit that it removes the need for CPM in all but the most trollish and/or visually unclear levels), it's also very unintuitive to anyone who isn't yet familiar with this particular steel behaviour.

Moreover, it also doesn't prevent steel from being used in a trolly way; it's still possible to make steel pieces that don't look like steel, terrain pieces that do, and it's even possible to do this using the official styles (group a steel block with a bunch of erasers so that only 1px of not-metal-coloured steel is visible, and then use that pixel to build a steel area, etc). So, whilst it might be a tad more cumbersome to troll a player with hidden/disguised steel, it is still possible. Here's an example (from the Crystal set) - see if you can guess which is the steel piece:



What we have now is better than the OGs either way: no longer do we have those problematic "steel areas" that need to be managed separately: a steel piece is simply labelled as steel and that's that. Much better!

The question then becomes: should it always be steel, or sometimes not be steel if it's overlapped with destructible terrain? The answer is, really - "it depends", which means that it's very difficult to make a decision on this.

If we keep it the way it is, then steel can sometimes be seemingly destroyed, which to me doesn't feel right even though I'm familiar with the behaviour and understand its implementation and purpose. It feels better to have the steel behave as expected and not be destructible at all, wherever it may exist in the level, and whatever is overlapping it.

However, if we change it to "always steel" behaviour, then suddenly it becomes necessary to use CPM to see exactly where the boundaries are, and this isn't something that feels right either. Even if CPM were removed from the game (which Classic Mode does), it becomes a possible source of unnecessary frustration again to the "picture puzzlers", who prefer everything to be exactly as it seems right from the beginning.

It could absolutely be argued, though, that a partially-obscured steel block being destructible in only that obscured area gets more and more "not as it seems" the smaller the obscuring area is - especially if it's a 1px-wide thread cutting through the centre of the steel block, for example.

Ultimately, it's a chase-the-tail argument which doesn't really have a way to keep both points of view satisfied.

What might be worth looking into is whether the terrain-over-steel can be destroyed, revealing the previously-obscured steel block underneath (for example if a bomber or basher is assigned close enough for the destruction mask to make contact with the overlapping terrain). This would certainly look a lot better, but doesn't completely address the associated concerns. I'm also not 100% sure how to handle this; it perhaps becomes necessary to draw the steel onto another layer (or maybe draw it twice - once as destructible terrain, and again on a deeper layer as actual steel...?)

Basically, I need help with this one; it's not a clear cut case either way from my point of view, and so feedback is going to make a big difference on which way this one swings. All I'd ask is that you think of this from a fresh, conceptual, aesthetic and gameplay-oriented perspective rather than tying the argument up with concerns about existing content or sameness with any other Lemmings clone, port or engine.

---

NOTE: Programming-wise, this change comes down to a single word in the entire code - so, it wouldn't be out of the question to trial the proposed "steel is always steel" behaviour for a while and see how we like it. Changing it back would take seconds.

82
Frenzy (the "pause doesn't work" gimmick) has been under consideration for making a comeback in SuperLemmix, but I think that a better way to implement it would be as an optional talisman. This encourages real-time play whilst not outright enforcing it.

Similarly, rather than allowing levels to toggle Classic Mode on (another idea that was previously under consideration), this also works better as a less intrusive, optional talisman.

Both have now been added to SuperLemmix! Here's how they work:

The talismans check for whether a Replay has been loaded and fail if that's the case (Mass Replay Check also fails these talismans).

Individually, "Play in Classic Mode" checks whether the mode has been activated; since it isn't possible to activate or deactivate it in-game, this must be done via the Config menu prior to playing the level. For that reason, it's more of a "re-play value" talisman for those who prefer not to use Classic Mode as part of their normal play. If the level is completed with Classic Mode active, the talisman is passed.

"Play Without Pressing Pause" checks for both the pause button and hotkey being pressed. If neither are pressed and the level is completed, the talisman is passed.

Both have been implemented in Commits f7d13258d (Player) and ee48fb5 (Editor), and will be ready for release in the next Player update (2.2) and Editor update (2.3).

83
I've always thought that it should be possible to scroll horizontally & vertically by combining modifier keys with the mousewheel, so this is now implemented as of commit 98bbcdc.

Ctrl + Mousewheel scrolls the level horizontally (when zoomed in)
Alt + Mousewheel scrolls the level vertically (again, when zoomed in)

This feature will be available in Editor 2.3, coming soon.



On a somewhat related note (and in case anyone missed the video showing this), it's also now possible to move pieces only-horizontally or only-vertically with the following:

i) Select the pieces you wish to move
ii) Press Ctri + Alt, then move the pieces, for horizontal-only movement (along the X axis)
or
ii) Press Ctrl + Shift, then move the pieces, for vertical-only movement (along the Y axis)

This feature is currently available (as of Editor 2.2)

84
This topic is not necessarily related to the current discussion about whether Jumpers & Shimmiers should turn when encountering level sides, and instead is more a product of it.

Do we want this, specifically for when these skills encounter a wall (or any vertical terrain)?:

Note that the skill shadow shows the movement of the lemming - for Shimmiers, they turn and continue to the end of the pips - for Jumpers, they turn and continue the jump trajectory




85
From a video posted by ericderkovits on YouTube:

Quote from: ericderkovits
Here is a test level showing a lemming won't explode but just leave the bottom of the level if the blasticine object is placed too low. No issues with Rock's vinewater, Marble's poison or Fire's lava objects as the lemming dies at the top of the objects.
For the lemming to explode on the blasticine, it needs to be placed higher, so the lemming will hit the trigger point.
I discovered this by accident in a lemmings reunion level (Nightmare 28-Cranking the stress) where the lemming doesn't explode on the blasticine.

86
From discussion in this topic:

Quote from: jkapp76
Could you ... Make the selecting tone (or a fail tone) ...?

Quote from: WillLem
a fail sound would be ideal for any and all disallowed assignments

Quote from: jkapp76
You could use the same (assign) tone but pitch it down to sound negative.

87
As per the new feature allowing custom Lemming names, it seems a good idea to also allow the Level Info icons (in the Level Select menu) to be customisable as well.

88
SuperLemmix Bugs & Suggestions / [SUG] Infinite Skills hotkey
« on: May 18, 2023, 06:15:54 AM »
I'm attempting to implement a hotkey which sets the skill count of the current level to infinite-of-each (types remain the same).

It's easy enough to make the count change happen (barring a few wierd bugs when backskipping). The real problem I'm having is that it isn't as simple as just "set the skills to infinite, and then change them back later if you want" because if the level provides 5 of something, you set it to infinite and then use 6, what should happen when you press the hotkey again?

I can think of 5 possibilities:

1) Once applied, the skill count stays infinite until the level is restarted. Pressing the hotkey again doesn't change the count again at all. This is easiest to achieve and probably makes the most sense.

2) The count resets to the originally available count. This might seem to make sense, but if a player is already halfway through the level having used an infinite count to get there, then the original count becomes fairly meaningless. They might as well just continue with the infinite count.

3) The count resets to the originally available count, and restarts the level. Better, but might seem a bit jarring.

4) The count resets to the originally available count, minus the skills used, and any minus counts just show as zero. This option is slightly better than the second option, but would be the most difficult to manage code-wise and is fairly pointless seeing as we have a "used skills count" which would be far more useful in this scenario.

5) Keep the count at infinite, and toggle the used skills count on. This one also makes pretty good sense having considered the middle 3 options, but has the potential to be the most confusing.

Option 1 is my favourite. I think that if a user has chosen to switch on infinite skills, they've committed to playing the rest of the level with that option enabled, and so it should remain active until the level is either completed or restarted. The only problem with it is if the player accidentally hits the key without meaning to.

Another complication is replays: ideally, toggling infinite skills should be written into the replay so that any replays used with an infinite count on would make sense to the viewer, and wouldn't be broken by simply watching them without infinite skills.

Also, any levels played with infinite skills on shouldn't count towards level records, for obvious reasons. This would need to be managed as well. I think SLX might just be too complex an engine to deal with a feature like this.

I could do with some feedback on this. Do people think it's worth implementing the feature at all? What would you expect to happen if you pressed the hotkey again? Would you use it if it was there? I'm currently about 70:30 in favour of just chalking it up to "it's a good idea, and fun to do, but probably isn't worth the trouble."

89
SuperLemmix Bugs & Suggestions / [SUG] Level top and sides
« on: May 12, 2023, 03:10:43 PM »
Cheshire Cat and I are becoming very familiar recently, what with all these rabbit holes I keep going down...

Found this old thread discussing whether the sides of levels should be solid or deadly. It seems that opinion was very divided, but deadly sides "edged it" (pun intended) in the end and that's what we have now.

Personally, I think neither are that great. If there's an opportunity to do something different with the physics, then all options ought to be considered (for example, ccexlore mentioned wrap physics being a better option, and I agree at least as far as the horizontal sides are concerned).

I don't want to go over everything that was mentioned in that topic (have a read of it, it's interesting), but to summarise my own thoughts: sides shouldn't be solid, because we can't see what's making them solid and it seems a bit odd and unexpected. But, neither should they necessarily be a deadly void into which the lems can vanish. Ideally, the only way to leave a level should be through the exit. IMHO, this is definitely true for the sides, somewhat true for the top, and perhaps less true for the bottom.

The top edge is a tricky one: it shouldn't be inexplicably deadly, but nor should it be solid. Lems should be able to exist where they can perceptibly exist - but then, that means allowing them to walk across the top of a level. I've had a look into this and done some tests, and actually, allowing lems to exist at Y = 0 isn't as much of a travesty as you might think; the cursor finds them, and we can tweak things so that only relevant skills are assignable (it can of course also be that all skills are assignable); at the absolute least, we want Jumpers and Projectiles to be able to complete their arc and return into the level, even if we were to keep the top edge inaccessible in all other cases. This needs much more thought/testing, but I'm generally in favour of allowing this particular mechanic rather than having lems inexplicably turn around, or just disappear.

The sides is easier - these should wrap around; my own preferred depiction of this would be out one side, in the other rather than infinite scrolling, but neither is out of the question. I can already get lemmings to continue skills across the boundary when going from the right side and coming back in to the left side (the other way around doesn't work for some reason). However, the program crashes, which means that there are probably a lot of internal "no lemmings outside of the level" checks that are preventing the behaviour from being implemented in the way that seems to make most sense to me. Hopefully, these checks can be either relaxed or removed entirely, this remains to be seen.

The bottom edge is the one I'm least sure about; if we leave it deadly, then it's a contradiction of everything I've said in this post, but it also definitely shouldn't be inexplicably solid. Maybe it should wrap around to the top...? Not sure about that - wrap actually seems to make less sense vertically.

So, this conundrum sparked another idea: what if the lemmings who leave the sides of the level simply return to the entrance hatch, and re-spawn from there? This reinforces the "exit is the only way out" logic, but is perhaps less immediately intuitive and has the potential to cause confusion. It could also cause indexing issues (I've already had problem with non-assignable lems when attempting to do this), so it wouldn't be a walk in the park from a programming POV either. But, it's an idea which could work.

Thoughts?

90
SuperLemmix Bugs & Suggestions / [SUG] End-of-play conditions
« on: May 09, 2023, 02:31:58 PM »
I went down something of a rabbit hole with the end-of-play conditions yesterday. Here's what I've come up with:

:) Single-lemming Levels
If the initial lem count is 1, and 1 lemming dies, then the level doesn't end. This works nicely, and obviously works for levels with cloners as well (since, if the lemming is cloned once, and then 1 lemming dies, there is still another lemming in the level to keep it active. If that lemming then dies, the level should end anyway).

The only thing I'd like to add here is some sort of on-screen message such as "No lemmings remain. Rewind, Restart or Exit" to make it clear that there's a reason play is continuing with no lemmings on-screen.

If this works, the behaviour could extend to any condition where no lemmings remain (including when only zombies remain, which brings us nicely to...)

:sick: Only Zombies Remain
Ideally, now that we have a Kill All Zombies talisman, we don't want levels to end when only zombies remain. Thankfully, the talisman code includes a CheckForZombiesKilled method which can be used to prevent the level ending unless it returns true. That part ended up being easy enough (although further testing is needed to make sure that it behaves properly in all cases).

However, there is still the problem of what to do when only zombies remain and the user nukes. At the moment, the level ends instantly (only 1 frame of nuke animation is seen; the beginning of the countdown appears above one or two zombies); I've scoured the code and can't find any obvious cause for this, but ideally we want the nuke animation to play out before the level ends, otherwise it looks like an unintentional bug. It's not massively important, since it's purely aesthetic, but I do want to tidy up as many of these loose ends as possible.

:excited: Time Is Up
This has ended up being my favourite one to work on. The 'lems freezing mid-exit' behaviour is gone for now (since I always thought it looked a bit buggy), but I've left the code in comments in case we want to bring it back for any reason.

We still have our "overtime" period, where the time counter starts counting upwards in purple, and no actions taken during this period count towards the level result. But, I've made a few improvements:

Instead of freezing mid-exit, lems now fully exit and then re-spawn from the entrance hatch, creating an infinite loop which allows the player to start from the beginning of the level and work their way across again (with all previous skill usage - builder bridges, basher tunnels, etc - still present on the map). To compliment this, the skill count is set to infinite-of-each so that the player can fully experiment with the available skillset (although, at present, it isn't possible to assign skills to re-spawned lems - not sure why ???).

If I can get this fully working, it seems a shame to relegate this behaviour only to levels with time limits (especially since most levels tend to get made without time limits nowadays). It might be worth creating a hotkey which allows the player to activate this mode on the fly, for example if they're stuck on a level. Doing so would obviously have to instantly fail the level (so, if the level is exited during this state, the level would count as a no-solve), whilst pressing the hotkey again could revert to the previous state (before the hotkey was first pressed), so that the level can be completed from there if the player has come up with a solution in the meantime. This is pie in the sky at the moment, but the behaviour itself works perfectly for TimeUp conditions and can therefore be tested for potential usefulness elsewhere.

Plenty to think about.

Pages: 1 ... 4 5 [6] 7 8 ... 22