[PROPOSALS][PLAYER] New menu design

Started by namida, June 04, 2020, 04:17:18 AM

Previous topic - Next topic

0 Members and 3 Guests are viewing this topic.

One line or two lines for the menu? (See reply #144)

One line
3 (30%)
Two lines (spaced)
7 (70%)
No preference
0 (0%)

Total Members Voted: 10

namida

Tl;dr notes for this post:
- Any special "load replay" things - not ruled out permanently, but won't be part of this upgrade.
- Group levels by author? (but this may come later)
- If using crosshair cursor, use low-res (zoomed) or high-res depending on user's resolution setting - not ruling this out but not sure if worthwhile
- Creators tools accessed from level select rather than directly from title screen? (But putting it into the editor is out of the question, for technical reasons.)
- Different new color for the font?
- Customizability of default menu / etc graphics will be no more nor less than it is now
- Ability of packs to provide custom graphics will also likely remain similar to now; backwards compatibility will not be broken "just for the sake of it" but is not considered "sacred" either


QuoteFor clarity, I'd like to mention that I think the choice between low-res cursor scaled up and high-res cursor should be based on the currently selected option: if high-res mode is enabled, use the high-res cursor; if low-res mode is enabled, upscale the low-res cursor.

This should be doable, but I'm not sure if it's worthwhile supporting two marginally-different cursors based on a setting that otherwise doesn't affect the menu...?

QuoteI like the idea of being able to load replays from the menu, but I definitely see the potential for technical issues. For one thing, the replay format would need to store the source level (not just be able to tell if they match).

It would not need to store the entire level. It would be possible just with the currently-stored information, but it could be very slow to find the matching level, especially if it has to search the whole library (rather than just eg. a single pack). A more efficient way could still rely on some kind of better method of pointing to the level (eg. perhaps it has a pack ID too, so it uses that to quickly find the correct pack then only has to iterate through one pack's levels) without outright storing the level in full like Lix does.

Indeed, I do not want to get into "store the level in the replay file". I think this is a very poor design, in particular it leads to issues if you want to test whether a replay still works on a new version of a level etc.

At any rate - let's go forward on the assumption that this feature will not happen as part of the menu upgrades, but is still on the table (though by no means confirmed) to look at further down the track.

QuoteAdding the ability to group by author in the level select menu without having to alter the folder structure might alleviate this issue.

Nice suggestion. Although this too might be a "do this later" thing.

QuoteBut we'd want to make sure we can still load replays when the ID matches even if the filename doesn't,

For a very brief time on early versions, NL outright prohibited loading a replay if it thought the level was wrong. This quickly lead to issues and will never happen again - NL will warn you if it thinks the level and replay are mismatched, because usually it's right about this, but it will not outright refuse to try running the replay anyway because sometimes it's wrong (and sometimes there are valid reasons for trying to do this - such as trying a replay from one iteration of a repeated level, on another iteration).

QuoteCreator's Tools could be accessed from buttons in the level select menu; they don't need to clutter up the main menu.

Yeah, I could see that working too.

QuoteI really don't like the suggestion for the bright blue font. It may be clearer, but it clashes with the overall colour scheme and feels out of place.

I personally quite like it, though not in the sense of outright being set on it - I'm still very much open to "leave as-is" or a different color.

QuoteRegarding the cursor graphic: it might be simplest to allow these to be user-customisable like most of the other graphics. So, even if the decision is to make it the same as the in-game cursor by default, create these as a separate graphic (titled "cursor_menu", for example) so the user can decide either to leave it as-is or change it to something else, without it affecting the in-game cursor.

Regarding the background: again, as long as users can change the background to whatever they want, I suppose it doesn't massively matter what happens regarding this. It would be good to find a cleaner, higher-res (and unblurred) version of the existing one, though.

Regarding the font color: I agree with Proxima that the shade of blue chosen by Dullstar looks a bit out of place, but I appreciate the efforts towards making it more visible. Once again, leaving this as something users can recolour and change themselves (if they so wish) is ultimately the safest bet. It is, of course, important that we agree on a decent default colour though. Also, +1 for having different colours for different lines of text (although I can understand why people would be against this).

The default ones will be as customizable as they are now - ie: they are externally-stored PNG files so nothing is stopping you customizing them user-side, but customizing the defaults will never be explicitly supported (as opposed to just "possible" - the difference is eg. that I make no promises whatsoever that future updates won't break your customizations, though of course this doesn't mean I'll go out of my way to break them - I just won't make effort to avoid it either).

Allowing customization by packs; my default thought here is if it's customizable now, or something roughly equivalent to something that's customizable now, it will be so under the new system too. Backwards compatibility for such graphics will be considered desirable but not critical.

QuoteIf anything, it would make more sense for Creator's Tools to be an Editor thing rather than a Player thing.

It would need to be either part of NL, or a standalone tool. The whole reason I'm envisioning this is to allow implement features that need to make use of NL code in order to work (or in order to be optimally implemented) - the editor does not even have a fully-compatible implementation of NL's rendering, let alone any physics simulation. Perhaps I should be more clear here - I envision that Creators Tools would likely be added to later.

It could be done in a "make the two talk to each other" implementation, where the actual code for the features is in NL but the editor is used to actually access them (in a similar vein to how the editor uses NL for testplay mode or converting older-format levels), but this just seems like it's complicating things for no reason.

(Ideally, the new editor would have been built into NL rather than an external tool. Creator's Tools could then be part of the editor section. This is out of the question at this point - the new editor is not even written in the same coding language; heck, one is .NET while the other is native code; and I already had one go at writing a replacement editor, it did not get very far.)
My projects
2D Lemmings: NeoLemmix (engine) | Lemmings Plus Series (level packs) | Doomsday Lemmings (level pack)
3D Lemmings: Loap (engine) | L3DEdit (level / graphics editor) | L3DUtils (replay / etc utility) | Lemmings Plus 3D (level pack)
Non-Lemmings: Commander Keen: Galaxy Reimagined (a Commander Keen fangame)

Dullstar

About replays
I'll clarify that I didn't mean literally storing the whole level - rather, just some way of referencing it - I can see why you interpreted it that way, though, particularly if Lix uses that approach (admittedly it would guarantee the correct level is loaded no matter what though). I don't think the replay currently stores enough information in order to find the correct level unless the level designer has explicitly gone out of their way to support it, though. For instance, I don't mess with the level ID, ever. I just leave it on whatever it defaults to.

This header, for instance, could potentially match 10 different level files, since each time I released a new backroute fix, I just incremented the version number in the filename by one. It looks like there is a level number that could help a bit, but if I'm not mistaken that wouldn't have any real significance in a folder full of loose levels since the resultant level number would be dependent on the other levels in the folder at the time. USER Dullstar
TITLE Athletic Rescue Operation
AUTHOR Dullstar
GAME levels
GROUP Dullstar
LEVEL 14
ID x04E0166C7B355560


That said, a simple fix might be to add a version number field (to both the level and the replay) that could be used alongside the ID to distinguish different versions of the same level from each other without making them appear as completely unrelated levels. This would enable NL to produce a more helpful message when the replay is loaded in the wrong version of the level, as opposed the current approach, which will either do nothing if the creator left the ID intact, or complain that it's for a completely different level if the creator re-rolled the ID, as well as telling level creators which version of the level a replay was created with.

About the font: I definitely find the current default hard to read. The bright blue font color was derived from the Amiga version, but the overall appearance is a bit different due to the fact that Amiga has 7 colors per letter compared to DOS's (and therefore the current default's) 4 colors, and I handled this mostly just by picking 4 of the 7 to use, rather than doing any sort of interpolation. It was very much a first attempt, and I liked it better than the current default, so I went with it. I'm still happy to try to tweak it more, though, if people don't really like it. Messing with the background is also an option.

About the cursor: I mostly just want to avoid a situation where we have a cursor that looks almost, but not quite, identical to the in-game one. In other words, it should either be completely identical, or completely different, hence the suggestion of upscaling the low-res cursor in low-res mode rather than using the high-res one. But we could also use the system cursor or something completely different - I believe the Amiga version uses a Lemming hand, IIRC.

Simon

You can make the font grey, orange, or yellow.

It's fine to postpone search for level. Indexing the levels is a new feature, and file operations on Windows is slow.

It's fine to postpone indefinitely finding the replays for a given level.

-- Simon

WillLem

#63
Quote from: Dullstar on August 05, 2020, 11:08:56 PM
About the cursor: I mostly just want to avoid a situation where we have a cursor that looks almost, but not quite, identical to the in-game one. In other words, it should either be completely identical, or completely different... I believe the Amiga version uses a Lemming hand, IIRC.

I agree And yes, the Amiga version does indeed use a Lemming hand. It also uses a graphic of a Lemming asleep in bed (zzZ) for waiting times! :lemcat:

The cursor is one area where we have the opportunity to create something completely new: I think we're all settled on going with the tried-and-tested "Lemmings cards and font" look, even if the specifics of layout and formatting are still in discussion.

Maybe the menu cursor could be something that's exclusive to NeoLemmix!

I also think that QUIT deosn't need a menu card, as well. It could just be a very small button in one corner of the screen marked "EXIT/ESC" and that would surely suffice. So it isn't lonely, an equally sized button could go on the other side with "ABOUT" and that could give detailed NeoLemmix info/credits (NOTE: this isn't a suggestion not to display the current NL version on the main screen - that should, of course, still definitely be a thing).

Perhaps if the menu cards are updated slightly, this would also help to give NL its own look. Here's a version I did very quickly just to riff some ideas. I'm not suggesting this look in particular, it's just to open up some possibilities:


Dullstar

#64
I did some new recoloring work, since the bright blue one from earlier seemed a bit controversial. Unlike the bright blue one, however, none of these are available, because I did a mock-up to test several new palettes at once, side-by-side. However, if you want one of them to mod into your NL installation now, just ask and I'll go ahead and make it for you.

This time, I took only the darkest and lightest colors I wanted to use from the Amiga version (in practice, this meant the second brightest and second darkest used in the Amiga version, since the brightest is always white, and the darkest is too dark for the background in most cases), and then I interpolated to get the middle colors. Every color from the Amiga pre-level screen is featured here, alongside the current default, the bright blue recolor I posted earlier, an example of what it looks like if you keep the darkest color, and an attempt at the colors suggested by Simon (I didn't have a darkest/lightest combo to work with, so I had to improvise, with varying degrees of success). I interpolated the colors linearly, treating the HSV values independently (For the first couple of recolors, I compared this to the results from using the RGB values, and the HSV method tended to produce more vibrant colors, while the RGB method was more washed out). The resulting text was then placed on the current background as well as a recolored one. The background was recolored simply by shifting the hue in Paint.net, with an input value of 115.

Each color has been given a label so it's clear which one you're talking about, if you'd like to give any feedback.
Current Background:


Green Background:

The Python script was written for Python 3.8, though it probably runs on many earlier 3.x versions as well. It has enough sanity checking of inputs to make sure it won't crash, but it doesn't actually check to make sure they're valid, so if you put some nonsense numbers in there it'll spew nonsense. It's not really production level code, by any means, but that's because that's probably a bit overkill for a single-purpose script. There's a wraparound feature for hue values since they're cyclical, but it's probably not perfect, though I doubt the differences are really all that perceptible in the end result.




Amiga Blue on the current background seems nice. Amiga Teal on the green background is probably my second choice, though it could still work on the existing background.

Right now the main menu and pre-level screen use the same background. The green background looks fine on the pre-level screen, but it definitely does NOT look okay in the main menu, because there's too much green in the rest of the elements. Even if we stick to the current set-up of the pre-level screen and the main menu using the exact same background, if the background can be customized by packs (can't remember if this is allowed or not), it might be a good idea to allow them to be changed independently.

Proxima

I like the "Amiga Blue" lettering. What puts it above "First Recoloring Blue" for me is that the light pixels are lighter, giving the digits a more defined presence (yeah, kind of hard to find the vocabulary for talking about things like this, but maybe you know what I mean).

Simon

Amiga Blue is fine.

Lowermost 7 colors need higher contrast (difference between light and dark pixels). As-is, they look flat and fat. Their edges' lightness should be closer to the background's lightness than to their lightmost pixels' lightness.

-- Simon

WillLem

+1 for Amiga Blue, that's easily the best in terms of how it looks against both backgrounds. Teal is also a great choice.

The others are interesting though... is there a way that a few extra colours could be used? Maybe NL could have a colour scheme of various ones, further give it its own identity.

Dullstar

Quote from: WillLem on August 10, 2020, 01:20:45 AM
+1 for Amiga Blue, that's easily the best in terms of how it looks against both backgrounds. Teal is also a great choice.

The others are interesting though... is there a way that a few extra colours could be used? Maybe NL could have a colour scheme of various ones, further give it its own identity.

As in more than 4 colors? Yes and no: technically, it's possible. But it's not a trivial change to make, either. To recolor the existing text to a different set of 4 colors, all I need to do is tell whatever program I'm using which 4 colors to change to which 4 other colors. To add more colors, some sort of more complicated change would need to be made, whether by modifying the existing letters, extracting the Amiga version letters (which have 7 colors), or making new ones from scratch.

To add more colors to the existing lettering without altering the art style would be beyond my current artistic capabilities. If someone else wants to, go right ahead.

WillLem

Quote from: Dullstar on August 10, 2020, 06:24:23 AM
As in more than 4 colors? Yes and no: technically, it's possible. But it's not a trivial change to make, either. To recolor the existing text to a different set of 4 colors, all I need to do is tell whatever program I'm using which 4 colors to change to which 4 other colors. To add more colors, some sort of more complicated change would need to be made, whether by modifying the existing letters, extracting the Amiga version letters (which have 7 colors), or making new ones from scratch.

To add more colors to the existing lettering without altering the art style would be beyond my current artistic capabilities. If someone else wants to, go right ahead.

Perhaps you've misunderstood: I meant use a different colour for different lines of text, rather than different colours within the text graphic itself...

namida

It could be done, but it needs to be considered how this would interact with packs providing custom font graphics (in technical terms, I mean). Presumably, we'd have to have one "base" color which then gets RGB or HSV transformations applied to it.
My projects
2D Lemmings: NeoLemmix (engine) | Lemmings Plus Series (level packs) | Doomsday Lemmings (level pack)
3D Lemmings: Loap (engine) | L3DEdit (level / graphics editor) | L3DUtils (replay / etc utility) | Lemmings Plus 3D (level pack)
Non-Lemmings: Commander Keen: Galaxy Reimagined (a Commander Keen fangame)

IchoTolot

Amiga Blue for me as well.

I really don't like having different colors for different lines of text to be honest. I think it's harder to read and looks kind of clowny.

Dullstar

Usable Amiga Blue font uploaded.

To use in an existing NL version, replace the existing menu_font.png (located in \gfx\menu) with this one.

WillLem

Quote from: IchoTolot on August 10, 2020, 07:51:13 PM
I really don't like having different colors for different lines of text to be honest. I think it's harder to read and looks kind of clowny.

Yeah, fair enough. One well-chosen colour seems decent enough.

Where are we on the background, has anyone got hold of a non-blurred/generally nicer looking version of that yet? I've looked around online and can't seem to find an assets folder or anything; Google image search yields no results either.

namida

I've made a seperate topic to discuss / vote on the font color: https://www.lemmingsforums.net/index.php?topic=5040.0

Regarding the background, I have attached a copy of the background extracted from DOS Original Lemmings' MAIN.DAT file (via LemMain).
My projects
2D Lemmings: NeoLemmix (engine) | Lemmings Plus Series (level packs) | Doomsday Lemmings (level pack)
3D Lemmings: Loap (engine) | L3DEdit (level / graphics editor) | L3DUtils (replay / etc utility) | Lemmings Plus 3D (level pack)
Non-Lemmings: Commander Keen: Galaxy Reimagined (a Commander Keen fangame)