-- ============================================================ -- TOWNL: TRUE REALISM ENGINE -- Logic: Unified Realistic Style, Dynamic Shadow Force & Auto-Detect -- Optimized for: low-end devices (High Visuals, Minimal Battery Drain, but not entirely optimized lol) -- ============================================================ local Lighting = game:GetService("Lighting") local Workspace = game:GetService("Workspace") -- Function to safely enable shadows on a light source local function configureLight(light) if light:IsA("PointLight") or light:IsA("SpotLight") or light:IsA("SurfaceLight") then pcall(function() light.Shadows = true end) -- Optional: If you use SurfaceGuis as neon/light panels, ensure they pop elseif light:IsA("SurfaceGui") then pcall(function() light.Brightness = math.max(light.Brightness, 1) end) end end local function applyRealism() -- 1. CLEANUP PREVIOUS EFFECTS for _, v in ipairs(Lighting:GetChildren()) do if v:IsA("PostProcessEffect") or v:IsA("Atmosphere") or v:IsA("Sky") then v:Destroy() end end -- 2. ENGINE STYLE LOCK pcall(function() Lighting.LightingStyle = Enum.LightingStyle.Realistic Lighting.Technology = Enum.Technology.Future -- High-end shadow depth end) -- 3. GLOBAL LIGHTING PARAMETERS (Time Modification Removed) Lighting.Brightness = 2.5 Lighting.ColorShift_Top = Color3.fromRGB(255, 245, 230) Lighting.GlobalShadows = true Lighting.OutdoorAmbient = Color3.fromRGB(110, 110, 120) pcall(function() Lighting.EnvironmentDiffuseScale = 1 Lighting.EnvironmentSpecularScale = 1 end) -- 4. INITIAL SHADOW FORCE (Scan Existing Lights) for _, descendant in ipairs(Workspace:GetDescendants()) do configureLight(descendant) end -- 5. DYNAMIC LIGHT DETECTION (Finds NEW lights in real-time) Workspace.DescendantAdded:Connect(function(descendant) configureLight(descendant) end) -- 6. ATMOSPHERIC SCATTERING (Modern Realism) local atm = Instance.new("Atmosphere", Lighting) atm.Density = 0.35 atm.Offset = 0.1 atm.Color = Color3.fromRGB(190, 190, 200) atm.Decay = Color3.fromRGB(90, 100, 110) atm.Glare = 0.2 atm.Haze = 0.6 -- 7. THE "REALISM" STACK (Post-Processing) local bloom = Instance.new("BloomEffect", Lighting) bloom.Intensity = 0.5 bloom.Size = 24 bloom.Threshold = 0.85 local cc = Instance.new("ColorCorrectionEffect", Lighting) cc.Contrast = 0.15 cc.Saturation = 0.1 cc.TintColor = Color3.fromRGB(255, 253, 245) local rays = Instance.new("SunRaysEffect", Lighting) rays.Intensity = 0.08 rays.Spread = 1 -- 8. CLOUDS & SKY local sky = Instance.new("Sky", Lighting) sky.SunAngularSize = 11 local terrain = Workspace:FindFirstChildOfClass("Terrain") if terrain then local clouds = terrain:FindFirstChildOfClass("Clouds") or Instance.new("Clouds", terrain) clouds.Cover = 0.55 clouds.Density = 0.7 end print("TOWNL: Realism Applied. Dynamic New Light Detection Active.") end -- Execute to align with Unified Lighting Tech applyRealism()