Testers: crispweed (author), geoo, Simon, cobayeshimaru (presumably from crispweed's Discord group).
crispweed's game 0.0.4, received via PM.
Collection of loose ideas, to be split into topics when an idea gets traction.
Distribution:
- Please choose a name for your project! It's hard to call it "crispweed's game". geoo has begun to call it "client", you probably don't want that to stick. I put it into a directory "crisp", which is better but you should still consider if you want that to stick. If you choose a long name, people will abbreviate it. If you stay around and choose no name, I'll be tempted to call the game "Crisp", which isn't searchable, but it's clear at least to me.
- Sleep over whether you want to open-source it. There is no need to rush the decision.
- Store releases in a public place, then you don't have to upload it several times (e.g, as a PM attachment).
- My preferred way to get it would be either to fetch the source from a public git repository and build it myself, or to download binary releases from your public place.
- You told me in chat that you're fine with livestreaming (of such playtesting sessions) or with redistributing your binaries (e.g., for troubleshooting). That's helpful to know already.
Networking:
- It's smooth, there is no noticeable lag. I wasn't sure whether it's from a good lag-combatting algorithm or whether it's because we're all from Europe (France and Germany).
- Game freezes occasionally by design until all everybody's lag-spikes have clearerd. Felt fine, it hasn't been worrisome so far.
- There are two classic ways around the lag: Input delay (Starcraft, Clones) and recomputation of history (Lix). Clones's input delay became problematic when geoo and I in Germany played with the Clones devs in Canada. See me on Clones (https://forums.clonesgame.com/gameplay-help-f14/lag-t229.html#p1219) and geoo on Clones (https://forums.clonesgame.com/gameplay-help-f14/lag-t229.html#p1227): "in the current implementation, the lag affects the assigning player with every single assignment. With the alternative, it only affects the other player when he happens to be watching the morph assignment in this precise moment, poised to react, which is a less frequent occurrence." And L++ was the precursor of Lix.
- The Online Players tab miscounts players, you already know about that.
- Confusing screen after play: You have two lists, one for players who haven't returned from game to lobby, and another for players who have. It looks like half the players have dropped from the networking altogether. As long as player X is in the room, X should appear on the visible list.
Physics:
- The rectangles (lemmings) get stuck in seemingly-traversible terrain. We estimate that your walker ascension height is too strict. Consider: Lemmings-1 lemmings ascend 6 pixels, Lemmings-2-the-Tribes lemmings ascend 4 pixels. Lix ascend 12 pixels but in hi-res, it's equivalent to Lemmings-1 ascension. Clones was overly strict, see geoo's Lend a Helping Hand remix (https://www.lemmingsforums.net/index.php?msg=97652).
- Long tunnelling is expensive because bashers/diggers run out of power after X pixels, and need reassignment to continue. That can be desired or a design bug, you decide. As it is, we, as players, plan the route to tunnel where the terrain is thin.
- Reassignment is hard. Reassign too early, and you shorten your reach. Reassign too late, then the lemming will have turned, and you waste an entire skill and opportunity (you can't re-turn him forward). If you're sure about running out of power (like builders do in L1 after 12 bricks), consider shrugging.
- Builders don't hit their heads, only their feet. That's refreshingly lenient. Makes it easier to get out of nasty holes or nooks. I have a soft spot for your choice. The builder's head bonk in Lemmings 1 is the design oddity here, not your feet-only collision.
- Absolute time timit is a simple and clear way to end stalemates. I like it. I expect that there will be problems with it eventually, but everything else is more complicated.
- Allow resignation in matches between exactly 2 players/teams.
- Free-for-all games have no straightforward resignation without unbalancing play. That's a design problem for later.
- Avoid physics options. It makes level design hard when the level author can't control how his level will behave.
- Avoid pushing too many design choices to players. If you must, then also pick really good standards, so the players can still avoid design work. Usually for a given multiplayer level, there is one good set of options (how many diggers, what spawn interval, ...) and players will play that setting over and over.
UI:
- Please add hotkeys for skills, and make them remappable. geoo and I play Lix with one hand on the keyboard (accessing ~20 hotkeys) and one hand on the mouse.
- I forgot that directional select was still on, and missed some assignments.
- geoo and I remember that we weren't able to assign because the selection rectangle didn't appear even though the mouse was near a lemming. But I didn't catch this on video: geoo didn't record, and my instance was earlier this week.
- Middle mouse button is hard to press. It's hard for me to scroll. Instead, I zoom out and hope.
- Map the scrolling also to the right mouse button by default. Better, make it also remappable.
- I don't see bridge holes when I zoom out. But you can consider this a physics bug, not a visibility bug, and make your bridges thicker.
- On the contrary, I see bridge holes where there are none, because the zoom will hide the tiny white bricks.
- I forgot on which team I am, and, once, what color I play.
-- Simon
Lots of great feedback there, thank you! (and plenty for me to get on with)
The releases *are* posted in a (theoretically) public place, since the discord channel I post these on is set to be publicly accessible, but I will consider moving these to a web page, instead.
For managing lag, I use input delay, but with a tricksy setup where each player sees other player's lemmings in old positions. For this to work out, I then implemented a thing where there is also a delay (of the same number of frames) before each player's world changes affect the other players.
You can see this graphically, if you look carefully. As your lemmings build bridges, for example, the newest bridge bits are semitransparent to indicate they only affect you, and, as your lemmings dig, the bits they just dug out are semitransparent to indicate that other player lemmings won't fall through this yet.
Thomas
Ah, I had seen those transparent staircases, but didn't guess the reason.
Instant effect on your on lemmings, and a delayed effect on other players: This is a new solution, I haven't seen that before. It sounds natural to try that with Lemmings.
Your solution allows purely personal assignments to be lag-free and have instant physical effect, as if you were playing singleplayer. Here, I'll call a skill assignment purely personal if, regardless of lag or not, it affects at most the assigner's own lemmings within the next ~5 seconds. During these ~5 seconds, other players' lemmings will behave the same whether or not you had assigned.
That's good; more than half of the assignments are purely personal and need reasonably specific timing (can't be too early nor too late). This was the main problem with Clones's solution.
I expect all solutions to have drawbacks at high lag. Lix will teleport around. Clones become impossible to assign. I expect your solution to impose additional design requirements on your skills. E.g., when you plan for lag spikes of 400 ms, you can't have Lix's batter skill with a fixed 250 ms of wind-up followed by instant physical effect on everybody's lemmings. But maybe this gets solved by your second ingredient, showing other people's lemmings in old places? It's hard to imagine how it would feel. Looking forward to what you will implement.
-- Simon