Organizing Multiplayer Levels: Tag System

Started by mobius, October 07, 2019, 12:46:14 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

mobius

Edit Simon: Topic Title: organize multiplayer levels -> Organizing Multiplayer Levels: Tag System




It seems like every time we play lix (multiplayer) I at least, but others sort of alluded to this as well, struggle to find levels we're looking for. And almost every session we end up playing through at least a few levels that are out date and unbalanced, from back in the day when people didn't know better. Playing through some of these is always good for a laugh but the main issue is there are so many levels that it seems difficult to find new stuff or 'good stuff'. Perhaps a re-organizing them or getting rid of some is in order?
everything by me: https://www.lemmingsforums.net/index.php?topic=5982.msg96035#msg96035

"Not knowing how near the truth is, we seek it far away."
-Hakuin Ekaku

"I have seen a heap of trouble in my life, and most of it has never come to pass" - Mark Twain


Forestidia86

As far as I remember has Simon even tried to sort the better levels to the top of at least some of the folders.

But I agree, that one has to click through a big folder structure that is mainly sorted by the name of the creator.
So rearranging the structure could help to better find levels, e.g. sort them thematically or sort out the older levels in a legacy folder etc.

Forestidia86

One thing that could lead to a wider range of maps being played is a possibility to draw a random map for a set player amount. But this would lead to get outdated unblanced maps as well, but I can imagine it being interesting.

Flopsy

Drawing a random map could be interesting if it was possible to implement :)

Forestidia86

#4
Just to clarify it for myself: I meant with drawing to pick a random map from the existing ones, but probably you already understood it that way. I confused myself with the wording. (Creating a random map is interesting too, though probably much harder to implement.)

geoo

Considering the old outdated maps that we sometimes choose to play, I feel like some randomly generated maps wouldn't be that much worse than those for the occasional round. NaOH was working on randomized maps at some point, at least a basic version of that shouldn't be too hard.

As for organizing the actual maps, if more custom content comes in (currently there's a lull, but who knows) it would probably better to come up with a scalable solution. One such thing could be the server collecting users' ratings of maps after a games, and/or statistics of how often a maps gets played, and the offer to browse maps by popularity or select a random map proportional to popularity. Of course that'd need quite a bit of extra infrastructure.

Tbh I tend to be able to find quite quickly the maps I'm looking for, so it doesn't seem like a big issue to me. And then there's also the search functionality, right?

Forestidia86

From IRC:

[20:41] <Forestidia> Is there kind of a plan with the multiplayer maps?
[20:42] <@SimonN> No. Quality ideas in the topic.
[20:43] <Forestidia> okay, say if I can do sth to help
[20:43] <@SimonN> Directory structure need not be best (is only familiar). Really we should think of levels as if they were in a database, sortable/groupable by all kinds of features.
[20:44] <@SimonN> I feel like any good idea will lead to more code for a new feature.
[20:45] <@SimonN> I don't feel like collecting stats on the server.
[20:46] <@SimonN> Random map will still work as a client-side feature.
[20:47] <Forestidia> yeah getting some buried down maps, so one can see which ones are good
[20:48] <@SimonN> Right, uniform distribution will uncover lost gems.
[20:48] <@SimonN> Popular maps, I believe people will pick them anyway.
[...]
[21:01] <Forestidia> I really think a different folder structure would be good, since the creator's names don't tell anything to non-LF people and even newer people from LF.
[21:01] <@SimonN> Hmm.
[21:01] <@SimonN> Author name is part of the level anyway.
[21:02] <@SimonN> Popularity is dangerous sorting criterion, who decides what is popular? Is it dynamic (levels move on their own)?
[21:03] <@SimonN> Easy/Hard is problematic, what is easy or hard? Downward Reduction is easy because the route to the exit is easy to build assuming no resistance?
[21:03] <Forestidia> good would categories that tell the character of the map in some way
[21:03] <@SimonN> Hmm
[21:04] <@SimonN> We had a latenight directory ocne.
[21:04] <@SimonN> I think somebody made an LSD directory and I didn't want to merge that name into the main release.
[21:04] <Forestidia> eg. the lenghth of usual play
[21:04] <Forestidia> hehe
[21:05] <@SimonN> "Exhausting"
[21:05] <@SimonN> Stepping Stones, Chasing Upwards are exhausting
[21:05] <@SimonN> Frog Hotel is pure dexterity
[21:06] <Forestidia> or if it's highly tactical or rather straight forward
[21:07] <Forestidia> then there are asymetric maps
[21:07] <@SimonN> Yeah, how viable is the first strategy that might come to beginner's mind.
[21:07] <@SimonN> Ah, handicap maps. Important missing feature too.
[...]
[21:17] <Forestidia> There are even maps that have no interaction.
[21:19] <@SimonN> Yeah
[21:19] <@SimonN> Not sure if I want to encourage that by making dirs for them :P
[21:19] <Forestidia> okay
[21:20] <Forestidia> yeah a folder for unusual maps that have strange gimmicks
[21:20] <@SimonN> Hmm, possible and can become necessary. Merely open to interpretation.

Forestidia86

#7
For a first sorting, my category idea/suggestion would be: short play, long play, asymetric and races. It's few but maybe doable in reasonable time.
Rubix' attack-defense maps could fall under asymetric or be its own category. Would maps with no interactions fit to race maps?

Forestidia86

In IRC there was the suggestion to handle the maps via tagging system.
I agree that this would be the best solution since one map could fit in multiple categories. But I don't know how hard it is to implement.

Simon

Yeah, better sorting and better presenting is important.

I've opened github issue #392, Organize multiplayer levels.

Finding the newest maps would be cool.

A tagging system sounds better than any hard directory structure. We order by player count, except that we also collect all races in a single extra directory. The existing directory structure is not consistent anymore, and levels feel like they belong in a widely-searchable database (thus the tagging system), not in a directory tree.

-- Simon

Flopsy

thought I'd get the ball rolling again on this by posting a list of potential tags I've come up with help from Simon

compression - level requires compression of Lix crowds to filter through traps and minimise trap casualties

swingy - from what I understand, this is more of an all or nothing type of level, downward reduction would be a good example of this.

multiple hatch - exactly what it says, it means each player has more than one hatch. Helps prewarn the player of this as well for the less observant.

disjoint union - I'm sure this is self explanatory but this means that parts of the level of entirely sealed off to other segments of the level. Like Synchronised Lemming from Oh No More Lemmings.

max SI - means that the level has the max release rate, another thing nice for the player to be forewarned of.

gimmick - probably a very limited use tag but it generally applies to a level idea which is very unique and unmemorable. Like Charity Drive by Arty.

classic - the level resembles classic Lemmings gameplay or the level is reminiscent of a classic Lemmings level (without actually being exactly like it which Simon doesn't want)

rescue - usually hand in hand with multiple hatch but one hatch is completely doomed without assistance from other hatches or even the enemy Lixes. An example is Down With Frogs by Flopsy.

fall survival - the level revolves around going down and the main obstacle is making the fall to the bottom safe.

crafty - a level where there is no unique approach that consistently works and how the level goes depends on how other players approach the level.

asymmetric - the level is not symmetrical to the point where some hatches have advantageous positions over other hatches. eg. The Great Lix in the Sky by Amanda or Lucky Sevens by Flopsy....

chaotic - the level has a high degree of difficulty and very close proximity to enemy Lix hatches, could apply to a lot of levels really so maybe not a defining enough tag?

difficult - the level does not have an obvious solution in itself, so on top of the opposing Lixes, you have to also find the solution.

ideas from earlier in the thread
short play/long play (mentioned by Forestidia) - possibly means that the maps are either very quick or very long haul games.

attack/defense (already categorised by Rubix) - the map has a disjoint union but each side has Lixes which need to be saved and the opposing Lixes which prevent this. There is a section for each colour to be saved. NaOH's Arc is a good example of this type of level.

I put this list up to start us off anyway and be added to or discarded from and scrutinised....

Simon

#11
Thanks for the ideas! Especially "difficult" is important to know beforehand. Players should pick easier maps with beginners.

I associate "crafty" more with taxing-or-higher-difficulty route-building, and with lots of terrain to navigate in different possible hard ways, not necessarily with reacting to other players with different route building. But usually there is overlap; maps with hard route-building tend to have players react to other players via route choice.




I'm about to extend the level format in a backwards-compatible way to include tags, as follows.

Levels can contain zero or more tags. Each tag shall be a separate line in the textual level format; such a line starts with $TAG, then at least one space, then the tag name:

$TAG compression
$TAG difficult
$TAG rescue


I recommend that you put these lines before or after #INTENDED_NUMBER_OF_PLAYERS, but really, location in the file doesn't matter much. Some of my helper scripts rely on levels with first line $BUILT, so please don't start the file with $TAG.

Spelling: I encourage all-lowercase tag names. I discourage spaces in tag names; use - (dash) instead to combine multiple words. Digits in tag names should be okay. Not 100 % sure if I want the program to enforce such spelling rules or if I merely encourage to follow them.

Reason: I want tags to play nice with the search feature in the level browsers. The search is already case-insensitive, and it treats space-separated words as separate search terms. Therefore I'd like to avoid space in tags themselves because searching for an exact tag may become even more common than searching for an exact level name.

The existing Lix 0.9.40 and older will not care about the tags, and even delete them when you re-save a level that contains tags. Still, 0.9.40 will work with the remainder of the level just fine and interpret levels exactly the same; in particular, 0.9.40 can still netplay with 0.9.41 and newer.

Lix 0.9.41 and newer will read the tags from level files and write them back to the level file when you re-save. You won't be able edit tags within the game yet; you'll have to do it in a text editor. You can't search for tags yet; all this can come in future versions. 0.9.41 will merely be for Flopsy in case he wants to start putting tags in levels early. I'll release 0.9.41 in a few days.

-- Simon

Forestidia86

Which tags are currently in use? I ask since tagged levels can already be found via search.

Flopsy

#13
compression - level requires compression of Lix crowds to filter through traps and minimise trap casualties

swingy - from what I understand, this is more of an all or nothing type of level, downward reduction would be a good example of this.

multiple-hatch - exactly what it says, it means each player has more than one hatch. Helps prewarn the player of this as well for the less observant.

disjoint-union - I'm sure this is self explanatory but this means that parts of the level of entirely sealed off to other segments of the level. Like Synchronised Lemming from Oh No More Lemmings.

max-si - means that the level has the max release rate, another thing nice for the player to be forewarned of.

gimmick - probably a very limited use tag but it generally applies to a level idea which is very unique and unmemorable. Like Charity Drive by Arty.

classic - the level resembles classic Lemmings gameplay or the level is reminiscent of a classic Lemmings level (without actually being exactly like it which Simon doesn't want)

rescue - usually hand in hand with multiple hatch but one hatch is completely doomed without assistance from other hatches or even the enemy Lixes. An example is Down With Frogs by Flopsy.

fall-survival - the level revolves around going down and the main obstacle is making the fall to the bottom safe.

crafty - a level with taxing-or-higher-difficulty route-building, and with lots of terrain to navigate in different possible hard ways, not necessarily with reacting to other players with different route building. But usually there is overlap; maps with hard route-building tend to have players react to other players via route choice.

asymmetric - the level is not symmetrical to the point where some hatches have advantageous positions over other hatches. eg. The Great Lix in the Sky by Amanda or Lucky Sevens by Flopsy....

chaotic - the level has a high degree of difficulty and very close proximity to enemy Lix hatches, could apply to a lot of levels really so maybe not a defining enough tag?

difficult - the level does not have an obvious solution in itself, so on top of the opposing Lixes, you have to also find the solution.

beginner - the level is more ideal for beginners to Lix who are still trying to familiarise themselves with the controls and chaos!

few-skills - the level has a very small skillset so skill assignments will be limited.

short-play

long-play (mentioned by Forestidia) - possibly means that the maps are either very quick or very long haul games.

attack-defense (already categorised by Rubix) - the map has a disjoint union but each side has Lixes which need to be saved and the opposing Lixes which prevent this. There is a section for each colour to be saved. NaOH's Arc is a good example of this type of level.

these are the ones I have been using and I have only looked at levels by the following authors so far

arty
amanda
steve
flopsy
geoo
raymanni
clam

EDIT: I'll try to get a list of what tags I assigned to what multi level. Be probably wise to use this topic to keep track of tags while we get through the backlog

Simon

#14
Thanks for the good rundown!

Yeah, Flopsy has added tags to a good chunk of levels. I believe nobody else has added any tags or thought of new meanings yet.

Here's a Unix pipeline to see all tags in use, and its output on 0.9.47:

ack -h TAG levels/ | sort -u

$TAG asymmetric
$TAG classic
$TAG compression
$TAG difficult
$TAG disjoint-union
$TAG fall-survival
$TAG few-skills
$TAG gimmick
$TAG long-play
$TAG max-si
$TAG multiple-hatch
$TAG rescue
$TAG short-play


Quote from: FlopsyEDIT: I'll try to get a list of what tags I assigned to what multi level. Be probably wise to use this topic to keep track of tags while we get through the backlog

That should also be doable with some Unix magic. Tell me when you need it, and what exacly: For each level, list the tags? Or for each tag, list all levels in which the tag appears? I'm busy this week, but maybe it'll be cute distraction. Edit: First try with ack in loop aborts too quickly, will solve sometime else, ask me next week.

-- Simon