Journey to Swift ECS

While I’m a developer by day, I don’t do much iOS development anymore and certainly no game development.

I’ve had many ideas for games in the past and have toyed with them, but I’ve finally started working a bit more on a particular idea. Part of this is to improve my swift knowledge (I work mostly in C# and Typescript), but mostly it’s just for fun.

To begin with, I looked at using iOS’s GameplayKit ECS (entity component system, for those who are unfamiliar with the pattern), but I decided quickly that isn’t very ‘swifty’ and, more importantly, I’d enjoy implementing this kind of thing myself.

Important note: As I’ve mentioned before, I’m not a game developer (I was one long, long ago before ECS became a popular pattern used in game development). I’m also not a swift expert. So, I freely admit that anything I come up with here might be scoffed at by a real game developer. Also anyone that really just wants to make a game should probably just use an existing tool (Unity, Unreal, etc.)

What is an ECS

There are plenty of places you can read about the basics of ECS. Rather than attempting to explain it (poorly), I’ll just provide a few links.

Goals

I want the ECS to end up with the following qualities in rough order of priority

  • Easy to use and read
  • Typesafe
  • Reasonable performance

I don’t really need blistering performance, but I definitely don’t want it to suck.

This is already way longer than I intended. I want to try and keep posts short so I can post more often. We’ll see how it goes.

History

All posts about the development of SwiftECS can be found here

:computer:

Updated: