Skip to content

Conversation

Gertkeno
Copy link

Description

Like shuffling a deck of cards this playback mode ensures all slides are presented evenly while still being random. Can repeat a slide once when the deck is exhausted. Intended to be used with more than ten slides for the best results.

Motivation and Context

The current Random slideshow picks a random index, repeating picks if the same slide happens to be selected. For large slide shows it's possible and undesirable to favor picking the same few slides. This has been mentioned as a problem in this RFC[1], and a plugin[2] was created to solve this, but I feel it is over complicated requiring many steps of setup outside of OBS, and may be out of date.

[1]: RFC 17
[2]: Browser Image Slideshow

For example if a popular streamer shows community made art, the Loop mode may get stale showing the same images in sequence, while Random may happen to favor some art over others unfairly. Shuffled ensures every slide is shown before repeating.

How Has This Been Tested?

I tested on my x86_64 Arch linux, with various files ensuring a low and high count of files work. I used the blog function to thoroughly test how and when shuffling is applied, and removed blog statements before committing. This PR should be as platform agnostic as the current slideshow implementation.

Types of changes

  • New feature (non-breaking change which adds functionality)

Checklist:

  • My code has been run through clang-format.
  • I have read the contributing document.
  • My code is not on the master branch.
  • The code has been tested.
  • All commit messages are properly formatted and commits squashed where appropriate.
  • I have included updates to all appropriate documentation.
    • Requires more translations for "Slideshow.PlaybackMode.Shuffled" option
    • Difference between "Random" and "Shuffled" not explained in GUI

Like shuffling a deck of cards this playback mode ensures all slides are
presented evenly while still being random. Can repeat a slide once when
the deck is exhausted.
@WizardCM WizardCM added the Enhancement Improvement to existing functionality label Sep 27, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Enhancement Improvement to existing functionality
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants