Discuss games on Apple platforms.

Posts under Games tag

73 Posts
Sort by:
Post not yet marked as solved
1 Replies
46 Views
Hello! We are experiencing crashes on iOS both in debug and release builds in a game made in Godot 3.5.1. The main problem is that we don’t know where exactly the problem is and cannot understand how could we find a way to fix it. We don't expect that someone here will know how to fix this on Godot's side, but we would appreciate some help on how to get more info about the problem and potentially fix it. Debug builds: It is way more frequent in debug builds when we make a build, open it in Xcode, and install it directly on an iOS device. The first type of the crash in debug build is occurring like 70% of the time when the game is loading and trying to get into its main menu. The thing we are getting in Xcode looks like on first image below. Another type of crash happens when we open some save files and start the actual playable part of the game. It happens just after moving the character a few steps and it looks like on second image below. We are aware that the log recommends using breakpoints to find where exactly the problem is, but the thing is that we don’t know where we could do that in Xcode. We are not sure if we are missing something in Xcode or if we cannot do that when opening a project made in Godot. We tried many different builds with removed shader files, and scenes and changed different kinds of settings. We would get the same crash every time. When we made a new build, we cleared the build’s folder. Also, we occasionally deleted the .import folder of the project during development and reimported it. The problem occurred on many different iOS devices with more than 4GB of RAM. Release builds: These builds are uploaded on TestFlight. In release builds crashes wouldn’t occur like in debug builds. They would happen like totally randomly. In some testing sessions, it would happen like 10 minutes in the game, and in others in a few hours. Some testers couldn’t get the crash and altogether and we couldn’t find some repro steps to produce these crashes. In the attached files, you can find logs that we managed to collect from TestFlight. The most frequent type of the crash that we got, is following: Exception Type: EXC_BAD_ACCESS (SIGSEGV) Exception Subtype: KERN_INVALID_ADDRESS Additional info: From reading Apple’s documentation Investigating memory access crashes, we got it that the problem is in “Invalid memory fetch”, but we couldn’t find how this could help us with further investigation. When we used Address Sanitizer tool and made a build, suddently the game stopped crashing in debug builds like it did before. Also we then didn't receive logs in Xcode that would hint us that something is going on. Tried to build our project in newer version of Godot, but the problem still persisted. Used software and hardware: Godot 3.5.1 macOS, Ventura, 13.5 Xcode, 15.2 iPad Air (5th generation), 17.4.1 MacBook Pro, Apple M1 If you have some clues or ideas on how to fix this problem, please write it, it would mean us a lot. Don’t hesitate to ask questions if something is unclear. Thank you very much in advance!
Posted
by fury_ivan.
Last updated
.
Post marked as solved
1 Replies
136 Views
I am wanting to create a 3D video game in Xcode for macOS, iOS, iPadOS, tvOS, and visionOS. I have heard that there are a few different ways to go about this such as MetalKit or SceneKit. These libraries seem to have little examples and documentation so I am wondering: Are they still be developed/supported? Which platform should I make a game in? Where are some resources to learn how to use these platforms? Are there other better platforms that I am just not aware of? Thanks!
Posted
by jcovin293.
Last updated
.
Post not yet marked as solved
0 Replies
160 Views
Please treat me as a beginner of Unity. Now I want to learn to develop visionOS VR App through unity. I try to find a relatively complete route and start learning, but Unity's official website does not have much explanation for visionOS VR App, so I hope you can give me a comparison. The whole route, thank you!
Posted
by lijiaxu.
Last updated
.
Post not yet marked as solved
2 Replies
460 Views
Hi! I have a new game and I have setup the leaderboards and achievements in App Store Connect but all of them are "not live" and in console I see this warning: "No AchievementDescription could be found for Achievement with ID: {my_ID}" I did not do a fresh Game Center setup for a long time, but is there any way to test if achievements and leaderboards are working for nonreleased game? Thank you!
Posted
by darescore.
Last updated
.
Post not yet marked as solved
1 Replies
263 Views
Wanted to reach out for some assistance with troublshooting my watch app not detecting collision, I have set up a few breakpoints and determined that it is not running the game over struct even if it had detected the collision, I have also tried to generate a log file when a collision is detected and that does not work either. I have considered that the objects may not be on the same layer so they are now in the same zstack.
Posted Last updated
.
Post not yet marked as solved
0 Replies
263 Views
Hello, I want to change the name of the app, but even though I have changed it everywhere in AppStore Connect, the old name is still displayed. Where should I change it? Thank you very much. If you want to Download it, feel free to do it and play: https://acortar.link/zDRgyy
Posted
by konguele.
Last updated
.
Post not yet marked as solved
1 Replies
224 Views
App Store Connect says that the name for my app is taken, but when I search on the App Store, there aren't any apps with that name. Is this a bug? Is there a way to contact Apple so that we can claim the name we'd like? Thank you!
Posted
by tylerm20.
Last updated
.
Post marked as solved
1 Replies
939 Views
I need clarification on the GKLocalPlayer.local.isMultiplayerGamingRestricted behavior which check's user's device capability (whether it is set up to allow or disallow multiplayer) I am referring to this from Apple documentation at : https://developer.apple.com/documentation/gamekit/authenticating_a_player if GKLocalPlayer.local.isMultiplayerGamingRestricted { // Disable multiplayer game features. } The issue is that this is a boolean (true/false value ) However I have noticed that iOS ( latest version and preceding versions) allow people to have the following options: ( you can set these under screen time -> content restrictions -> Multiplayer games ) Disallow all multiplayer games - presumably your API returns a false for this. Allow multiplayer with friends only -???? what does GKLocalPlayer.local.isMultiplayerGamingRestricted return here?? if True, how is the Friends only restriction handled? Are we supposed to do something to force it? Note: So far I am relying on Apple's Game Center native experience and have not added wrappers to do additional filtering etc. I hope that I shall be able to keep doing so. Allow all multiplayer games - presumably your API returns a false for this. You can see how there are three choices but this is modeled as a boolean. Choice number 2. is not addressed. Has anyone come across this? Note: This is very different from checking for underage users. No matter what I do, in my post above, it won't set the correct numbers for numbered bullet -points. I call them 1, 2, 3 it posts 1,1,2 or 1.,2,1 etc. ( side nit ) Apologies if this isn't as readable as it should be.
Posted Last updated
.
Post not yet marked as solved
0 Replies
281 Views
I've installed the GPTK before, but it pops up with some problems so I want to reinstall it again. So I deleted home brew and redownload all the materials I needed. But when it comes to install the game-porting-toolkit formula, I can't download it, did anyone have the same problem with me? jimmy@Jimmymbp14 ~ % brew -v install apple/apple/game-porting-toolkit Error: Formulae found in multiple taps: * apple/apple/game-porting-toolkit-compiler * gcenx/apple/game-porting-toolkit-compiler Please use the fully-qualified name (e.g. apple/apple/game-porting-toolkit-compiler) to refer to a specific formula. jimmy@Jimmymbp14 ~ %
Posted Last updated
.
Post not yet marked as solved
0 Replies
266 Views
We have built the game on Unreal engine 4 and we have optimised the game to run on tvOS devices newer than 2017 (viz. Apple TV 4k and above). We could not bring it down to support Apple TV HD (2015) due to its visual and memory requirements. Is there a way to exclude Apple TV HD from support list. We couldnt find any required device capability to add to info.plist (eg: iphone-ipad-minimum-performance-a12, we tried it but this does not work for tvOS build).
Posted Last updated
.
Post not yet marked as solved
2 Replies
290 Views
I am trying to test a two-player game that I am building on XCode. I am using my iPhone and an iPhone simulator but the simulator always displays a popup with the error message "Failed to find players" when I try to connect using Game Center's match-maker. I have had this issue with my phone as well but it is an issue with the simulator 100% and I can connect successfully if I replace the simulator with my friend's iPhone for testing. I am wondering what I can do to use the simulator so that I can test the project on my own. Both devices are using sandbox accounts. Here is some more info incase it is helpful: Date and time of issue: Sat Mar 16 2024 12:03PM (GMT-5) run on iPhone 15 simulator with iOS version 17.2 and iPhone SE with iOS version 17.3.1 Xcode Version 15.3 (15E204a)
Posted Last updated
.
Post not yet marked as solved
0 Replies
251 Views
Hi everyone, Last month, my endless runner game set in a crypto world was rejected for using the Bitcoin logo, labeled as a "Copycats" issue. We were asked to remove the logo and Bitcoin prices, even though the Bitcoin logo is public domain. I noticed other Bitcoin games on the AppStore were updated recently without any problems. I couldn't find any rules against using Bitcoin in the guidelines. When I appealed, they just told me to remove it again but didn't explain why. We've updated our game several times before, and only this small bug fix was rejected. Any advice on what are the next step? Anyone experienced this? Cheers
Posted
by audasy.
Last updated
.
Post not yet marked as solved
0 Replies
267 Views
I am developing a mobile gaming app where players can either collect the app's virtual currency through winning tournaments or by purchasing virtual currency, which will be used to purchase real prizes and gift cards/vouchers. The application will be cross-platform where players can access their account on other platforms outside of the mobile app. My question is whether the purchase of the virtual currency would be treated as an IAP or not since there is a physical value of the virtual currency outside of the app because it can be used to purchase gift cards and other real prizes? Any guidance would be greatly appreciated it. Thanks!
Posted Last updated
.
Post marked as solved
5 Replies
468 Views
Detecting touching a SKSpriteNode within a touchesBegan event? My experience to date has focused on using GamepadControllers with Apps, not a touch-activated iOS App. Here are some short code snippets: Note: the error I am trying to correct is noted in the very first snippet = touchesBegan within the comment <== shows "horse" Yes, there is a "horse", but it is no where near the "creditsInfo" SKSpriteNode within my .sksfile. Please note that this "creditsInfo" SKSpriteNode is programmatically generated by my addCreditsButton(..) and will be placed very near the top-left of my GameScene. override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { if let ourScene = GameScene(fileNamed: "GameScene") { if let touch:UITouch = touches.first { let location = touch.location(in: view) let node:SKNode = ourScene.atPoint(location) print("node.name = \(node.name!)") // <== shows "horse" if (node.name == "creditsInfo") { showCredits() } } } // if let ourScene } // touchesBegan The above touchesBegan function is an extension GameViewController which according to the docs is okay, namely, touchesBegan is a UIView method besides being a UIViewController method. Within my primary showScene() function, I have: if let ourScene = GameScene(fileNamed: "GameScene") { #if os(iOS) addCreditsButton(toScene: ourScene) #endif } with: func addCreditsButton(toScene: SKScene) { if thisSceneName == "GameScene" { itsCreditsNode.name = "creditsInfo" itsCreditsNode.anchorPoint = CGPoint(x: 0.5, y: 0.5) itsCreditsNode.size = CGSize(width: 2*creditsCircleRadius, height: 2*creditsCircleRadius) itsCreditsNode.zPosition = 3 creditsCirclePosY = roomHeight/2 - creditsCircleRadius - creditsCircleOffsetY creditsCirclePosX = -roomWidth/2 + creditsCircleRadius + creditsCircleOffsetX itsCreditsNode.position = CGPoint(x: creditsCirclePosX, y: creditsCirclePosY) toScene.addChild(itsCreditsNode) } // if thisSceneName } // addCreditsButton To finish, I repeat what I stated at the very top: The error I am trying to correct is noted in the very first snippet = touchesBegan within the comment <== shows "horse"
Posted
by JohnLove.
Last updated
.
Post not yet marked as solved
0 Replies
428 Views
Hello, I've a team for developing game in my small company. And we've developed an Obstacle game in Unity from scratch. every single UI, logic & even sound is implemented by our own developers and musicians. It means, every single element is proprietory of our own. I suggest you folks to try out the game in Android playstore by searching the game name as "Cherry Blossom Hills Obstacle" . But once I submitted the same game in iOS App store, the reviewers continously saying, it's a 4.3.0 Design Spam without any to the point feedback basically :( Could you anyone help me resolving this issue? A definitive but even single help/suggestion would be highly appreciated. Regards, Md. Rezoanul Alam.
Posted Last updated
.
Post not yet marked as solved
1 Replies
427 Views
We noticing below crash mainly happening in iOS 17. Can someone check and confirm what is the root cause for this and how to fix the crash. GKAppLevelSignInVisibility fetchAppLevelVisibilityConstraintsWithHandler Thread 36 Crashed: 0 CoreFoundation 0x00000001904a9d6c -[__NSDictionaryM setObject:forKeyedSubscript:] + 452 (NSDictionaryM.m:202) 1 GameCenterUICore 0x000000020fe6d508 __76+[GKAppLevelSignInVisibility fetchAppLevelVisibilityConstraintsWithHandler:]_block_invoke_3 + 84 (GKAppLevelSignInVisibility.m:82) 2 GameCenterFoundation 0x00000001c8b8971c @objc closure #1 in LimitedPresentationManager.presentationDisabled(config:context:) + 268 3 GameCenterFoundation 0x00000001c8b8b111 partial apply for @objc closure #1 in LimitedPresentationManager.presentationDisabled(config:context:) + 1 4 GameCenterFoundation 0x00000001c8b8b101 thunk for @escaping @callee_guaranteed @Sendable @async () -> () + 1 5 GameCenterFoundation 0x00000001c8b8b105 partial apply for thunk for @escaping @callee_guaranteed @Sendable @async () -> () + 1 6 GameCenterFoundation 0x00000001c8b8aa0d specialized thunk for @escaping @callee_guaranteed @Sendable @async () -> (@out A) + 1 (:0) 7 GameCenterFoundation 0x00000001c8b8ab6d partial apply for specialized thunk for @escaping @callee_guaranteed @Sendable @async () -> (@out A) + 1 (:0) 8 libswift_Concurrency.dylib 0x000000019b78da41 completeTaskWithClosure(swift::AsyncContext*, swift::SwiftError*) + 1 (Task.cpp:463) Full iOS crash log
Posted
by EshwarZy.
Last updated
.
Post not yet marked as solved
6 Replies
622 Views
How to integrate UIDevice rotation and creating a new UIBezierPath after rotation? My challenge here is to successfully integrate UIDevice rotation and creating a new UIBezierPath every time the UIDevice is rotated. (Please accept my apologies for this Post’s length .. but I can’t seem to avoid it) As a preamble, I have bounced back and forth between NotificationCenter.default.addObserver(self, selector: #selector(rotated), name: UIDevice.orientationDidChangeNotification, object: nil) called within my viewDidLoad() together with @objc func rotated() { } and override func viewWillLayoutSubviews() { // please see code below } My success was much better when I implemented viewWillLayoutSubviews(), versus rotated() .. so let me provide detailed code just for viewWillLayoutSubviews(). I have concluded that every time I rotate the UIDevice, a new UIBezierPath needs to be generated because positions and sizes of my various SKSprieNodes change. I am definitely not saying that I have to create a new UIBezierPath with every rotation .. just saying I think I have to. Start of Code // declared at the top of my `GameViewController`: var myTrain: SKSpriteNode! var savedTrainPosition: CGPoint? var trackOffset = 60.0 var trackRect: CGRect! var trainPath: UIBezierPath! My UIBezierPath creation and SKAction.follow code is as follows: // called with my setTrackPaths() – see way below func createTrainPath() { // savedTrainPosition initially set within setTrackPaths() // and later reset when stopping + resuming moving myTrain // via stopFollowTrainPath() trackRect = CGRect(x: savedTrainPosition!.x, y: savedTrainPosition!.y, width: tracksWidth, height: tracksHeight) trainPath = UIBezierPath(ovalIn: trackRect) trainPath = trainPath.reversing() // makes myTrain move CW } // createTrainPath func startFollowTrainPath() { let theSpeed = Double(5*thisSpeed) var trainAction = SKAction.follow( trainPath.cgPath, asOffset: false, orientToPath: true, speed: theSpeed) trainAction = SKAction.repeatForever(trainAction) createPivotNodeFor(myTrain) myTrain.run(trainAction, withKey: runTrainKey) } // startFollowTrainPath func stopFollowTrainPath() { guard myTrain == nil else { myTrain.removeAction(forKey: runTrainKey) savedTrainPosition = myTrain.position return } } // stopFollowTrainPath Here is the detailed viewWillLayoutSubviews I promised earlier: override func viewWillLayoutSubviews() { super.viewWillLayoutSubviews() if (thisSceneName == "GameScene") { // code to pause moving game pieces setGamePieceParms() // for GamePieces, e.g., trainWidth setTrackPaths() // for trainPath reSizeAndPositionNodes() // code to resume moving game pieces } // if (thisSceneName == "GameScene") } // viewWillLayoutSubviews func setGamePieceParms() { if (thisSceneName == "GameScene") { roomScale = 1.0 let roomRect = UIScreen.main.bounds roomWidth = roomRect.width roomHeight = roomRect.height roomPosX = 0.0 roomPosY = 0.0 tracksScale = 1.0 tracksWidth = roomWidth - 4*trackOffset // inset from screen edge #if os(iOS) if UIDevice.current.orientation.isLandscape { tracksHeight = 0.30*roomHeight } else { tracksHeight = 0.38*roomHeight } #endif // center horizontally tracksPosX = roomPosX // flush with bottom of UIScreen let temp = roomPosY - roomHeight/2 tracksPosY = temp + trackOffset + tracksHeight/2 trainScale = 2.8 trainWidth = 96.0*trainScale // original size = 96 x 110 trainHeight = 110.0*trainScale trainPosX = roomPosX #if os(iOS) if UIDevice.current.orientation.isLandscape { trainPosY = temp + trackOffset + tracksHeight + 0.30*trainHeight } else { trainPosY = temp + trackOffset + tracksHeight + 0.20*trainHeight } #endif } // setGamePieceParms // a work in progress func setTrackPaths() { if (thisSceneName == "GameScene") { if (savedTrainPosition == nil) { savedTrainPosition = CGPoint(x: tracksPosX - tracksWidth/2, y: tracksPosY) } else { savedTrainPosition = CGPoint(x: tracksPosX - tracksWidth/2, y: tracksPosY) } createTrainPath() } // if (thisSceneName == "GameScene") } // setTrackPaths func reSizeAndPositionNodes() { myTracks.size = CGSize(width: tracksWidth, height: tracksHeight) myTracks.position = CGPoint(x: tracksPosX, y: tracksPosY) // more Nodes here .. } End of Code My theory says when I call setTrackPaths() with every UIDevice rotation, createTrainPath() is called. Nothing happens of significance visually as far as the UIBezierPath is concerned .. until I call startFollowTrainPath(). Bottom Line It is then that I see for sure that a new UIBezierPath has not been created as it should have been when I called createTrainPath() when I rotated the UIDevice. The new UIBezierPath is not new, but the old one. If you’ve made it this far through my long code, the question is what do I need to do to make a new UIBezierPath that fits the resized and repositioned SKSpriteNode?
Posted
by JohnLove.
Last updated
.