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
Forum Games / Re: Zendo, play by forum
May 16, 2016, 10:07:08 PM
GATE
MAGE
MATE
PASBAP
BONONO

-- Simon
#3152
Icho has nailed it with the golden rule. :thumbsup:

Reasoning: The target info is designed to do two things at once, but it can only do one thing.

  • Show what lemming is prioritized.
  • Show permanents of lemmings with the highest number of permanents.
The priority is important on every assignment. NL has no other way to highlight who will get assigned.

On the other hand, NL recolors non-plain lemmings. To profit from the permanents check, you need a mix of different athletes, mingled with plain lemmings. This is rare.

QuoteThe exploder would be assigned to the plain walker, because it is usually better to keep the powerful athlete.

This is tricky. It reeks like computer wants to be smarter than the user. I deem this a case for priority invert.

But it's not clear-cut: geoo has requested and since uses a Lix option, preferring batter assignments to walkers over batter assignments to timed exploders. I don't use this option.

-- Simon
#3153
Lix Main / Re: D Lix 0.3.4, the big picture
May 16, 2016, 12:05:23 AM
Small-scale roadmap before we'll have the next broad test, and might migrate from C++ Lix for singleplayer:

  • Allow manual screen start: Use it in the game, and set it in the editor. I don't want D Lix to stomp over carefully-set manual screen starts from previous versions.
  • Implement save and save-as in the editor. Make a browser with filename entry. Done in 0.3.7.
  • Support grouping of tiles instead of no-overwrite, to create cut-off tiles the level editor. Done in 0.4.2.
  • Design and implement the no-overwrite conversion algorithm. Done in 0.4.3.
There are some bugs, but none of them are progress-blockers. In this light, I'd like to push the above features, and care about the bugs later. Bugfixes are only meaningful in released software. :-)

This small-scale roadmap comprises step 2 from the large-scale roadmap.

-- Simon
#3154
Lix Main / Re: Terrain composition
May 15, 2016, 08:52:58 PM
Definition: The main pass is all of geoo's algo that I quoted. It is not the sub-algorithm that triggers on encountering a black piece T in the input list.

My algo does a classification, then a modified main pass. The main pass has a complicated path-finding method for handling black pieces. I'd like to reduce how often we call the black-piece-handling method.

At a glance, you introduce a completely new viewpoint: You assert that I shift the work from black pieces to no-overwrite pieces. I didn't look at it that way, but maybe it's an equivalent formulation? I'll shower first, then re-read your post. I will answer later again.

Overlap can mean one of these: a) selection boxes overlap, b) on the game map, the earlier tile shares a to-be-colored pixel with the later tile, c) shares a pixel on the map and no pieces in-between share that pixel. I wrote the algo refinement delilberately agnostic of a), b), c), so either will work.

-- Simon
#3155
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
#3156
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
#3157
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
#3158
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
#3159
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
#3160
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
#3161
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
#3162
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
#3163
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
#3164
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
#3165
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