In 2018 we made games with FilteringEnabled enabled the norm, dubbed games with it disabled “Experimental Mode”, and then ultimately removed Experimental Mode. Every game since then has run as if FilteringEnabled was enabled, even if the property was disabled. However, the property still exists and shows up in the Properties widget.
Starting with the 478 release of Studio on May 12th, the FilteringEnabled property under Workspace will no longer be displayed in the Properties widget. It will still be accessible by the Lua API until this version has rolled out to all platforms, at which point we will flip a setting to make
workspace.FilteringEnabled always return true and ignore any attempts to set the property.
How does this affect me?
In almost all cases, it will not. All games already run assuming FilteringEnabled is enabled. If your game has
workspace.FilteringEnabled set to true (the default), or all code is from later than 2018, then this will have no impact to you. What this may impact is games with legacy FilteringEnabled migrations.
if workspace.FilteringEnabled then doThingThatAssumesClientUpdatesAreFiltered() else doThingThatAssumesClientUpdatesAreNotFiltered() end
Currently they will run the else path for games that have not explicitly set
workspace.FilteringEnabled to true, even though the game is already running as if it were enabled. Starting with this change, all of these scripts will begin running the first path. In all likelihood, this will actually fix games that are incorrectly operating under the assumption that FilteringEnabled is disabled, but it is a behavior change nonetheless, so we are announcing this in advance.
How can I tell if I have legacy FilteringEnabled migrations in my game?
Using the Find In All Scripts dialog in Studio (Ctrl/Cmd+Shift+F), you can search for FIlteringEnabled in “All Scripts” like so:
If it returns 0 results, then there is no action required on your part.
What do I do if I have legacy FilteringEnabled migrations in my game?
If you would like the correct code designed for FilteringEnabled games to run, then no action is required on your part. The script will now correctly determine the state of FilteringEnabled for the game once this change is live. However, since the property will never return false again, it is recommended to replace the migration with just the true path. In the example of
if workspace.FilteringEnabled then foo() bar() else baz() qux() end
then your script should now look like
However, if you would like to preserve the (likely broken) existing behavior of your game as-is, then remove the entire if/else branch and replace it with the contents of the second branch. In this case:
You can test that your game works in advance by enabling the workspace.FilteringEnabled property. If it is already enabled, then this change will not impact your game.
As a reminder, this change is planned to take place with release 478 on May 12th. Thank you!