Steam Workshop games and Source 1 mounting bring familiar experiences into s&box, alongside big performance improvements, new lighting tools, and achievement-based weekly rewards.
CMAA2 - added post-process anti-aliasing, with optional combined MSAA, alongside clearer anti-aliasing/upscaler controlsPR #6155 by @xezno
Light modulators - filter point lights, spotlights and sunlight through textured rectangles or infinite planes, affecting surfaces and volumetric fogPR #6193 by @garrynewman
Light modulation effects - added scroll, caustics, cloud shadows, rotation, kaleidoscope, chromatic split, ripple and pulse effects, with world-sized UVs and appearance controlsPR #6193 by @garrynewman
Fog - added independent distance and height layers, fixed or sky-derived colours, camera targeting and post-process volume blendingPR #6185 by @garrynewman
Sprite refraction - added normal-map refraction to SpriteRenderer and ParticleSpriteRendererPR #6190 by @garrynewman
Camera depth targets - render camera and command-list views into caller-owned depth textures; view/reflection/refraction draws return ViewHandle projection, viewport and depth metadataPR #6154 by @garrynewman
Render-pass dependencies - added declared resource inputs/outputs and async-compute scheduling for independent GPU passes; managed overlap is automatic when supported, native SSR/GTAO overlap is opt-inPR #6071 by @antopilo
Depth/normals requests - custom material consumers can request the prepass output through NeedsDepthNormalsPR #6166 by @antopilo
GPU memory warning - warn when GPU memory exceeds its budgetPR #6151 by @antopilo
Source 1 mounting - ship engine support for Source 1 models, ragdolls, materials, textures, decals, sounds and surfacesPR #6114 by @aylaylay
Imported lighting - allow mounts to supply ambient probe textures, constant/linear light attenuation, baked-light indices, mixed shadows and static shadow-caster settingsPR #6159 by @aylaylay
Impact splatters - surfaces can specify decals projected behind weapon impacts, with flesh blood splatters configured initiallyPR #6219 by @wheatleymf
Decal fade-in - added height-coverage fade-in for impact decalsPR #6219 by @wheatleymf
Water exit - help swimming players climb reachable edges and prioritize ladders over swimmingPR #6148 by @garrynewman
Dry-fire animation - weapons now set a dry-fire animation parameterPR #6200 by @solwllms
Range sliders - added min-max slider support for Vector2 properties and refreshed inspector group headersPR #6185 by @garrynewman
Network simulation - added repeatable host/client simulations with latency and packet loss, performance measurements and message-ordering testsPR #6176 by @lolleko
Password-protected games - add sv_password, LobbyConfig.Password, setup/password prompts, protected-server indicators and host-migration support; quickplay skips protected gamesPR #6248 by @handsomematt
Runtime shader compilation - add Shader.CompileAsync and Shader.CompileFileAsync outside the editor, including dedicated servers, with local-project hotloadingPR #6246 by @handsomematt
Explosion scorch marks - exploding props place a networked scorch effect on nearby groundPR #6201 by @solwllms
F11 Dev Tools - expand the performance hub into a dockable console, frame/CPU/GPU/memory/rendering, network and UI inspection toolkitPR #6272 by @handsomematt
GPU occlusion culling - add two-phase GPU visibility tests for opaque meshes in native and managed renderingPR #6217 by @xezno
Aggregate occlusion - cull individual aggregate fragments, with bounds/depth visualization, freeze controls and expanded statisticsPR #6263 by @xezno
Human heads - add female heads 03/04 and male head 06, with grouped avatar skin thumbnailsPR #6164 by @danduwfp
Network dormancy - remove acknowledged unchanged objects from per-tick snapshot work and wake them automatically on relevant changesPR #6271 by @deadmonstor, @lolleko
Jump boost - optional, default-off sprint-jump momentum setting on PlayerControllerPR #6171 by @carsonkompon
Weapon hit force - add virtual BaseCombatWeapon.GetHitForce for game-specific force rules such as prop protectionPR #6296 by @wheatleymf
Painter filtering - expose texture filter mode, including point filtering for pixel artPR #6304 by @handsomematt
Asset browser folders - support renaming/deleting sidebar folders with protected roots and Windows Recycle Bin deletionPR #6371 by @handsomematt
Light colour controls - add Kelvin temperature and separate intensity, rename Light Color to Tint and preserve existing light appearancePR #6387 by @garrynewman
Light animation - add twelve built-in patterns plus custom looping intensity curves/colour gradients, speed/time offsets, editor previews and movie recordingPR #6387 by @garrynewman
Gradient sliders - add reusable SliderGradientAttribute and full gradient tracks for temperature/intensity controlsPR #6387 by @garrynewman
External web links - add Game.Overlay.OpenUrl with player confirmation and HTTP/HTTPS links opening in the system browserPR #6275 by @handsomematt
Clustered lighting - rewrote light culling and made light, environment-map and decal loops share uniform data loads across shader wavesPR #6057 by @sampavlovic
Screen-space reflections - replaced temporal-amortized tracing with per-frame Hi-Z cone tracing and roughness-aware GGX filtering; removed the old AMD reflection denoiserPR #5873 by @sampavlovic
Quality presets - cap SSR at half resolution and reduce the cost of higher volumetric fog presetsPR #6147 by @sampavlovic
Anti-aliasing presets - Low/Medium use CMAA2, High/Ultra use 4x MSAA, and no preset uses 8x MSAA; render scale works with off, MSAA and CMAA2PR #6155 by @xezno
Depth prepass - skip unused normals/roughness output for cameras without post-FX or custom command listsPR #6166 by @antopilo
Neutral post-FX - skip unchanged colour adjustments, disabled grading/curves and zero-offset chromatic aberrationPR #6166 by @antopilo
Non-MSAA mask sampling - read full-resolution AO and contact-shadow masks directly instead of performing unnecessary depth-matched gathersPR #6079 by @antopilo
GPU profiling - skip timestamp queries for discarded layers that have no resolve workPR #6195 by @antopilo
Light cookies - use more appropriate compression and colour-space settings for core cookie texturesPR #6205 by @wheatleymf
Serialization - serialize value types without boxing and use typed RPCs without temporary object arraysPR #6176 by @lolleko
Packet handling - pool packets, encode multicast messages once and reduce per-tick send/receive allocationsPR #6176 by @lolleko
Delta snapshots - pack clusters by encoded size so each fits a single Steam packetPR #6176 by @lolleko
Startup - remove the old Vulkan splash-rendering path and continue reducing startup waitsPR #6125 by @xezno
Startup preparation - prepare type libraries and scan the resource database earlier, overlap work and retain the software splash until rendering is readyPR #6150 by @xezno
Startup telemetry - record time to startup window and menu initializationPR #6150 by @xezno
Package code - request backend-compiled DLLs for the current engine version, cache successful responses and fall back to local code archives when available72ed059 by @handsomematt
Sleeping props - skip per-step managed work for sleeping rigidbodies and avoid joint-scale updates when scale is unchangedPR #6214 by @lolleko
Transforms - avoid change-callback setup for transforms without listenersPR #6214 by @lolleko
Prop creation/deletion - remove redundant broadphase updates, reparenting and repeated mass rebuilding when spawning or destroying physics bodiesPR #6216 by @lolleko
Scrape sounds - evaluate scraping for active bodies rather than iterating every physics bodyPR #6130 by @aylaylay
Player controller - update Box3D and rework step clearance, landings, uneven terrain, platform motion, dynamic supports and surface frictionPR #6181 by @aylaylay
Ladders - improve tilted-ladder movement, attachment handling, jumping off and transitions back to walkingPR #6181 by @aylaylay
Workshop publishing - select an existing item from a matching-type dropdown instead of entering its ID manuallyPR #6132 by @devultj
Workshop downloads - record download timing breakdowns for comparison with backend downloadsPR #6157 by @devultj
Probe debugging - show imported probe centres and stored lighting, with sphere/cube views and corrected visibility/depth handlingPR #6159 by @aylaylay
Mouse documentation - clarify input modes, cursor sensitivity, custom cursors and UI cursor overridesPR #6172 by @ryleigh
Shader lookup tables - force constant-index lookup resolution in affected shaders, avoiding local-memory GPU faults seen on NVIDIAPR #6189 by @lolleko, @clemixo
GPU crash reports - wait for Aftermath dumps, attach device-fault data and record the crashing thread, Vulkan call and shaderPR #6163 by @lolleko
VRAM crash diagnostics - include more detail for video-memory allocation failuresPR #6222 by @lolleko
KV3 saves - size binary save buffers up front to reduce allocation pressurePR #6139 by @lolleko
Mac development build - update KosmicKrisp, reduce memory use, disable problematic GPU profiler timers and fix splash-screen hangsPR #6199 by @sampavlovic
Managed builds - make code generation incremental, preserve unchanged outputs and avoid redundant generator/cache buildsPR #6128 by @handsomematt
Native builds - improve precompiled-header coverage, batch Qt moc output, parallelize dependency downloads and remove redundant editor buildsPR #6145 by @handsomematt
Tests - run projects concurrently, split integration work, share expensive setup and remove unnecessary fixed waitsPR #6129 by @handsomematt
CI - simplify build/test steps, improve logs and job summaries, and make zero-allocation checks more resilientPR #6160 by @handsomematt
Shader builds - seed compiled shaders from published artifacts to avoid rebuilding unchanged outputsPR #6122 by @handsomematt
Build uploads - parallelize artifact packaging/uploads and add a minimal compile-only archive2ecf079 by @handsomematt
Sentry uploads - retry API failures and allow CI to continue after persistent upload failures2af6ead by @handsomematt
Shader upgrades - recompile incompatible package shaders at install time and cache the results alongside backend shader upgradesPR #6254 by @handsomematt
Shader loading progress - show updating-shader progress and include preprocessor/parser errors in compiler outputPR #6259 by @handsomematt
Publish verification - request backend compilation during editor publishing, display compiling status and report compiler errorsPR #6239 by @handsomematt
Package DLL lookup - fetch engine-version DLLs from the backend rather than the package manifest, with code-archive fallbackPR #6239 by @handsomematt
Descriptor batching - submit cubemap faces together, generate morph atlases in the caller setup context and skip empty-batch descriptor rotationPR #6245 by @lolleko
Descriptor diagnostics - report initial ring growth and subsequent growth every ten setsPR #6231 by @lolleko
Contact recycling - enable physics contact recycling for stacked bodies while keeping player-controller contacts freshPR #6230 by @aylaylay
GPU crash context - distinguish core/game shader crashes and attach recently bound shaders and textures as diagnostic contextPR #6256 by @lolleko
Fast transforms - use cache-line-aware transform storage, atomic slot allocation and opaque rigid-model instancingPR #6265 by @sampavlovic
Shadow cascades - feather between adjacent sun cascades over their outer 10%PR #6269 by @xezno
Physics creation - initialize 2D/3D bodies and shapes with final creation settings instead of changing them afterwardPR #6273 by @aylaylay
Native physics - consolidate the implementation and collision building; fix surface-property leaks and authored Hammer material handlingPR #6283 by @aylaylay
Light probes - allow materials to opt out of probes and remove probe debug objects when volumes are deletedPR #6251 by @aylaylay
Polygon mesh memory - release temporary render vertices after building and defer paint caches until first usePR #6281 by @handsomematt
Editor allocations - cache toolbar/tool/selection state and avoid repeated per-frame gizmo delegatesPR #6329 by @handsomematt
Scope allocations - use internal struct scopes in per-frame Gizmo, Scene, networking and Paint paths without changing public signaturesPR #6286 by @handsomematt
Object traversal - use a single descendant snapshot for GetAllObjectsPR #6382 by @deadmonstor
Resource rescans - fingerprint .meta and compiled files and skip unchanged files instead of reopening/reparsing themPR #6227 by @solwllms
Splash scaling - improve logo and progress scaling for smaller displays, including Steam DeckPR #6255 by @xezno
Steam runtime - update bundled Steam client libraries to the October 2026 versionsPR #5967 by @github-actions
Selective asset publishing - follow configured scenes, settings, Resources folders and explicit rules; default on for new games and opt-in for existing projectsPR #6072 by @lolleko
Publish review - improve asset previews and rule controls and avoid implicitly including source files for compiled assetsPR #6363 by @lolleko
Metadata cache - reuse parsed .meta files until their timestamp or size changesPR #6324 by @handsomematt
GUID persistence - read native GUID data once and only write newly generated or changed GUIDsPR #6228 by @solwllms
Shader checks - share include reads within each shader MD5 check and remove redundant filesystem existence checksPR #6285 by @handsomematt
ModelPhysics networking - use change-tracked NetList body/joint collections and automatically upgrade legacy List-dependent codePR #6258 by @lolleko
Discover shelves - give featured games another row, use square Continue Playing thumbnails and delay hover previewsPR #6381 by @lolleko
Party invites - automatically create a party when inviting a friendPR #6381 by @lolleko
Loading updates - show a newer changelist when it is more recent than the latest news postPR #6303 by @handsomematt
Crash diagnostics - add command-buffer/query lifetime checks and report driver memory budgets plus raw pools on Vulkan allocation failuresPR #6392 by @lolleko
Public sync - parallelize LFS pointer reads, reuse artifact hashes and skip already-published artifactsPR #6267 by @handsomematt
KV3 memory - pre-size owned binary save buffersPR #6262 by @lolleko
Achievement rewards - show weekly achievement objectives, progress and links to their games in the rewards menu, replacing playtime/game-count goalsPR #6390 by @garrynewman
Light inspector - organize colour, influence, beam, shadows, fog and animation controls; allow manually entered values beyond slider limitsPR #6387 by @garrynewman
Shader compile parallelism - restore one shader-combination worker per core instead of capping by free memory; ShaderCompiler -j remains availablePR #6397 by @handsomematt
Morph compositing - update bindless data before submitting new morph textures and retain textures while used, fixing GPU crashes during character/clothing changesPR #6191 by @sampavlovic
Bindless descriptors - reuse only GPU-finished descriptor sets and grow the ring when necessary instead of overwriting in-flight setsPR #6143 by @lolleko
Screenshot targets - key pooled render targets by the sample count actually used, fixing screenshot GPU faults and editor hangs with highlightsPR #6133 by @ryleigh
Resource lifetimes - fix stale UI material state and mesh override registrations when materials/meshes reloadPR #6135 by @lolleko
Environment-map baking - fix GPU crashes with the Quality filter, including RTX 50-series reportsPR #6189 by @lolleko, @clemixo
UI shader bounds - clamp gradient-stop and scissor-clip countsPR #6189 by @lolleko
3D skybox meshes - retain scene blob data until deferred deserialization completes so mesh components keep their geometryPR #6212 by @aylaylay
3D skybox lifetime - avoid calling into a deleted parent worldPR #6138 by @lolleko
Subview lighting - stop reflection/refraction views sampling the main camera's AO and SSRPR #6162 by @garrynewman
Sun shadows - fix speckling and cascade shimmer far from the world originPR #6202 by @polepie
Depth of field - handle zero-normal surfaces without producing invalid pixels that spread through bloomPR #6192 by @wheatleymf
Texture clears - correct clears affecting screen-space shadows on skyboxes/translucency and subsurface renderingPR #6101 by @sampavlovic
Highlights - handle model backfaces correctly to prevent excessive glow on hollow propsPR #6203 by @wheatleymf
Reflections - fix near-camera tracing, self-intersections, dark fringing and overbright values contaminating SSRPR #5873 by @sampavlovic
Cluster shading - preserve backface transmission, correct overlapping cloth envmap blur and decal mip selection, and bound cluster readsPR #6057 by @sampavlovic
Volumetric fog - fix sampling without environment probesPR #6193 by @garrynewman
Light modulators - fix stale candidates after small rotations and reversed baked-sun rays applying the filter on the wrong side of a planePR #6193 by @garrynewman
Moving text - use interpolated world positions for text renderersPR #6146 by @wheatleymf
Ragdoll joints - map joints to bodies by physics part so skipped parts do not shift the connectionsPR #6215 by @lolleko
Joint validation - normalize joint frames and allow joints whose ends reference the same body without throwingPR #6215 by @lolleko
Prop gibs - inherit overridden material and surface from the broken propPR #6187 by @wheatleymf
Ragdoll skins - include attribute-based material overrides when copying model renderersPR #6165 by @solwllms
Explosion damage - correct occlusion trace tags so props can block explosions, ignore the originating weapon and carry weapon attributionPR #6197 by @solwllms
Seated players - forward explosion damage from chairs to their occupantsPR #6188 by @solwllms
Sound hotloading - fix an Opus decoder overrun when reloading an in-use soundPR #6134 by @lolleko
Sound boxes - update bounds with WorldPosition so sounds follow their objectsPR #6180 by @solwllms
Panel ticking - snapshot children to handle deletion or reparenting during tick without an out-of-range exceptionPR #6175 by @solwllms
Viewport cursor - restore cursor locking after opening panel windowsPR #6223 by @devultj
Hammer lighting - skip unbaked probes instead of showing a black All Lighting viewPR #6221 by @devultj
Hammer tint - preserve tint on compiled aggregate fragmentsPR #6126 by @devultj
Bounds debugging - fix scene-object bounds flickeringPR #6131 by @aylaylay
DDGI debugging - restore LPV debug support for DDGI volumesPR #6196 by @sampavlovic
Resource compilation - keep native-sensitive resource work on the main thread while moving suitable texture work to workersPR #6152 by @garrynewman
SVG hotloading - snapshot SVG textures before reloading themPR #6141 by @lolleko
Removed resources - remove deleted assets from the recent-assets working setPR #6142 by @lolleko
Bitmap disposal - fix warnings/errors when compiling projects in Visual StudioPR #6161 by @garrynewman
Workshop images - stop uploading the first frame of sbox.game videos as item imagesPR #6132 by @devultj
Workshop downloads - fix a stall loop when a download fails partway throughPR #6157 by @devultj
Source materials - parse dx90_20b shader variants to restore missing mounted materialsPR #6158 by @aylaylay
Garry's Mod addons - fix GMA discovery and loose addon material resolutionPR #6168 by @aylaylay
Multiplayer - fix Linux editor multiplayer launches, lobby creation and joiningPR #6097 by @aidencurtis
Metadata paths - fix case-sensitive native Linux path handlingPR #6218 by @solwllms
GUIDs - match Windows GUID byte ordering on LinuxPR #6211 by @handsomematt
Wayland startup - continue startup when the window cannot be positionedPR #6140 by @lolleko
SSR editor crashes - propagate the main camera depth/normals requirement to the editor camera, guard missing roughness input, size indirect tracing storage per view and fix non-MSAA normal samplingPR #6229 by @sampavlovic
Shader compatibility - restore DoAtmospherics as an obsolete wrapper over Fog::Apply and Fog::TransmittancePR #6236 by @handsomematt
Nested skyboxes - validate skybox content before enabling it and reject nested Skybox3D scenes before their callbacks runPR #6226 by @aylaylay
Connection retries - do not silently abort retrying on temporary Server closed responses during map-change/rejoin flows; report final failure after retriesPR #6242 by @solwllms
Standalone engine path - exported games no longer overwrite the user-level FACEPUNCH_ENGINE environment variablePR #6233 by @metapyziks
Retail solution generation - stop native error-reporting workers before unloading DLLs to avoid exit crashes with -generatesolutionPR #6238 by @handsomematt
Fixed-update jitter - transmit the position the owner displays at send time so snapshot positions and timestamps matchPR #6264 by @lolleko
Dormancy wakeup - wake objects before snapshots and transmit changes are processedPR #6271 by @lolleko
Networked meshes - retain blob data through deserialization during NetworkSpawn and descendant refreshPR #6279 by @handsomematt
Dedicated-server identity - provide the server Steam ID through the handshake instead of returning zero from Connection.SteamIdPR #6353 by @handsomematt
Dedicated-server resources - finish installing referenced and nested package resources before startupPR #6362 by @handsomematt
Package loading - load DLLs in dependency order and use the correct menu context for console overlay loggingPR #6276 by @handsomematt
Cross-branch publishing - prevent different Steam branches interfering with package publishingc4a13c1 by @handsomematt
Publish whitelist - block publishing with Disable Whitelist enabled and explain the restriction instead of showing false successPR #6297 by @handsomematt
Party rejoin - skip reconnecting to the leader when already in the same gamePR #6288 by @handsomematt
Website Play links - handle Steam relaunch callbacks when s&box is already runningPR #6323 by @handsomematt
Launch metadata - fetch complete package details so dedicated-server-only games open the server listPR #6322 by @handsomematt
Integrated GPU detection - use Vulkan device type rather than adapter-name heuristics for presetsPR #6270 by @lolleko
Window overrides - preserve -sw/-w/-h while applying first-run graphics presetsPR #6292 by @handsomematt
Startup failure - retain the original error instead of masking it with Function Pointer Is Null during shutdownPR #6334 by @handsomematt
Painter binary compatibility - restore the original Painter.Texture signature so already-published code keeps loadingPR #6393 by @solwllms
Foliage edges - calculate alpha-to-coverage derivatives before clipping to avoid clear-colour fringesPR #6282 by @handsomematt
SSR normals - avoid bindless lookup for screen-space reflection normal readsPR #6383 by @sampavlovic
Vulkan startup - retry without DLSS extensions after device-creation failure and add -vulkan_disable_dlssPR #6294 by @handsomematt
Material hotloading - preserve textures and constants on Material.Create materials through shader reloadsPR #6308 by @handsomematt
DDGI residency - request full detail for active volume textures so streaming retains or reloads themPR #6340 by @handsomematt
Atmospheric sky - cap density exponents so invalid sky pixels do not contaminate indirect-light bakesPR #6344 by @handsomematt
Volumetric fog - avoid pow(0,0) corruption on AMD with zero falloff exponentPR #6314 by @handsomematt
Bake exclusions - exclude Hide In Game meshes, mapping face highlights, viewmodels and overlays from relevant cube/lighting capturesPR #6359PR #6347PR #6378 by @handsomematt
Screenshots - convert BGRA readbacks correctly so red and blue channels are not swappedPR #6354 by @handsomematt
Texture mip views - guard missing mip views and clear stale bindings from dynamic parametersPR #6260 by @lolleko
Render callback exceptions - catch managed failures in render-layer callbacksPR #6262 by @lolleko
Render reentrancy - prevent overlapping Hammer view rendering and mid-frame panel-window drawsPR #6262PR #6392 by @lolleko
GPU query lifetime - keep destroyed queries alive until queued EndQuery signals completePR #6392 by @lolleko
Texture readback - reject nonresident mip readbacksPR #6384 by @lolleko
Ray-tracing test memory - free render-mesh BLAS after GPU work completesPR #6367 by @handsomematt
Shader diagnostics - handle EOF, unterminated sections, empty source files and long Slang errors without crashingPR #6262PR #6384 by @lolleko
Slang warnings - declare subgroup capabilities and uniform cluster indices; expose RW helpers to IntelliSensePR #6376PR #6333 by @handsomematt
GoldSrc cutouts - only treat palette index 255 as transparent on masked textures and preserve alpha-test depth/shadowsPR #6302 by @handsomematt
WorldPanel effects - stop layer composites applying object transforms twicePR #6313 by @handsomematt
Text effects - retain stroke/shadow colours with background-clip:textPR #6300 by @handsomematt
Backdrop filters - clip filters to the resolved circle/polygon border shapePR #6307 by @handsomematt
Virtualized cells - refresh VirtualGrid/VirtualList content and styling when the parent rebuildsPR #6352 by @handsomematt
Refocus clicks - synchronize cursor coordinates before dispatching mouse button eventsPR #6293 by @handsomematt
Fractional DPI - fix Application.HoveredWidget hit testing through mouse-transparent overlaysPR #6365 by @handsomematt
Clipboard shortcuts - block Insert/Delete clipboard combinations on limited WebSurfacesPR #6306 by @handsomematt
Panel Gallery input - insert typed/pasted text at the caret rather than in reversePR #6319 by @handsomematt
Shopping cart - preserve items added during checkout and use the purchased snapshot for confirmationPR #6339 by @handsomematt
Audio filters - replace incorrect low/high-pass behavior with Hz-based biquad filters and resonance, migrating saved cutoff valuesPR #6266 by @lolleko
Sample downmix - average all source channels instead of summing stereo into clippingPR #6380 by @handsomematt
Soundscapes - use AudioListener position when available, falling back to the cameraPR #6343 by @handsomematt
H.264 playback - retain compressed packets while draining decoder output and finish buffered frames at EOFPR #6278 by @handsomematt
MP4 timestamps - use 64-bit timing to prevent high-timescale overflow, early looping and incorrect duration/seekingPR #6338 by @handsomematt
Video clock - keep video-only playback at real time when engine FPS is lower than the clip ratePR #6375 by @handsomematt
Grouped subgraphs - bake independent nodes/inputs for animation subgraph instances inside groupsPR #6364 by @handsomematt
Tiny blend weights - avoid invalid animation poses and bind-pose fallbacksPR #6309 by @handsomematt
Particle sprites - copy dropped/embedded sprites so duplicated effects do not edit each otherPR #6326 by @handsomematt
FBX blend shapes - skip duplicate channels to prevent repeated mesh-delta assertionsPR #6291 by @handsomematt
Large FBX imports - use wider node indices beyond 65,535 nodesPR #6384 by @lolleko
DMX animations - sanitize bone stream names to match ModelDoc and FBX namingPR #6345 by @handsomematt
Clutter bounds - ignore nonfinite procedural bounds instead of breaking placement throughout the scenePR #6350 by @handsomematt
Mesh indices - defer empty index-buffer allocation until sizedPR #6311 by @handsomematt
Rectangular height fields - transpose non-square data without overrunning buffersPR #6384 by @lolleko
Animation safety - bound parameter indices and skip editor highlight nodes that no longer existPR #6262PR #6384 by @lolleko
Model/map load safety - handle uninitialized ModelDoc, failed render nodes, oversized merged half-edge meshes and missing vmap prefixesPR #6262PR #6384 by @lolleko
Scene-map teardown - unsubscribe map handlers, cancel pending loads and avoid creating native physics worlds for destroyed scenesPR #6301 by @handsomematt
MCP edit ownership - record undo and dirty state in the session that owns the edited objectPR #6330 by @handsomematt
Hierarchy selection - stop Ctrl/Shift-selection scrolling back to old selected rowsPR #6289PR #6373 by @handsomematt
Prefab replacement - update names and clear repaired missing-prefab error iconsPR #6349PR #6351 by @handsomematt
Bevel previews - recover from malformed geometry without leaving the tool unusablePR #6346 by @handsomematt
Fast Texture - Escape cancels the edit, restores UV/material state and closes the toolPR #6321 by @handsomematt
Face highlighting - retain depth bias near the camera to avoid z-fightingPR #6360 by @handsomematt
Hammer layout - defer pane layout changes until menu clicks finishPR #6356 by @handsomematt
Hammer soundscapes - rotate snd_soundscape_box helpers with their entitiesPR #6374 by @handsomematt
Asset-browser history - tolerate missing saved history/index values instead of failing project loadPR #6342 by @handsomematt
Asset previews - avoid stealing focus from ModelDoc/Material Editor when savingPR #6331 by @handsomematt
Closed console - skip Clear Console On Play for destroyed console windowsPR #6312 by @handsomematt
Play viewport - make Screen.Size correct for OnStart and the first updatePR #6298 by @handsomematt
Scene dumps - write complete prefab contents without requiring external prefab filesPR #6358 by @handsomematt
Inspector records - hide compiler-generated EqualityContract propertiesPR #6357 by @handsomematt
CircularBuffer - reject negative indices after wrapping instead of accessing valid slotsPR #6305 by @handsomematt
Linux parties - correct native lobby callback packing when a party has a selected gamePR #6318 by @handsomematt
Linux menus - keep editor menus visible instead of losing them through global-menu integrationPR #6328 by @handsomematt
Executable paths - add .exe only on Windows and guard the Windows-only ETW profilerPR #6377 by @handsomematt
Interop generation - use ordinal sorting so local managed bindings match CI native layouts across localesPR #6337 by @handsomematt
Filesystem scale - support more than 65,535 symlinksPR #6262 by @lolleko
Setup permissions - mark public Setup.sh executablePR #6290 by @handsomematt
Orthographic jitter - correct projection jitter for orthographic cameras using FSR3 or DLSSPR #6395 by @sampavlovic
Render scale defaults - move to render.scale/r_render_scale so previously saved automatic 75% values no longer reduce the default resolution; retain an obsolete UpscalerRenderScale API aliasPR #6396 by @xezno
GameCache - remove CreateGameCache, game-cache build/lookup paths and the old UGC depot from Steam app buildsPR #6237 by @handsomematt
SyncFlags.Query - mark query-based synchronized-property polling obsolete while preserving existing behaviorPR #6249 by @lolleko
Welcome tutorial - removed the editor startup tutorial popup, overlay and Help menu entryPR #6204 by @garrynewman
Legacy overlays - removed obsolete debug-overlay paths alongside the bounds-debugging fixesPR #6131 by @aylaylay
Stretch setting - removed the separate Stretch option; anti-aliasing/upscaling off now serves that purpose, with existing configs supportedPR #6155 by @xezno
Compiled shader tracking - stop committing compiled shader outputs to the engine repositoryPR #6122 by @handsomematt
Physics cleanup - remove unused soft-body/cloth/legacy paths, physics schema generation and the separate physicsbuilder DLL while preserving existing asset compatibilityPR #6283 by @aylaylay
ModelDoc export - remove the nonfunctional Export As menu itemPR #6372 by @handsomematt
Balloon dependencies - remove obsolete missing break-particle references from citizen balloon modelsPR #6366 by @handsomematt
I think moving to Steam Workshop is the right decision, even though I personally don’t like it, because your own solution is faster and better. But unfortunately, this is one of those cases where you need to listen to the players. They want a tool that’s easier to understand. About Sandbox Game, I saw how much you improved it. Please talk about it in more detail in around 2 weeks. You need to spread the word about Sandbox Game much more before December, and we’ll help with that too, because... Some people still can’t even find your flagship game inside the platform.