Gui Rambo

Special Guest: 

John Sundell

In today's episode, the iPhreak’s Gui Rambo speaks with John Sundell. John is an iOS Freelancer and currently works with a Norwegian company called Hyper.  Hyper builds customer projects and in-house apps.

John builds apps, games & developer tools. He also makes Swift by Sundell, which is a weekly blog & podcast about Swift development. He has worked for companies like Volvo & Spotify. He’s the creator of several open source projects including Unbox, SwiftPlate, Marathon & Imagine Engine.

In particular, we dive pretty deep on:

03:00 - What's Imagine Engine?

It's a game engine that runs on Core Animation.

05:00 - API

John explains what Imagine Engine provides in terms of API and functionality.

07:30 - Why not use SpriteKit?

It's hard to predict how SpriteKit is going to work under pressure, being closed source makes it hard to study.

13:20 - What's Core Animation?

It's an underlying framework that drives the drawing for the UI on Apple's platforms.

15:30 - How does Imagine Engine use Core Animation?

Just like UIKit uses it, objects are backed by layers.

19:40 - Coding for performance

You have to really think about the complexity of everything you do.

25:30 - Supporting different OSes

John started with Metal, but noticed that Core Animation was fast enough. Both are available on all of Apple's platforms.

29:00 - The display link API

Provides a callback so you can sync your code with the display refresh.

30:20 - Unit testing a game engine

Doesn't use strict TDD, but prefers to test automatically so he doesn't have to create a game to test each feature of the engine.

33:05 - Are there games we can try made with Imagine Engine?

Revazendo is in beta.

35:00 - How do you handle input and events?

Imagine Engine provides an unified event API.

38:00 - Game development architecture

There are two popular patterns: component-driven and driving from a central update method (loop). Imagine Engine uses a mix of both.








Subscribe by Email

[activecampaign form=27]