- articleWhat do XAG 103 and GAG require for redundant visual and audio cues?
XAG 103 asks that any visual or audio content critical to gameplay or story also reach players through at least one other sense. Its examples: gunfire shown visually also comes through spatial audio or haptics, and important sounds get an on-screen indicator of type and direction. Text-only dialogue should name the speaker and show where they are. The Game Accessibility Guidelines rate 'no essential information by sound alone' as Hearing, Basic, testable by a first-time playthrough with sound muted, and rate replicating supplementary audio information (such as shot direction) visually as Hearing, Intermediate.
- articleWhat do XAG 108 and GAG require for difficulty options?
Xbox's difficulty guideline (XAG 108) asks for four or more difficulty presets, changing difficulty at any time without losing progress, manual and auto-save, an ultra-low mode so players can get through the story, preset names that don't belittle the player, separate adjustment of individual mechanics, and pausing at any time, cutscenes included. The Game Accessibility Guidelines rate 'offer a wide choice of difficulty levels' as General, Basic.
- articleWhat graphics does Google Play require (icon, feature graphic, screenshots, TV banner, XR), with exact pixel and format limits?
Google Play requires a 512x512 32-bit PNG icon (alpha allowed, up to 1024 KB), a 1024x500 feature graphic (JPEG or 24-bit PNG, no alpha), and at least two screenshots across device types. Screenshots are JPEG or 24-bit PNG, 320 to 3840 px, with the long side no more than twice the short side, and up to 8 per device type. Android XR takes 4 to 8 screenshots at 8:5 (up to 8 MB each), and Android TV apps need a banner. To be eligible for Google's large recommendation formats, an app needs at least four screenshots of 1080 px or more at 16:9 or 9:16. Requirements are mandatory; 'Highly recommended' items affect promotion.
- articleWhich screenshot sizes and formats must I supply to App Store Connect for an iPhone, iPad, Mac, Apple TV, Vision Pro or Watch app?
Apple requires 1 to 10 screenshots per device size, as JPEG or PNG with no alpha or transparency. Every app needs an iPhone set at the 'Dynamic Island (medium display)' size (e.g. 1179x2556 or 1206x2622 portrait), and iPad apps also need an iPad 13-inch set. If the UI is the same across sizes, only the highest required resolution is needed and App Store Connect scales it down. Mac, Apple TV, Vision Pro (3840x2160) and Watch have their own size lists. As read on 2026-10-22, the iPhone Duo table also says Duo screenshots will be required from April 2027 for apps built with the iOS 27.1 SDK or later.
- articleHow does Babylon.js handle gamma versus sRGB, and what must a custom shader or post-process author do to stay consistent?
Babylon.js's documentation says its shaders encode and decode with a plain 2.2 gamma rather than the piecewise sRGB curve, to save operations, with an option for sRGB textures. Colour textures are authored in sRGB and data textures in linear. PBR materials honour a per-texture gammaSpace flag, and ImageProcessingPostProcess expects linear input, applying 1/2.2, so a custom post-process should hand it linear values. Node Materials convert nothing automatically.
- articleDo inkle's free GDC slides by Jon Ingold state patterns for reconverging branches and keeping logic defensive?
inkle's free GDC 2015 slides 'Adventures in Text' (OCR of 45 pages) never use the words reconvergence or defensive logic, but the 'Avoiding Explosions' slide lists ways to keep branching manageable: different routes to the same result, shifting focus, coercing the player, hiding the forcing in nested options, using another character and blatant clues, while noting that gamers like explosions. Other slides stress ink's low-cost logic for tracking history and close with 'Branching: do it, and prove it' and 'Game below, story above'.
- articleWhich JSON fields does the articy:draft Unreal importer read for flow pins and connections, and what does it read from the Settings and Project sections?
The importer reads pins' Text, Owner and Connections; outgoing connections' Target and TargetPin and incoming connections' Source and SourcePin as hex-id strings; Settings' localisation, text formatter, script support, export version and two content hashes; and Project's Name, DetailName, Guid and TechnicalName, via JSON_TRY_* macros that leave defaults when a key is absent. As the producer noted, UArticyIncomingConnection::GetSourcePin has an inverted null test: with a database it always returns null, and without one it dereferences a null pointer.
- articleIn articy:draft, how are global variables organised and addressed, and how do they show up in an engine importer?
articy:draft global variables live in variable sets (namespace-like), each variable typed Boolean, Integer or String with a default, named without spaces or special characters, and addressed as Set.Variable; renaming without update can break scripts. The Unreal importer reads them as namespaces and supports independent variable sets per flow player via Override GV.
- articleWhat are the top-level sections and the global-variable and flow-connection fields of an articy:draft JSON export, as an official importer reads them?
No public articy page documents the JSON schema; the official MIT Unreal importer shows what it consumes: top-level Settings, Project, Packages, Hierarchy and ScriptMethods (always), plus GlobalVariables and ObjectDefinitions; global-variable namespaces carry Variables with name, description, type (Boolean/Integer/String) and value; flow pins carry Text, Owner and Connections.
- articleWhat do Unity Localization Smart Strings and Godot gettext/tr_n docs state about plurals, genders and variables in dialogue strings, and what failure cases do they mention?
Unity Localization's Smart Strings (1.5.13) give dialogue lines pluralisation, gender, lists and conditionals with named placeholders; the documented trap is that sources are tried in order, so the same placeholder can resolve to different data, and number formatting follows the table's locale. Godot's tr_n plural support is for zero or positive integers only; its gettext extractor silently skips non-constant string arguments, and NO_TRANSLATE/TRANSLATORS comments steer extraction; pseudolocalisation catches length and hard-coded text but is not a CJK/RTL font test.
- articleWhat do the WebGL and WebGPU specifications actually promise about colour spaces, sRGB formats and floating-point precision, and so how deterministic can a web 3D viewer be across devices?
The WebGL spec makes drawingBufferColorSpace and unpackColorSpace default to 'srgb' at context creation. The producer's WebGPU (no colour management; -srgb formats gamma-encode on write) and WGSL (no rounding mode; ULP bounds; flush-to-zero) statements, which imply no bitwise cross-device equality, remain producer-verified only.
- articleIn three.js, what is the linear workflow, which color space does each input need, and what are the common mistakes?
three.js at 9b4a2ac enables colour management by default with a Linear-sRGB working space and converts with the piecewise sRGB functions (thresholds 0.04045 and 0.0031308, slope 12.92, exponents 2.4 and 0.41666, the latter a truncation of 1/2.4). Texture annotation rules, outputColorSpace and the OutputPass double-conversion warning are from manual pages not re-read.
- articleCan I get an edit list (EDL or OpenTimelineIO) of a cinematic out of Unity or Godot, or do their exporters only write animation?
In the documents read, neither Unity nor Godot offers an edit-decision-list export for cinematics: Unity's FBX Exporter writes one Timeline animation clip at a time (animation data, not an edit), and the OpenTimelineIO adapter list has no Unity, Godot or Unreal adapter (Maya sequencer is the only DCC sequencer), although custom adapters can be registered. This is a limited-search negative.
- articleWhen I render or record a cinematic from Unreal, Unity or Godot, which stage tone-maps and tags colour before the file is written, and what do the engines' docs leave unstated?
Unreal 5.1's Movie Render Queue documentation says 8-bit image sequences (BMP, JPG, PNG) are clamped to [0-1] with the sRGB encoding curve, while EXR keeps HDR values: roughly [0-1] with the Tone Curve enabled, linear [0-100] or more with it disabled, and never sRGB-encoded. Godot's Movie Maker documentation and PNG writer state no colour space or transfer for written frames, so an agent must measure or assume; Unity's inspected HDR pages (producer) cover display output, not recorded frames.
- articleHow does Perfetto's FrameTimeline tell me whether a late frame on Android was the app's fault or the compositor's?
Perfetto FrameTimeline (Android 12+) flags a frame as janky when its actual present time differs from the scheduler's predicted time, shows expected and actual timelines per app and SurfaceFlinger, and classifies jank (app deadline missed, buffer stuffing, SurfaceFlinger, prediction error) so app-caused and compositor-caused jank can be separated; SurfaceViews are not supported.
- articleAfter a Yarn Spinner for Unity project has translated CSVs, what happens to the translations when I edit, add, delete or reorder lines in the .yarn file?
YarnSpinner-Unity keys translated lines by line tag and stores a Lock (first 8 characters of the SHA-256 of the base text); when the inspector update runs, changed base lines get '(NEEDS UPDATE)' prefixed to the translation, new lines arrive empty and removed lines are dropped. Editing base text without the update leaves stale translations unflagged.
- articleHow do WorldRoamBench's single-H20 throughput measurements for LingBot-World, HY-World 1.5, Matrix-Game 2.0/3.0 and Yume 1.5 compare with the authors' stated FPS, and what can and cannot be concluded?
WorldRoamBench v5 (AMAP CV Lab, Alibaba Group; not the authors of the open models) timed 10 open models on one NVIDIA H20, 20 runs, as chunk frames over wall-clock chunk time. Measured: Matrix-Game 2.0 6.26 Hz (640x352, 12-frame chunks), Matrix-Game 3.0 5.34 Hz (1280x704, 40), Yume 1.5 6.49 Hz (1280x704, 32), LingBot-World 1.79 Hz (832x480, 12), LingBot-World 2.0 1.75, HY-World 1.5 1.30 Hz (832x480, 16). Against the authors' figures (LingBot 16 fps on one GPU node; Matrix-Game 2.0 25 FPS on one H100 per C3-B062-W13-05) these are lower, but the hardware, GPU count and settings differ, so none of the gaps shows an author figure to be wrong.
- articleWhat do contributors and users report when they time LingBot-World-Fast themselves on 8xH100 (chunk times, cold start, whole-clip time), and how does it compare with the authors' 16 fps / under-1-second statement?
Non-author timing logs for LingBot-World-Fast (14B, 480x832, 81 frames, 8xH100) come from a contributor's profiling pull requests: steady chunks about 1.0 s, chunk 0 about 7.2 s, VAE encode+decode about 5.6 s (26% of generate()), whole generate() 22,146 ms unoptimised, 13,523 ms after three merged PRs and 11,668 ms with a fourth, unmerged PR. If a chunk is 12 frames (WorldRoamBench's chunk size; the PR sample uses chunk_size=3), steady-state is about 12 frames/s, below the authors' 16 fps; a separate user reproducing on 8xH100 with NVLink and FA3 saw about 2.5 s/chunk around chunk 7 (about 4.8 frames/s on the same assumption), twice the 1.21 s another user reported. The discrepancy was not resolved in the thread. No key-press-to-frame measurement was found.
- articleWhat does Learned Motion Matching (Holden et al. 2020) replace, what data and training did it use, and what limits do the authors report?
Learned Motion Matching (2020) replaces the stored animation database and nearest-neighbour search of motion matching with three small networks (Decompressor, Stepper, Projector) so the runtime keeps no pose database; memory is the stated motive. Training runs on CPU for up to 500,000 iterations (a few hours for results, overnight for best). Reported scenarios span 22,398 to 694,272 frames, but the 694k Bear set was augmented from about one minute (3,581 frames) of key-framed animation. In the user study subjects struggled to identify the reference system, with a slight responsiveness preference for basic motion matching and no quality preference; the authors found Projector accuracy had the largest impact on quality.
- articleWhat is a storylet or quality-based narrative in plain terms, and what did Failbetter's own early write-up and Emily Short say about structures like questicles and the Midnight Staircase?
A storylet is a unit of content with prerequisites on world-state qualities and effects on those qualities; it can be paper-prototyped on index cards. Failbetter names reusable gating shapes built from qualities (Faust's Tea Party social exchange; Midnight Staircase accumulated preparation cashed in at any time). These are 2010/2019 designer accounts, not measurements.
- articleHow do the engines' docs and source treat sample rate conversion, mix rate and frame-rate divisibility when recording or exporting cinematic audio?
Godot's docs say the Movie Maker mix rate must divide by the FPS, but the code only warns and sizes each frame's audio block with integer division. At 44.1 kHz and 24 fps that is 1837 instead of 1837.5 samples per frame: 12 samples (about 0.27 ms) lost per second, about 16 ms per minute (curator arithmetic). The 48 kHz default divides evenly at 24/25/30/60 fps. FPS is an integer, so 23.976/29.97 need external retiming.
- articleWhat do Godot, Unity and Unreal audio docs say about keeping an in-engine mix from clipping and about loudness targets?
Engine docs cover peak safety, not loudness: Godot's hard limiter defaults to a -0.3 dB ceiling and the (soft-clip) limiter to -0.1 dB, so 'add a limiter to Master' does not fix which behaviour you get; no engine page read gives a loudness target or meter, so delivery to a LUFS spec needs external measurement of the exported file.
- articleHow do I get the audio of an in-engine cinematic out as a file in Godot and Unreal, and what format and sample rate will it be?
Godot Movie Maker records audio non-real-time at a 48 kHz default; the PNG writer writes a stereo WAV whose header declares format code 1 (integer PCM) at 32 bits per sample, while OGV/AVI embed audio. Unreal MRQ WAV parameters are not stated in the pages the producer read.
- articleWhat does the VGHF/SPN reissue-market study report about how many classic games remain commercially available, and what does it say about emulation and library access?
The VGHF/SPN study (v1.1, 2023) estimates 13.27% of pre-2010 US-released games are 'in release' via rightsholders (n=1500, stated ±2.5% at 95%), with lower rates for older platforms. The stated margins are conservative maximum-variance or finite-population figures (curator check). The report states an advocacy purpose (exemption debates).
- articleWhat does the Code of Best Practices in Fair Use for Software Preservation state about providing access to legacy software through emulation?
The ARL-hosted Code (US fair use, 2018, revised 2019) treats emulation as a way to give controlled access to preserved software for research, teaching and learning, with limits: notify users, restrict copying or retention, and restrict commercially available software (case by case or local terminals); networked cooperative access (EaaS) has its own conditions. It does not declare any particular emulation service lawful.
- articleWhat do Epic's public docs say about motion matching database size, search mode and indexing, and where are the GDC 2024 numbers?
Epic's UE 5.8 Motion Matching page gives only qualitative cost guidance (higher sample rate and more channels cost memory/performance; Brute Force vs PCAKDTree search; pruning to save memory) and no minimum or maximum amount of animation data or memory budget.
- articleWhat does Epic's Live Link Face documentation say the app outputs (live data, recorded files, timecode, OSC) at UE 5.3?
UE 5.3's Live Link Face guide says the iOS app streams ARKit facial animation to Unreal over the network (not USB); each recording saves a .mov reference video (JPEG-compressed frames, audio, timecode) and a .csv of raw ARKit curves importable via the Beta LiveLinkFaceImporter plugin into a Level Sequence; timecode comes from the system timer, an NTP server (default time.apple.com) or Tentacle Sync, and the app accepts OSC remote control.
- articleHow does Epic's documented IK Rig Retargeter work (chains, root, retarget pose, FK/IK settings) at UE 5.1?
The UE 5.1 retargeting page documents two IK Rigs with retarget chains, a retarget root (typically pelvis), a retarget pose for A/T-pose differences, fuzzy chain-name matching, batch retargeting via Duplicate and Retarget, and global/per-chain settings including stride warping and speed planting. It overlaps the live-docs reading in CA-B197 (C2-B21-D3-01), here pinned to the 5.1 edition.
- articleWhat do Unity's URP and HDRP docs say about enabling HDR output, tonemapping modes, paper white and UI brightness for real-time output?
Unity applies HDR output as tone mapping (including Rec.709-to-display-gamut conversion) followed by a transfer function; URP and HDRP offer Neutral and ACES modes, HDRP's ACES mode has fixed 1000/2000/4000-nit presets, paper white sets unlit/UI brightness, and the docs recommend a player calibration menu; HDRP has gamut and over-paper-white debug views.
- articleIn Godot, how do I enable HDR output and choose between tonemapping and the output-max-linear-value approach, and which tonemappers are compatible?
Godot's HDR output guide lists enabling steps (no SDR-only environment features such as Filmic/ACES tonemapping or Soft Light glow), two approaches (tonemap scene lighting, or use get_output_max_linear_value only for direct presentation), notes that Filmic and ACES ignore the output maximum and stay SDR, supports iOS, Wayland, macOS, visionOS and Windows but not Android, X11 or web, and warns that many HDR screens apply their own tonemapping (prefer HGiG/clip modes during development).
- articleWhat do designers' first-person accounts (Emily Short, Failbetter) say about how quality-based narrative works and where it strains?
Emily Short describes quality-based narrative (Failbetter's term) as storylets unlocked by numeric qualities for inventory, skills and progress, contrasts it with salience-based selection, and notes from experience that it feels thin until many storylets exist, long option lists overwhelm players, and mid-sized modular additions are safe; Failbetter describes qualities driving branches and 'questicle' chains. Practitioner accounts.
- articleWhich glTF features and extensions does Unity glTFast (6.20.0) say it imports, and which survive import into Unity materials, meshes and animation?
glTFast (Apache-2.0; Unity 6000.0+) claims full glTF 2.0 core support with minor remarks: sparse accessors only for morph targets and vertex positions, up to eight UV sets imported but only two used by its shaders, animation via the legacy system (Mecanim clips import unassigned; Playables removed because SetCurve works only for legacy clips at runtime), clearcoat partial in URP, full in HDRP and absent in Built-In, DOTS experimental. Known issues from Unity API limits: duplicated shared accessors/images, minFilter overriding magFilter and NEAREST_MIPMAP_LINEAR falling back to NEAREST.
- articleWhat does Unreal Engine 5.8 documentation say about which USD features load through the USD Stage (prims, animation, blend shapes, materials, variants, payloads), and could the Unreal glTF importer documentation be obtained?
Unreal's Beta USD Stage represents static and skeletal meshes, HISM, materials, lights, cameras, variants, animation and blend shapes as prims, loads .usd/.usda/.usdc/.usdz, supports payload loading, UsdPreviewSurface textures and PreviewSurface/DisplayColor materials (MDL via a schema), shows xform animation as Transform tracks and other animated values on a Time track in a Level Sequence, and needs FORCE_ANSI_ALLOCATOR=1 for runtime loading. Unreal glTF import docs were unreadable (producer).
- articleWhat do articy:draft JSON export and its localisation exports (xlsx) preserve for localisation IDs, text states and conflict handling?
articy:draft 3 JSON export with Localization replaces localisable text with LocaIDs (keys in Excel column A, text in column B) and leaves parsing to the user; the Unity importer uses LocaIDs built from TechnicalName plus property name (not to be changed), an optional 'Is final?' column that stops overwrites, and loc_<package>_<language>.xlsx files. articy:draft X imports carry text states (In Progress, Final, Outdated) and offer abort or skip on multi-user claiming conflicts.
- articleWhat do Yarn Spinner v3.2.1 compiled programs and string tables preserve about line IDs, localisation and variables, and which line IDs are stable across recompiles?
Yarn Spinner v3.2.1 compiles dialogue to a protobuf Program whose line and option instructions carry only a line ID and substitution count; text lives in a StringTable keyed by line ID with node, file, line number, metadata and shadow-line ID. Implicit IDs are stable only while the source file is unchanged, so localised projects should add #line: tags. Command text is embedded in the program rather than in the StringTable.
- articleWhat do the W3C MAUR and UAAG 2.0 ask of media players for caption customisation, keyboard operation and sign-language windows?
W3C's MAUR (2015 Note) lists player requirements: configurable caption fonts, sizes, colours and background opacity, caption track toggling, keyboard operation of all functionality, and sign-language video as a track or file shown as picture-in-picture, overlay or parallel video with a user toggle. UAAG 2.0 (2015 Note) adds that alternatives must not obscure controls or video, captions are user-configurable, and alternatives can be resized to at least 50% of the viewport and repositioned. Both are Notes, not Recommendations.
- articleHow do USD layers/sublayers and Unreal Engine USD multi-user editing support several people working on the same scene, and what limits do the OpenUSD docs state?
OpenUSD treats a layer as the atomic persistent unit, advises sublayering over referencing when namespaces match, and requires single-writer, no-concurrent-read editing of a stage's layers. Unreal's Beta USD multi-user editing syncs prim add/remove/rename, attribute and visibility edits, needs identical file paths on all clients (USD under project source control), and cannot undo prim deletion. No source read describes text-level .usda merging. OpenUSD code is under TOST 1.0 (Apache 2.0 with a different trademark section).
- articleHow do Godot text scenes and resources (.tscn/.tres) support version control and multi-person work, and what merge or diff problems are documented or reported?
Godot docs call TSCN mostly human-readable and VCS-friendly: a header uid, string IDs for ext/sub resources, no central ID metadata, and per-node unique_id (scenes saved with 4.6+) to track moved or renamed nodes; ignore .godot/ and *.translation. An open 2023 user report (4.1.x) says opening scenes on different clients regenerates resource names, producing noisy diffs; whether this persists at 4.7.2 is unverified.
- articleHow does Godot 4.7.2 Movie Maker mode fix the time step and capture audio for offline cinematic capture, and what does it promise about identical output?
Godot Movie Maker renders non-real-time with a fixed step (default 60 fps when --write-movie is used without --fixed-fps), so pacing is perfect regardless of hardware; audio is mixed mix_rate/fps samples per frame and the writer warns when the mix rate is not divisible by fps (audio drift); not meant for live gameplay capture.
- articleWhat do Godot and Unity documentation say that helps (or does not help) with save-file field renames, missing fields and format versioning?
Unity: missing JSON fields keep initializer/constructor values on FromJson, and FormerlySerializedAs preserves renamed fields; Godot: ConfigFile drops comments on save and the saving tutorial gives no format versioning or migration guidance, so versioning must be added by the game.
- articleWhat do the Steamworks Steam Cloud docs say about how saves sync, platform scope, size limits, and conflicts or versioning?
Steam Cloud syncs saves before and after sessions; a single write is capped at 100 MB and 256 MB may choose a non-optimal endpoint; choosing a specific OS in an Auto-Cloud root locks those files to that OS (no later cross-platform sync); quotas are set per user per game.
- articleWhat validity rules and error cases does Unicode MessageFormat 2 (UTS #35 Part 9) define for .match plural/ordinal/gender selection and unresolved variables?
Unicode MessageFormat 2 (CLDR text at 7cdeb9e7): a .match message is valid only with matching key/selector counts, a catch-all variant, annotated selectors and unique variants; violations are named data-model errors; unresolved variables fall back to '$name'; the select option must be a literal so messages stay translatable.
- articleHow do I write a translatable dialogue line in Project Fluent that varies by count, gender or grammatical case?
In Project Fluent a translatable line varies by count, gender or case through select expressions with a required default variant (*): numbers match exact keys or plural categories, formatting options can change the category, parameterised terms select grammatical case, and term attributes like .gender drive agreement.
- articleWhat concrete caption, audio-cue and locomotion-alternative guidance do Meta Horizon OS and Apple visionOS publish, and how do their precision and status differ from XAUR?
Only Meta gives numeric caption parameters (about 1 m start, ~0.5 s roll-up, 32 characters x 2 rows, at most 4 speakers) and labels them evolving and non-blocking; Apple and XAUR stay at principle level; none cites measurements. Meta's optional head-leashed captions vs Apple's advice not to anchor content to the head is kept as a platform difference.
- articleWhat does the W3C XR Accessibility User Requirements Note ask for regarding captions, audio, locomotion and motion in immersive media?
XAUR (W3C Note, 2021) states XR needs and requirements (captions with reflow, text descriptions of important audio, mono audio, motion-agnostic input, sickness-trigger avoidance) at requirement level; its one numeric value is the flicker limit wording (more than 3 times a second).
- articleDo Godot USD add-ons exist that can write USD for offline finishing, and what do their READMEs state about coverage and builds?
Of two third-party Godot USD GDExtensions read, only godot-usd documents writing USD (scene-graph authoring save with warnings for unsupported edits; prebuilt binaries for macOS arm64 only); godot-usd-importer documents import only. Neither documents rendered-frame output.
- articleWhich Unity Recorder 5.1.7 image-sequence settings matter for handing real-time renders to offline finishing (format, bit depth, colour space, alpha)?
For scene-linear handoff, Unity Recorder 5.1.7 documents a narrow combination (HDRP, non-Game-View source, EXR, tonemapping and dithering off) for 'Linear, sRGB (unclamped)'; EXR is written at 16 bits; alpha is unavailable from Game View or non-alpha formats.
- articleWhat does the Unity USD package document for exporting scenes or animation to USD, and what are its stated limits?
The Unity USD package (3.0.0-exp.5, experimental) exports selected GameObjects and transform overrides to USDC/USDA/USDZ, recommends the Recorder route when runtime compatibility is not needed, and is pinned to USD v20.08 with no Apple Silicon native editor; it is a scene-graph export, not rendered frames.
- articleIn Godot, what are the v-sync modes and what does the project documentation suggest for capping frame rate and diagnosing jitter versus stutter?
Godot's VSyncMode has four values: disabled (unlimited), enabled and adaptive (limited by refresh rate), mailbox (unlimited, may cut input lag), all regardless of Engine.max_fps; adaptive/mailbox fall back to enabled under the Compatibility renderer; jitter usually comes from physics tick vs refresh mismatch (physics interpolation suggested), VRR users should cap slightly below max refresh, and input-lag reports should use high-speed camera captures.
- articleIn Unity, which of QualitySettings.vSyncCount and Application.targetFrameRate controls the frame rate on each platform?
Unity 6.0 docs: on desktop and web vSyncCount > 0 overrides targetFrameRate (rate = refresh / vSyncCount); on Android and iOS vSyncCount is always ignored and targetFrameRate rules (Android default 30 fps when -1); on VR the SDK controls the rate; Unity calls targetFrameRate software timing subject to microstutter and refresh can change at runtime.