yknytt
yknytt copied to clipboard
Nintendo Switch-related issues (played via Android 11 port)
I've recently tried YKnytt 0.5.1 on the Nintendo Switch OLED via the switchroot's Android 11 port (still in beta but working quite good).
The gameplay itself is 100% worth it and works ok (especially for the beta!) . However, there are some issues specific to it and solving these might improve the experience on this platform. Most of these also apply to anyone playing on a phone but with physical controller connected to it (or 'around it'). Just in case, I've also tested this on my old HTC U11 phone with Android 7.1.1 and some generic controller connected via Bluetooth.
These are all minor, so I'm enumerating them all together below:
(1) the debug mode can be accessed correctly but only from the touch panel; pressing the combination on the controller is not working; as the touch panel is not needed there (and obscures the screen a lot), having to turn it on just to then enable the console, type-in one command, turn it off and then turn the touch panel off, all of these from the different menus is very inconvenient (and from the docked/TV mode it is impossible at all, as there are no touch controls), there is also some bug that when the console is already on but inactive, pressing any button on the controller activates the keyboard which covers half of the screen... in case of this being hard to fix, maybe giving it a remappable shortcut would be a way to go, or even some 'cheat' functions of the debug mode separately? Some levels are too hard (at least for me) and having a way to just 'admire the view' in original KS was a great way to still enjoy them regardless.
(2) the key to select things in menus is not remappable and gets assigned strangely (in both cases the key was different from the native Android key to confirm selections - which would be the most intuitive default for it)... I'd suggest simply adding a possibility to remap it
(3) the game reacts to inputs from only one (the first?) controller - strangely, this contrasts with the key mapper reacting to all the controllers; this results in the docked mode on Switch being unplayable (as the internal Joycons are still connected while docked, in contrast to the original OS of the Switch)... as YKnytt is not a local mulitplayer game (yet... hmmm? :) ) I'd strongly suggest that the game should accept inputs from all the connected controllers; this way after connecting Switch to the dock the game would be playable by the external Bluetooth controller - that's like the original Switch games are working!
(4) there are problems with access to the data of the game on Android (only rooted Android gave me the actual access), and there are so many levels for KS, so I'd suggest adding an option to select where the app data should be stored, so that uploading levels by hand (like suggested in the readme.txt for Linux and Windows) / backing up saves and just memory management would be at all possible for the users themselves.
BTW this game was the sole reason for me to install Android on a Switch, I was waiting literally for YEARS just to be able to play KS portably (DS/DSi first, then playing KSDS on an actual NVidia Shield Portable via Drastic emulator, then playing KS+ on a GPD Win, later trying to no avail via the now-dead project Exagear on Android, etc.), so this project had already made my day/month... just saying ;)
I had no idea that this version could run on Switch. Glad to know that you launched it!
-
Ok, I will make console combination work without touch panel. Maybe I need to choose another combination, because X+Y+down on a gamepad can be pressed by accident, but this needs to be checked. Does this solve problem with keyboard? You open the console, type iddqd for invincibility, and close the console with the same combination or escape.
-
What is the native Android key to confirm selection? Current keys are Enter, Space, X or Select on a gamepad. I try not to add new mappings, because screen for keys is kinda full, and cheats and standart UI keys are better hidden.
-
Ok, this one should be easy
-
I can add button to select external worlds folder. This should be useful, because every KS user has it. Don't know what to do with 'saves' folder, because a player will have two of them. Maybe it's not a big problem. Also there is 'save backup' console command which create zip from all saves (but not 'save restore' =))
Thank you for participating!
Thank you for your help!
I'm sorry for the wall of text below - it started simple but is now getting kind of messy. Still, most of these are really trivial and (so it seems) not worth separate tickets. If you feel like moving something into a separate issue, please do so and I will comply.
- There is no keyboard on Switch, so I don't know. I can try connecting the keyboard via USB C port or Bluetooth if you want, but it will be a hassle (special dongle for USB C / USB A or... just finding a Bluetooth keyboard, as I don't have one at hand)
- A to confirm and B as 'Back' (BTW the latter is completely ignored in-game, despite the key mapper allowing to map it - maybe it would be worth fixing) is the default. There is also a special option specific to the Switch port to swap A<->B and X<->Y called 'Xbox Layout' but for some reason it is not working for everything (like, DraStic emulator gets confused by it). Seems to work for YKnytt 0.5.1 though.
- Thanks!
- Why do you say 'two of them'? An option to configure a single location is what I meant but I'm kind of confused. Configuring save folder is important - especially for Switch - because the internal memory of Android is only available 'externally' as a separate partition on SD card - additionally protected and so 'invisible' even to partitioning software, which is very inconvenient to access / backup, to say the least. How about just adding a single option for all the YKnytt files directory? You would store that single option in a constant place but everything else would be in that dir. That would also include the 'settings.ini', 'input.ini', logs, etc. - all that would seem mighty convenient to have an easy access to (and it already is - on Linux and Windows).
- Also, about keymappings for debug (so (2) again): the 'native' Android keyboard, even though very configurable, is mostly inaccessible in docked mode and a pain to use in general, so I would really appreciate some solution that would not involve typing at all. As the number of debug commands is really limited and switching between them every 2 seconds is not necessary, I would suggest simply adding 'Debug menu' similar to the 'Pause menu'. For example: an option in config like 'debug menu instead of a console'. This might also be useful for all the other platforms for people wanting to play via controllers from the couch, as the keyboard would be completely optional for them, too. It would also solve the (mentioned earlier) bug with Android keyboard randomly popping up during a game until the console gets deactivated.
- Another thing I forgot to mention - and this also applies to the Android phone I tested - is that both analog sticks are just ignored and treated like big buttons (pressing them is registered) - it would be extremely useful to be able to map separate directions so that, for example, you could move Juni via the left stick and use right stick for umbrella, etc. I can help you debug that if you want - you'd need to tell me how, though.
All the best!
- Ok, I will add 'A' as accept key. Can add more keys =) 'Back' is not implemented, but can be added in the future. 'B' is working on my Android, maybe it's device-specific.
- I think about that every KS user has Knytt Stories\Worlds directory, and it would be convinient to just select it and have all these worlds in YKnytt. But what about Saves folder? What if it already has some save files? There should be an option to switch between standart and custom directories, but not lose worlds. Currently I prefer have two separate buttons for worlds and for saves.
- I can add up and down keys in the console which go through commands. Will be better and quicker to implement.
- Analog sticks are the separate topic. Currently I see no quick solution for them, because they can't be treated as buttons. But I will take a look.
(2) I expect more device-specific things there, I remember controller support for Android always being a mess. Having all already working this good I treat just as a happy coincidence :)
(4) Having Saves and Worlds configurable works for me. Still doesn't solve the problem of backing up everything, but those two are definitely the most important. It seems that I have a different way of thinking, as I am only considering Android platform (where there were no previous versions of KS) while you're considering the bigger picture of legacy directories and configs. I can't be of big help there, as I don't know much about these. But I imagine that just giving a warning of some sorts and then switching to the directory would be a good compromise. Just trusting the user - what could go wrong? :). I've also seen the following solution (don't exactly remember where, in DraStic possibly?): switching the directory would give a warning and after switching it would ask whether to move to this dir / just copy to it / do nothing, also to replace files or not. Not really a simple solution though - and easy to mess up irrecoverably.
(5) This will definitely help to some degree. As I'm trying to imagine how it would behave - and because of the bug I'm referring to - it would be also important to give some way of closing the console (I mean the effect of pressing the triangle on the rhs) using just the controller - maybe just via the debug shortcut again? This might work then; I'm definitely eager to test this when it will land.
(6) Keeping my fingers crossed ;)
I know it isn't ready yet but I couldn't resist installing Godot myself and testing the recent changes :), so - just in case - here are the problems I had on Switch, related to 925bbf524d4079b00416d3cbbc7d9c8fe4d2dbc7:
- analog sticks definitely need to have some sensitivity threshold set - they are triggering randomly after just touching them
- the above also results in not having the ability to assign the L3/R3 buttons (pressing left/right analog stick)
- trying to define more than 2 keys related to analog sticks are crashing the game while in the keymap config (not always exactly 2 but tried to just assign the four directions and could not finish - the crash usually occurred with 3rd or 4th key)
- the debug mode works but is unusable with just a controller, because the shortcut to turn it on/off also triggers both: random command from history (because you have to press 'down') and executing it (because you have to press 'jump') - so each time you gain a random debug effect - this results in total chaos :)
- another reason for debug mode being unusable is that while the debug console is opened, the game goes on - so you're both selecting options and playing the game with the same controls (especially inconvenient in case of 'idclip' option set)
- I have not tested setting custom directories yet
Hope this helps. I'm really impressed with how much work you put into this. All the best!
also:
- when you select something from the history, the backspace key from Android keyboard is not working but works again after disabling / enabling the keyboard with a button (the keyboard button itself being a great idea btw)
I've tested switching to custom folders and encountered the following problems:
- (important!) changing the location to the external SD card is impossible: it can be selected but this is ignored (the location stays internal); adding the permissions to read/write/manage external storage in Godot export dialog is not enough for some reason
- (minor) you cannot actually see the path you're in (just a few first characters are shown, for Switch is is '/storag'), enlarging this would be a good idea
- (minor) this path cannot be edited as a text, also there is an option to 'Create Folder' but it cannot be named, as no keyboard pops in
- (minor) I'm not sure whether it is a regression or not but sometimes the detection of downloaded levels is not working right, I can download the same level multiple times by re-entering the 'Download Levels' menu (the downloaded ones are not always marked green)
- (just a suggestion) the ability to manage all the levels in some efficient way would be nice (and having multiple 'Worlds' directories definitely helps with that) but this seems like a very complicated subject in itself (maybe even worth a separate app?), so in the meantime, just some lower hanging fruits (I hope) would help: it'd be nice to include some way of viewing the downloaded levels in compact way with a lot of information (like date, difficulty, category) in hi-res (and disabling touch panel reduces the number of visible levels further). There is also a lack of information about currently played level, and if I want to 'vote', I have to quit the level entirely, re enter 'Play', re-select the level and only then I have the option visible. Or am I missing something? Usually I don't even remember which level I was playing by then :)
I've fixed some bugs you found. Without your help, most of them would go to the release!
I set sticks threshold to 30%. On my gamepad, zero threshold is pretty playable, so if you want to change that number, please tell me! New console combination is Info+Pause. This should resolve next two bugs. Have not reproduced bug with backspace key. I can't get access to SD Card in any way and don't know why. Found this year-old bug in Godot about it: https://github.com/godotengine/godot/issues/64809 I decided that virtual keyboard is a mess in FileDialog, it hides half of a screen and breaks tab order. Editing path is very rare event, and backup filename would be hidden with this keyboard anyway. Have fixed the bug with downloaded levels (probably). Near missed it. I might try to add category and difficulty to level buttons, but I'm not sure about it. My intent is not to overcomplicate UI, so I try to avoid adding new buttons and so on. Thanks again!
Working with 3289130ae0f3a3dfc88e6abb2745a31c3793b2e5 ...
- the deadzone for sticks should also be applied to the 'Key Configure' screen - it seems like it is only applied when playing a level right now (so selecting L3 / R3 is still impossible on Switch) - for Switch I feel 30% is a little too low - on the other hand, for my phone controller (forgot the brand) it is too high; I would really suggest adding that as a setting anyway because there is a myriad of different controllers for Android and each can behave differently; if you feel that settings get cluttered then I agree - for example all those volume sliders are too much for a general settings screen (and I am constantly changing them by accident while using a controller); however, I'd suggest a simple solution for this: just create an 'advanced' settings screen and move all the quirky settings there
- I've found a workaround in previous version for a problem where interacting with a console would also interact with a game: just pausing the game beforehand solved this - but now, pause button is part of the console shortcut so it does not work anymore. I think there is a more elegant way of solving this: just force pause for the game while in console - does it sound good, or am I missing some important reason for game going on while in console menu? Anyway, for me personally - not knowing Godot at all - I'm just patching a few lines of code to reuse the not-really-needed hologram key as a debug shortcut; it would be nice to be able to configure the key combination for a console though (in the 'advanced' section, like suggested above)
- seems strange but the custom Worlds directory gets completely ignored even though it is properly displayed on the 'Set Directories' screen - it is still both writing to and reading from the standard internal Worlds dir exclusively(!), which means it does not even pick up on the .knytt.bin levels I would put into the custom directory at all; something is seriously broken there, I'm not sure whether it is a regression as I have not tested this in a previous version
- as for the SD card access on Android, the bug above is preventing me from testing this further (I would need to wait for some fix). However, maybe it is just a Godot file selector that is broken - is there any way to invoke a OS-native file selector on Android from Godot? There is a 'Native Dialogs' plugin for Godot but it does not support Android. Maybe there is a different way of doing that?
- as for the levels browsing, maybe we should start a separate issue to discuss this further but for now, just some QOL changes would be really useful: like showing everything about the currently highlighted level on the bottom of the screen as a text: difficulties, dates, sizes, etc. similarly to KS+. Also, quitting from pause menu should go back to the level options instead of the main menu - and then quitting from that should bring you to the level selection list (possibly already prepopulated, as this is taking its time when there are a lot of levels). I'm not sure about the RAM usage of keeping that list populated while playing the level, though. These things alone would be easy to implement (I hope), yet they would improve the 'flow' of hopping through the myriad of KS levels greatly. What do you think?
- small thing, but still: the 'back' key got introduced in the previous commits (which is nice!) but it is sometimes behaving 'dangerously' going back too much, two examples from a level selection list: when searching for text and when selecting a sort mode - in both cases, 'back' does not close the search or the sort mode sublist - it is closing the whole level selection list instead, and - what is worse - it unloads the list from memory, so not only the game would 'forget' the settings there, it would also need to reload a list of levels from scratch
- on the positive side, the increased resolution for mobile is a great improvement already, thanks!
- oh, now I see it: the order of pressing the buttons matters for the console - and it should not; first pressing the pause and then info pauses the game and enters the console (which is great imho), while pressing info and then pause does not pause the game, the same goes for showing/hiding info or not (this gets in a way, for example when you have huge info panel (Frozen Mountain 2); this gets really complicated for a two keys shortcut :)
sorry for the last post, as I was wrong: there is still some randomness to whether the game will pause or not
Could you also pretty please remove the (Xbox X) key from 'ui_accept' event? Or is it still needed, now that the correct button (Xbox A) has been assigned to it? This actually turned out to be the source of randomness mentioned above, as I have mapped 'show_info' to (Xbox X), so sometimes it 'clicked' the 'Resume' button in the pause menu... crazy coincidences, one after another. But the more default actions for buttons, the more they will clash together, that's why I have this request (and always forcing pause when opening the console would be another one - it is just a one-liner (and a little more than that to also hide info) and seems to be working fine after I FINALLY figured out the ui_accept conflict).
- there is a problem in controller-only mode, where selecting the search box in the level list, there is no way out of it. The keyboard appears (some Android keyboards are usable with a controller, so this is fine), then 'back' ('Xbox B) closes it but the search box is still in focus and the D-pad is not doing anything. The only option is pressing 'back' again, which closes the level list altogether - maybe the best option would be to allow for 'back' to move focus to some other UI element instead.
- only now I have tried the Windows version of YKnytt (have been compiling .apk exclusively) and the difference in the performance is HUGE on the level browser. Both on Switch and on the phone populating the list of levels is much slower. Didn't know that. Please take this into consideration when reading about my experiences with a level browser. Also: could this be sped up on Android somehow?
I put a slider for stick sensitivity on screen for keys, so no advanced settings needed for now. Also you can try assign something to stick push buttons, it should work. The game is going on in console because I'm not sure how all commands behave in paused mode. Player might want to see immediate effect of a command; it looks better if music is not stopped. And you always have an option to press Pause+Info and pause the game. I didn't intend this, but let it be a feature. I didn't reproduce the bug with custom world directory. I set it to download folder, download a level from knyttlevels.com, and it works. I don't have access to SDCard even if I specify direct path. Maybe later a solution will be found, but for now you just can't use it. I added hints with category to buttons. Also added a button to go to level splash screen from pause menu. I hope it brings more help than complications so far. Back event is just an alias for the back button, but I made an exception for text edit fields. I will not remove X as accept key, because it is very handy to use with dpad (on my controller at least). Also this is the default jump key, so some players may use it. There is no difference between reading levels on Android and Windows, so I think it's different storage performance. Currently there are no plans to optimize it. Thanks for all these bugs and ideas!
Now, that's a lot of changes, great stuff, thank you for considering all of these comments!
The most important thing is the custom Worlds directory bug; for some reason it does not work for me. I must be doing something wrong, as it also does not work on Windows. I set the custom directory, download a level and that directory remains empty (both on Android and Windows), while the level is downloaded to the default dir (both on Android and Windows). I can move the level from the default dir to the selected one and it will still be playable (on Windows), or it will disappear from the list of playable levels (on Android, even though the directory is on internal memory).
I don't have much time to test other things right now, will try later.
I will fix it later, I need to check read permissions on Android before setting this directory
Ok, so first impressions for now (f8e367f7fc50dbf0a8c30c925ac4b802d97006f9) are quite good. Especially adding the properties in green helps greatly in browsing both through downloads and level selection greatly. I would rather use the syntax like '[easy,hard] medium puzzle/env' so that the difficulties would be emphasized more, but that I have done myself with a one-line change.
The analog sticks on Switch are now usable in full. This really feels like you're some genie granting wishes left and right :).
Other things are like before, but they are correlated, so (mobile users') main inconvenience is related to actually switching between levels. When all levels are downloaded via your server, this incurs a 43 seconds penalty (measured on a Switch) each time from when the level selection starts to unlocking the filters. Download list is even worse - 65 seconds each time, or down to ~25 seconds when the 'Worlds' directory is empty. Now that the filters are locked until the list loads fully (and I understand the reason behind this, as otherwise the results of filtering were incorrect) there is no skipping this. As the game quits to the main menu instead of to the level selection, this means waiting each time. I would be able to shorten this time by dividing levels into multiple directories, but as of now this does not work - as described above.
Anyway, I understand that returning to the populated list from in-game is not easily doable in Godot, now that I started to read about it a little; from my understanding whatever scene stays in memory - even if it is hidden - is still processed with all the events and such attached, slowing down and complicating things. Seems strange to me as switching between scenes efficiently would be a common scenario for a game engine, but I'm not the one writing it, so I probably misunderstood something.
I just want you to know that for mobile users this can be a showstopper, especially for impatient ones.
Overall - considering that YKnytt is still in beta - it is much better than I expected when I first installed it.
... and the problem with being trapped inside a search box also got solved... nice!
Internal storage access finally worked in 724a62c7ee6fef6633fdbff37675b7016c7537dc! The app had the file permissions revoked somehow and I missed it, probably because I am reinstalling the .apk constantly.
Now that the access has been solved, I have an idea to overcome the performance issues: how hard would it be for YKnytt to act as 'document viewer' for .knytt.bin
? That way one could easily select the level in any file manager and that level will load instantly, bypassing the level browser altogether. Cmdline parsing is there and it seems that adding 'intents' to AndroidManifest.xml
in Godot just requires first to go to 'Project -> Install Android Build Template' and then the manifest appears in the 'android/build' subdir of the project. Just saying ;)
... and another idea, in case the previous one would be too convoluted: there already is a command 'world' that is failing when missing an argument. How about showing a file browser instead, with default location set as in settings? EDIT: (removed unimportant stuff)
... or even better: instead of a file browser - a very simplified level selector with just filenames and without all the extra stuff that needs cache access.
I set high priority to a thread that loads level list, so it should work better. On my device 50 levels was loaded in 3 seconds, which is pretty acceptable I think. You can also try to make level loading single-threaded: just comment lines from 69 to 74 in LevelSelection.cs. It will work even faster, but freeze the application. I assume that not many users will download more than 50 levels, so there is no big reason to optimize it. But the best way to fix it is to rewrite cache. Currently it reads from ini files, and something like sqlite should work much better.
Yes, SQLite seems like an obvious choice there; I've seen that there is some stable and cross platform support in Godot for it. You'd still need to store and test for timestamps to detect whether to update each entry but even then it will be much faster.
I have measured no significant improvements with the new version: for Switch it is now 42 seconds instead of 43. The commented out version is definitely faster but still over 20 seconds. I'm not sure about how you filtered these levels on your server to go down to ~900 but the full knyttlevels.com database is over 2800 files and growing. Performance would tank even further with more levels.
I would understand many different ways of reasoning behind not optimizing, or including, anything in an open source / free software project. I would understand that you yourself don't need it or don't have time for doing it. Also the approaches of 'patches are welcome' or even 'patches are not welcome' - while annoying - are all valid for many different projects.
However, the reasoning about 'not many users' doing something is so flawed, that it simply implodes upon itself, taking down the project with it. Kind of like the democracy itself :). Let me give you an example: 'not many users would [prefer KS over Mario / care enough about KS to even boot it up after so many years / play such a game for more than 10 minutes], so there is no big reason to even develop YKnytt at all'.
Another example: I remember that you're considering level editor at some point. But the level designers are a minority within a minority, so why do you even care about them? We both know the answer to that - but it stays in stark contrast with doing what 'many users' would need or use.
This very project simply is there FOR not many users. I, for one, would be glad if your userbase would grow into millions but today it didn't happen (yet! :) ).
In case of Knytt Stories, I would say that the main 'selling point' that allowed it to survive for so long, is - apart from the very good engine behind it - exactly the amount (... well, also quality ;) ) of available levels. That way you can play indefinitely. Every player that enjoys it will have their library of levels growing, not shrinking. So I would consider people going with less than 50 levels after - let's say - a month or two, are the ones that simply didn't enjoy KS enough to play it more and explore further, despite having the opportunity to do so at a click of a button (you designed this brilliantly!). They are the ones not worth optimizing for, they will not care.
If the above did not convince you, I promise to just shut up :)
P.S. There are also people - like me - hating all the 'cloud solutions' with a passion; for them downloading everything from everywhere is the only sensible way of going forward, like a (good) habit. They are definitely in the minority BUT they are usually tech savvy enough to also contribute something back :)
Seriously though, right now I can just report bugs. I would fork the project and do the optimizations myself. I cannot, though, due to real life priorities.
Also, a question: on a platform with costly file accesses like Android, wouldn't 'Optimize' have the opposite effect for a level? If so, simply calling it 'Unpack' would probably be better.
Yes, it might happen for some small levels which use custom objects intensively. "Optimize" unpacks a level and turns tilesets into collision polygons. So it helps not only to reduce memory use, but to decrease delays between areas. But not always. I just don't have enough motivation to optimize level list now. I don't download all the levels to my device, I don't have free 6 GB for it =) It's not obvious, but saves are not deleted when you uninstall a level, so a player can do it with no consequences. Any PRs for this are welcome, of course. A half of knyttlevels is duplicates and low quality levels, so I expect that about 1000-1500 levels can be added to the database. But I don't know which of them. I have some lists from forum and YouTube, but a lot of good levels was not taken yet.
Not having enough motivation is a perfect reason here. Maybe one day I will find some of my own. I was just referring to the previous reasoning. Don't worry about this. By the way, if you're saying you don't have 6 GB for the favorite game of yours that you're even developing yourself, then it is clear to me that we come from two completely different worlds. Never mind then, let's move on...
Not knowing which levels are good is enough of a reason to include some ways of rating a level. After that, just putting all the levels up for download (except old variants/versions) and letting all the players (together and also individually) a way to decide which ones are ok would be the easy route. I know there is a + / - option but the proper rating system (with comments, tags, links to forum threads, etc.) would be more effective. For now it isn't exactly obvious what is the purpose of the current one: is it to report bugs or good/bad level design? Also, I am often offline and I cannot do anything: view achievements, vote or mark level as bad, etc. Sometime in the future - after polishing up the core gameplay, improving stability, etc. - I would suggest working on an offline experience. Being dependent on access to some external server in a single player game should be eliminated whenever possible.
Doing ratings / favorites / tagging offline, pairing that with some column-based level browser with dynamic playlists (I imagine something akin to foobar2000 for audio) would also be a good way to personalize and sort through the levels the way media managers allow going though the music / movies library. My point is, I have almost exactly 1000 times more music files than there are KS levels on your server (just confirmed that :) ), yet still I find it easier to sift through the former than through the latter. It's the tools you use that are important.
As for my experience with the current version on Switch (haven't updated to the newest commit yet), it is a very good one. Still, I am experiencing strange bugs that I'd find hard to even report properly:
- the Android keyboard would appear out of nowhere in a middle of a level and then controls would go crazy - usually a few seconds after closing a debug console
- randomly a left/right button would stop working for a second, ruining the current jump (I ruled out a hardware error, as this happened on different controllers)
- sometimes sorting by 'Last Played' time does not list 1 or 2 levels played recently at the top but 5 minutes later suddenly it does
Overall nothing serious. The Android 11 version I am using (the only one working with OLED model for now) is also in beta, so some of these could be due to that. Will keep you posted.
- sorting by 'Last Played' (bug described above) is now consistently broken... until I first sort by 'Last Installed' and then by 'Last Played', then it fixes itself - until next time LevelSelector gets invoked. The '.flag' files have correct dates for the 'missed' levels, I don't know how to debug this further
- the left / right issue (bug described above) has nothing to do with a debug console, as I've just encountered this bug multiple time on a level where I didn't use it at all; both on a Bluetooth controller and on (wired) Joy-Cons
- Switch has a 720p panel, which is not a lot and even when 'smooth scaling' is selected rendering of level titles has problems with disappearing horizontal lines (and the non-smooth scaling mode - while very 'retro' - is almost unreadable). I found out that turning on 'DynamicFont -> Settings -> Use Filter' for
UIDynamicFont.tres
in Godot 'Inspector' tab fixed all such problems for me - a definite improvement; I'd strongly suggest turning this on - but just for smooth scaling (because for non-smooth scaling it seems to make things even worse)