Probably the best onboarding to a game I’ve seen is Alto’s Adventure, you start the game, then bam, you’re playing.
I like that.
I’ve tried to do something similar in Trainwreck, The game loads the onboarding level and the train smashes through the Logo, it gives you one option, tap the signal. If you can tap that signal, you’ve learnt how to play the game.
It then moves you onto the next part of onboarding, showing you two signals, the aim is to get the train from the left side of the screen to the right side without getting hit by the other train.

In 2012 I worked on a game for iPad/Mac called Ghost Train. The game mechanic was simple, stop the trains from hitting each other by changing the signals on the track. I guess it would be akin to having a pac-man map where more ghosts we added over time…maybe.

Here’s a couple of screenshots from the game, back then it was written in Objective-C and Cocos 2D.

It’s been a few years since then, this game didn’t get many downloads….however its a game that I wanted to play, and played.

In mid 2016 I decided to re-build it, but with a new engine. I had lots of grand ideas for it, many are in the game today.

I decided to start writing the game in SpriteKit, so it would be a direct port of the Cocos 2D version, I quickly changed to SceneKit when I wanted 3D, this version got really far into production, see these screenshots:

But as time went on, I wanted more features that SceneKit (at the time) couldn’t do without a lot of work from myself on the engine.

So enter Unity, I’ve used Unity briefly before, I used it for 10 minutes then gave up, but then I watched a guy on YouTube making a Crossy Road clone in 5 videos, it blew my mind, so I jumped right back in.

So here I am currently working on Trainwreck in Unity, with the hope of releasing on iPad, tvOS and macOS.