NeoLemmix Experimental 12.13

Started by WillLem, February 13, 2024, 10:17:53 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

WillLem

This version of NeoLemmix is for testing this feature which is currently in progress.

It's based from the very latest version of NeoLemmix, so all features and physics are up to date. However, stability of any features not included in 12.12.5 cannot be guaranteed until the next proper release, so please only use this version for testing the relevant feature.

Feature overview:

:lemming: There are now 3 options for when all lemmings have been removed: Never Exit to Postview, Only Exit to Postview if Save Requirement Met, Always Exit to Postview
:lemming: Never Exit and Only Exit also include an additional option to Pause (Version 2) or Freeze (Version 3) gameplay when all lemmings have been removed (otherwise, gameplay will continue as normal)
:lemming: Always Exit is the current NL default behaviour
:lemming: A message is drawn to the minimap area to alert the player that the unplayable state has been reached:



:lemming: Pause Version disallows forwards frameskip once the unplayable state is reached (this prevents overshooting when using frameskips), but the game can be unpaused / fast-forwarded after the initial pause state has been achieved, allowing gameplay to continue into the unplayable state if the player deems it necessary. Note that this only applies when the Pause option is active
:lemming: Freeze Version freezes the game instead of pausing, so it's only possible to backskip or restart from there - the unplayable state is completely inaccessible. Again, this is only applicable when the Freeze option is active

Main points for testing:

  • Are the options sufficient and clear enough? (see Config menu / Interface tab)
  • Does the feature behave as expectated depending on which option is chosen?
  • Anything not behaving as expected: Does it pause when it shouldn't, or does it ever not pause when it should? Does it interact properly with skips past the frame on which the last lemming is removed (in both directions)?
  • Is the paused state sufficient for halting gameplay, or should something else happen? Do we need any further visual cues?
Feedback very welcome. Let me know if there's any improvements that can be made, or if it's good as it is by all means share that as well.

Enjoy!




N.B. Please use this topic to continue any discussion of this feature.

WillLem

#1
NeoLemmix 12.13 Experimental - Pause Version:

This version offers the option to auto-pause the game when the unplayable state is reached.

:lemming: It's possible to unpause and allow gameplay to continue into the unplayable state
:lemming: It's impossible to accidentally overshoot into the unplayable state when performing either a large forward framestep or when holding down a forward framestep hotkey
:lemming: Forward framestepping in general is disallowed once the unplayable state has been reached - it's still possible to fast-forward using the panel button or hotkey; this is still allowed because fast-forward and pause are mutually exclusive - each cancels the other, so it's impossible to overshoot using fast-forward anyway, and it's reasonable to allow players to cancel the already-successfully-achieved pause state by fast-forwarding, should they wish to do so for any reason
:lemming: Trap animations, etc. successfully complete before the game pauses

Note that this behaviour only applies if the "Pause Game" option is checked. Otherwise, play will continue into the unplayable state.

Attached is a copy of the experimental version, plus the relevant modified source code files. The images for the minimap message are in gfx/panel and panel-hr.

WillLem

#2
NeoLemmix 12.13 Experimental - Freeze Version:

This version offers the option to auto-freeze the game when the unplayable state is reached.

:lemming: Instead of pausing, this version implements a full physics freeze when the unplayable state has been reached
:lemming: It's impossible to overshoot into the unplayable state, either by performing a large forward skip or by fast-forwarding
:lemming: Gameplay cannot continue into the unplayable state; the player must backstep or restart to continue playing
:lemming: "Pause Game" is renamed to "Freeze Game" in the options menu to avoid confusion between the two versions
:lemming: Trap animations, etc. successfully complete before the game freezes

Note that this behaviour only applies if the "Freeze Game" option is checked. Otherwise, play will continue into the unplayable state.

Attached is a copy of the experimental version, plus the relevant modified source code files. The images for the minimap message are in gfx/panel and panel-hr.

WillLem

#3
Version 4 Uploaded

This one definitely needs community feedback. Please give it a try and bear in mind that the changes here may be merged into the final version of NeoLemmix - this needs your feedback!

After a very productive chat with Simon via Mumble, it's been decided that we'll go with the Freeze version. After giving the Pause version a try and initially preferring it myself, I've come to the conclusion that it's actually fairly useless as well as being much more problematic code-side. Now that we have the minimap message, the Freeze is much less jarring and makes a lot more sense.

So, I've now streamlined the code a bit and aimed to keep the feature as clutter-free as possible for now.

Changes in this update:

:lemming: The "Freeze Game" option has been removed from the config menu: instead, this will be standard behaviour when not exiting to postview. Reduces potential for confusion, keeps things simple
:lemming: When the Freeze is active, activating the nuke exits to postview (as does pressing Esc) - this is mainly to give players another way to cancel out of the frozen level
:lemming: When zombies are nuked, the animation now plays out in full (previously, the game would end mid-nuke when only zombies remained) - as well as being better game behaviour generally, it's also particularly important now that the game Freezes when only zombies remain

A few other updates included in this experimental - please provide feedback whether positive or negative, these features may not make it into NL if people don't like them, but they may also not make it into NL if people do like them but nobody shows any support for them!:

:lemming: The config menu has a new "Graphics" tab (this is necessary due to the 3 new options in the Interface tab)
:lemming: The fall distance ruler has an updated graphic which shows only the fall distance - no other markings
:lemming: The fall distance ruler now has a colour cycle (like objects in CPM) to increase visibility

WillLem

#4
Updated GameWindow and LemGame:

We no longer need to run LemGame's UpdateLemmings from GameWindow when nuking (this seemed like a bad idea anyway), nuke still acts as a "cancel" key for the freeze state, and animation still plays out in full for zombies.

Meanwhile, UpdateLemmings now checks for (GameFinished or CheckForUnplayableState) at the same time, and exits the procedure if either condition is met. The latter of these is what provides the physics freeze.

@namida - it's probably worth waiting until this feature has been fully tested before merging any code anyway.

WillLem

#5
Version 5

This fixes a number of bugs identified by Simon. Pending feedback, this should be the final draft.

WillLem

#6
Version 6

All commits squashed to Exit-To-Postview Behaviour Parts I, II and III, which will feature in the Pull Request.

This version is correct to commit 00a392b on origin/master, which includes the GR32v3 update - note that this update will NOT feature in the PR as it will mismatch with NL 12.12.5 codebase




EDIT: Attachment removed due to release of NL 12.13-RC




This topic is now closed due to the release of NL 12.13-RC - please discuss any further NL development in the relevant topics. Thanks.