Sunday, September 17, 2017

Meanwhile: now in development for Mac and Windows

I wrote that long post about SkiaSharp in Unity, but I never answered the question: what kind of Unity project am I working on, which requires vector outlines and polygons?
Here's your hint:
Almost six years ago, I released Meanwhile: an Interactive Comic for iPhone and iPad. I've since ported it to Apple TV, but folks without Apple hardware have been forced to live without it. (Or to buy the hardback graphic novel, which I admit is a fine alternative.)
But relief is in sight! I have started building a Unity port of Meanwhile, and am working towards a Steam release for Mac and Windows.
For those who aren't familiar with Jason Shiga's nonlinear tale of mad science:
On the way home from the ice cream store, little Jimmy discovers a mad scientist’s wonderland: an experimental mind-reading helmet, a time machine, and a doomsday device that can annihilate the human race. Which one would you like to test out first?
Meanwhile is not an ordinary comic. You make the choices that determine how the story unfolds. Meanwhile splits off into thousands of different adventures. Most will end in doom and disaster. Only one path will lead you to happiness and success.

Sunday, September 10, 2017

Aporia: design ruminations

I occasionally repeat the mantra, "All game genres hybridize over time." Today's example is Aporia: Beyond the Valley, which presents itself as a Myst-genre puzzle adventure game. Okay, it's a graphical adventure game and it's got puzzles, but I was surprised at how much it didn't remind me of Myst. (Or that genre's modern exemplars, like Obduction or Quern.) Aporia reminded me of several different games, in fact, at different points.
The game opens with an extended introduction which I would call "linear" if that term weren't entirely dessicated. It is, at any rate, an amble down a trail of minor obstacles, geared to teach you mechanics rather than work your little grey cells. Fine; every game starts that way. But Aporia's intro is long enough to let you assume that you've got the rhythm of the entire game. Paths branch just enough to give you the sense of exploration, without letting you miss the next locked door or the key that opens it.
So that's not quite Myst / Quern / Obduction. The usual adventure formula gives you a small introductory area, and then throws the gates open on a world of puzzley madness. Aporia's guided exploration (with wordless narrative and a bit of resource-foraging) is more like, say, Ico. I don't mean it has combat or serious platforming; I just mean the shape of the map. Complex geography with a clean route through to the next area.
Then you pass through a major building, and the gates are thrown open on... a world. The valley. This is a game about a valley, remember? And the valley is enormous, wide open -- a puzzle shrine here, a puzzle building there, but primarily hills and rocks and waterfalls and trees and marshes. You've gone from Ico to Shadow of the Colossus.
That's not the usual adventure formula either, is it? I love open-terrain exploration, but coming from the Myst mindset, I suddenly wanted to wail: guide me! Show me a shiny beacon of goal in the sky! Where's the next locked door? Where am I supposed to solve?

Friday, September 1, 2017

Late Mysterium news roundup

Mysterium was the weekend of August 5th in Orlando. I didn't go, and I had trouble with the Twitch stream so I couldn't watch the presentations either. Happily, the team has gotten the videos up on Youtube, so I've been able to catch up on the Cyan Q&A.
Every year Rand Miller makes himself available for a chat with the fans. This year he was joined by Ryan Warzecha and some of the other art and production people at Cyan.
These Q&A sessions generally don't produce earth-shaking announcements, but there's usually a few interesting bits of company background and hints of what's to come. I've transcribed the niftiest; you can watch the whole 90-minute video if you want. Just remember that it was recorded a month ago.

Wednesday, August 30, 2017

Your load is too heavy: Zork deep reading

This past weekend a screenshot went around Twitter (my part of Twitter at least!)

weight = num_items * Max_held_mult;
  if( weight <= random(100) ) ?label8;
  print "You're holding too many things already!";
  move noun to player;
(-- @icculus, Aug 26)
The clear reading of this code (as the screenshot says) is that the inventory limit in Zork 1 is random, not a fixed number of items. Each item you pick up makes it more likely that you'll hit a "holding too many things" error. But since it's a random chance, you can just try again -- it might work next time.
This was passed around in a commentary cloud of "This game was unfair," "games in the 80s were terrible," and so on. (See this NeoGAF thread, for example.)
This is fascinating! I played Zork, as I played all the Infocom games, and I didn't remember this inventory detail. It felt dimly familiar when I was reminded of it, though.
Research time!

Monday, August 28, 2017

Using SkiaSharp in Unity

For the past two weeks I've been trying to make SkiaSharp work inside Unity. It has been zero fun but I got it to work. Painfully and creakily, but it works. I suspect I'm the first person to do this so I'm going to document the process here.
Yes, this is for a game project. I'll let you know when it's closer to release.
Background: Skia is an open-source 2D graphics library from Google. It lets you fill and stroke vector shapes (polygons, circles, spline curves, text). 2D graphics features are easy for native apps and web pages, but Unity doesn't have any such feature.
(There's LineRenderer but that's very limited. No polygon fill, no true curves.)
Skia is a native library -- you can download compiled libraries for Mac, Win, Linux, etc. Then the Xamarin people created SkiaSharp, which is a C# wrapper for Skia. Problem solved, right? Drop the library into Unity, build Mac and Windows apps, go.
Nope. It was a headache. But I made it work, in a very clunky way.
UPDATE, SEPT 4: Many thanks to Marshall Quander, who read my original blog post and clued me into the right way to set things up. Or, at least, the less-wrong way. This post is much shorter now!
I'm not going to describe every blind alley. (See the end of this post for a taste.) Instead, I will give a recipe for creating a tiny Unity project which displays some 2D graphics. Follow along!

Sunday, August 27, 2017

System's Twilight emulator packages

A couple of weeks ago I promised to set up emulator packages to play System's Twilight on modern machines. These are now ready!
These packages are based on Mini vMac, an open-source classic Mac emulator. Special thanks to David Pfaltzgraff-Carlson, who set up Cliff Johnson's puzzle games using Mini vMac in this manner. I just copied his package configuration.
(Yes, these packages include an unlicensed Mac ROM. The ghost of Steve Jobs can come yell at me about it.)

Friday, August 25, 2017

Two-word parser, 1966 AD

It's common to note that the Apollo 11 guidance computer had just 4K of RAM, less than (a microwave | a toaster | your car keys) whatever the current IoT gizmo of the day is. The complete source code was posted to Github in 2016, to the delight of space geeks everywhere.
(I see that the repo maintainer has been accepting patches all this time, which will be handy when... when... I'm not sure how to finish that sentence. But you see a typo, you fix a typo. I get it.)
I remember the articles popping up a year ago. What I don't remember is this control panel, which I saw last weekend during our Air and Space layover:

Image from NASA via Wikipedia
I'm pointing at the labels on the left: VERB and NOUN. What?