For the hosting view, use SpriteKit's SwiftUI SpriteView, which renders an SKScene and works on both iOS and watchOS — so you avoid the platform-specific SKView (iOS) vs. WKInterfaceSKScene (watchOS) split. For input, SwiftUI supports the same basic tap/drag gestures on watchOS as on iOS, though you'll often wire them to different in-game actions per platform. There are also inputs unique to watchOS — most notably the Digital Crown via. digitalCrownRotation. To support both cleanly, keep the game logic platform-agnostic and feed it semantic intents rather than raw input. The shared engine never references a touch or the crown — each platform translates its own input into the same intents. e.g. /// The platform-agnostic input vocabulary. Every platform maps its own /// hardware (touches, drags, Digital Crown) onto these cases. public enum GameIntent { case aim(at: CGPoint) // a scene-space point (e.g. iOS drag/tap location) case moveHorizontal(Double) // a relative nudge (e.g. watchOS Digital
Topic:
General
SubTopic:
Games Technologies Q&A