The citizen has a neck now, the game jam finalists are neck & neck, and we've been hunting down bottlenecks.
Citizen 2.0 - refreshed the default face, added shader-based eyes with editable color, and added neck, head, chest, waist, nose and chin adjustmentsPR #5909 by @garrynewman
Model Deformer - added volume-masked inflate, squash/stretch, transform, pull and project operations with ordered stacking and inspector controlsPR #5894 by @garrynewman
Scene compile reports - added Make All Static on non-static exclusion groups, marking the affected objects static in one undoable editf83dad0 by @aylaylay
Game settings - edit recommended player counts, co-op/versus modes and map settings in Project Settings; the publish wizard now includes a Players step with a game-card preview38113fd by @lolleko
Scene compilation - explicitly bake eligible static meshes and props into aggregate geometry and collision with Scene > Compile Scene, retaining the scene path, GUID and editable sourcePR #5590 by @aylaylay
Component eyedropper - choose from a dropdown when the picked object has multiple matching componentsPR #5921 by @bakscratch
Edge cuts - create a single vertex with a single-point edge cutPR #5923 by @bakscratch
Depth-of-field focus picker - click a scene target to set the focal distance, with expanded distance and range controlsPR #5874 by @antopilo
Managed scene renderer - added the opt-in C# scene renderer through r_managed_scene 1; disabled by default37baa6c by @handsomematt
Renderer comparisons - added SceneLab parity/benchmark tooling and r_managed_scene_compare for comparing managed and native rendering37baa6c by @handsomematt
Command-list profiling - added nested GPU scopes through CommandList.ProfileScope, visible in overlay_gpu and external profiling toolsPR #5807 by @wheatleymf
ViewSetup controls - added RenderTags, ExcludeTags, EnableUI and EnableDebugOverlaysPR #5891 by @garrynewman
Menu music volume - added a separate setting for the main-menu music level7554054 by @garrynewman
Microphone settings - added in-game input-device selection and a live voice-activation threshold meter using SDL capture and OpusPR #5915 by @devultj
Voice playback - added SoundStream.WriteVoiceData with a separate decoder per streamPR #5915 by @devultj
Friend cards - view citizen avatars, achievement scores and current/recent games from the refreshed friends railPR #5927 by @devultj
Game jam voting - added live voting bars, finalists and standings screens for the next jam phasePR #5903PR #5899 by @garrynewman
Database service - added Sandbox.Services.Database for package-scoped, player-owned cloud records, with public/private visibility, groups, pagination and revision-checked updates95bc339 by @garrynewman
Citizen eyes - reduced the size of the new eyeballs1873c45 by @garrynewman
Scene compile snapshots - build from an isolated copy of the saved scene so later editor changes do not alter the captured job72cb1d1 by @aylaylay
Scene compile work - build models, collision and aggregate data in single passes and avoid repeated mesh scanning9f476466835ca111af099d582fba by @aylaylay
Compile status - show when edits need compiling and use the editable scene for editor play until it is compiled againdef6fb263be38e by @aylaylay
Scene publication - publish compiled scenes and their runtime dependencies through ordinary resource handling87df9c7 by @aylaylay
Terrain clipping - cut holes and heightmap boundaries before pixel shading, restoring early depth rejection and MSAA on cut edgesPR #5930 by @sampavlovic
Clutter - reduced scatterer allocations, batch rebuild work and GPU batch upload timePR #5887 by @antopilo
Terrain culling - reuse meshlet culling results across passes of the same view1d77bb4 by @handsomematt
Camera hooks - reuse the render-stage delegate instead of allocating one per camera per frame980dc78 by @handsomematt
VRAM budget - shrink the texture pool by the full budget overshoot, including in toolsb23702c by @lolleko
GPU diagnostics - tag crashes with GPU vendor, failing call, fault type, shader and VRAM-budget information5ba7ed5e95bd0c by @lolleko
Menu soundtrack - replaced the menu music with a new track from Carson7554054 by @garrynewman, @carsonkompon
Loading status - display Loading Scene before the synchronous scene load beginsd424788 by @lolleko
Startup screen - added a coloured Facepunch logo, blue background and loading progress barPR #5935 by @garrynewman
Party dock - replaced the footer party deck with a floating party/join-status overlay that stays accessible in modal viewsPR #5927 by @devultj
Jam browsing - show live nomination counts on game cards, entry counts on filter tabs and active-player sortingPR #5899 by @garrynewman
Menu suspension - preserve the menu scene, navigation and scroll state while pausing its updates, rendering and spatial audio during gamesPR #5904 by @garrynewman
Frame-rate defaults - game and main-menu frame-rate caps now default to uncappedbc2e016 by @garrynewman
Map prefetching - fetch the selected map and its dependencies alongside the game package so later mounting can use cached files4381b9f by @lolleko
Assembly caching - reuse package DLLs from the asset download cache after validating their checksum5d7ca72 by @lolleko
Shared downloads - reuse in-flight package-info requests and manifest downloads across concurrent callerse5ac631 by @lolleko
Cached asset mounting - resolve cached package files off the main thread and update mounted-symlink resource mappings in a parallel batch1f65e0e7f393d7 by @lolleko
Achievement loading - start games without waiting for the achievement list and queue early manual unlocks until it arrives64dfc02 by @lolleko
Load-step pacing - yield a frame between loading steps instead of adding fixed delays34a1d7d by @lolleko
Package transfers - download files off the main thread and mount completed files on the main threade9ac2ef by @lolleko
Dependency downloads - prefetch package dependencies in parallel9f2077f by @lolleko
Party preloading - cache the game and its dependencies without mounting them until joining2e462b8 by @lolleko
Download handling - retry stalled downloads and accept compressed responsesbadce7f by @lolleko
Network files - avoid redundant filesystem lookups when preparing files for transfercb9298f by @handsomematt
Painter - reduce CPU submission work and temporary allocations for paths, lines, curves, polygons and aligned strokes, with reusable batch storage and shared contoursPR #5866 by @garrynewman
Deleted scene output - recreate missing compiled scene files from an existing bake, or fall back to editable source when generated bake data is missing505742d by @aylaylay
Scene compile reports - keep reports available while there are unsaved changes so multiple exclusion groups can be fixed before saving9d09054 by @aylaylay
Source-less scene status - handle scenes without local source files when checking compile status7d49ad5 by @aylaylay
Prefab compile settings - only read scene bake settings from local scene assets, avoiding prefab compile errors5823f8f by @aylaylay
Camera piloting - correct framing guides when desktop scaling is not 1PR #5883 by @metapyziks
Multi-object editing - stop copying embedded-resource values from the first selected object into the othersPR #5898 by @carsonkompon
Undo - preserve bone identity when undoing object changesPR #5892 by @aylaylay
Scene compilation - support cloud assets without requiring their source filesPR #5924 by @aylaylay
Edge tools - correct open-edge indicator alignment and scalingPR #5922 by @bakscratch
Terrain ambient occlusion - write correct normals and roughness in the terrain prepass instead of invalid G-buffer dataPR #5930 by @sampavlovic
Editor environment maps - apply the isolated cubemap view-rendering scope in the editor as well as in gamePR #5929 by @sampavlovic
Camera rendering - avoid holding the camera lock during RenderToTexture and fix CameraComponent command-list racesPR #5889 by @garrynewman
Depth of field - scale blur size relative to 1080p so its apparent size stays consistent across resolutionsPR #5882 by @sampavlovic
Depth-of-field highlights - fix bright HDR pixels leaking through rejected samplesPR #5876 by @sampavlovic
AMD depth normals - fixed crashes affecting SSR and other effects using depth normals on some AMD GPUsPR #5901 by @sampavlovic
Sprites and text - correct bounds for non-billboard sprites and sorting between TextRenderer and SpriteRendererPR #5897 by @carsonkompon
Material cache - evict destroyed materials and replace dead wrappers instead of returning them for reused native addressesf1b2fd8 by @handsomematt
SceneObject model lookup - avoid crashing when an object has no mesh data070ab3a by @handsomematt
SceneObject transforms - read transforms of native-created objects correctly and update child transforms when their parent moves4e43b77cafd5d5 by @handsomematt
Dynamic input layouts - synchronize first-use layout construction so render jobs cannot use partially built layouts142f9fc by @handsomematt
Cubemap filter initialization - create the filter shader before rendering rather than inside a render-stage callback0fc2e3e by @handsomematt
Cubemap rendering - isolate cubemap view rendering and fix filtering GPU crashes by avoiding scratch memory and reducing thread-group sizesPR #5911 by @sampavlovic
Async compute synchronization - graphics-queue semaphore waits now cover every stage that can read compute resultsd204677 by @handsomematt
Input-layout collisions - fixed heap corruption when input layouts collide173ac32 by @wheatleymf
Vulkan UAV slots - correctly size UAV bookkeeping so slot 8 cannot overwrite the push-constant bufferc6cd590 by @lolleko
DLSS replacement - reference-count NGX initialization so retiring an upscaler cannot shut it down beneath its replacement06439d1 by @lolleko
FSR3 stability - initialize scratch memory and prevent dispatch through uninitialized or concurrently used temporal upscalers4fc5380 by @lolleko
Map unload - clear lighting references before deleting world objects that may render for one final framePR #5932 by @sampavlovic
Renderer shutdown - release leftover GPU fences before destroying their owning render threadPR #5932 by @sampavlovic
Friend invites - clicking Invite no longer opens the friend popup and gives clearer feedbackPR #5886 by @devultj
Pause menu - keep footer buttons visiblePR #5886 by @devultj
News images - do not stretch HtmlPanel images by defaultPR #5886 by @devultj
Jam voting - keep voting snapshots fresh and prevent listener failures from turning successful votes into errorsPR #5899 by @garrynewman
Package statistics - resolve the calling package from compiler-written assembly metadata instead of its assembly name95bc339 by @garrynewman
Manifest failures - allow a failed manifest download to be retried instead of leaving an empty manifest cached as a successful resulte5ac631 by @lolleko
Server browser - share and refresh Steam discovery requests to avoid false empty server lists after repeated queries; use the running Steam AppID for standalone games too#11869PR #5907 by @garrynewman
Filtered text - fixed text compositing in UI masks and filtersPR #5853 by @xezno
Bound values - ensure initial values with a hash of -1 are synchronized into controlsbc2e016 by @garrynewman
Assembly access checks - reject assemblies declaring IgnoresAccessChecksToAttribute5ba6aa3 by @lolleko
Geometry helpers - fixed closest-point calculations on zero-length linesPR #5894 by @garrynewman
As for the new Terrys, let’s give them a chance 💖
we already have the ability to switch to human model so whats wrong with it ?