NeoLemmix version of "Copycat Lemmings"

Started by namida, February 17, 2015, 12:56:45 PM

Previous topic - Next topic

0 Members and 2 Guests are viewing this topic.

namida

That should be fine (although some people might find use for it if you were to release it). I plan to play through this pack properly soon, to see if I can notice any issues - but I think most things have been ironed out by now! :D And if that's the case, it's probably about time to fix the other issues that need to be done for the NeoLemmix update (which don't relate to Cheapo in any way), and put the update and tools out so that people can start converting any Cheapo content they see fit.

I'm not looking forward to getting the editor up to scratch for this, though... it'll need a major overhaul in some regards, but on the other hand, these things were long overdue even without taking Cheapo into account anyway.
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)

Wafflem

Quote from: namida on February 22, 2015, 07:44:02 AM
I'm not looking forward to getting the editor up to scratch for this, though... it'll need a major overhaul in some regards, but on the other hand, these things were long overdue even without taking Cheapo into account anyway.

What parts of the editor are you overhauling?
YouTube: www.tinyurl.com/YTWafflem
Twitch: www.twitch.tv/Wafflem467

Have level designer's block right now? Have some of my incomplete levels for LOTS of ideas!

namida

It's mostly behind-the-scenes stuff. However, it's very possible I may also finally get rid of the "Compile Styles" option (and just load styles directly). It won't be anything that'll make the editor harder to use.
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)

namida

#48
Okay, well it seems that there's no remaining major issues, so time to tackle some optimization issues. I'm attempting to write code that tries to recognize any terrain pieces in the level image that match ones from the graphic set, and thus blank out those parts of the image and use regular terrain pieces instead. This should considerably reduce the filesize.

For first attempt, it's only going to look for pieces in their normal orientation, but once I get it working, I'll attempt to identify flipped pieces as well. In many cases, particularly with rough-edged sets, this won't completely remove the need for a VGASPEC, but should cut down on how much of the level uses one, the result being most of the VGASPEC will be blank space, and therefore, a much smaller filesize. Of course, the tradeoff is that the conversion will be a lot slower.

EDIT: It's working well. Very slow performing, but functionally perfect. Without yet implementing any handling for flipped pieces, it already cuts the filesize nearly in half for Fun 5 (a straight-edged level); it isn't so effective on Fun 1 (a rough-edged level).


EDIT: I've made some minor optimizations that should speed it up, as well as working on adding support for flipped pieces (any combination of horizontal and vertical flipped states). I've also applied a (rather kludgy) fix that should prevent it repeatedly duplicating pieces with repetitive designs (such as the striped pillars in the Marble (aka "Pink") style), but rather cover them in as few pieces as possible. I'm no expert on image processing so there's only so much I can do, though ultimately, it should be good enough to work, even if it's not as optimal as potentially possible. In terms of speed, I can think of ways to further optimize it, but I'm going to worry about getting the current attempts to work first, then I can look at improving the speed.

Okay, after some further testing, adding support for flipped pieces definitely helps further. On the other hand, I also experimented with running more than one pass - the improvement it offers is negligable, especially compared to the extra time it takes (whereas a single pass isn't overly time consuming). Additionally, multiple passes seems to give minor oddities that don't appear with a single pass. So, I'm limiting the tool to single-pass only (for now anyway).
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)

namida

#49
Seems to be working well, so I'm running the first full-scale test run. From the first 10 levels of Fun alone, it's cut about 100KB off the total filesize.

Comparisons:

Level 1: 51KB > 49KB (3.9% reduction) [Dirt]
Level 2: 31KB > 17KB (45.2% reduction) [Pillar]
Level 3: 23KB > 8KB (65.2% reduction) [Fire]
Level 4: 108KB > 96KB (11.1% reduction) [Crystal]
Level 5: 71KB > 50KB (29.6% reduction) [Marble]
Level 6: 74KB > 69KB (6.8% reduction) [Dirt]
Level 7: 25KB > 18KB (28.0% reduction) [Pillar]
Level 8: 102KB > 90KB (11.8% reduction) [Crystal]
Level 9: 75KB > 55KB (26.7% reduction) [Marble]
Level 10: 129KB > 126KB (2.3% reduction) [Dirt]

Overall: 684KB > 573KB (16.2% reduction)

As you can see, the straight-edged tilesets benefit far more than the rough-edged ones, but all of them benefit at least a bit.

EDIT: For all of Fun; 1.66MB > 1.41MB (15.1% reduction)
This is including the LEVEL000.DAT file, which has increased in size by only 7KB.

Tricky: 1.46MB > 1.10MB (24.7% reduction)
Taxing: 1.31MB > 0.98MB (25.2% reduction)
Mayhem: 1.60MB > 1.07MB (35.6% reduction)

And in total, for the EXE:
8474KB > 7089KB (16.3% reduction)

While still very large, this is definitely an improvement! :) I'll test it out a bit myself before I upload anything.


EDIT: Goes without saying that there'd be some issues... xD Time to look into it...

EDIT: Looks like the issue is a very minor one, and solely in the LVL files, not the VGASPECs. It can be fixed with a simple adjustment to them, without the need to reprocess all the levels. I'm also doing some multi-pass test runs to see if this is what was causing the problem with multi-pass terrain building. (It's very plausible that it was, and running extra passes could potentially offer a huge improvement on some levels.)

EDIT: This was indeed the problem, or at least, a two-pass conversion comes out fine on the one level I tested it on (where I was noticing issues before). Time to try 4-pass conversions and a different level.

EDIT: All worked perfectly! There's some oddities in which exact pieces it uses for what purposes (which of course is invisible to the end player), but the resulting level is pixel-perfect to the directly-made-to-VGASPEC one at a much smaller filesize. :D And since multi-pass is working now, I'm running the conversions again with four passes rather than one; we'll see how much of a difference this makes. (The two levels I was using as primary test runs were Fun 1 and Fun 5; on the former 4-pass makes a noticable difference from 1-pass, while on the latter it's negligable - but 1-pass already does a lot on the latter.)
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)

Nepster

Could someone please check whether Mayhem 25 "Opposable Lemming" is solvable in the NeoLemmix version.
Everything else works perfectly fine now (using V6).

namida

Quote from: Nepster on February 23, 2015, 02:15:22 PM
Could someone please check whether Mayhem 25 "Opposable Lemming" is solvable in the NeoLemmix version.
Everything else works perfectly fine now (using V6).

Confirmed possible. :)
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)

namida

#52
So, trying with 4-pass, it doesn't seem to give much of an improvement in filesize on most levels, especially considering how much longer it takes to run (nearly 5 hours since I launched it; one rank is finished and two others are very close, while Mayhem has a fair way to go).

Relative to 1-pass:

Fun: 1.41MB > 1.37MB (2.8% reduction)
Tricky: 1.10MB > 1.07MB (2.7% reduction)
Taxing: 0.98MB > 0.94MB (4.1% reduction)
Mayhem: 1.07MB > 1.00MB (6.5% reduction)

Overall reduction on the EXE was only about 150KB. :(

However - it's also very possible this is due to subtle differences between the Copycat and Cheapo graphic sets (something as simple as a terrain piece having one pixel that's off just by a slight amount in just one of the RGB values could make the program not detect the piece in the level image); indeed I've noticed some pieces not being detected when I can see very little reason why they wouldn't be, or some levels having leftover pieces in the 3rd or 4th runs where from a quick look at the level map I'd've expected it to pick up everything on the first pass. I'll do some test runs with true Cheapo levels at some point and see how the results look there.
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)

Essman

On Fun 1, the lemmings get stuck in the bottom left corner because they won't fall off the screen walking left. I think I had them walk off the screen and die in the clones. Not 100% sure though.

Anyway, I wonder if I can still beat my own levels. It would be funny to record myself playing the levels (just need the time).

namida

#54
Meh, fell asleep waiting for Mayhem to finish. It's done now, and I'm about to build and test a player with the results. It's not looking like it's going to cut a very large amount off the filesize though; 1-pass seems to be the limit of what's beneficial here.

Essman: If I remember correctly that is indeed how Cheapo performed; DOS also does that on the right (but not on the left, which just acts as a wall). Virtually every clone acts differently with regards to the sides of the levels (eg: SuperLemmini treats them as walls with somewhat unique properties; whereas NeoLemmix just treats them as steel walls); however, unless there's a level where this actually makes a difference, I'm not going to change it (to keep things simple, and keep NeoLemmix fairly consistent).
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)

namida

NeoLemmix V1.29n has now been released, and with it, a proper (non "attempt beta") release of Copycat Lemmings NeoLemmix version. I've updated the links in the first post to reflect this; there's also now a neolemmix.com link as well as a DropBox one.

There's no difference between this and the previous attempt version, except a smaller filesize by about 1.5MB, and that it now says "Levels V1n  Player V1.29n" instead of "Attempt 6" for the version number on the title screen's scroller. So, unless you're wanting to look for any issues in it (which I haven't noticed any), there's probably no major need to update.

EDIT: Actually, I can think of two reasons - the update now allows you to view your lemmings saved / time / score records for each level, and if you're using Forced Gimmick options, the bug where that would turn off "Cheapo Mode" is now fixed.
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)


namida

I doubt Essman intends to make any more levels anytime soon (not that I'd complain; he definitely has some neat levels so far!), considering that Copycat Lemmings is over 15 years old now. So, unless someone else makes it... but then, "Copycat Lemmings" is kinda his pack name, just like "Lemmings Plus" is mine or "cLemmings" is exit's.
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)

Essman

Quote from: Giga on February 24, 2015, 11:54:50 PM
I wonder if there could be a Oh no more copycat lemmings

Well... maybe. I sure hope so. After all these years I haven't lost interest in lemmings (although I don't play much anymore, mostly read and watch videos) and I haven't lost interest in writing a new better clone game. It would take a while, but maybe..  :)

namida

#59
We had a recent discussion about the possibility of new clones, and the general consensus was summed up nicely by an XKCD comic about standards... still, if you can see a space that no existing clone fills (nor is willing to fill) it may be worthwile. :) (it also has to be considered that this topic involved someone saying "hey, I have these wonderful ideas, you should all make them", not "I'm going to make this...", so there is that difference)

But whether it's on a new engine, or a currently-existing one, I'd definitely love to see more levels from you! :)
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)