Tag Archives: reality

ARKit Impressions

I’ve been working with ARKit recently. I am planning on releasing an AR basketball game when iOS 11 is released.

Here are misc thoughts about working with ARKit:

  • It’s hard to find answers to common questions about doing simple things in ARKit. Searching for SceneKit yields slightly more results, but even that is sparse. The Apple developer SceneKit & ARKit forums don’t appear to have much activity either. So it’s up to StackOverflow & random Internet blog posts
  • Working with ARKit means working with SceneKit. SceneKit is Apple’s framework to make working with 3D assets easier for developers. Working with SceneKit & 3D is something that I’m new to. A lot of the math around position, orientation, euler angles, transforms, etc. can get complex fast when it involves matrix transforms and quaternions.
  • It’s really hard to find assets for DAE/collada. The DAE format is meant to be interchange format for various 3D software to communicate with each other. The reality is that exporting to DAE or converting from one format to DAE is a crapshoot. I’ve used Blender briefly to look at 3d assets, but digging into 3D modeling is a huge time sink for some one looking to get involved in ARKit. I wish there was an online store that focused on selling low poly (<10K), DAE files.
  • Related, working with 3D assets as someone new to 3D assets is very frustrating. The concept of bounds vs scaling as they relate to importing into your SceneKit scene was very challenging (with the 3D model that I imported). If you have your own in-house or contracted 3D modeler, you should get 3D assets that work well with SceneKit, but I had countless issues with off the shelf 3D models & file formats.
  • After you’re able to import your 3D model, modeling the physics geometry can be a challenge. SceneKit allows you to import the geometry for your physics body as-is using ConcavePolyhedron, but you probably don’t want that. I had to manually recreate a basketball hoop using multiple shapes combined into a single SCNNode.
  • ARKit is not all powerful. The main feature that ARKit gives you is horizontal plane detection. Occlusion doesn’t come with ARKit. Expect many apps that deliver an experience reliant on a plane/surface like your desk or the floor.

ARKit is exciting, but don’t expect the world yet. Future ARKit releases & better iOS hardware should provide more compelling experiences. Today, you can expect to play with 3D models on a surface (with surface interaction) or in the air (with limited or no environment interaction).

Distracted Gaming


Modern gaming is often filled with bogus achievements. Start the campaign? Achievement. Get max upgrades on your pistol? Achievement. Often, a game will show you your percentage completed. If you casually play through, you may get 40% complete. If you traverse the map for hidden collectibles and beat the game on different difficulties, you can get 100%.

While this is fun for college students or those who enjoy following a guide to find all the secrets, the rest of us don’t have time for that. We play games for reasons like gameplay, escapism, and socializing.

I can’t count the number of times, I’ll be playing as the protagonist and clear out a room full of bad guys. The building is on fire and the accompanying AI is telling me we have to get out of here. Instead of running through the open door to the next area, I stop and scour every nook & cranny for obscure loot. Crawling around dark corners, running along the walls, and checking every desk for hidden items. Repeat for every room in the game.

Do you see a problem here? It’s game breaking distraction. It kills the fantasy and immersion. Developers spend years crafting beautiful, immersive maps only to have players break the immersion by constantly doing things that don’t fit the narrative.

It could be a zombie outbreak, a space ship on fire, or a warzone. As the main character, you spend a significant amount of time thinking about the map layout to try and find all the collectibles. Enemies and puzzles are a second thought as you face the fear of missing out if you didn’t check every side room or alternate pathway.

Depending on the setting, it could work out. With franchises like Tomb Raider or Uncharted, you’re a treasure hunter and finding treasure is what you do. Even then, finding a rare tribal necklace in the janitor closet on the ship breaks immersion.

I assume developers add arbitrary collectibles and achievements to pad their gameplay hours on the box description (or product page). When the single player campaign can be beat in 5 hours, the game can be marketed as having 20 hours of content by adding secrets to each map.

Developers, I play your game for the gameplay. Not to check every corner of the map to pad my achievements, which are points that don’t mean anything. Focus on nailing the crisp gameplay. Don’t distract me by making me constantly worry if I have missed out on hidden collectibles.