Please test: Random Game selection/launch via Video Screensaver
-
Hi @pjft and others,
I finally had a run with your suggestions for a more unbiased approach to selecting random games. I've created this PR for the RetroPie branch, as its mostly done. Nonetheless, I would appreciate it if some folks with large collections could give it a test-run.Apart from any bug you might find, I would like feedback on the time it takes to come up with the next game.
If someone finds it easier to test in a windows environment, I can supply a windows build as well.
-
@Zigurana thanks! I'll give it a go in the coming days.
Any way I can compile it myself somehow? Do you have a repository with that that I can pull and compilet from?
Or is there a way for me to actually compile the master branch with your PR? You can tell I'm still learning the ropes on GitHub.
Thanks!
-
@Zigurana well, from "mentally" running your code, it doesn't sound expensive in terms of processing at all. Quite elegant at it, and extremely simple to follow. Well done!
I suspect that, bar any edge case, it gets my thumbs up in terms of peer review. It even doesn't crash or enter an infinite cycle if you only have the RetroPie system :)
I'm curious as to how that will mix with filters. I/we might have to implement a "getVisibleGameCount" method otherwise we risk selecting hidden games.
But looks great, well done. Will test it in the coming days, though I think my library isn't larger than yours - might even be somewhat smaller. Still, I'll test on the Pi, which can be helpful.
Are you planning on adding the favorites and kids metadata still? I saw something on the Recalbox fork that I wanted to share with you in that regard.
This is how they add a star in front of their favorite games in the game list. I saw someone mentioning it here in the forums, thought I'd mention in case it's something that you'd find interesting as well. :)
Hope you're doing well! -
Hi @pjft, on what platform do you want to build?
On the Pi, you can just clone into the correct repository (which has been rebased to the RetroPie/master branch just now, so all differences are only due to this feature):mkdir TestES cd TestES git clone https://github.com/zigurana/EmulationStation.git RandomGame
and build:
cd RandomGame cmake . -DFREETYPE_INCLUDE_DIRS=/usr/include/freetype2/ make
For building under windows, see the excellent explanation by @fieldofcows here.
-
@Zigurana it was the correct repository name I was looking for, thanks.
I also noticed afterwards that it's present in the PR. Shame on me. :)
I'll test it but looks pretty good to me!
-
@pjft Thanks man, but it was your idea, so own it!
The star in front of the name seems like an easy enough 'feature', and at least it is independent of theme-support to implement.
I wonder how it affects the sort functionality though? -
@Zigurana I'm pretty sure it moves all favorites to the top of the list.
If we don't want that, we can either add it to the end of the name, or not at it at all :) it was just a thought someone had mentioned - I think even in this thread! - so wanted to run it by you.
Edit: Though one can wonder: would moving the favorites to the top even be a simpler/nicer default solution to filtering?
-
You guys don't stop! :) If you need any testing let me know, @pjft is there likely to be any way to include some way to change screensaver font/ back ground in future versions
-
@__Scannigan__ ah, right, you did mention that!
Hmm. Let me think about that. I don't think there's a nice way to make it user friendly enough for a user menu inside ES, at least not the font selection, but I'll try to come up with something when I have a few moments.
...Hmm.
OK, I think I may have a way to do it nicely. Let me think more about it.
-
@pjft just so know I've had the screensaver running for hours with no hiccups, stellar work dude
-
@__Scannigan__ that's all that matters, that others find that it improves the experience and enjoy it! Thank you :)
Are you on the latest build, the latest one I shared, or still the old one?
Best.
-
@pjft the most recent merged one
-
@__Scannigan__ would it be a questionable decision if I expected the font to be in the current theme's folder, rather than the ES folder? @TMNTturtlguy Any thoughts on this? A comic font for the screensaver?
Not committing to any direction at this stage but just considering options, and then ease of implementation. Would love to hear your thoughts, as well as others.
I could easily see the screensaver be "themable" to some extent, but then again I don't even know if this will be the right implementation in the future so don't want to over engineer a solution that'll be deprecated in the short-ish term. And in that sense, just a plain font file copied to the ES folder would do the trick.
Please chime in.
-
@pjft if it could be linked to the current theme it would make sense to me to be in the theme folder, but then again the screen saver is independent to the theme of that makes sense
-
@__Scannigan__ I was just thinking that your original request for changing the font was because you had a font that matched your current theme.
So yes, the idea would be that different themes could have different fonts, even though nobody is really providing that in their themes right now. And, one way or the other, it's easy to change in the future.
-
@pjft i think that makes sense, a consistent font or even a similar style of font throughout the theme, one that could be identified as the screensaver font
-
@pjft Just shooting from the hip here, as have no clue how this works, but based of the fact that themes and gamelists and alternate es_system files can be placed here, is it possible that we create a new folder in home/.emulationstation/? Maybe like home/.emulationstation/screensaver
In this new folder we could place a text folder and maybe a video folder. This would be an alternate location that ES would look to for information for the screensaver, much like themes and the es_systems file. Any font types placed in the folder would simply over rule the default, so if i wanted shokapow to match my theme, i just drop that font file in the folder and it is used. Same idea on videos. I love the random video, but if i want to compile my own single video, or only have a select number of videos play, i simply add 1 or 100 videos to that folder, and those are played. If those folders are empty, then ES reverts back to the standard location for files.
Probably types simpler than it is programmed, I am just pondering the possibilities since ES works this way with other customization options.
-
@TMNTturtlguy I was thinking in that direction for the font.
Adding a custom set of videos, though, would be different. I'd imagine that as a different screensaver type, as the current one is a random game video, it's tied to your existing games in the library.
It is an idea for sure, but one I don't think I'd be picking up in the near future as it requires a bit more work, apologies :)
If I develop new screensaver types, the random game image that has been requested earlier in the thread by a few people is probably the one I'd look into, as it reuses the current architecture and could benefit those who don't yet have videos in their collections.
But even that has been put on the back burner for lack of time for larger endeavors recently.
-
@pjft said in Please test: Random Game selection/launch via Video Screensaver:
This is how they add a star in front of their favorite games in the game list. I saw someone mentioning it here in the forums, thought I'd mention in case it's something that you'd find interesting as well. :)
I think the problem with this approach is that it is dependent on the font being used. If a theme changes the font, there is no guarantee that the character will be a star.
I have been thinking about an ability to do something along these lines that would involve changing the TextListComponent to support modifier images. I started thinking about it after I saw @ruckage modified the font he is using in his nes-mini theme to make a specific character be a folder icon. I haven't fully worked out how it would work, it's just an idea on my long todo list.
-
@Zigurana a suggestion, thinking about it: It could be good to decouple the random game "selection" within the library, from the action of selecting it in the list.
Edit: that way I could use exactly the same logic to render a random screensaver video, for instance, or if someone wants to launch a random game or something. It just makes it more modular.
Added a comment on GitHub, I think, but seems to be pending.
This is what I said:
I was thinking about this. It could be better to decoupled the "getting" a random game from the subsequent action. Meaning, this function should probably call a "get random game" method, that should perhaps reside in SystemData, if that has access to the systems vector, and then in this case select it. On my phone, sorry if it isn't clear.
Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.
Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.