Desdemona 0.4.1
October 9, 2007
I’ve released a new version of Desdemona, my Reversi game. From the release note:
Fixed a nasty bug in the AI which could lead it to make strange (and terrible) moves near the end of the game. Also fixed an error in the search optimisation code that caused the AI to perform much weaker than it should be.
Given the latter fix I also took the opportunity to overhaul the difficulty levels. There was too little difference between them. The same range of levels from 1-10 is available, but they now represent a wider range of ability in the AI.
Difficulty level 1 is about the same as it was before. However, at level 10 it will now take about 22 seconds to search for a move, up from about 10 seconds previously. (Because of the bugfixes, however, the prior version would have to use about 5 minutes or more to perform as well!)
Songs of praise
October 8, 2007
More software should be released in a song.
Cocoa JSON Framework v0.2—now with pretty-printing!
September 29, 2007
You can now produce human-readable JSON! There is a new method that takes options to control the formatting.
The public methods were renamed to jive better with existing Cocoa conventions. The affected methods are as follows:
- -JSONString was renamed -JSONRepresentation
- -JSONStringFragment was renamed -JSONFragment
- -objectFromJSON was renamed -JSONValue
- -objectFromJSONFragment was renamed -JSONFragmentValue
See the website for up-to-date documentation.
I released version 1 a little while ago.
Cocoa JSON Framework v0.1
September 23, 2007
I’m proud to release version 0.1 of my JSON framework for Cocoa! Other people have released code to work with JSON in Cocoa, but this would appear to be the first project to provide an stand-alone framework (an embedded one at that).
From the website:
This framework contains a collection of categories on existing Cocoa classes that together provide full JSON support. Importing the
<JSON/JSON.h>header provides the following main methods:-[NSArray JSONString]; -[NSDictionary JSONString]; -[NSString objectFromJSON];Strictly speaking JSON has to have at least one top-level container (array or object/dictionary). Nulls, numbers, booleans and strings cannot be represented in strict JSON on their own. It can be quite convenient to pretend that such JSON fragments are valid JSON and the following methods will let you do so:
-[NSNull JSONStringFragment]; -[NSNumber JSONStringFragment]; -[NSString JSONStringFragment]; -[NSString objectFromJSONFragment];
Edited for clarity after original posting.
Updated: I’ve released version 0.2 now.
I released version 1 a little while ago.
Auberon 0.3—Connect4 for Mac OS X
May 7, 2007
I’ve updated my Connect-4 game for Mac OS X. In addition to a rename from “Puck” to “Auberon” it has the following changes (they should now sound familiar):
- Cleaned up the interface somewhat and put some of the existing clutter in a preferences pane.
- Added a progress indicator for things that go on in the background.
- Added a “Check for updates” menu item to check if new versions are available, using the wonderful Sparkle framework. You also have the option to automatically check for new versions on startup.
Download Auberon 0.3 (0.25 MB disk image). Visit the homepage.
Desdemona 0.3
May 6, 2007
I’ve released a new version of my Reversi game. In addition to numerous behind-the-scenes changes, user-visible changes in this release are:
- Cleaned up the interface and hid some of the clutter in a preferences pane.
- Added a progress indicator to indicate that things are going on in the background.
- Added a “Check for updates” menu item, which uses the wonderful
Sparkle framework to
check for updates. You also have the option to automatically check
for new versions on startup.
Desdemona continues to use the wonderful graphics from Gnome Iagno. It sorely needs a logo though.
Download Desdemona 0.3.1 (0.25 MB disk image). Visit the homepage.
Update, 7th May: I just fixed a bug that caused the default values for the preferences not to be registered. This could cause the AI level and board size to be used uninitialised, and could lead to crashes. I have uploaded 0.3.1, and fixed the above link to point to the good version.
Phage 0.2.1
April 30, 2007
I just fixed a bug that caused Phage to be confused about whether you or the AI had won the game. This would sometimes cause Phage to declare that the AI won the game, when in fact you had. Pesky cheating AIs. At least I get to test whether auto-updating with Sparkle works then, which I introduced in the last release.
Download Phage 0.2.1 (0.5 MB disk image). Visit the homepage.
Phage 0.2
April 26, 2007
There’s not a lot of changes in here, but one of them should make incremental releases much more manageable. I also gave the website a little face lift, so hopefully it shouldn’t scare off people now.
The changes in this release are:
- Added a progress indicator for things that go on in the background.
- Added a “Move hint” menu item. Selecting this makes the AI give
you a hint for a move. - Added a “Check for updates” menu item to check if new versions
are available, using the wonderful Sparkle framework.
You also have the option to automatically check for new
versions on startup.
Download Phage (0.5 MB disk image). Visit the homepage.
Introducing Phage
March 27, 2007
Phage is a strategy game for 2 players, where you play against an AI (built using my game-tree search framework). The interface is a bit crude—click origin, then click target instead of drag and drop—and the featureset is somewhat limited, but it’s got the basics (making moves, undo) and I’d like it out there for people to play with.

Previously I’ve just been re-implementing old classics (like Reversi & Connect-4), but this is completely original. After seeing some of my game-tree search work online Steve Gardner, Phage’s inventor, contacted me about creating a computer version of his game. So I did, after stalling mulling it over for about a year.
I created the core of the game logic at a hack day four weeks ago and a first stab at an interface the following weekend. A new hack day is coming up, and assuming I get the chance to hack more on Phage then, what do you think I should focus on next? A more challenging AI? Drag-n-drop of pieces? Highlight possible moves? Answers in the comments please!
SBAlphaBeta 0.2 released!
March 26, 2007
SBAlphaBeta is a Foundation framework for creating AIs for many 2-player games. It encapsulates the Alpha-beta algorithm. No prior experience with Artificial Intelligence is necessary in order to use this framework.
Version 0.2 is a “back to sanity” release, incorporating improvements found by developing more games against the framework. Changes include: classes and interfaces have received a common prefix. The interfaces for states have been renamed. There are now some minor restrictions on moves, which allows us to do more error checking. Several “convenience methods” ultimately turned out to be confusing and have been dropped; many of the remaining methods have been renamed for clarity.