Wednesday, June 24, 2015

Followup on Steam Machines

A few months ago I posted "I am a person who will buy a Steam Machine". This month Valve put up a pre-order page, allowing us to pre-order the controller, the streamy widget, and the first two SteamOS boxes (from Alienware and Syber).

It would be narratively satisfying to title this post "I am a person who has bought a Steam Machine!" Sadly, it's not true. Yet! I will -- I figure I'll order in time for the headline launch date of early November. Pre-ordering might get me a console by mid-October, but am I that excited? Not really. Also, I have a whole lot of work to do this summer and fall.

(I'll have a whole lot of work to do this fall and winter, too. But I will at least have been paid for the summer work!)

The Steam Machine hasn't gotten a lot of good press -- not in comparison to the rapturous E3-load of promises from Sony and Microsoft. A quick news scan turns up headlines like "Don't buy a Steam Machine" (The Verge) and "Microsoft is building the Steam Machine Valve can't" (TechRadar). Well okay.

(On top of that, The Last Guardian really is shipping. Nothing Valve can do about that, obviously.)

I agree with the common criticism: Valve needs to push the "buy this and it works" console brand. Their pre-order web page touts customizability, not simplicity, and then it launches me into a pair of OEM product pages. (I credit Syber for showing me a clean good/better/best sales page, although they then ruin it with pop-up alphanumeric spew. Alienware's page is a mess; four models at the bottom of the page, just above the Beats headphones. Not even ordered by price.)

Just point me at a machine and explain why it's great. Marketing, people!

So. I'll still give it a shot. Valve and its partners are, unsurprisingly, bullish on the coming SteamOS game lineup. (See this quote from Alienware.) That's half the target they need to hit. The other half is to avoid a swamp of hardware-configuration noise which is indistinguishable from PC-land.

Thursday, June 18, 2015

Customizing an interpreter for a Glulx game release

Another technical question from Twitter: the integration of Hadean Lands with its iOS app. How did I set up iOS UI features like the dynamic map and the recipe index?

(Warning: if you don't think C code is interesting, this post is not for you! Sorry.)

The iOS version of HL uses my standard iOS IF interface, extended. I've added two tabs to it. The map tab shows your current location, and you can tap to travel to any room you've visited before. The recipe tab shows an index of recipes and other information you've learned. These work just like the "GO TO..." and "RECALL..." commands, so they don't make the game easier to solve, but they're convenient shortcuts.

I'm not going to post the iOS UI code I used. If you know iOS programming, it's very basic -- textbook UITableView and UIImageView stuff. Instead, I'll talk about the general problem: transferring information between the Glulx VM and your native (C) interpreter.

I should put "general problem" in quotes. There are several Glulx interpreters, after all. But let's assume that you're building a native app for your Glulx game, incorporating the glulxe interpreter engine (in C), and you want to customize it with game-specific features. You've implemented the UI part; now you just need to extract game state information. Say, the player's location to show on the map.