The creation of a scene


The steampunk adventure will take several months to make. Just for fun, here's a "making of" clip that follows the creation of the first scene, from paper sketch to wireframes to finishing touches.

Up Next: A Steampunk Adventure


Now that Tenterhook is inching toward Beta and a sample adventure has been successfully released, it's time to test the limits and think big. I'm in the early planning stages of a steampunk adventure, and I can only hope the finished product comes close to what I've got rolling around in my head.

The planning phase has been a little unusual this time around, but in a good way. Normally I map out most of the plot before I concern myself with graphics and audio, but I'm finding all sorts of atmospheric steampunk-compatible music and it's sparking ideas left and right. I'm kind of digging this backwards approach to the creative process!

Sample adventure: The Path to Paradise


The Tenterhook platform is maturing to the point where it can produce adventures that are reasonably stable. There are still some bugs and features that must be addressed before I'm comfortable calling it a Beta, but we're getting close!

The Path to Paradise (screenshot below) is a sample mini-adventure built using Tenterhook. It was partially an exercise to help me test the platform, but who knows, some might enjoy the adventure on its own merits.

An adventure in development with Angular 2


Tenterhook development started in October 2015. It was an ambitious foray into Google's AngularJS (Angular 1.x), a completely different world from the Knockout and jQuery I was used to. I struggled with the same questions every other Angular newbie has: do I put my code in controllers, directives, or services? How should directives communicate with each other? Why am I having so much trouble wrapping my mind around $scope?

In May 2016, Angular 2 was gaining traction in beta. It was a dramatic departure from its predecessor and I wasn't thrilled at the prospect of converting everything yet again. Working with pre-release anything is essentially a guarantee of churn and false starts.

Long story short: I'm incredibly thankful that went all-in with Angular 2. Sure, there's a learning curve, but the combination of TypeScript and Angular 2 magic is powerful to say the least. The structure of the code is so clean and well-organized, infinitely more intuitive than wrestling with $scope in Angular 1.

An example of how Tenterhook reaped the benefits of Angular 2

Your typical Angular 2 application consists of many components which belong to a module. When I started building Tenterhook I realized I needed two distinct modules:

  1. A core module with all the components needed to play an app, e.g. the dashboard, viewport, scenes, characters, and so on.
  2. A studio module with all the components needed to define the app's manifest.

When you're building an app in Tenterhook Studio, both modules are in use. This allows you to preview your app as you build it.

When the app is finally ready to play, the studio module peels away and only the core module is needed:

This separation of core/studio modules was certainly possible in Angular 1 but it was much easier to achieve in Angular 2. As a result, I'm happy to say there's no "spaghetti code" in Tenterhook despite its many moving parts.

I'm nowhere near an Angular 2 expert, but I can tell you it's been a real treat to work with it so far. If you're embarking on your own project and weighing options for a JavaScript framework, I highly recommend giving Angular 2 a close look.