1. Map icon

2. Start dialog

3. Map editor

4. New game

5. Game window

6. Info window

7. Offer window

8. Deals window

© 2003-2004 by mikel evins
Licensed under the GPL


latest version is 0.9.1

Hansa moved to common-lisp.net

The Hansa project has a new home, at common-lisp.net. For the time being, at least until the next release of Hansa, you can still download it from the former SourceForge release page.

Why has Hansa moved?

For several reasons:

  • The server setup at common-lisp.net is more convenient for me, the project maintainer
  • Hansa is written in Common Lisp, and so common-lisp.net, a host for Lisp projects, is a natural home for it
  • common-lisp.net is providing a valuable service both for project developers, in maintaining a good hosting service, and for users of projects based on Common Lisp, in increasing awareness of the programming language that has made those projects possible; I think it's useful to support their effort by moving active Lisp projects onto their servers

Mailing Lists


You can browse our CVS repository or download the current development tree via anonymous cvs, as described here.


If you'd like to contribute to the development of Hansa, please send mail to mevins (at) common-lisp (dot) net, and consider joining the Hansa-devel mailing list.

News (2004-01-28)

I'm still working on the new release of Hansa2. I have made a lot of progress, but I am not yet ready to release the software. Because a number of people are following the development of Hansa2 somewhat closely, I thought I'd post a progress report.

I hope you'll all continue to be patient with me. I am continuing to work on Hansa2, but game development of this nature is time-consuming, and I'm doing it in my spare (hah!) time.

I've made available screenshots of the software as it exists today; the screenshots and comments are in the left-hand column of this page.

Following is a summary of status details:

  • The new implementation is written in Common Lisp. The game engine is in portable ANSI Common Lisp and should run on any reasonably compliant Common Lisp implementation, of which there are several very good ones, both commercial and free, on Windows, Linux, and Mac OS X. The networking code is necessarily non-portable, though, as is the GUI client.

  • Of the planned graphical clients, only the Mac OS X version is written at present. I intend to write Windows and Linux clients as well, but I'm not there yet.

    The new software is quite fast compared to the old Java version, thanks mostly to the excellent performance of Common Lisp implementations.

  • The map (Mac OS X) editor is complete and working, but some portability work remains to be done on the map-file format. Map-files are in fact directories ('bundles' in Mac OS X parlance), named ".hmap". A map-file directory contains two files: "mapdata.xml" and "mapdata.png". The first is an XML representation of such data as the position and populations of cities, and the positions and types of resources. The second is the image of the map. The map editor can create new maps from arbitrary JPEG, TIFF, PNG, or GIF files.

  • All my current work is on the game engine, which actually plays the game. The game client, which is the program that a human player uses, connects to the engine, either locally or on a network; the engine maintains the state of the game and runs the computer players, and the human players use the client to make moves. You can run a game engine on a machine without any clients at all, making it possible to run a Hansa2 game server to which players can connect from any location. My intention is that eventually people can use Mac, Windows, or Linux clients to create maps and play games with other people, without having to care which client the other people are using.

  • It's likely that the game engine will include a simple text-only client built-in, so that people can begin play-testing the game soon after the basic game-play is implemented. I have also considered providing an HTTP interface so that people can play using their web browsers, though I fear their expectations for the interface may be too high if I do that. I've considered creating some sort of graphical web-based interface using Flash, but that may be too much work that is too tangential to the main purpose of the project.

Why Common Lisp?

No one has asked, but I'm sure some people are wondering why I've chosen to write Hansa2 in Lisp. Basically, I'm an experienced Lisp programmer, and Common Lisp is a very good language in several ways for writing a game of this sort. It is a rich language with an ANSI standard, good portability, excellent performance, and very good development tools that work on a variety of platforms. It is very well suited to modeling strategies and other data structures useful in games. It supports incremental development very well, and I'm much more productive in Lisp than in any other language, especially when I work on a project in little bits of time here and there, as is the case with Hansa and other projects that I do for love and not for money.

Lisp has been used in the development of commerically successful games as well. Naughty Dog, for example, uses Lisp in the development of its very successful games.


Hansa2 is an implementation of the trade game Hansa, invented by the economist David D. Friedman. The game is generally similar to games like Empire and Risk: the goal is to dominate the world. The great difference from other games is that in Hansa you expand, not by conquering your neighbors, but by persuading them to join trade leagues. How can you persuade them to join? By offering them a better deal than they can get elsewhere.

But can't you just bribe your way to victory, then? Not so fast; other players could try the same strategy. The only way to be sure you can beat them is to be able to offer better deals to more neighbors than they can, and that means you must make deals that pay off, deals from which you profit, or else you'll run out of resources with which to make offers.

Hansa is not only a game of strategy, it is a game of economics. You have to learn the principle of comparative advantage, and how to use it to make both yourself and others better off.

Hansa2 0.9.1 is not yet a playable game. The main user interface is mostly done, and the framework of turn-based play and single-player and multiplayer games. I'm working now on the game engine; the Mac OS X graphical client program is essentially done except for its connections to the game engine.

Hansa2 is hosted at Sourceforge, where you can get the source and binary versions. The Hansa CVS repository will be available soon for those who simply must have the very latest code, and for developers who wish to contribute to the project. Contact mikel evins if you want to be added to the project.