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.


Messages - WillLem

Pages: 1 [2] 3 4 ... 225
16
Lemmings Main / Re: I (finally!) played Lemmings Revolution
« on: March 22, 2024, 11:37:03 PM »
Revolutions is ace.

I'd love to build a clone engine if I had enough time/patience to do it. I wonder if it has 3D physics, or whether it's actually 2D physics but somehow "wrapped" around the central cylinder.

17
SuperLemmix / [SUG] Object updates
« on: March 22, 2024, 12:36:09 AM »
Since a lot of new objects have made their way into SLX, it's time to look at what we can get rid of.

Splitters - these will be kept

Splitters are particularly problematic code-side, and I've personally never found them to be particularly useful as a designer or enjoyable to encounter as a player. So, unless there are any objections from people who currently use SuperLemmix, these will be removed shortly.


Teleporters/Receivers
- these will be kept

Now that Portals are a thing (and a much more useful thing at that), I'm not sure if we need Teleporters any more. This one is very much up for discussion, though; these will not be removed unless others agree that they aren't needed. If there are no replies, these will be kept.



Paint/Background

These both achieve more or less the same thing: a no-effect object that doesn't have a trigger, and is only there for decoration. My instinct here is to merge these into a single object (likely "Paint", to remove the confusion between "Background" and background images, which are in fact a different thing), which can then be drawn wherever the designer likes (e.g. in the background or on terrain as decoration) by using the "No Overwrite" and "Only On Terrain" properties. I'll wait for feedback before actioning this - if there are no replies, this one will go ahead.


Animation/Single-Shot Animation

These are triggered animations that can be used mainly for fun, or to delay a lemming - they don't remove the lemming like traps do. However, I'm thinking these can be merged into traps; we can check a trap's .nxmo for "NO_REMOVE" or something similar (that way there's no need to change existing traps), and then the trap would essentially become an "animate only" object. I'll wait for feedback before actioning this - and, if it turns out that there are lots of existing animation objects in the styles, then that might be enough to put me off this one!

18
SuperLemmix Bugs & Suggestions / Re: [SUG] Invincibility
« on: March 21, 2024, 02:13:25 PM »
After sleeping on the above, and with the lack of replies, I'll go with my instincts on all except Vinewater: it seems to make sense to keep all "unswimmable-water-type" objects swimmable when a lem is invincible - good for consistency. If we leave out Vinewater it could be a source of unnecessary confusion.

Meanwhile, Lava will need to become its own "unswimmable-water-type" object; I'll get on this later today.

So, we have a way for lems to traverse these objects - they must be invincible!

Meanwhile, I don't have any strong feelings either way about making pre-placed lems/hatches invincible. It shouldn't be too difficult to implement because it's a state rather than a skill (pre-assigning skills is trickier - I ran into problems when trying to make hatches Ballooner-assignable), so it's maybe something to go ahead and do anyway, see if we like it. One thing to make sure of is that it shouldn't be possible to assign both "neutral/zombie" and "invincibile" to the same pre-placed lem/hatch, as the states are mutually exclusive code-side (invincibility deneutralizes neutrals and ignores zombies).

19
I still like the Revolutions coloring.

Would you be happy with it being used for all athletes, or should we dedicate it to just Swimmers? If the latter, what colour should we use for Swimmers that also have another permananent skill?

20
SuperLemmix Bugs & Suggestions / Re: [SUG] Invincibility
« on: March 21, 2024, 02:49:50 AM »
What should happen when an invincible lem comes into contact with Blasticine and Vinewater?

For Blasticine, my instinct is swim. For Vinewater, carry on falling/walking/whatever.

We'll also need to make "Lava" an actual object type, rather than just giving water objects that look like lava a "Fire" effect, in order that invincible lems will be able to swim in Lava. Note: if this change is made, only invincible lems will be able to swim in Lava!

Should invincible lems ignore Blockers? Instinct is no.

Should invincible lems get free skills? Instinct is yes - this state should be as OP as possible; free skills will introduce a game element which grants the player full creativity over the level's solution.

At the moment, a single invincible lem is (optionally editor-side) made available when all diamonds are collected. Another way we could introduce them into gameplay is via pre-placed lems/hatches. Do we want this? Can anyone think of other ways invincible lems could be introduced/activated?

21
SuperLemmix Bugs & Suggestions / Re: [SUG] Invincibility
« on: March 21, 2024, 12:25:51 AM »

22
SuperLemmix Bugs & Suggestions / Re: [SUG/DISC] Athlete recolouring
« on: March 20, 2024, 09:58:42 PM »
I'm wanting to get an idea of whether this is a feature people are still interested in (i.e. a dedicated Swimmer-specific state recolouring, different from other athletes).

Now that Zombies have their own Walker sprite/speed different from regular lems, it's even easier to distinguish these. An invincibilty mode is currently being considered, which would almost certainly involve lem tunic/hair recolouring - however, I'm also considering adding an ethereal "glow" overlay via the effects logic to further distinguish this mode and not rely only on tunic colour.

So, it seems reasonable to allow more recolouring states if that's what people want. I'm currently thinking let's go ahead with Swimmer recolouring; we can at least give it a try in 2.7 and see if we like it.

Two questions, though - 1) What about when a lem is a Swimmer and (another permaskill): which recolouring should we prefer in this case, athlete or Swimmer?... and, therefore 2) would it be better to simply adopt the tunic/hair recolouring from Revolutions as the SLX default for athletes in general?

This would solve the issue some people are having with SLX's "darker blue" athlete tunic colour. I've never particularly liked the green/blue swap from L2; the idea of a more unique athlete-specific recolouring seems much better, and we can certainly look to Revolutions' Swimmer recolouring for inspiration.

Please do speak up now if you have anything to add. I don't really want to poll this, I'd rather encourage people to get involved in the discussion.

23
This is another one to cross off the list, tbh. It's an interesting idea, but ultimately not one that warrants the effort it would take to implement.

Make no mistake about it: inverted gravity is something that would be extremely difficult to crowbar into a codebase as dense and complex as NL/SLX's already is. It would have been far easier if it were a consideration from the very beginning,* but as this has never been a feature in NL, it's not even as if I can pore over old code to see how it might be done.

Anyways, we can already create tunnels and bridges in all directions thanks to the Ladderer and Laserer (not to mention the upcoming Propeller, which is still very likely to go ahead), and we already have plenty of unchartered territory to be exploring in SLX as it is!

*Speaking of which, tan_x_dx's WIP engine features multi-gravity from what I've seen, so we may yet have a chance to play around with this idea anyway! :)

24
This one probably won't happen after all.

It's a fun idea, but after some exploration I found it to be not much more than a very problematic Jumper assigner. It's a recipe for bugs and doesn't seem to be worth the effort that it would take to implement and maintain, so I'm crossing this one off the list in order to concentrate on other features.

25
SuperLemmix Bugs & Suggestions / Re: [SUG] Collectibles
« on: March 20, 2024, 06:00:37 PM »
Much improved animation for the diamond:



Meanwhile, zombies deactivate collectibles (so, we have a use for that monochrome diamond after all!). This requires collectibles to have an additional graphic for the deactivated state, or at least some sort of animation handling when a collectible has been disabled by a zombie.

All that remains now is to decide what to do when all diamonds have been collected. Possible ideas:

:lemming: Activate invincibility mode for the lem that collects the final diamond
:lemming: Unlock a secret level
:lemming: Reveal an alternative exit (or, maybe the final diamond could become an exit)
:lemming: Set all skills to infinity-of-each (this would differ from the Infinite Skills hotkey in that it wouldn't activate "Infinite Skills mode", so player records would be saved and it would count as having solved the level)
:lemming: Clone all lemmings, or just the lemming that collects the final diamond (just riffing now)

Ideas welcome!

Collectibles will be available as of SLX 2.7 even if we haven't decided on what to do when all are collected. This can be something we decide later, even if the decision is ultimately to do nothing. Currently, we simply record that all diamonds have been collected - this is then shown in the level select, and on the preview screen. That may be sufficient, but it's worth discussing the possibility of an in-game reward whilst the feature is still very much in development.


26
SuperLemmix Bugs & Suggestions / Re: [SUG] Collectibles
« on: March 20, 2024, 06:20:10 AM »
Added the ability to customise collectibles per-style.

Each style now has an "icons" folder, into which can be placed the "panel_icons", "levelinfo_icons" and "talismans" image. Each of these now includes the new collectible (a blue diamond by default). Here's an example:

-/-/-/-

So, the left image features the default blue diamond, which will appear in the level select screen for any level featuring default lemmings. For lemminas, the diamond has been changed to pink.

Of course, for other styles, this icon can be changed to whatever the designer wants the collectible item to be in their style. Note that the icon will then also need to be changed for the "panel_icons" and "talismans" graphics as well, and placed into a folder called "icons" within the custom style folder.

For now, all styles with custom sprites have had the diamond added to "levelinfo_icons" (this includes Millas, Soniclems, and all Lemminas styles). This is to guarantee continuity when the default is released; it's then up to the style creator if they want to change it to something else from there.

27
Lemmings Main / Re: DOS Game Club on Lemmings 1: Want to join?
« on: March 20, 2024, 02:03:05 AM »
I could potentially do this. I'll have to make sure I'm definitely available (which will mean asking people who are currently asleep about weekend plans/arrangements!) - I'll get back to you on this.

28
It looks strange to test the nuke in two different lines of this expression

To be fair, in one line we're testing for (true or something else), and in the other line we're testing for (false and not something else). So, they are absolutely two different conditions, good work! :P

Replace: and (LemmingsToSpawn = 0)
with this: and ((LemmingsToSpawn = 0) or UserSetNuking)

Tried this - the result is that the game freezes when it gets to the end of the nuke animation...

Better, but ideally we always want the game to exit to postview in the event of a nuke, regardless of the option. So, we need to factor this in to the two options that sometimes (or always) won't end gameplay. The following chunk fixes the issue and maintains most of your refactoring. If you can see a way to reduce the presence of "UserSetNuking" further, I'm all for it! In the meantime, this revision and the attached .exe seem to be working exactly as we want:

Code: [Select]
function TLemmingGame.StateIsUnplayable: Boolean;
begin
  Result := (LemmingsOut = 0)
            and ((LemmingsToSpawn = 0) or UserSetNuking)
            and (DelayEndFrames = 0)
            and (fParticleFinishTimer = 0)
            and not (UserSetNuking and CheckIfZombiesRemain);
end;

function TLemmingGame.ShouldWeExitBecauseOfOptions: Boolean;
begin
  Result := False;

  if not StateIsUnplayable then
    Exit;

  if GameParams.AlwaysEndGameplay then
  begin
    Result := True;
    Exit;
  end;

  if GameParams.EndIfLevelPassed then
  begin
    Result := (LemmingsIn >= Level.Info.RescueCount) or UserSetNuking;
    Exit;
  end;

  if GameParams.NeverEndGameplay then
  begin
    Result := UserSetNuking;
    Exit;
  end;
end;

procedure TLemmingGame.MaybeExitToPostview;
begin
  if fGameFinished then
    Exit;
   
  if ShouldWeExitBecauseOfOptions then
    Finish(GM_FIN_LEMMINGS);
end;

Let me know if you find any issues. From some quick testing, this seems to be the one. I've pushed the commit (820872bcb)

I'll look into some catchier names for these methods as well ;P

29
SuperLemmix / Re: A SuperLemmix levelpack?
« on: March 20, 2024, 01:34:11 AM »
As SLX dev, I heartily encourage this project. Count me in :thumbsup:

30
@Simon - thanks for the code snippets, I gave them a try and could only find 1 issue:

In a level with >1 active lem and 1 unavoidable zombie, nuking with >0 active lems lets the nuke countdown and animation play out in full even after the active lem(s) become zombies - this is good. However, once the ParticleTimer is at 0 (so, all debris is finished), the game doesn't exit to postview. It also doesn't freeze or show the minimap message, it just continues updating.

The most recent commit is the only version that fully works (so far, with minimal testing); I've attached a compiled .exe of this version. I'm sure that some of the simplifications to the code that you've suggested can be made, we'll just have to be careful not to accidentally omit something - or, make sure we factor everything in to the simplifications.

Hope this helps. Speak tomorrow, WL :lemcat:

Pages: 1 [2] 3 4 ... 225