[]RSS

About Archives Artwork Comic Contact Philosophy Projects Tags

Live editing a running Pong game

[Comment]

April 20th, 2008 in Links

Some random Sunday fun: a live Pong game where you can enable/disable the lines of code driving it. Fun for at least a few minutes.

Prototyping a new web game

[Comment]

April 19th, 2008 in Weblog

One of the projects I’m working on this year is an engine built in a wiki interface. The game engine uses a markup similar to wikitext, with a helpful UI to simplify building world elements. The player interface is a webified version of a type of game, supporting features for authors who want it.

The game editor

A SVG mock-up for “thwarter”


  1. The main location editor. A location is a wiki page with a bunch of state attached to it. In the mockup example, you’re looking at “The Meadow,” in its “Chapter 1″ state. The text is like wikitext, allowing you to tag other areas, objects, and so on as you write. The approach differs from zcode, allowing you to write the story parts first (and worry about connecting the programming parts later).
  2. The object editor pulls meta data from the wiki page (and things you add directly), allowing you to edit their properties. All concepts in the games are objects like this, including NPCs, things, paths, and game event triggers.
  3. The object editor tabs show each kind of world element.
  4. The location timeline for each location shows the story states. State can be used for description of an area over time or other story variants like branches, portals, and so on. Each area can have an unlimited number of these states, allowing the author to write all of the story for one area in a single interface. World objects can have a timeline too (not shown here).

The art of prototype

I use to mock-up user interfaces. It’s a good starting place as it’s quick, vector-based, and it uses text (SVG plays nice with Subversion). I sketch the interfaces directly in now, skipping paper prototypes for everything but the earliest concept sketches. I sometimes take the vector drawings to completion too, polishing them, and dissecting them later with the Gimp for HTML templates.

Notice that the editor mockup has no icons or colours. It’s a habit I’ve developed over the years, limiting my thinking in terms of highlights instead of worrying about the details. I get bogged down with details early on, so I have to force myself to sideline the distractions until later. I limit mock-ups to 10-20 minutes too, to avoid getting sucked in to trying to perfect ideas early. The time for polish comes later, after I can prove the utility in the approach.

Prototyping

I am also careful while building the prototype not to get too lost in the details. The purpose is to test the viability of the interface and the initial approach. So far, I’ve discovered that I need to be able to parse the wikitext in both client and server, as well as parsing the NL text from the game interface on the server. I’m considering externalizing the parsing rules (via regex or similar) so it can be shared between Javascript and PHP, so I can provide a rich UI and storage. This complexity is a good discovery to make in the prototyping stage, as it gives me lots of time to consider alternative–and hopefully simpler–approaches.

Another test of the prototype is to see if is a good fit. I’ve been pleasantly surprised so far, and have found it an extremely comfortable framework. I’m also looking at hosting needs (AWS, Slicehost, Dreamhost), considering how DNS and DB partitioning will work, and what sorts of load might be put on the system. Some of this thinking is early, so I have to try not to get stuck in it.

Level up

Next up, I’m going to start to prototype the game play interface and expand the schema. The game implies a great deal of state, something that I want to be careful to contain simply. I’m siding on partitioning the games in their own databases (or tables), especially for the live game states. A live game will have large multipliers of the number of locations, their states, by the number players and their time in the game so far. At a small scale it won’t matter, but thousands of players multiplied by hundreds of locations (and dozens of states each, dozens of variables per state) becomes a large persistent data problem.1

  1. And there I am again shearing the Yak

The etymology of i, j, k, …

[Comment]

December 18th, 2007 in Micro Blog

History is fun. Where does the variable naming convention of using i, j, k, l, m, and n for loop variables come from?

In Fortran, all variables starting with the letters I, J, K, L, M and N are integers by default. Fortran refers to this as “implicit typing”. (This may be the source of the long tradition of using “i”, “j”, “k” etc as the loop indexes of “for loops” in many programming languages—few of which have implicit typing). However, it is questionable as the root source. Why were I, J, K, L, M, and N integers in Fortran as opposed to A, B, C or X, Y, Z? One posed explanation is that I and N are the first two letters of Integer. Fortran’s source of inspiration is very likely that mathematicians have been using use i, j, k, … to denote integers for hundreds of years — for example as the Index Variable in Summation and Product. – Wikipedia on Sigils

New features in Php 5.3

[Comment]

November 20th, 2007 in Links

Here’s a great set of articles showing off the new features in Php 5.3: Part 1, 2, 3, 4. It’s fun to watch languages evolve.

Nethack, a must for developers

[Comment]

November 2nd, 2007 in Links

A few good reasons why every developer should play nethack. I’d like to add that every developer should take a look at the code, as it’s a great example of some of the cooler unixisms.

Mobile Safari tabbed browsing tool

[Comment]

October 19th, 2007 in Links

An extension to mobile Safari that makes tabbed browsing easier. It’s a clever use of bookmarklets and iconic hovering menus that is just plain old fun to use.

Opera + Wii + Wii-mote API

[Comment]

August 7th, 2007 in Links

Details on Opera’s Wii-remote browser API. Do funky stuff with the Wii-mote from within the Wii’s Opera browser.

HTTP header fun and abuse

[Comment]

August 2nd, 2007 in Links

Some analysis of HTTP header oddities out in the wild. A longish list of interesting HTTP header fields and guesses at their purpose. My favorite pseudo-header?

X-Subliminal: You want to buy as many games as you can afford

Which is even based on RFC1097.

Mind mapping 2.0

[Comment]

July 10th, 2007 in Links

Bubbl.us, a fun web2.0 mind mapping tool that shows some UI promise (thanks John).

Developers, canticas, and Dante’s Inferno

[Comment]

July 7th, 2007 in Links

An interesting take on the 3 kinds of software developers. If you’re ever asked, “what kind of developer am I?”, be wary if they’re a perpetually intermediate developer (they won’t like the answer). Purgatorio is no fun.

Next page [>>]