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.

Topics - Simon

Pages: [1] 2 3 ... 15
Lix Multiplayer Dates / Lix Campfire, Sun, Sep 25th, 16:00 UTC
« on: September 24, 2022, 01:16:48 AM »

this Sunday will be too short a notice for an organized multiplayer Lix session. Instead, let's meet on Mumble for a loose discussion, without playing. I'll call it a campfire discussion.

Possible topics to discuss:
  • Physics on 0.10,
  • user interface for handicap,
  • neutral Lix, experimental physics to try in December,
  • really long-term concerns, e.g., level maintenance N years after an author leaves,
  • general Lemmings culture,
  • ...anything you like. Bring your own topics!
This Sunday, September 25th, I'll sit in Mumble from 16:00 UTC onwards. Join me anytime on Mumble voicechat, very much like you would for a Lix session. (If you don't know my server, send me a private message on the forum here, I'll tell you.)

-- Simon

Lix Multiplayer Dates / Lix Multiplayer Sun, 16th, 16:00 UTC
« on: September 24, 2022, 12:40:31 AM »

this is the next suitable weekend that suits both Flopsy and me: Saturday or Sunday, October 15th or 16th.

I can play either Saturday or Sunday. What's everybody else's preferred day for that weekend? I recommend to start again at 16:00 UTC, you can join later.

There's a chance that Lix 0.10.0 is released by then. But I'll play it safe and say that we'll be using Lix 0.9.x one more time for this session. (Current is 0.9.47, but any 0.9.x will do.) I'm still aiming to release 0.10.0 before November 2022.

-- Simon


On Saturdays or Sundays, what would be the best time of day for you to start a Lix session? Sessions usually run for 2-4 hours after this starting time.

Rampoina suggested: Our current time of 17:00 UTC (European evening) was suitable for him, but he prefers an earlier time of day, possibly right in the middle of European afternoon. For me, it's fine to play in the afternoon instead of the evening, but maybe the afternoon won't work for others?

The poll offers only the hours possible for myself. Happily complain in a post if sometime else is even better.

-- Simon

Lix Main / Handicap in Multiplayer
« on: May 16, 2022, 06:48:08 PM »

(This has github issue #391: Handicaps in Multiplayer.)

If you're a brand-new player at golf, go, or chess, it's already an achievement when you beat a strong opponent at queen odds, or at nine stones, or at three more strokes per hole. Next time, can you do it at rook odds? You can easily see your personal progress in how the handicap shrinks over time. I'd like to have this in Lix.

Per game: In Lix's networking lobby, I'd like to offer handicap options next to the color picker. Between games, you can adjust the handicap. The default is no handicap for either side.

Choosing a handicap puts you at a disadvantage. The stronger side should handicap itself and thus start with a weaker position. I'd like the new player to start with the level's normal, unhandicapped-but-also-unimproved position; this makes it easier for him to learn how the map usually plays. Also, as I wrote in 2017: A strong player with 50 lix can beat a novice with 500, but a strong player with 5 lix must play enourmously well to beat a novice with 50 on a map with batters.

In IRC, geoo and I have considered some types of handicap.

Divisor handicap: You pick a number ≥ 1. Your initial number of lix is divided by it, and every skill count in your panel is divided by it. Options for divisor handicap could be 1 (= no handicap), 1.2, 1.5, 2, 3.3, 5, 7, and 10.

We'll always round up non-integer results. If the map gives 2 builders, you'll start with 2 builders at handicap 1.2 or 1.5, and you'll start with 1 builder at any bigger handicap.

Previously, I've expressed this as a multiplier handicap, and values were 100% (= no handicap), 70%, 50%, ..., but this design has a downside: Lower numbers mean stronger handicaps. It's nice when higher numbers mean stronger handicaps, to avoid confusion when people say "high handicap" or "you can lower it".

If you're in a team, the team's total divisor handicap can be the average of the team's players. Should "average" be the arithmetic mean or the harmonic mean? I'll have to ponder, and Proxima will be happy. Harmonic makes sense because it's a divisor handicap.

Delay handicap. You pick a number of seconds ≥ 0. Your first lix spawns later than other players' first lix, at this delay. Afterwards, your remaining lix continue to spawn at the normal spawn interval after each previous lix. Options for delay handicap could be 0, 5, 10, 20, 30 seconds. Anything more than 30 seconds is probably too boring for the experienced player.

Again, if you're in a team, the team's total delay is the average of the individual player's delay.

Asymmetric levels. If you choose a divisor and/or delay handicap, you always start in the first seat, and other players are randomly distributed amongst the remaining seats. This doesn't matter in a symmetric level, but if the author wants to build an asymmetric map, the author can put the seat-to-be-disadvantaged always in the first position. As long as we have any kind of handicap option, or even just a checkbox, we can add this seating rule at little exta UI cost in the lobby dialog -- it needs an explanation, but no extra pickers.

Level-specific handicap. Instead of offering concrete values to pick, you merely have a checkbox: Do you want to be handicapped or not? Or you have a choice of handicap strengths; which handicap strength do you want? It's the task of the level author to define the handicap in terms of delays or divisors or seats.

The downside of such level-specific handicap is that most authors won't bother to define handicaps for their levels. The few levels that have author-defined handicaps won't be consistent, e.g., you can play at strength 1 on this map, but it's hard to win against strength 3 on that other map. If it's not consistent anyway, I feel it's better to just offer concrete values, and let the players pick.


-- Simon

Lix Main / High-level two-player replays
« on: April 02, 2022, 07:03:30 PM »

Rampoina asked on IRC: Are there replays of two-player Lix games between strong players? How can we learn more about multiplayer strategy?

I've attached two replays:
  • Stepping Stones 2v2. It shows a common principle in multiplayer: Higher and faster routes are better. Even though the purple team loses, pay attention to purple's initial relentless attacking of the orange bunch. The orange bunch is weakest while the top route is nearly prepared, but not completely done, and the bunch hasn't yet ascended to the top level.
  • A close and eventually drawn endgame at the bottom of the towers: Both geoo and I want to fight for a win in a drawn position. This shows micromanagement of single lixes that have to attack a bunched enemy crowd.
To watch replays:
  • Either put them into your replay directory, then navigate there from Lix's replay browser.
  • Or, on Windows, drag them on the Lix icon.
  • Or, on all OSes, run Lix with the replay filename as a command-line argument.
Ah, if you watch these replays: Lix versions since mid-2021 have a bug: Lix will re-save a watched multiplayer replay, even though you haven't changed it. This is a regression of the new end-of-game dialog. I'll fix this in the next version, 0.9.44.

-- Simon

Lix Main / Differences between D debug and release builds
« on: March 28, 2022, 06:02:06 PM »

things that I told Dullstar in voicechat about the March 27 sporadic client-side crash.

Debug buildRelease build
in/out contractcompilednot compiled
array bounds checkThrows Error if outsidememory-unsafe access
(I could enable bounds check)
enforce(x)Throws Exception if not xThrows Exception if not x
assert(x)Throws Error if not xnot compiled
assert(false)Throws Error if not xhalts the application, e.g., segfault

You're supposed to catch Exception but not Error. I still catch both in the main loop, log them, then re-throw them to terminate the application.

assert(x) with a value x only known at runtime: In D, this is deliberately different than assert(false) or assert(0) with a statically known false value. assert(false) marks code that you shouldn't reach. (I'm not sure if the compiler is also allowed to optimize on this assumption in release builds.)

-- Simon

Lix Multiplayer Dates / Lix Multiplayer Sun, April 3rd, 17:00 UTC
« on: March 28, 2022, 06:11:46 AM »

let's test and play more! April 3rd, starting 17:00 UTC, let's play more Lix. Any 0.9.x will do, 0.9.42 is the newest, but they're all good.

I'll run an experimental server again as the central server.

Dullstar and I will connect with debugging builds. Either the session will go fine without problems whatsoever, or we get a chance to catch the sporadic March 27 client-side crash.

(Outside these sessions where I can closely watch, I'll run the ancient 0.9.20 server as the central server. That 0.9.20 server hasn't made 0.9.x clients crash in many years; it should also be practically identical to a server built from the 0.9.42 codebase.)

-- Simon

Lix Multiplayer Dates / Lix Multiplayer Sun, March 27th, 17:00 UTC
« on: March 24, 2022, 10:19:27 PM »

who's up for Lix multiplayer this Sunday, March 27th, starting 17:00 UTC?

(Mind daylight savings. In Germany, 17:00 UTC will be 19:00 local time.)

I've been a busy mole, I've pushed lots of earth deep inside the server. The goal is to support both 0.9.x and the future 0.10.x on the same server, in different rooms. Let's test if I broke anything. For this Sunday's session, I'll run the reworked server as the central server. Ideally, you won't notice anything at all. :lix-grin:

For you, everything is as usual:
  • No need to update Lix. 0.9.42 is the most recent, but any 0.9.x works.
  • In Lix: "Network game" -> "Play on the central server" -> "Okay".
-- Simon

Site Discussion / One SuperLemmini board for all 3 forks is still OK
« on: March 14, 2022, 06:39:29 PM »
WillLem and Charles are now moderators of the SuperLemmini board.

I stickied the build instructions for SuperLemminiToo.

Reworded SuperLemmini board's flavor text to name Lemmini, SuperLemmini, SuperLemminiToo.

In early 2022, most discussion there is about SLToo. If two of those forks become active at the same time, we can still split the board.

The downside of the un-split board, even if only one fork is active, is that you're inclined to pre-/postfix all your topic titles with the particular fork name. Hmm. Tell me if you want something different.

-- Simon

Site Discussion / Wrong escape: &amp instead of &
« on: February 16, 2022, 08:10:05 PM »

Lix Levels topic title:
Maps & insights from February 2022 session

Renders correctly in topic view.
Renders correctly in the list of 30 recent topics.
Renders incorrectly in board list that shows recent topic per board.
Renders incorrectly in last-post display in forum stats.

The wrong rendering is:
Maps &amp insights from Fe... on 2022-02-15, 20:01 UTC

Ampersand is wrongly escaped. Here is the raw HTML of that link in the recent-post line in the board list:

Code: [Select]
<p><strong>Last post</strong> by
<a href=";u=4">Simon</a>
<br> in
<a href=""
title="Maps &amp; insights from February 2022 session">
Maps &amp;amp insights from Fe...</a>
<br> on 2022-02-15, 20:01 UTC</p>

Within this HTML, we see:
Maps &amp;amp insights from Fe...

Expected instead in the HTML:
Maps &amp; insights from Fe...

Probably bug in the forum software. Is custom fix worth it? Is upstream report worth it? >_>

-- Simon

Lix Levels / Maps & insights from February 2022 session
« on: February 15, 2022, 08:01:27 PM »

Flopsy and Lana created several maps for our recent session in early February 2022. Please post them here, then I can include them in the next release. :lix-grin:

Flopsy: My Eyelids for Holes (4 players): You found that it's much easier going left than going right. Consider to move the exit further left to incentivize going right?

Insights about spreading the love from that session.

BadBlocker said: He loves 2-player Lemmings, but multiplayer Lix brings the interaction too quickly, contemporary map culture doesn't nail the essence of 2-player Lemmings for him. He suggests more route building in isolation before confrontation. He considers not joining every single session, but still to occasionally join.

I replied ad hoc: Yes, either we should split into fewer players, or wait for handicap (physics change) later in 2022.

In hindsight, the large sessions are the main events, and we had 4-8 players every time. This is much different from L1 2-player. It's conceivable to play more 2-team maps, where new players can focus on route building.

Maybe new players like multiplayer solitaire? I.e., maps with no/very little interaction. This is unpopular with the strong players, but if it's a way of onboarding... hmm.

Or warmly suggest 1v1 with either another new(ish) player. Or 1v1 against a strong player who plays at a handicap (later in 2022). I don't know how much handicaps will really help with the situation, we'll have to see. Links: Handicap on LF, #391 on github

(Also mantha16 can't get to grips with Lix, I'll ask in more detail tomorrow.)

-- Simon

Lix Main / 2022 Roadmap
« on: December 30, 2021, 10:37:15 PM »
2017 -- 2018 -- 2020 -- 2022


before the happy new year 2022, here is the Lix development roadmap for 2022. Thank you for all of your input at Slow additions or experimental fork!
  • Make the game server accept different minor versions. In a room, everybody should still have the same minor version. Users of the current minor version, 0.9, should still be able to connect to this server and see other 0.9 users. I need a flexible server anyway to support physics experimentation with our community, thus it's not that far a stretch to also make it 0.9-compatible.
  • Stabilize the physics changes that have been on the backburner since 2017, and release a stable 0.10.x with singleplayer fully proof-covered. 0.10 will not have neutral lix yet.
  • Offer an experimental version with neutral lix in multiplayer. It's okay if it takes until 2023 or later to merge anything like this into stable. It's probably okay to have a strange level format for neutral lix before neutral lix stabilize, but that's a separate concern, I'll think about it when the time comes.
  • Add HTTPS to Some reasons, also I want to learn it and is the obvious learning project, and the knowledge is remotely related to my day job.
-- Simon

Lix Main / Slow additions or experimental fork
« on: November 30, 2021, 06:12:09 AM »

here is some very-high-level strategy for the future of Lix: It's not the high-level 2022 roadmap, but even higher level.

How will I introduce breaking changes? I've been really conservative, I haven't changed the physics at all since 2017. Why is that? And how will the next 5 years look like?

Debian problem: Every 2 years, Debian, the linux distro, allows major software updates. We have a package with Lix 0.9.x in Debian, thanks to tarzeau. :lix-cool: Debian shuns non-bugfix patches in-between the releases, therefore Lix's physics updates will only land in the Debian Lix package every 2 years. The Lix game server (running on a machine that I rented, has nothing to do with Debian) accepts players from all operating systems, including Debian, but requires that everybody has the same minor version of Lix (either all have 0.9.xx, or all have 0.10.xx, ...). Therefore: If we change the physics in stable Lix releases more often, Debian players will not be able to play on the server. But I want them to be able to play.

The Debian problem is paramount in my Lix project planning. I want the Debianists to play. I don't want to lock them out of the server for over a year.

Therefore, I see two possible paths forward:

Careful addition:
  • Rework the existing server to accept players from different minor versions (0.9.xx, 0.10.xx, ...) and ensure that you only join rooms with same-version players. If this takes weeks to be nice, so be it.
  • Work on the existing problems one-at-a-time.
  • Introduce physics changes only when well-tested in singleplayer, and move all culture to the new stable. Ideally, create some unittests for physics.
  • Only extend the level format, don't replace it entirely.
  • Introduce neutral lix only after careful assession how they fit best into the existing level format.
Massive feature bloat:
  • Immediately split an experimental from stable, and run two multiplayer servers.
  • Add neutral lix, add unstable features, add new skills
  • possibly cut/change/merge skills to make room in hotkey layout
  • Change level format in whatever incompatible way I want.
  • Expect the stable and the experimental to be split for years.
The 5-year-old child in me wants to bloat 7 features and then cut 3 of them. I haven't done this in software for years. It's refreshing to make features without spending 90 % of the time on how to make it agree with the rest of the software. We can bloat dumb features and ditch them if they suck!

The software architect in me isn't so sure, warns that those 90 % will be spent anyway in the future, and wants more caffeine now. Also, I don't know if I have the free time for enough features that warrant a fork.

The community priest in me wants everybody under the same nice comfortable stable version, and no arguments that feature X will be cut in any experimental version. Debianists will always enjoy the same perks as those who run the hottest new stuff, because only highest-quality hot stuff leaves the factory in the first place.

-- Simon

Lix Main / Backroute-judging feature when saving replay?
« on: September 08, 2021, 08:28:53 PM »

There are days/weeks between creating the replay (during a longer play session) and submitting the replay. By then, I've forgotten my feelings for the replay.

On saving a manual replay, I want buttons for quick annotations:

I suspect that this is the intended solution.
I suspect that this is an acceptable alternative.
I suspect that this is a slight backroute.
I suspect that this is an egregious backroute. :lix-evil:
Add/remove/reorder quick annotation.

How do the powerful solvers in NL handle the problem of remembering feedback for later submission? You submit many replays in one post/PM. When you were playing, did you put feelings in your filenames to remind yourself? Do you re-watch replays before submitting them for accurate feedback?

For a Lix feature: Should we put the feeling in the filename or should we put it into the replay format?

Even autoreplay can get these annotations, but they're optional, you don't have to provide one.

The same feature would be for level authors instead of level players. The authors will put a final judgement in the format/filename, whereas players will put suspicions of what the author's judgement would be.

-- Simon

Ste Woz Ere designs Tribes of Steel (L2 pack WIP).

geoo and I want to blind-race the Highland tribe on livestream. I propose Friday, July 9, starting 17:00 UTC. I expect these streams to take 2-4 hours for one tribe. geoo, does this suit you, Fri Jul 9 17:00 UTC?

Simon's twitch page
geoo's twitch page changes every year.

-- Simon

Pages: [1] 2 3 ... 15