Thursday, September 28, 2006

Improving On An Old Chestnut


Breaking my own rule that improvements should be belayed until such time as the original game has been reimplemented, I've added waypoints and path finding to agent movement in FreeSynd. I found this documentation of the A* path finding algorithm to be most enlightening.. although, frankly, the sketch is more than adequate to implement a useful algorithm for agent movement.

It always annoyed me when I told my agents to go to point X and they got stuck inside buildings or took some inordinately long path. Now you can hold down the ctrl key and enter waypoints manually, or you can let the path finder do its job (this is the default). Pressing the ctrl key without clicking the mouse will display the selected agents' current path(s) as a bright yellow line. At the moment the planning algorithm does not take elevated terrain into account, so trying to send agents onto bridges or up stairs simply won't work just yet.

There's still a hell of a lot to do before the game is playable, including shooting, enemy AI, vehicle controls, sound, etc. But if you'd like to play around with the path finding, you can grab this all-in-one package I've put together. It includes windows binaries, all the required data files from the original game and source code (so you can build it on linux if that's your prefered platform). If you feel the urge, please report bugs on the bug tracker. I'd also love you hear any ideas you have for new features.

Tuesday, September 19, 2006

Into The Unknown..

Back when Mike and I started the Boomerang decompiler project, we had the choice to start from scratch or to use our work on the UQBT project as a base. There was pros and cons to both approaches, but in the end we decided that UQBT had quite a lot of value in it, so we went with that. Unfortunately, at the time Mike and I started working on a decompiler based on UQBT, the copyright was owned by a number of parties. We had to talk to lawyers from the University of Queensland, Sun Microsystems and the individual people who had worked on the codebase over the years. Initially the lawyers were of a single opinion: no way. The individual contributors, however, were of mixed opinions: what for? and which license? As it turned out, answering the second question also answered the first question and started to put the lawyers minds at ease.

The goal of the Boomerang decompiler project was decided, way back in 2001, to be a guiding force in bringing about a market for decompilation technology. By publicly showing that decompilation was possible, we hoped to encourage people to invest time and money into making tools that they either make available to the public, or use to offer services to the public. This is why we chose a BSD-style license, so anyone who wanted to use our code for commercial (more specifically, proprietary) purposes, would be free to do so.

Over the years, I think we've done a lot to change the prevailing opinion that decompilation is "impossible" or at least economically uninteresting. Our paper on commercial decompilation from a small contractor perspective "Using a Decompiler for Real-World Source Recovery" was well received in 2004, whereas our paper "Computer Security Analysis through Decompilation and High-Level Debugging" was openly bashed at the 2001 WCRE conference. In just 3 years the opinion that decompilation was something someone with good tool support could do in an economical amount of time has changed from wishful thinking to accepted common knowledge.

So how about that market? Is the flood of cheap decompiler tools coming? Well, ever since 2001, Ilfak Guilfanov has been talking about adding commercially supported decompilation to IDA Pro. A large number of plugins exist, but without commercial support I really don't think we're there yet. Decompilation services for source recovery are still pretty much unheard of, but there are some people out there now who claim they can do it.. that's more than there was before. It seems the image problem is sorting itself out. Slowly, people are starting to see decompilation of machine code with the same eyes as they see decompilation of Java.

It's time to stop sitting on the sidelines. Mike and I have accepted roles with a company that is using decompilation technology to provide market valued services. We're now taking a direct role in influencing the creation of this market. Of course, I can't tell you which company it is we'll be working for, or what services they will be providing, but chances are you'll be able to guess. Just don't ask me to confirm or deny your guesses :)

Unfortunately, this means that we must stop working on Boomerang. It's possible that others may be interested in continuing the development of Boomerang, and we'll be around to offer a little help where we can. In this blog I have spoken a lot about Boomerang, but that's not what this blog is about. This blog is about me and, in particular, my participation in the open source community. That won't change. I will continue to write about the open source projects I work on. At the moment that's very game related, but in the future this too may change.

Saturday, September 09, 2006

Other Fun

I've recently been working on some game related projects. First, there's the RPG engine I've started which I call Stallion. I've received just about no interested about this from anyone so I havn't been paying it much attention. Now and then I get the desire to hack on an RPG and none of the available codebases for graphical RPGs interest me as much as the ones for textual RPGs. So why not hack on a textual RPG? Because it's just so dry without players to consider, and with players to consider you've just gotta be so dedicated.

Then there's my other project. I've always been a fan of Bullfrog's Syndicate. My fan page gets a lot of hits (probably because I give out copies of the game on it). If you've never played Syndicate you probably won't understand the attraction. You'll also think we're all crazy for fooling around with DosBox or old hardware to get the game to actually run and never consider doing the like yourself. As such, you may never experience the game, which I consider a tragedy. That's where FreeSynd comes in. A visitor to my website recommended I take a look at it. The goal of the project is to make a reimplementation of the game using the original game data, and later create new missions/graphics/etc from it. I guess that means one day you will get a chance to play the game. Of course, this begs the question of why you would want to.. all I can suggest is that you or your kids might like to experience the games my generation played when we were young, much like I enjoy playing Pac Man or Space Invaders. If we have to rely on DosBox or old hardware that just might not be possible.

In about 14 hours I get on a plane for 13 hours. I then get to sit around in an airport for another 5 hours and then get on another plane for 6 hours. My entertainment on this trip will consist of a copy of The Confusion by Neal Stephenson and a junky Sony VIAO laptop with 192mb of RAM. Assuming I have access to a power socket (I'm flying in cattle class) I expect to spend more time working on FreeSynd than reading Stephenson but, ya know, flying is such a funny thing, maybe I'll just nag the cabin staff.