Thursday, August 4, 2011

TradeWars 2011

For the last week and a half, I've been looking into the current state of TradeWars and various TradeWars helpers. What I've found has been both reassuring and thought-provoking.

The TradeWars Game Server is still actively developed and supported. John Pritchett has even hinted at radical changes that may come out in future versions, such as the option of generating universes with a "flat" map constrained to a hex grid rather than the traditional free-form graph. I'm glad the game is not stagnating, and that the players seem to be open to new ideas.

TWX seems to be the most popular helper these days, despite the fact that it's no longer being developed. It has a reputation for speed, and its crude scripting language sets a low bar for inexperienced programmers. The author of TWX made the responsible decision to release the source when he ceased development, and the community picked it up and produced at least one version with new features and bug fixes. But that project seems to be dead now, too. It probably doesn't help that it's written in a dead language. [Edit, 8/18/2011: ElderProphet is working on it again.]

My favorite helper, SWATH, has declined in popularity, but Stein is still around and responding to bug reports and feature requests. Many players believe that SWATH is too slow for aggressive scripting, especially in unlimited turn games where the limiting factor on income is the speed of your scripts. I can't argue with the latter, but I think unlimited turn games are stupid, anyway. And I'm unconvinced that helper speed is ever a bigger factor than network latency for well-designed combat scripts. I looked through the TWX scripting API and saw very little that TWX can do and SWATH can't.

There was a helper called Kokua that I found intriguing because it was written in Java. It was released as part of another project called the TradeWars Collaboration Server, which was meant to be a proxy that would automatically merge the data collected by several players and make the latest data available to all of them. I don't know if it ever worked, or whether it still works with the latest TWGS. The last Subversion commit was four years ago. In any case, I've never heard of anyone using it. If Kokua has an enduring legacy, it's that its JFlex lexer specification is available for anyone to study.

That's exactly what I did this weekend. I've always wanted a TradeWars helper that works exactly the way I want it to, and I'm toying with the idea of writing one. But whether or not I ever get around to it, considering how I'd write my own lexer and parser for TW2002 has been a reminder of how much easier it's going to be to write helpers for Sector Zero.

All this thinking about helpers has been a bit frustrating, though. The way TradeWars is played now leaves very little chance of survival — much less victory — for players who don't script all of their basic activities. No matter what artificial delays are introduced to give humans a chance, a script will always tactically outmaneuver them.

The real game is played at a higher level, and that's where I want to focus as I design Sector Zero. If computers can beat human grandmasters at chess, it's only a matter of time before helpers handle the strategy of TradeWars as well as the tactics and cut human players out of the loop entirely. The engineers who designed Deep Blue were probably fine chess players, but they weren't playing chess when they beat Garry Kasparov. And that's no fun.

I'm trying not to be too discouraged by the fundamental nature of this problem. I don't fully understand the theory, but I know there are games that manage to be easy for humans and yet extremely difficult for computers. The ancient game Go is one. Arimaa is another. The latter was purposefully designed to be difficult for computers. Hopefully I can learn something from these games that I can apply to the TradeWars genre. Perhaps I need to hit up the University of Arizona library for some books on game theory.

Maybe I'll do that next week. I'm planning to ease up on the programming a bit and enrich my life with other activities, so I may only update twice a month for a while.

No comments:

Post a Comment