// the find
JohnSundell/ImagineEngine
A project to create a blazingly fast Swift game engine that is a joy to use 🚀
ImagineEngine is a Swift 2D game engine for iOS, macOS, and tvOS that uses Core Animation as its rendering backend instead of Metal or SpriteKit. It's aimed at Swift developers who want to build simple 2D games without touching SpriteKit's rougher edges. The plugin-over-subclassing design philosophy is its most distinctive architectural choice.
Core Animation as the renderer is an underrated decision — it means the engine gets Apple's GPU-accelerated layer compositing for free, which is genuinely fast for sprite-heavy scenes without needing Metal boilerplate. The event/plugin system is clean: you observe collisions and clicks with closures rather than implementing delegate methods or overriding lifecycle hooks, which keeps game logic composable. The Timeline API handles delayed and repeating events correctly relative to the game loop, so you don't end up fighting DispatchQueue when the game is paused. The cross-platform API is consistent — no scattered #ifdefs in game code.
Abandoned since September 2020 with Swift 5.0 badges on a repo that hasn't touched Swift 5.5+ concurrency — adopting this today means owning maintenance on a dead codebase against a moving Apple toolchain. No physics engine: collision detection exists but there's no impulse, gravity, or joint system, which rules out anything beyond basic arcade games. No audio API at all — sound is entirely on you. The Core Animation backend, while clever, hits a ceiling fast: complex particle effects, large tilemaps, or anything needing shaders is simply not possible without rewriting the renderer.