How do I even go about using Filtering Enabled?

That didn’t show me how

1 Like

To make games fe compatible, you need to use remote events and remote functions to execute code on the server with calls from the client.
Anything you want other players to be able to see that’s currently being done in a local script, should have its code moved to a server script and executed by the server, connected to a remote event that the client calls.

3 Likes

Filtering Enabled disables Client-To-Server Replication.
What that means if that if a part is created on the client, it won’t replicate to the server which in turn, won’t appear for other players.
With Filtering Disabled (Experimental Mode), that part will appear on all the Clients in the game. And it’ll Replicate to the Server. This is how a user can kill and modify other player’s characters with exploits with Filtering Disabled. If Filtering is enabled. It’ll only happen on their screen.

To enable it click on the Workspace in Studio and in Properties under Behavior they’ll be a checkbox called “Filtering Enabled” this is turned on by default whenever you create a new studio file. But if your place is older, you’ll need to manually check it.

In order to cross the Client-To-Server Bountry you’re gonna need to hook things up Via RemoteEvents/Functions. The pages of which I’ll Link down below.
Also the video @railworks2 linked explains it well.

Example These Scripts would create a Part that’ll show to All Clients With Filtering Enabled

--Server Script

local RemoteEvent = game:GetService("ReplicatedStorage"):WaitForChild("RemoteEvent")

RemoteEvent.OnServerEvent:Connect(function(player, Shape)
	local s = Instance.new("Part", game:GetService("Workspace"))
	if Shape == nil then
		--Nothing
	elseif Shape == Enum.PartType.Ball then
		s.Shape = Enum.PartType.Ball
	elseif Shape == Enum.PartType.Cylinder then
		s.Shape = Enum.PartType.Cylinder
	end
end)


--Local Script

local RemoteEvent = game:GetService("ReplicatedStorage"):WaitForChild("RemoteEvent")

local function CreatePart(shape)
	RemoteEvent:FireServer(shape)
end

CreatePart()
CreatePart(Enum.PartType.Ball)

More Information including Convering.
http://wiki.roblox.com/index.php?title=Experimental_Mode
http://wiki.roblox.com/index.php?title=Converting_Experimental_Mode_Games

RemoteEvent/Function Pages
http://wiki.roblox.com/index.php?title=API:Class/RemoteFunction
http://wiki.roblox.com/index.php?title=API:Class/RemoteEvent

I made a Similiar Post a few months ago. And that’s all I have to say.

1 Like

Hello! Recently, Developer Relations released a tweet on this issue, I’ll link it in the end. However, in essence experimental mode is used for starting games to ensure safety while development is done. I still believe that FE in aviation is important so following the advice here for that is of utmost importance.

Ok, well say I have a plane in a game and people get on it. It starts moving. Will the people stay on the plane? Any aviation devs/reps here?

If the plane exists on the server, and is powered by a Server Sided Script. Yes they will.

So it can’t be :ins’d?

Yes, depending on the scripts that are embeded within. I can get you in contact with some people from Beta Airlines if you have further questions!

Yeah, i would love to contact beta devs pls.

Feel free to DM me on discord, Frost#7467, I can get you in touch ASAP!

I’d appreciate it if you could provide a tad more context into that reply. Thanks!

Inserting the plane from owners inventory on client end using admin.

You would need to hook that up via a Remote Event. As I said in my post. With the example Scripts.

It even works for models. I’ll put Example Scripts here. This would clone a model to All clients instead of one with Filtering Enabled.

--Server Script
local RemoteEvent = game:GetService("ReplicatedStorage"):FindFirstChild("RemoteEvent")

RemoteEvent.OnServerEvent:Connect(function(player, Model)
	if Model then
		Model:Clone().Parent = game:GetService("Workspace")
		print(player.Name .. " Cloned a Model to the Server")
	end
end)
--Local Script
local RemoteEvent = game:GetService("ReplicatedStorage"):WaitForChild("RemoteEvent")
local model = script:WaitForChild("Model")

RemoteEvent:FireServer(model)

I’ll also provide a Screenshot showing how Studio is set-up.
howyou3

I’m just so confused on how to integrate this lol

I suck at scripting

To provide a more advanced Example. These scripts will clone a Basic Car from the ServerStorage via the firing of a Tool.

--Brick Creator

local Tool = script.Parent
local Mouse = game:GetService("Players").LocalPlayer:GetMouse()
local RemoteEvent = game:GetService("ReplicatedStorage"):WaitForChild("RemoteEvent")

Tool.Activated:Connect(function()
	RemoteEvent:FireServer("Car", Mouse.Hit.p)
end)
local Car = game:GetService("ServerStorage"):FindFirstChild("Car")
local RemoteEvent = game:GetService("ReplicatedStorage"):FindFirstChildOfClass("RemoteEvent")

RemoteEvent.OnServerEvent:Connect(function(player, Clone, MousePos)
	if Clone == "Car" then
		local x = Car:Clone()
		x.Parent = game:GetService("Workspace")
		x:SetPrimaryPartCFrame(CFrame.new(MousePos + Vector3.new(0, 8, 0)))
	end
end)

Studio is set-up Like this. If you want to check the place file for yourself feel free to DM me.
image

Geeez you all could have just Linked this Thread to save everyone’s trouble.

1 Like

Very useful thread, however it doesn’t address the OP’s questions about experimental vs. FE and aviation scripting.

Ok you are right.

How about this one?

1 Like

Perfect! Overall, both of these will lead the OP in the right direction.

1 Like