Menu

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.

Show posts Menu

Messages - Simon

#3151
Quoteoffer 1 sec and 1 frame backwards skips, and 1 frame and 10 sec forwards skips.

These values assume performant framestepping. We assign a long miner, realize that it's misplaced, and have to backtrack 1 minute. We would like to hold down the 1-second-back to undo the miner within a few seconds at most. The first tap goes goes back exactly once, and key helds, after a while, go back repeatedly, quickly.

If back-framestepping is expensive, other values may be more appropriate, like 15 seconds back and 1 frame back.

Quote
QuoteTiming the bombers is a skill lemmings players should have.
Alright rant mode activated :devil: No option!



-- Simon
#3152
Lix Main / Re: Terrain composition
May 15, 2016, 07:21:19 PM
Quote from: geoo on May 08, 2016, 09:17:38 PM
Input: An ordered list of terrain pieces, optionally with black terrain or no-overwrite flag.
Output: Definitions of composite terrain pieces, and an ordered list of (composite) terrain pieces (free from black or no-overwrite pieces) to be drawn from back to front.
We read the input list in order. At any given time, the current output O is an ordered list of (composite) terrain pieces. Three cases, depending on the next piece T in the input list:
  • T is normal terrain: append T to O.
  • T is no-overwrite terrain: prepend T to O. (Note: This works because O contains no black/no-overwrite pieces.)
  • T is black terrain: Initially, define S as the set of tiles in O that T overlaps. While there exists a tile T' in O\S such that there are tiles F and B in S with F overlapping T' and T' overlapping B, add T' to S. While there exists a sequence of tiles T1 -> T2 -> ... -> Tn in O\S such that there are tiles F and B in S with F -> T1 and Tn -> B, add T1, ..., Tn to S. Here -> denotes the overlapping relation. Group the tiles in S into a new tile N, and remove S and T from O. Let F be the tile with the lowest index overlapping N, and let B the tile with the highest index that is overlapped by N. Add N to O somewhere between B and F. (The following is Nepster's idea, with a slight fix:) Define a set S+ of all terrain pieces of O\S that are reachable via -> from S (i.e. via a sequence for forward edges). Then reindex them starting from max(S), while keeping their order. Put N in the list right before S+, and delete T and S from O.

Implementation notes:

  • If we want to allow composing steel and normal tiles, you'll have to remember the mask of each composite tile with bits for solidity and steel.
  • If a level does not contain no-overwrite pieces, no conversion is necessary.
  • Multiple consecutive black pieces can be processed in step, resulting in only one grouping. Black pieces that are not overlapped by anything else can just be added to the end of the list without grouping.
  • While processing terrain pieces, you could maintain a directed graph modeling the overlap relation within O. As a new piece is added to O, the graph needs to be updated. When a grouped tile is added (and thus some pieces deleted from O), I think the edges pointing to the new tile can be inferred from the edges belonging to the deleted vertices.

I am convinced that this algorithm is correct. I call this algorithm the main pass. I remain concerned about the greediness in allocating new tiles. Here are refinements that make the algorithm more complex, but less greedy.

  • The output list O will contain both black and normal pieces. It won't contain no-overwrite pieces.
  • Before the main pass, we run through the input list, classifying each black piece T as dangerous (= overlaps at least one no-overwrite piece T' that would be drawn later than T, i.e., the main pass will process first T, then T') or as peaceful (= not dangerous). This classification remains constant per black piece, even though we later turn no-overwrite pieces into yes-overwrite.
  • During the main pass, on encountering a dangerous black piece, we handle it like geoo's main pass, as quoted above in this post.
  • During the main pass, on encountering a peaceful black piece T, we keep T black, and append T to O.
  • During the main pass, on encountering a no-overwrite piece T, we handle it like geoo's main pass: Make T yes-overwrite, then prepend T to the output list O. That's correct: Even though O may contain black pieces, prepending as yes-overwrite works because none of these black pieces overlap T.
-- Simon
#3153
Thanks.

Pure liking doesn't convince me, but I respect it. You've maintained these sets for long now, and have developed a feel for them.

-- Simon
#3154
I applaud such a quick reaction, and the more different tiles, the merrier.

But haven't understood the issue. At least 4 people have not expected the window as solid. Even with set v1.5, Level designers can still use the windowed tile, and get unexpected holes. Adding more tiles is not a fix.

"Would affect replays" seems to be a weak counter-argument here: You have fixed updraft trigger areas, even though they affect physics.  Nothing relies on the unexpected hole in the medieval window, therefore I estimate a similarly miniscule chance of replay breakage.

Why not fix the tile? E.g., by my making the window dark-brown or dark-grey?

-- Simon
#3155
Quote from: Minim on May 10, 2016, 05:35:29 AM
my number of posts is almost equal to that to Simon's, I'm thinking of doing a comparison of activity over the years between the two.

I'm flattered! Please share some amusing findings.

Of my 1,450 posts, 580 are younger than a year. >_>

-- Simon
#3156
Site Discussion / Re: Trouble making a large post
May 12, 2016, 05:08:39 AM
"the site" == Lemmingsforums? Most people upload their packs to a third-party server, and then post a link.

namida recommends to ship the music separately. Reasoning: When the levels update, people shouldn't have to re-download the entire music.

IchoTolot offers his pack in two variants: A zip archive containing both the levels and the music pack, recommended for the first download, and the standalone level pack, so people can update later. Icho explains how the music is really important for the mood, and aims for a perfect first experience.

-- Simon
#3157
Tech & Research / Re: L2 assignment debunked
May 12, 2016, 03:49:36 AM
You can assign flamethrower to lem #1 instead of to lem #0. This reorders lemmings as follows:
#0 stuns before steam, arrives first at the bombing pit nonetheless.
#1 stuns before steam, but has delayed the trampoline for #2, thus arrives in the pit after #2.
#2 doesn't stun at the steam and is fast enough to overtake #1, but not #0.

This gives #0 a small headstart to the bombing pit, yet I can't assign bomber to lem #0 in time. and I can assign right after #0 standing up. o_O Now I'm confused what I have tried before. I have often given flamethrower to #1 instead of to #0.

When flamethrowing with #0, I have never paid attention to your reordering of #1 and #0, thanks for this. I believe this is a satisfying explanation: Flamethrow with #0, then #1 overtakes, but #1 can't be assigned in time because #0 follows as a stunner. Flamethrow with #1 instead, then you can assign to #0 immediately, but too many lems have clustered in the bombing pit to save more than 58.

And lol: I knew L2 always assigns to first lem 5 years ago, I must have forgotten so many details.




There is a 100-% route for Sports 1 by framestepping. Pausing at certain times disables the tennis ball for a frame. You have to write a robot that pauses every frame for you.

I'm onto an easier 100-% route: It's possible to bypass the tennis ball by fast-forwarding at a certain time, and keeping fast-forward running. This too can render the ball harmless until we switch to normal speed again. That's doable for humans, not only for robot programs.

Here's a repro for the harmless ball:

  • Start Sports 1, don't fast-forward or pause. Pausing throws off the tennis ball's rhythm.
  • While the first lemming is walking along the starting platform, press pause exactly once.
  • Compare your screen with my first screenshot below. Do they look exactly the same? The lemming is on the raised part of the white pipe, exactly 1 frame before the checkered square.
  • If yes, hit fast-forward to cancel the pause, and keep fast-forward running. Watch how the lemmings will all bypass the tennis ball.
  • If your screen looks different from mine, hit ESC to restart. Go back to step 1.
  • Until you bomb, you may pause as you wish, but must always unpause by activating fast-forward. Do not go to normal speed.
  • When you're in position to bomb, pause. Click bomb, pause immediately. Assign bomb, pause immediately. The tennis ball kills lemmings while we're assigning, but we reanimate all splatters with the bomb knockback. Splatters would only be deducted from the alive count after their animation.
  • Press fast-forward, and hope to catch harmless ball frames again. You must rely on luck here. If you are unlucky, press ESC to restart, and go back to step 1.


And there is the 60/60 route. This is a min-skill route at 3 skills, we have 1 flamethrower left.



-- Simon
#3158
Tech & Research / Re: L2 assignment debunked
May 12, 2016, 02:23:58 AM
Awesome science by Leo and LemSteven, thanks!

I've tried more skills besides digger. Every worker has a huge selection box that extends far to the left. This appears to be independent of the worker's direction. Even slim workers, such as a bazooker in its beginning frames, have the wide selection box. Stunners too have the wide selection box.

I can't interpret the inability to select lemming #0 in Sports 1, who is a walker, when there are younger stunners covering lemming #0. L2 doesn't prefer the oldest lemming under all circumstances.

Bad assignment is only in Dos and related ports? More fuel to treat the Amiga version as the one true L2. ;-)

-- Simon
#3159
Lovely ideas.

Spoiler
First level:
- Solves with 2 skills. Backroute or intended?

Locker Room:
- First builder must be pixel-perfect, otherwise it turns.
- I have 1 leftover builder, looks like backroute?

Everybody Cavelem:
- Hidden trap! That throws off my mental pathfinding. I frameskip ahead, the lem is missing for no reason, I don't know where it died. Make all traps visible.
- Left-hand starting platform has no bumpy deco terrain at underside, instead it looks cut-off.

Mining under Sun:
- Lovely solution!
- Unnecessary time limit. What backroute does it prevent? Time runs out before 50 lems spawn at RR 1, need to raise RR at end for no reason. I didn't raise RR, mashed frameskip, exited the application, and didn't see the winning replay. Had to re-implement the solution.
- First miner must be pixel-precise. Upside is, this precision induces the good overlap of the two climbers.

-- Simon
#3160
BitBucket: https://bitbucket.org/namida42/neolemmixplayer/issues/26/crashes-on-replay-saving-in-certain



Repro:

  • Put the nxp file in ~/softw/win/neolem/nepsterlems/packs/
  • Put the NL exe in ~/softw/win/neolem/nepsterlems/
  • Be in the exe's directory
  • Start the pack with wine NeoLemmix.exe ./packs/seb-1.00.nxp
  • Win the first level
Instead of showing the results screen, game shows the above error, then exits after I click OK.

The bug doesn't manifest when I do either one of these:

  • Go into the pack's dir, run the game with wine ../NeoLemmix.exe seb-1.00.nxp
  • Move the pack into the exe's dir, run with wine NeoLemmix.exe seb-1.00.nxp
On Windows, when you drag a file from a different dir on an executable, what is the working directory?

[05:50] <SimonN> it is the build without the fading
[05:50] <SimonN> let me check version
[05:50] <SimonN> 1.44
[05:50] <namida42> the no fading build is based off V1.43n-F

-- Simon
#3161
Tech & Research / Re: L2 assignment debunked
May 09, 2016, 12:10:07 AM
Five years ago, conventional wisdom was that DOS L2 loses 4 lems: 2 in Ceci n'est pas une pipe, 1 in Snowed In, and 1 in Magnificent Severn. If you have a solution for 59/60 without pause-flickering, I'd love to see it.

Agree how there are many different ways to implement precise assignments, including the highlight.

-- Simon
#3162
Lix Main / Re: Terrain composition
May 08, 2016, 10:05:12 PM
Excellent read. I'm intrigued because the magic happens with black pieces, not with no-overwrite pieces. A worthy stab at a difficult problem!

Here's another problem case, unrelated to Nepster's problem.



The resulting group must be all of 0, 1, 2, 3, and the black tile on top. This may easily blow up to large parts of a level.

If we exchange the z-order of pieces 1 and 2, the group becomes smaller, only encompassing tiles 0, 3, and the black tile. Do we want huge tiles? Or do we have to bring additional expensive re-ordering algorithms to the table, to minimize the size of the groups? Or am I overestimating the impact of this problem?

-- Simon
#3163
Tech & Research / L2 assignment debunked
May 08, 2016, 08:52:07 PM
Hi,

DMA released Lemmings 2 in 1992. For 24 years now, the assignment priority has tormented L2 players: You have a cluster of lemmings in a digger pit. You would like to assign to the digger among the walkers. But instead, the game assigns to a walker.

Challenge: Save 40/60 lemmings in Two's Company, Egyptian 1, using at most 3 skills.

Solution: Merge the two hatches at the top with a basher (skill 1). With a right-facing lemming, dig down the right-hand side of the column (skill 2). One pixel before breakthrough to the bottom, assign the to the digger a fencer. He will fence through both remaining pillars in a single go.



Trick: Assign precisely to the digger in a crowded digger pit! Here's how to do it.



Incoming...



Naive attempt: Hover the mouse cursor right on the digger in the pit. A sensible game would recognize this obvious desire to assign to the digger, right?



Nope, L2 thinks you'd love to assign to walker here. The digger keeps digging happily. The solution attempt is flunked.



The correct method is to move the cursor as far away to the left from the digger as possible. If we move the cursor farther than this, it would close. This alludes to the blinking cursor trick in L1, to select right-facing walkers. If the digger were alone in the pit, I don't believe the mouse would even open here!



This is guaranteed to select the digger. Try it!

I can't reproduce this with the cursor at the right instead of at the left. Maybe it depends on the direction of the digger. Maybe you have to offset towards the left independently of the digger's direction.

Don't let the assignment priority play tricks on you. Instead, you should perform tricks with assignment priority!

Not applicable to Sports 1: If your worker enjoys the company of stunners instead of walkers, you can't profit form this research. The stunners eat the click and don't delegate the click to the worker. You can't save more than 58 in Ceci n'est pas une pipe, Sports 1, with assignment research only.

-- Simon
#3164
Lix Main / Re: D Lix 0.3.4, the big picture
May 08, 2016, 01:58:05 PM
Hmm, the wheel looks like the brightness symbol, good awareness. The wheel above is GEAR (U+2699) ⚙ in Misc. Symbols.

Alternatives are FISHEYE (U+25C9) ◉ or BULLSEYE (U+25CE) ◎, or simple solid or hollow circles. List of symbols that my font implements.

We can go back to meaningful words: I like namida's proposal "RClick", "MClick" for the mouse buttons. That inspires "Wheel↑" or "↑Wheel" or "UWheel", "DWheel".

Edit: geoo has designed new glyphs for mouse input:



-- Simon
#3165
Lix Main / Re: D Lix 0.3.4, the big picture
May 08, 2016, 03:14:22 AM


0.3.4 uploaded. You can bind pause to the middle mouse button, for easier reach. Zoom in and out with the mouse wheel. Or map other important stuff on the wheel directions.

Do you have strong feelings for missing comfort features? Keep suggestions coming. Otherwise, I'll continue with the missing editor dialogs.

-- Simon