[WIP] L3DEdit: Lemmings 3D Level Editor - Development Topic

Started by namida, June 06, 2019, 06:28:08 AM

Previous topic - Next topic

0 Members and 2 Guests are viewing this topic.

namida

Here's an update that fixes a backroute, and enforces a trick that wasn't as required as I thought it was.

(I actually thought of - and subsequently fixed - another backroute, just seconds before I hit "post". That's why there was a bit of a delay between editing the previous message and posting this one.)

As a reminder, since we're on a new page of posts - download the "CD" version if you use CD audio, and the "midi" version if you use midi (or soundcard) music. The only difference between the two versions is a music-related setting.

This level will replace Fun 1, although I'd say difficulty-wise it'd fit into early to mid Mayhem.

Another backroute has been found, but I haven't got a fix ready yet. I'll update when I do. EDIT: Got it, see 2 posts down.
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

Back to talking about the editor - from developing Space Station, I'm starting to feel that mouse control is really awkward for this. I'm going to look at also implementing keyboard-based controls for block placement (mouse will be retained as a secondary option, but it's actually quite awkward so I'd rather not present it as the main option).
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

New copy of Space Station. See two posts above for more info.

EDIT: Also attached is a replay file you can use with L3DReplay to see the intended solution.
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)

ccexplore

Quote from: namida on June 14, 2019, 10:31:17 PMBack to talking about the editor - from developing Space Station, I'm starting to feel that mouse control is really awkward for this. I'm going to look at also implementing keyboard-based controls for block placement (mouse will be retained as a secondary option, but it's actually quite awkward so I'd rather not present it as the main option).

Still not yet having played the game, I gotta ask:  how was experience of mouse-selecting lemmings to assign skills to in the game itself?

I guess one main difference is with the editor and unlike the game, select is just the first step, you also need to then move the selected thing around freely in 3D, which definitely sounds better with keyboard control.

namida

L3D works on a block-based structure, so you'd edit it similar to a tilemap than a L1 level - so there's no moving things around per se.

In the actual game, it's not bad; on top of that, the game has a Highlight Lemming feature.
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)

ccexplore

Well I suppose you could start with only offering tilemap-based editing.  Keep in mind that L2 also actually uses a tilemap (at least for terrain), but imagine how painful it'd be to create custom levels there if you have to do it tile by tile.  At some point, the need will arise to at least be able to move a group of blocks together in order to tweak the position of something you've already created in the level.  Yes, all positions you move to must snap to the block grid, but you'd still want to be able to move the thing, rather than having to re-create it block by block in the new position.

Simon

Tilemaps (predefined clusters of the smallest possible blocks) are highly worthwhile. When geoo wrote Lix code to load L2 tilesets, first, he offered both the small blocks and the entire tilemaps. After consideration, we ditched the small blocks and only offered the tilemaps.

Probably more worthwhile in L3D to keep the small blocks in addition to the tilemaps.

-- Simon

ccexplore

Hmm, I didn't realize tilemaps imply clusters, I actually thought namida was saying his editor will (at least initially) only support editing the smallest possible blocks.  But maybe I misread what he said.

In thinking about other games like Chip's Challenge and Baba is You, I can actually envision still reasonably usable editors for those games that don't offer any move/cut/copy-paste features, so I can kind of see why namida may choose to fashion the L3D editor similarly at least on first iteration.  But I still think move/cut/copy-paste editor features (and predefined clusters if available) may be more needed for Lemmings games compared to those other games, given how one would construct terrain.

namida

Those kind of features are intended to be implemented eventually, but will most likely not be in the first release - it will indeed be on a block-by-block basis.

Due to the way Lemmings 3D works, predefined clusters also are not practical for it. First, just as some background info for anyone reading this - L3D does not work on a pixel-perfect basis like L1 or anything resembling that, but rather would be more comparable to the tile-based physics of the NES and GB versions. In terms of the elements relevant to the current discussion, a level is made up of 16384 blocks (32 x 16 x 32).

Lemmings 3D doesn't have tilesets, just texture sets - or more accurately, each level defines its own tileset, using one of about 30 texture sets (almost all styles have more than one texture set corresponding to them - Computer has the most, at 5, while Lemgo and Candy have the least, at one each). Each level has its own individual palette of up to 64 blocks - this palette defines the graphic of each face, as well as some physics properties such as whether the top side is slippery, water, or splat-resistant. (Some features are also controlled simply by the block's index in the palette. Block #0 is always an entrance, block #1 is always an exit, block #2 is always a splitter (or unused). The last special block, as far as I've been able to tell, is block #8, but I only know specifically at this point what #0, #1, #2 and #6 do.) I'll refer to these as the "metablocks", similar to what's done in L3DEdit's source code.

The shape (eg. it could be a slope, or even a corner where two slopes meet) is a property of the individual block instance, not the metablock. An instance of a block can, just like in-game physics, be divided into four vertical slices, though it is not possible to have middle slices missing - within a single block slot, all present slices must be consecutive. On the X and Z axes, the block acts as a single indivisible unit - a basher will only take out the bottom half of a block vertically, but each (equivalent of a) stroke takes out an entire block in the horizontal direction.

So it's quite possible to have predefined shapes made up of blocks, but it's a bit hard to have any reasonable way of predefining the actual blocks that go into it - except on the basis of this purely being a user-driven save / load arrangements feature.

And copy and paste should come first - not the least because saving and re-loading user-defined shapes is essentially just "advanced copy & paste".
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've now made the first public release of L3DEdit, so I've created a new topic and thus locked this one.

New topic: https://www.lemmingsforums.net/index.php?topic=4274.0
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)