NOT FE Reality Break GUI
Key RequiredUniversal

NOT FE Reality Break GUI

Universal Scriptddorredoreddorredore 881 views 100 executesUpdated Mar 27, 2026
Unrated
00
Lua Script•498 lines (14446 chars)
--// Reality Break GUI
--// Put this LocalScript in StarterPlayerScripts or StarterGui
--// Local-only visual effects

local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")

local player = Players.LocalPlayer

--========================
-- EDIT HERE
--========================
local guiTitle = "Reality Break GUI"
local mainButtonName = "Break Reality"
local smallButtonName = "Open"

local effectSpeed = 6      -- higher = faster effects
local shakeAmount = 0.25   -- camera shake strength
local fovAmount = 12       -- FOV warp strength
local rollAmount = 4       -- camera roll strength

local shakeEnabled = true
local fovEnabled = true
local rollEnabled = true
local glitchEnabled = true
--========================

local realityOn = false
local realityLoopToken = 0
local storedFOV = 70

local glitchMessages = {
	"/// REALITY ERROR ///",
	"!!! DIMENSION SHIFT !!!",
	"%%% BREAKING FRAME %%%",
	"[[[ SIGNAL LOST ]]]",
	"<<< GLITCH ACTIVE >>>"
}

local screenGui = Instance.new("ScreenGui")
screenGui.Name = "RealityBreakGui"
screenGui.ResetOnSpawn = false
screenGui.IgnoreGuiInset = true
screenGui.Parent = player:WaitForChild("PlayerGui")

local mainFrame = Instance.new("Frame")
mainFrame.Size = UDim2.new(0, 320, 0, 390)
mainFrame.Position = UDim2.new(0.5, -160, 0.5, -195)
mainFrame.BackgroundColor3 = Color3.fromRGB(25, 25, 25)
mainFrame.BorderSizePixel = 0
mainFrame.Active = true
mainFrame.ClipsDescendants = true
mainFrame.Parent = screenGui

local mainCorner = Instance.new("UICorner")
mainCorner.CornerRadius = UDim.new(0, 12)
mainCorner.Parent = mainFrame

local mainStroke = Instance.new("UIStroke")
mainStroke.Thickness = 1
mainStroke.Transparency = 0.4
mainStroke.Color = Color3.fromRGB(120, 80, 255)
mainStroke.Parent = mainFrame

local titleBar = Instance.new("TextLabel")
titleBar.Size = UDim2.new(1, 0, 0, 35)
titleBar.BackgroundColor3 = Color3.fromRGB(35, 35, 35)
titleBar.BorderSizePixel = 0
titleBar.Text = guiTitle
titleBar.TextColor3 = Color3.fromRGB(255, 255, 255)
titleBar.TextScaled = true
titleBar.Font = Enum.Font.GothamBold
titleBar.Parent = mainFrame

local titleCorner = Instance.new("UICorner")
titleCorner.CornerRadius = UDim.new(0, 12)
titleCorner.Parent = titleBar

local hideButton = Instance.new("TextButton")
hideButton.Size = UDim2.new(0, 60, 0, 25)
hideButton.Position = UDim2.new(1, -65, 0, 5)
hideButton.BackgroundColor3 = Color3.fromRGB(70, 70, 70)
hideButton.Text = "Hide"
hideButton.TextColor3 = Color3.fromRGB(255, 255, 255)
hideButton.TextScaled = true
hideButton.Font = Enum.Font.Gotham
hideButton.BorderSizePixel = 0
hideButton.Parent = mainFrame

local hideCorner = Instance.new("UICorner")
hideCorner.CornerRadius = UDim.new(0, 8)
hideCorner.Parent = hideButton

local closeButton = Instance.new("TextButton")
closeButton.Size = UDim2.new(0, 25, 0, 25)
closeButton.Position = UDim2.new(1, -30, 0, 5)
closeButton.BackgroundColor3 = Color3.fromRGB(170, 50, 50)
closeButton.Text = "X"
closeButton.TextColor3 = Color3.fromRGB(255, 255, 255)
closeButton.TextScaled = true
closeButton.Font = Enum.Font.GothamBold
closeButton.BorderSizePixel = 0
closeButton.Parent = mainFrame

local closeCorner = Instance.new("UICorner")
closeCorner.CornerRadius = UDim.new(0, 8)
closeCorner.Parent = closeButton

local scrollFrame = Instance.new("ScrollingFrame")
scrollFrame.Position = UDim2.new(0, 0, 0, 35)
scrollFrame.Size = UDim2.new(1, 0, 1, -35)
scrollFrame.BackgroundTransparency = 1
scrollFrame.BorderSizePixel = 0
scrollFrame.ScrollBarThickness = 5
scrollFrame.ScrollingDirection = Enum.ScrollingDirection.Y
scrollFrame.CanvasSize = UDim2.new(0, 0, 0, 0)
scrollFrame.Parent = mainFrame

local content = Instance.new("Frame")
content.Size = UDim2.new(1, -8, 0, 0)
content.BackgroundTransparency = 1
content.BorderSizePixel = 0
content.Parent = scrollFrame

local layout = Instance.new("UIListLayout")
layout.Padding = UDim.new(0, 6)
layout.SortOrder = Enum.SortOrder.LayoutOrder
layout.Parent = content

layout:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function()
	content.Size = UDim2.new(1, -8, 0, layout.AbsoluteContentSize.Y)
	scrollFrame.CanvasSize = UDim2.new(0, 0, 0, layout.AbsoluteContentSize.Y + 10)
end)

local function roundify(parent, radius)
	local c = Instance.new("UICorner")
	c.CornerRadius = UDim.new(0, radius)
	c.Parent = parent
	return c
end

local function makeButton(text, color, height)
	local btn = Instance.new("TextButton")
	btn.Size = UDim2.new(1, -12, 0, height or 30)
	btn.BackgroundColor3 = color
	btn.Text = text
	btn.TextColor3 = Color3.fromRGB(255, 255, 255)
	btn.TextScaled = true
	btn.Font = Enum.Font.GothamBold
	btn.BorderSizePixel = 0
	btn.Parent = content
	roundify(btn, 10)
	return btn
end

local function makeStatusLabel(text)
	local lbl = Instance.new("TextLabel")
	lbl.Size = UDim2.new(1, -12, 0, 24)
	lbl.BackgroundTransparency = 1
	lbl.Text = text
	lbl.TextColor3 = Color3.fromRGB(235, 235, 235)
	lbl.TextScaled = true
	lbl.Font = Enum.Font.Gotham
	lbl.Parent = content
	return lbl
end

local function makeToggle(text, initial)
	local btn = makeButton(text .. ": " .. (initial and "ON" or "OFF"), initial and Color3.fromRGB(50, 120, 50) or Color3.fromRGB(120, 60, 60), 30)
	return btn
end

local function makeSettingRow(labelText, defaultText)
	local row = Instance.new("Frame")
	row.Size = UDim2.new(1, -12, 0, 52)
	row.BackgroundColor3 = Color3.fromRGB(32, 32, 32)
	row.BorderSizePixel = 0
	row.Parent = content
	roundify(row, 10)

	local label = Instance.new("TextLabel")
	label.Size = UDim2.new(1, -12, 0, 20)
	label.Position = UDim2.new(0, 6, 0, 4)
	label.BackgroundTransparency = 1
	label.Text = labelText
	label.TextColor3 = Color3.fromRGB(255, 255, 255)
	label.TextScaled = true
	label.Font = Enum.Font.Gotham
	label.Parent = row

	local box = Instance.new("TextBox")
	box.Size = UDim2.new(1, -12, 0, 22)
	box.Position = UDim2.new(0, 6, 0, 26)
	box.BackgroundColor3 = Color3.fromRGB(45, 45, 45)
	box.Text = defaultText
	box.TextColor3 = Color3.fromRGB(255, 255, 255)
	box.TextScaled = true
	box.Font = Enum.Font.Gotham
	box.BorderSizePixel = 0
	box.ClearTextOnFocus = false
	box.Parent = row
	roundify(box, 8)

	return box
end

local realityButton = makeToggle(mainButtonName, false)
local statusLabel = makeStatusLabel("Status: Stable")

local shakeToggle = makeToggle("Camera Shake", shakeEnabled)
local fovToggle = makeToggle("FOV Warp", fovEnabled)
local rollToggle = makeToggle("Camera Roll", rollEnabled)
local glitchToggle = makeToggle("Glitch Flash", glitchEnabled)

local speedBox = makeSettingRow("Effect Speed", tostring(effectSpeed))
local shakeBox = makeSettingRow("Shake Amount", tostring(shakeAmount))
local fovBox = makeSettingRow("FOV Amount", tostring(fovAmount))
local rollBox = makeSettingRow("Roll Amount", tostring(rollAmount))
local nameBox = makeSettingRow("Main Button Name", mainButtonName)
local titleBox = makeSettingRow("GUI Title", guiTitle)
local smallBox = makeSettingRow("Small Button Text", smallButtonName)

local applyButton = makeButton("Apply Settings", Color3.fromRGB(80, 80, 150), 30)
local resetButton = makeButton("Reset Reality", Color3.fromRGB(120, 80, 40), 30)

local smallButton = Instance.new("TextButton")
smallButton.Size = UDim2.new(0, 70, 0, 30)
smallButton.Position = UDim2.new(0, 10, 0.5, -15)
smallButton.BackgroundColor3 = Color3.fromRGB(35, 35, 35)
smallButton.Text = smallButtonName
smallButton.TextColor3 = Color3.fromRGB(255, 255, 255)
smallButton.TextScaled = true
smallButton.Font = Enum.Font.GothamBold
smallButton.BorderSizePixel = 0
smallButton.Visible = false
smallButton.Active = true
smallButton.Parent = screenGui
roundify(smallButton, 10)

local glitchOverlay = Instance.new("Frame")
glitchOverlay.Size = UDim2.new(1, 0, 1, 0)
glitchOverlay.Position = UDim2.new(0, 0, 0, 0)
glitchOverlay.BackgroundColor3 = Color3.fromRGB(0, 0, 0)
glitchOverlay.BackgroundTransparency = 1
glitchOverlay.BorderSizePixel = 0
glitchOverlay.Visible = false
glitchOverlay.ZIndex = 50
glitchOverlay.Parent = screenGui

local glitchText = Instance.new("TextLabel")
glitchText.Size = UDim2.new(1, 0, 0, 80)
glitchText.Position = UDim2.new(0, 0, 0.45, 0)
glitchText.BackgroundTransparency = 1
glitchText.Text = ""
glitchText.TextColor3 = Color3.fromRGB(255, 255, 255)
glitchText.TextScaled = true
glitchText.Font = Enum.Font.GothamBlack
glitchText.ZIndex = 51
glitchText.Parent = glitchOverlay

local function setMainButtonText()
	realityButton.Text = mainButtonName .. ": " .. (realityOn and "ON" or "OFF")
	realityButton.BackgroundColor3 = realityOn and Color3.fromRGB(170, 60, 60) or Color3.fromRGB(50, 120, 50)
end

local function setStatus()
	if realityOn then
		statusLabel.Text = "Status: Reality breaking..."
	else
		statusLabel.Text = "Status: Stable"
	end
end

local function parseNumber(text, fallback, minValue, maxValue)
	local n = tonumber(text)
	if not n then
		return fallback
	end
	if minValue then
		n = math.max(minValue, n)
	end
	if maxValue then
		n = math.min(maxValue, n)
	end
	return n
end

local function applySettings()
	effectSpeed = parseNumber(speedBox.Text, effectSpeed, 0.1, 100)
	shakeAmount = parseNumber(shakeBox.Text, shakeAmount, 0, 10)
	fovAmount = parseNumber(fovBox.Text, fovAmount, 0, 120)
	rollAmount = parseNumber(rollBox.Text, rollAmount, 0, 45)

	if nameBox.Text ~= "" then
		mainButtonName = nameBox.Text
	end
	if titleBox.Text ~= "" then
		guiTitle = titleBox.Text
	end
	if smallBox.Text ~= "" then
		smallButtonName = smallBox.Text
	end

	titleBar.Text = guiTitle
	smallButton.Text = smallButtonName
	setMainButtonText()
	setStatus()
end

local function stopReality()
	realityOn = false
	realityLoopToken += 1

	local camera = workspace.CurrentCamera
	if camera then
		camera.FieldOfView = storedFOV
	end

	glitchOverlay.Visible = false
	setMainButtonText()
	setStatus()
end

local function startReality()
	if realityOn then return end
	realityOn = true
	realityLoopToken += 1
	local myToken = realityLoopToken

	local camera = workspace.CurrentCamera
	if camera then
		storedFOV = camera.FieldOfView
	end

	setMainButtonText()
	setStatus()

	task.spawn(function()
		while realityOn and realityLoopToken == myToken do
			local cam = workspace.CurrentCamera
			if cam then
				local t = os.clock()
				local speed = math.max(effectSpeed, 0.1)

				if fovEnabled then
					cam.FieldOfView = storedFOV + math.sin(t * speed) * fovAmount
				else
					cam.FieldOfView = storedFOV
				end

				local shakeOffset = Vector3.new(0, 0, 0)
				if shakeEnabled then
					shakeOffset = Vector3.new(
						(math.noise(t * speed, 0, 0) - 0.5) * 2 * shakeAmount,
						(math.noise(0, t * speed, 0) - 0.5) * 2 * shakeAmount,
						(math.noise(0, 0, t * speed) - 0.5) * 2 * shakeAmount
					)
				end

				local rollAngle = 0
				if rollEnabled then
					rollAngle = math.sin(t * speed * 1.25) * math.rad(rollAmount)
				end

				cam.CFrame = cam.CFrame * CFrame.new(shakeOffset) * CFrame.Angles(0, 0, rollAngle)
			end

			RunService.RenderStepped:Wait()
		end

		local cam = workspace.CurrentCamera
		if cam then
			cam.FieldOfView = storedFOV
		end
	end)

	task.spawn(function()
		while realityOn and realityLoopToken == myToken do
			if glitchEnabled then
				glitchOverlay.Visible = true
				glitchOverlay.BackgroundTransparency = math.random(70, 90) / 100
				glitchText.Text = glitchMessages[math.random(1, #glitchMessages)]
				task.wait(math.max(0.05, 0.25 / math.max(effectSpeed, 0.1)))
				glitchOverlay.Visible = false
				task.wait(math.max(0.08, 0.45 / math.max(effectSpeed, 0.1)))
			else
				task.wait(0.15)
			end
		end

		glitchOverlay.Visible = false
	end)
end

realityButton.MouseButton1Click:Connect(function()
	if realityOn then
		stopReality()
	else
		startReality()
	end
end)

shakeToggle.MouseButton1Click:Connect(function()
	shakeEnabled = not shakeEnabled
	shakeToggle.Text = "Camera Shake: " .. (shakeEnabled and "ON" or "OFF")
	shakeToggle.BackgroundColor3 = shakeEnabled and Color3.fromRGB(50, 120, 50) or Color3.fromRGB(120, 60, 60)
end)

fovToggle.MouseButton1Click:Connect(function()
	fovEnabled = not fovEnabled
	fovToggle.Text = "FOV Warp: " .. (fovEnabled and "ON" or "OFF")
	fovToggle.BackgroundColor3 = fovEnabled and Color3.fromRGB(50, 120, 50) or Color3.fromRGB(120, 60, 60)
end)

rollToggle.MouseButton1Click:Connect(function()
	rollEnabled = not rollEnabled
	rollToggle.Text = "Camera Roll: " .. (rollEnabled and "ON" or "OFF")
	rollToggle.BackgroundColor3 = rollEnabled and Color3.fromRGB(50, 120, 50) or Color3.fromRGB(120, 60, 60)
end)

glitchToggle.MouseButton1Click:Connect(function()
	glitchEnabled = not glitchEnabled
	glitchToggle.Text = "Glitch Flash: " .. (glitchEnabled and "ON" or "OFF")
	glitchToggle.BackgroundColor3 = glitchEnabled and Color3.fromRGB(50, 120, 50) or Color3.fromRGB(120, 60, 60)
end)

applyButton.MouseButton1Click:Connect(function()
	applySettings()
end)

resetButton.MouseButton1Click:Connect(function()
	stopReality()
	applySettings()
end)

hideButton.MouseButton1Click:Connect(function()
	mainFrame.Visible = false
	smallButton.Visible = true
end)

smallButton.MouseButton1Click:Connect(function()
	mainFrame.Visible = true
	smallButton.Visible = false
end)

closeButton.MouseButton1Click:Connect(function()
	stopReality()
	screenGui:Destroy()
end)

local function makeDraggable(handle, target)
	local dragging = false
	local dragInput
	local dragStart
	local startPos

	handle.InputBegan:Connect(function(input)
		if input.UserInputType == Enum.UserInputType.MouseButton1
			or input.UserInputType == Enum.UserInputType.Touch then
			dragging = true
			dragStart = input.Position
			startPos = target.Position

			input.Changed:Connect(function()
				if input.UserInputState == Enum.UserInputState.End then
					dragging = false
				end
			end)
		end
	end)

	handle.InputChanged:Connect(function(input)
		if input.UserInputType == Enum.UserInputType.MouseMovement
			or input.UserInputType == Enum.UserInputType.Touch then
			dragInput = input
		end
	end)

	UserInputService.InputChanged:Connect(function(input)
		if input == dragInput and dragging then
			local delta = input.Position - dragStart
			target.Position = UDim2.new(
				startPos.X.Scale,
				startPos.X.Offset + delta.X,
				startPos.Y.Scale,
				startPos.Y.Offset + delta.Y
			)
		end
	end)
end

makeDraggable(titleBar, mainFrame)
makeDraggable(smallButton, smallButton)

setMainButtonText()
setStatus()
applySettings()

Features & Information

-- Reality Break GUI -- Open-source, local-only visual effects for Roblox -- Mobile-friendly & fully customizable -- Credit: Me -- Features: Camera Shake, FOV Warp, Roll, Glitch Flash -- Not FE, just local visuals

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts