Post

Replies

Boosts

Views

Activity

Reply to How to create a MultiplayerDelegate and use TabletopNetworkSession features?
Hey @elkraneo ! Here is an example on how you can create a custom MultiplayerDelegate. You can create a class like this by providing a default implementation of the functions: import TabletopKit class CustomMultiplayerDelegate: TabletopGame.MultiplayerDelegate { func playerJoined(_ playerID: PlayerIdentifier) {} func didRejectPlayer(_ playerID: PlayerIdentifier, reason: any Error) {} func joinAccepted() {} func multiplayerSessionFailed(reason: any Error) {} } In order to use custom MultiplayerDelegate, you can do the following: let tabletopGame = TabletopGame(tableSetup: setup.setup) tabletopGame.multiplayerDelegate = CustomMultiplayerDelegate()
Topic: Spatial Computing SubTopic: General Tags:
Apr ’25
Reply to Issue in TabletopKit Sample scene + shared immersive space
Hey @niklas_prahl The Spatial Personas feature is not available in the Simulator. What you're seeing is just a person's photo/avatar, which can be set in the Contacts app. Currently, seat placement in TabletopKit is not working correctly in the Simulator—so to get accurate results, you need to test on a real device. Testing with Spatial Personas To properly test Spatial Personas, you need two physical Vision Pro devices with two users who have already set up their Spatial Personas. Additionally, both devices must run the same app version with identical bundle and team identifiers. Here are two ways to achieve this: Using Xcode: Connect both Vision Pros to the same Mac and build the app under the same development team. Using TestFlight: Upload the app to TestFlight (internal testing) and install it on both devices. This ensures that both devices are running the exact same build, which is essential for SharePlay sessions. Shared Immersive Space & TabletopKit I've previously attempted to integrate a shared immersive space into a TabletopKit app. However, it seems that Spatial Personas are not currently interactive within TabletopKit when using a custom immersive space. If your goal is better control over Spatial Persona interactions, I recommend using the Group Activities framework instead, as it may provide more flexibility in handling shared experiences. Hope this helps! Let me know if you need further clarification.
Topic: Spatial Computing SubTopic: General Tags:
Feb ’25
Reply to AnchorEntity on Window(Group)?
You can achieve something similar using the ornament modifier in visionOS. The benefit to this solution will be that it won't be lagging like in the @Vision Pro Engineer's solution, since GeometryReader is not updated regulary. Here's an example: import SwiftUI import RealityKit import RealityKitContent struct ContentView: View { var body: some View { Text("Hello, world!") .ornament(attachmentAnchor: .scene(.back)) { Model3D(named: "Scene", bundle: realityKitContentBundle) .frame(depth: -1300) } } } You can find more about the ornament modifier in the Apple documentation.
Topic: Spatial Computing SubTopic: General Tags:
Dec ’24
Reply to Synchronizing Physics in TableTopKit
One potential solution we explored involves creating a dummy GameEquipment of a different type, adding it to the scene, and overriding the default implementation of GameRenderer's onUpdate() function to handle synchronization. extension GameRenderer { func onUpdate(timeInterval: Double, snapshot: TableSnapshot, visualState: TableVisualState) { self.startInteractionOnProxy() } public func startInteractionOnProxy(){ guard let game = game else { return } let proxyEquipments: [ProxyEquipment] = game.tabletopGame.equipment(of: ProxyEquipment.self) if let proxy = proxyEquipments.first { _ = game.tabletopGame.startInteraction(onEquipmentID: proxy.id) } } } While this approach works to some extent, it has certain drawbacks and limitations, particularly in terms of performance and architectural complexity. It’s the closest we’ve come to achieving the desired synchronization, but we believe there might be a more robust and efficient way to accomplish this. We would still greatly appreciate any guidance from Apple engineers on a more suitable solution to synchronize physical properties in EntityEquipment effectively.
Topic: Graphics & Games SubTopic: TabletopKit Tags:
Nov ’24
Reply to Swift Student Challenge
From Swift Student Challenge Terms and Conditions: Your creation should not rely on a network connection and any resources used in your app playground should be included locally in the ZIP file. Submissions will be judged offline. Full Swift Student Challenge Terms and Conditions
Feb ’24
Reply to How to create a MultiplayerDelegate and use TabletopNetworkSession features?
Hey @elkraneo ! Here is an example on how you can create a custom MultiplayerDelegate. You can create a class like this by providing a default implementation of the functions: import TabletopKit class CustomMultiplayerDelegate: TabletopGame.MultiplayerDelegate { func playerJoined(_ playerID: PlayerIdentifier) {} func didRejectPlayer(_ playerID: PlayerIdentifier, reason: any Error) {} func joinAccepted() {} func multiplayerSessionFailed(reason: any Error) {} } In order to use custom MultiplayerDelegate, you can do the following: let tabletopGame = TabletopGame(tableSetup: setup.setup) tabletopGame.multiplayerDelegate = CustomMultiplayerDelegate()
Topic: Spatial Computing SubTopic: General Tags:
Replies
Boosts
Views
Activity
Apr ’25
Reply to Issue with tracking multiple images using ARKit on VisionOS
Filed an enhancement request using Feedback Assistant: FB16809971
Topic: Spatial Computing SubTopic: ARKit Tags:
Replies
Boosts
Views
Activity
Mar ’25
Reply to Issue with tracking multiple images using ARKit on VisionOS
We got an official response from Apple in our DTS: The behavior described is expected, when there are multiple images in-frame simultaneously, ARKit will track one of them. Please file an enhancement request using Feedback Assistant, to request support for multiple image tracking on visionOS.
Topic: Spatial Computing SubTopic: ARKit Tags:
Replies
Boosts
Views
Activity
Mar ’25
Reply to Issue in TabletopKit Sample scene + shared immersive space
Hey @niklas_prahl The Spatial Personas feature is not available in the Simulator. What you're seeing is just a person's photo/avatar, which can be set in the Contacts app. Currently, seat placement in TabletopKit is not working correctly in the Simulator—so to get accurate results, you need to test on a real device. Testing with Spatial Personas To properly test Spatial Personas, you need two physical Vision Pro devices with two users who have already set up their Spatial Personas. Additionally, both devices must run the same app version with identical bundle and team identifiers. Here are two ways to achieve this: Using Xcode: Connect both Vision Pros to the same Mac and build the app under the same development team. Using TestFlight: Upload the app to TestFlight (internal testing) and install it on both devices. This ensures that both devices are running the exact same build, which is essential for SharePlay sessions. Shared Immersive Space & TabletopKit I've previously attempted to integrate a shared immersive space into a TabletopKit app. However, it seems that Spatial Personas are not currently interactive within TabletopKit when using a custom immersive space. If your goal is better control over Spatial Persona interactions, I recommend using the Group Activities framework instead, as it may provide more flexibility in handling shared experiences. Hope this helps! Let me know if you need further clarification.
Topic: Spatial Computing SubTopic: General Tags:
Replies
Boosts
Views
Activity
Feb ’25
Reply to Issue with tracking multiple images using ARKit on VisionOS
The same problem occurs for us as well. We have three images in the ARKit resource group, but visionOS can only detect one of them if only one is visible in the frame.
Topic: Spatial Computing SubTopic: ARKit Tags:
Replies
Boosts
Views
Activity
Feb ’25
Reply to AnchorEntity on Window(Group)?
You can achieve something similar using the ornament modifier in visionOS. The benefit to this solution will be that it won't be lagging like in the @Vision Pro Engineer's solution, since GeometryReader is not updated regulary. Here's an example: import SwiftUI import RealityKit import RealityKitContent struct ContentView: View { var body: some View { Text("Hello, world!") .ornament(attachmentAnchor: .scene(.back)) { Model3D(named: "Scene", bundle: realityKitContentBundle) .frame(depth: -1300) } } } You can find more about the ornament modifier in the Apple documentation.
Topic: Spatial Computing SubTopic: General Tags:
Replies
Boosts
Views
Activity
Dec ’24
Reply to Synchronizing Physical Properties of EntityEquipment in TableTopKi
We have provided one of the possible solutions that we have found in this thread: Synchronizing Physics in TableTopKit
Topic: Spatial Computing SubTopic: General Tags:
Replies
Boosts
Views
Activity
Nov ’24
Reply to Synchronizing Physics in TableTopKit
One potential solution we explored involves creating a dummy GameEquipment of a different type, adding it to the scene, and overriding the default implementation of GameRenderer's onUpdate() function to handle synchronization. extension GameRenderer { func onUpdate(timeInterval: Double, snapshot: TableSnapshot, visualState: TableVisualState) { self.startInteractionOnProxy() } public func startInteractionOnProxy(){ guard let game = game else { return } let proxyEquipments: [ProxyEquipment] = game.tabletopGame.equipment(of: ProxyEquipment.self) if let proxy = proxyEquipments.first { _ = game.tabletopGame.startInteraction(onEquipmentID: proxy.id) } } } While this approach works to some extent, it has certain drawbacks and limitations, particularly in terms of performance and architectural complexity. It’s the closest we’ve come to achieving the desired synchronization, but we believe there might be a more robust and efficient way to accomplish this. We would still greatly appreciate any guidance from Apple engineers on a more suitable solution to synchronize physical properties in EntityEquipment effectively.
Topic: Graphics & Games SubTopic: TabletopKit Tags:
Replies
Boosts
Views
Activity
Nov ’24
Reply to Synchronizing Physical Properties of EntityEquipment in TableTopKi
Second Failed Approach I also tried adding PhysicsBodyComponent and CollisionComponent to EntityEquipment's Entity. This approach provides proper physics collisions and custom shapes. However, the main issue is that the position of EntityEquipment itself does not synchronize with the Entity's physics body, resulting in two separate instances of one object.
Topic: Spatial Computing SubTopic: General Tags:
Replies
Boosts
Views
Activity
Oct ’24
Reply to SSC student status verification documents
From Swift Student Challenge Terms and Conditions Class schedules or other current proof of enrollment is accepted in all languages. Full Swift Student Challenge Terms and Conditions
Replies
Boosts
Views
Activity
Feb ’24
Reply to Swift Student Challenge
From Swift Student Challenge Terms and Conditions: Your creation should not rely on a network connection and any resources used in your app playground should be included locally in the ZIP file. Submissions will be judged offline. Full Swift Student Challenge Terms and Conditions
Replies
Boosts
Views
Activity
Feb ’24