JUST ENDED
|

Games Technologies Q&A

Connect with Apple engineers in the Games Technologies Q&A on the Apple Developer Forums.

Post

Replies

Boosts

Views

Activity

SpriteKit Continued Support
Hi! Question Could you provide some reassurance on the continued support for SpriteKit in the coming years? Trigger The deprecation of SceneKit at WWDC 2025 made me nervous. Context I use SpriteKit because: It can render any video AVFoundation can handle, which third-party engines don't do for several reasons including patents. This allows me to prototype UI that controls video with a game-like feel. It can render text and emojis through AttributedString, and text is hard. Thanks to a clear and well-exposed update loop, it can be integrated with libraries such as Core Image or Box2D. Example with Box2D here. It can draw dynamic shapes and paths with SKShapeNode, and visualize and respond to all the processing done at specific times during a frame. SKView is very handy to generate textures from nodes, and SKRenderer can be used to render a SpriteKit scene to video or sequence of images. This is possible thanks to multiple frameworks working together, including AVAssetWriter and IOSurface. Example of SpriteKit offline rendering here. Apple Alternatives When Apple announced the deprecation of SceneKit, I learned RealityKit in order to move my SpriteKit-based projects to RealityKit. RealityKit is interesting, but for 2D and 2.5D workflows I found several areas where SpriteKit remains significantly more practical: I had to lock physics to the XY plane, which could stress the engine and introduce unwanted overlap. Overlapping entities on a 2D plane was hard: ModelSortGroup did not provide the simple flexibility that SpriteKit zPosition provides. AFAIK there is no dynamic path/shape drawing in RealityKit. So drawing lines, visualizing physics and joints, rendering graph connections in the scene is not as easy as it is with SpriteKit shape nodes. SpriteKit is lighter and less power-hungry. Let me know if you need any more context or detail. Thank you!
1
2
60
1h
Are there details about what Rosetta functionality for "older unmaintained gaming titles" will be kept?
The developer documentation for Rosetta describing its end of support (https://developer.apple.com/documentation/apple-silicon/about-the-rosetta-translation-environment) says the following: Beyond this timeframe, we will keep a subset of Rosetta functionality aimed at supporting older unmaintained gaming titles, that rely on Intel-based frameworks. Are there details about which specific functionality this is? And as a concrete example, will parts of Rosetta that are needed by programs used to run and/or evaluate Windows games, such as WINE or CrossOver, remain supported?
1
2
95
1h
How do I control a SwiftUI TextField with a game controller?
I've coded a text-adventure game in SwiftUI. (My game has no graphics or sound effects.) My app already supports keyboard navigation; I would like to add support for game controllers on iPhone. I can't figure out how to do it. I especially can't see any way to allow controller users to enter text in a TextField. I've read https://developer.apple.com/documentation/gamecontroller/supporting-game-controllers and it's all about button events. There's no reference to SwiftUI at all in that documentation, or any input-method editing at all. The only mention of "keyboard" is about treating the keyboard itself as if it were a game controller providing button events. How do I implement this?
1
1
77
2h
How to use Reality Composer Pro 3?!
I guess this is not an actual video Group Lab. sigh Would love to see a dedicated Reality Composer Pro 3 session - even for those of use actual Vision Pro devs that didn't get the lucky golden ticket to the Apple Park event. You need to make these interactions available to us in person during WWDC week. That all being said... How do I go about baking lighting in RCP3? I cannot find anything in the documentation. Thanks!
2
0
75
2h
Game Mode for games run by game launcher apps
If you have a "launcher-type app" (a regular macOS app bundle) which is used to launch the actual game executable (a non-bundled executable, such as a Java game), Game Mode does not seem to work as desired in this case. If the launcher app has the appropriate LSSupportsGameMode and LSApplicationCategoryType set, the launcher app will activate Game Mode if fullscreened but the actual game will not (FB18026957). Is there a workaround for this? It also seems like the system hardcodes some apps to act as "game launcher apps" which do have the desired behavior - for example, if you have a sample app set to Steam's bundle identifier (or just use Steam to run the program) and have this architecture where it runs another executable which is the real game, then that game can inherit Game Mode, which is also supported by system logs in Console (note the "launcher" labelReason): default 17:11:05.008533-0400 gamepolicyd Found game GameProcess(Optional("java"), pid=33754, euid=501, labelReason=launcher, launchedBy=Steam) Is there a way to opt into or apply for this behavior for our own apps? I previously asked this on the forums but I'm also wondering if any new developments have occurred since then.
0
0
65
2h
Code sharing between iOS and watchOS
What's the recommended pattern for sharing a complex SpriteKit game scene (and basic game code) between iOS and watchOS targets without code duplication, given the platform differences in input and rendering?
Replies
2
Boosts
2
Views
63
Activity
22m
SpriteKit Continued Support
Hi! Question Could you provide some reassurance on the continued support for SpriteKit in the coming years? Trigger The deprecation of SceneKit at WWDC 2025 made me nervous. Context I use SpriteKit because: It can render any video AVFoundation can handle, which third-party engines don't do for several reasons including patents. This allows me to prototype UI that controls video with a game-like feel. It can render text and emojis through AttributedString, and text is hard. Thanks to a clear and well-exposed update loop, it can be integrated with libraries such as Core Image or Box2D. Example with Box2D here. It can draw dynamic shapes and paths with SKShapeNode, and visualize and respond to all the processing done at specific times during a frame. SKView is very handy to generate textures from nodes, and SKRenderer can be used to render a SpriteKit scene to video or sequence of images. This is possible thanks to multiple frameworks working together, including AVAssetWriter and IOSurface. Example of SpriteKit offline rendering here. Apple Alternatives When Apple announced the deprecation of SceneKit, I learned RealityKit in order to move my SpriteKit-based projects to RealityKit. RealityKit is interesting, but for 2D and 2.5D workflows I found several areas where SpriteKit remains significantly more practical: I had to lock physics to the XY plane, which could stress the engine and introduce unwanted overlap. Overlapping entities on a 2D plane was hard: ModelSortGroup did not provide the simple flexibility that SpriteKit zPosition provides. AFAIK there is no dynamic path/shape drawing in RealityKit. So drawing lines, visualizing physics and joints, rendering graph connections in the scene is not as easy as it is with SpriteKit shape nodes. SpriteKit is lighter and less power-hungry. Let me know if you need any more context or detail. Thank you!
Replies
1
Boosts
2
Views
60
Activity
1h
Are there details about what Rosetta functionality for "older unmaintained gaming titles" will be kept?
The developer documentation for Rosetta describing its end of support (https://developer.apple.com/documentation/apple-silicon/about-the-rosetta-translation-environment) says the following: Beyond this timeframe, we will keep a subset of Rosetta functionality aimed at supporting older unmaintained gaming titles, that rely on Intel-based frameworks. Are there details about which specific functionality this is? And as a concrete example, will parts of Rosetta that are needed by programs used to run and/or evaluate Windows games, such as WINE or CrossOver, remain supported?
Replies
1
Boosts
2
Views
95
Activity
1h
Minigame support in GameKit?
My app contains hundreds of games, each of which would benefit from its own set of achievements, leaderboards, etc. Is there any hope for minigame support in GameKit?
Replies
1
Boosts
3
Views
107
Activity
2h
How do I control a SwiftUI TextField with a game controller?
I've coded a text-adventure game in SwiftUI. (My game has no graphics or sound effects.) My app already supports keyboard navigation; I would like to add support for game controllers on iPhone. I can't figure out how to do it. I especially can't see any way to allow controller users to enter text in a TextField. I've read https://developer.apple.com/documentation/gamecontroller/supporting-game-controllers and it's all about button events. There's no reference to SwiftUI at all in that documentation, or any input-method editing at all. The only mention of "keyboard" is about treating the keyboard itself as if it were a game controller providing button events. How do I implement this?
Replies
1
Boosts
1
Views
77
Activity
2h
How to use Reality Composer Pro 3?!
I guess this is not an actual video Group Lab. sigh Would love to see a dedicated Reality Composer Pro 3 session - even for those of use actual Vision Pro devs that didn't get the lucky golden ticket to the Apple Park event. You need to make these interactions available to us in person during WWDC week. That all being said... How do I go about baking lighting in RCP3? I cannot find anything in the documentation. Thanks!
Replies
2
Boosts
0
Views
75
Activity
2h
Game Mode for games run by game launcher apps
If you have a "launcher-type app" (a regular macOS app bundle) which is used to launch the actual game executable (a non-bundled executable, such as a Java game), Game Mode does not seem to work as desired in this case. If the launcher app has the appropriate LSSupportsGameMode and LSApplicationCategoryType set, the launcher app will activate Game Mode if fullscreened but the actual game will not (FB18026957). Is there a workaround for this? It also seems like the system hardcodes some apps to act as "game launcher apps" which do have the desired behavior - for example, if you have a sample app set to Steam's bundle identifier (or just use Steam to run the program) and have this architecture where it runs another executable which is the real game, then that game can inherit Game Mode, which is also supported by system logs in Console (note the "launcher" labelReason): default 17:11:05.008533-0400 gamepolicyd Found game GameProcess(Optional("java"), pid=33754, euid=501, labelReason=launcher, launchedBy=Steam) Is there a way to opt into or apply for this behavior for our own apps? I previously asked this on the forums but I'm also wondering if any new developments have occurred since then.
Replies
0
Boosts
0
Views
65
Activity
2h