Skip to content

Kinect v2: a depth stream for the game, depth views, preview and launcher choices - #231

Merged
YuutaTsubasa merged 2 commits into
YuutaTsubasa:mainfrom
knuckleslee:pr/kinect-v2-depth-and-launcher
Oct 22, 2026
Merged

YuutaTsubasa merged 2 commits into
YuutaTsubasa:mainfrom
knuckleslee:pr/kinect-v2-depth-and-launcher

Conversation

@knuckleslee

@knuckleslee knuckleslee commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

Status

Merge test done: this branch merged into main 0.10.16 and run in a full game session (see Tested). main has since moved to 0.10.17; GitHub reports this PR as mergeable.

This is a large change. It is meant as one PR because the launcher and the preview only make sense with the depth stream, but I am glad to split it if you prefer.

What it does

The game gets a depth image from a Kinect v2. A Kinect v2 now reaches the title the way a Kinect v1 does, as a skeleton and a depth image, so the title's own depth detectors (lean, crouch, jump, sides) read the player as on the console. There are three depth views, chosen in the launcher:

  • Recompiled (default): a level virtual Kinect v1 placed where the player should stand. Tuned by distance, height, follow time and dead band.
  • Simulated: the whole v2 view scaled into a v1 frame.
  • Original: the sensor's own view.

A real Kinect (v1 or v2) is read by the title's own detectors, and nothing stands in for them. Removed for it: the skeleton crouch/jump fallback, lean sensitivity, crouch depth and the calibration screen. The webcam keeps your way (its motion, calibration and Motion trace are unchanged). The title's own NuiTransformSmooth smooths a real skeleton once.

Preview window. Shows the chosen view: Recompiled's four pictures and a top-down diagram with distance rulers, the Simulated colour and depth, the players' depth line, and the SDK it runs on (v1: 1.8, v2: 2.0).

Launcher. The cameras are named Kinect (Xbox 360), Kinect v2 and Webcam; the preview button sits in the camera row; the v2 depth view is a drop-down; Recompiled's tuning, the menu cursor steadying and your Motion trace switch are in a folded Advanced settings section; the voice section folds too. The menu cursor steadying now defaults to off (it was 8 mm): please say if you would rather keep your default and I will drop that line.

Recordings and tools. Record the depth images the game gets (SFR_KINECT_RECORD), compute the game's depth features offline, and compare a Kinect v1 with a v2 (docs/kinect-sensor.md).

How it was merged

I merged the current main (0.10.16) into my branch and resolved the conflicts as follows: your present/resize handling replaces mine (I kept a retry for a refused resize); your Online connection test, Test options, Plume patches and Motion trace switch are kept. Your skeleton fallback for a real Kinect is dropped (see above); the Kinect lean/crouch/calibration settings are gone with it.

Tests

Full build and ctest on top of the current main: 174 of 175 pass, 1 is skipped (nui_transform_smooth_sdk needs the SDK), 1 fails here: native_presentation, which creates a 37x23 window and finds a different client width on this machine at 125% DPI. CI passes on this branch (Windows, Linux, macOS build check, Android), including native_presentation on Windows, so that failure is specific to my machine's DPI scaling.

Game session

A full game session of this branch merged into main 0.10.16, from the launcher: the Kinect v1 and v2 paths, the preview, the launcher settings and the menus all worked as expected.

Not verified

  • Kinect v2 on non-Windows platforms (the code is Windows only).
  • Two-player races with a Kinect v2.

🤖 Generated with Claude Code

…iginal views, a preview and launcher choices

A Kinect v2 now reaches the title the way a Kinect v1 does: as a skeleton
and a depth image, so the title's own depth detectors (lean, crouch, jump,
sides) read the player as on the console. Three depth views: Recompiled (a
level virtual Kinect v1 placed where the player should stand, tuned by
distance, height, follow and dead band), Simulated (the whole v2 view scaled
into a v1's frame) and Original (the sensor's own). A real Kinect, v1 or v2,
is read by those detectors and nothing stands in for them: the skeleton
crouch/jump fallback, lean sensitivity, crouch depth and the calibration
screen are removed for it. The webcam keeps its way.

Also: the title's own NuiTransformSmooth smooths a real skeleton once; the
Kinect preview window shows the chosen view (Recompiled's four pictures and a
top-down diagram, the Simulated colour and depth); the launcher names its
cameras Kinect (Xbox 360), Kinect v2 and Webcam, chooses the v2's depth view
and tunes Recompiled in a folded Advanced settings section; menu cursor
steadying and voice commands fold too; recordings of the depth images the
game gets and tools to compare a v1 and a v2 offline (docs/kinect-sensor.md).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@tameradel578-cmyk

Copy link
Copy Markdown

Thank you so much for your work on Kinect v2 (Xbox One) support, this is fantastic!

I have a small request: please consider keeping/improving the calibration screen, and if possible add Arabic language support in the launcher.

I am ready to test any build. I own all Kinect games for Xbox 360 and Xbox One, and I have Windows 11 drivers and Kinect SDK v1.8 / v2.0 fully installed.

I hope you can work on other Kinect games in the future as well.

Thanks again!

Tamer from Cairo, Egypt

…ot provide it through <cstdint>)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@knuckleslee

knuckleslee commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor Author

Thank you so much for your work on Kinect v2 (Xbox One) support, this is fantastic!
I have a small request: please consider keeping/improving the calibration screen,

I took the calibration screen out on purpose. The earlier approach simulated the Kinect v2 with a method that did not match what the game actually needs. After talking it over with the author, I chose to rewrite the Kinect v2 support from the ground up. It now gives the game a depth image the way a Kinect v1 does, so the game's own detectors read you as they would on the console, and it should work much closer to how it was meant to, without needing a calibration step.
This PR is still a draft: I'm running another merge test tonight. Once the feature is released, I'd be really glad if you could tell me how it works for you.

@tameradel578-cmyk

Copy link
Copy Markdown

Thank you so much for the detailed explanation! Now I fully understand.

Removing the calibration step and making it work like a real Kinect v1 on console sounds like a much better and more accurate approach. That is exactly what we needed.

I appreciate you rewriting it from the ground up. I will wait for the final release and I am very happy to test it and give you feedback with my Kinect v2.

Thanks again for your amazing work!

Tamer

@tameradel578-cmyk

Copy link
Copy Markdown

Amazing work! Please consider supporting other Kinect games in the future too if you have time. Thank you!

@knuckleslee
knuckleslee marked this pull request as ready for review October 21, 2026 18:12
@YuutaTsubasa
YuutaTsubasa merged commit 7419053 into YuutaTsubasa:main Oct 22, 2026
4 checks passed
YuutaTsubasa added a commit that referenced this pull request Oct 22, 2026
Kinect defaults after #231: steadying per camera, v2 view for old settings
YuutaTsubasa added a commit that referenced this pull request Oct 22, 2026
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@YuutaTsubasa

Copy link
Copy Markdown
Owner

@knuckleslee Thank you! This is in v0.10.22. Two follow-ups went in with it (#246): the menu cursor steadying is now kept per camera (webcam and Xbox 360 Kinect start at 8 mm, a Kinect v2 starts off), and a v2 standing in for an old camera=kinect setting gets your Recompiled view. A saved Picture setting now reads as off right away.

@tameradel578-cmyk

tameradel578-cmyk commented Oct 22, 2026 •

Copy link
Copy Markdown

Hi, thanks for the great work on v10.22!

Testing on Windows 11 26H2 with Kinect V2 (Xbox One):

  • Cursor / Pointer: Good ✅
  • Left / Right steering: Good ✅
  • Stop / Brake button: Good ✅
  • But I still have an issue with Jumping - it's not detecting / working consistently.

Keep up the great work!game.zip

IMG_20261022_194153.jpg

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants