Features

The Philosophy of WorldForge
by Bryce Harrington

Ever since the earliest days of computers, there has been a dream of creating immersive, persistent roleplaying worlds that are free to play, and free to change - and graphics rich. Many, many people have tried to achieve these goals, and many have conquered some of them, but as of today, no one has ever achieved all of these goals. WorldForge's objective is no less than to be the first to completely satisfy all six of these needs.

These goals are not trivial to achieve. The MUD community succeeded in meeting all of the goals save the last; graphical MUDs have been notoriously difficult to bring into the world, even though many good people have tried. The problem that has befouled this community is the room-based architecture of most MUDs. To represent items graphically, the knowledge of how items are spaced geographically is absolutely necessary, and this really cannot be done without vastly re-writing the core game engine.

There have likely been thousands of attempts at re-writing the MUD game engine to support graphical play. As one would imagine, this is no small feat, and indeed it has proved to be beyond the means of most amatuer game developers. Commercial groups have been more successful at creating graphical online game engines; indeed, their efforts have been so successful that they've put a good sized dent into the once-titanic MUD community. These games range from the literal "MUD clone with graphics" approach of Ultima Online, to the more innovative approaches of iD, Blizzard, and other companies. Most of these games are not free to change, or can only be changed in a limited fashion. Few are truly free to play (most require the purchase of a game license at the very least). And most are not persistent; they are still trapped in the single-session context style of the old arcade games.

WorldForge is shooting for not only meeting all of the above goals, but far exceeding them. Since MUDs have so successfully met most of the objectives, we look to them for inspiration; while no source code is shared with any MUDs, WorldForge's spiritual heritage definitely lies there. WorldForge's server software will be free and open, thus allowing anyone with a permanent internet connection to administer a game world. Game persistence will be achieved in much the same way that MUDs achieve persistence: automating the bulk of the administrative duties, and enlisting the aid of a few gamers to be the game "operators". We hope to push on a little further, and make possible distribution of the game server across multiple machines, to provide further admin-automation capabilities, and to make it possible to have different "levels" of administrators, with differing levels of responsibility and capability.

In allowing anyone to run a copy of the game, we will force WorldForge to always be free to play. While we are not going to put a restrictive license on the game preventing pay-to-play use of the game engine, we don't expect it to be very profitable, when any John Gamer can set up and run their very own copy of the server. This freedom is very important to us; this permits those of us who are rabid roleplayers to create worlds in which people are required to roleplay, "or else", while allows others to create more socially-oriented venues to hang out with friends, and only tangentially be part of a game. And of course, it will provide a means for those gamers intent on "kill, Kill, KILL!" to do so as they wish.

By its very nature WorldForge will be extremely open to customization, on several levels. First, like with all OSS software, the source code will be openly distributed and users will be encouraged to dive into the code, tweaking it for their own purposes. Ease of modification is an actual design requirement we are placing on ourselves; the code we believe people will wish to modify the most will be kept modular, external from the heart of the server, almost enticing people to dig in and customize.

For example, WorldForge is not dependent on any one particular combat system. It knows the basics of "attack", "defend", and "resist", and knows the types of effects each of these can have on a character, but the exact mechanics are left modularized, allowing a rules developer to fold in their own notions of how combat should work all in one place, without needing to wade through the complicated server internals.

But we imagine that few people want to spend much time hacking code, so intend to design it to be externally configurable via config files, scripts, and administration tools. Indeed, it is our goal that, like in many of the more advanced MUDs, 90% of game customization and administration can be performed while the game is still running.

Thirdly, we wish to permit player-level game world customization. This is a feature found in most advanced MUDs, as well as a few commercial games. Players are allowed to "build" the game world themselves, house-by-house, wall-by-wall, and city-by-city. We would like to permit gamers to even invent new types of objects, as well (a feature of NetHack which we all admire.)

A fourth way in which WorldForge will be open to customization is via player-developed scripts. This is one of the consequences of a design decision made earlier on, that in the design of the server, we would ignore all differences between a human-run character, and a computer- run character. (The implications of this decision have been widespread and quite exciting and are beyond the scope of this article!) Many of us find enjoyment out of designing scripts and automating characters; others wish to write 'macros' to streamline the annoying chores; still others want to write slick tactical programs to give them a distinct edge in combat. Rather than taking the fun out of the game, scripting will instead take the drudgery out of the game, making it even more enjoyable. At the extreme, a character that is fully scripted is akin to a 'mobile', only better because it has a human watching over it, enhancing it, and in effect doing the AI development for the game, for free.

Finally, the whole notion of customization is taken to its logical extreme: the entire game system: client / protocol / server, is being abstracted to allow "mix and match" of clients and servers, even going so far as to using the architecture for a completely different type of game. To do this, we are developing a standard, generic protocol called 'Atlas' that will permit independently developed clients and servers to establish communication, even though they have never 'met' before. Initially, this decision was made to permit us to have several clients under development: 2D iso, 3D first person, and text-based. But a protocol that abstracts clients can also be extended to abstract servers, and this has proved to be a major boon: Several independent game development projects have joined the WorldForge family, hoping to use the Atlas protocol so that they can focus on server development, and take advantage of the excellent client applications under development.

With all of these lofty goals, one could justifiably ask, "What is our current status?" Our "crown jewels" is our client application, Uclient; screenshots, as well as code and binaries, are available from the website. This program relies on (and in turn supports) the free, open source, cross platform SDL game library. We have been amazed at this library's portability; uclient (developed entirely under Linux), was ported to Windows without changing a single line of code. An effort is under way to port uclient to Macintosh, which is a bit more difficult only because SDL itself has not been fully ported to that platform.

Several experimental and prototype servers have been developed, and are available via our CVS repository. There are essentially three lineages of servers represented, which has caused some confusion among new developers. Our first major server design efforts focused on Pangea and Object Workhorse. Both were experimental designs, taking two different approaches to solving the problem. Object Workhorse focused primarily on how objects interacted in the game world, and was designed to make maximum use of Object Oriented Programming techniques. Pangea was taking a more top-down approach to solving the entire problem (optimally) in one fell swoop.

Eventually, it became clear that neither Pangea nor Object Workhorse would result in a usable server any time soon. Pangea, because of its design sophistication, and Object Workhorse because of its narrow focus. So an effort was undertaken to produce a rapid prototype, called QuADAS (for Quick and Dirty WorldForge Server). QuADAS threw out the design manuals and shot for getting a truly inelegant, sub-optimal, but working server off the ground. Implemented in Java, we achieved the goal in a single month. Uclient was adapted to speak the kludgy language invented for QuADAS network interaction, and for the first time we had a glimmer of our eventual goal. Unfortunately, QuADAS suffered from two major hindrances: First, it was in Java (which few people wanted to learn, and few people wanted to install on their computer); and second, that its design was crufty.

To solve all of the problems we had been running into, we took advantage of the distributed nature of our project. John Sheets put Pangea up on cinder blocks and has begun re-engineering the design, under the new name Gondwana. Mike Day and Arnan took charge of porting QuADAS to C++, renaming it qserver. I have been focusing on developing a new design based on what we had learned from QuADAS, and incorporating much of the Object Workhorse model; this effort is called STAGE, or Stage Two WorldForge Game Engine. All of these efforts are active and progressing successfully. Qserver is providing us with a server implementation now, that can be used for demonstrations, and as a code-quarry for us to incorporate into new server development efforts. STAGE will be our next major stepping stone, and will hopefully give us a much more elegant, useful server; Gondwana provides an experimental sandbox, to investigate innovative concepts and hopefully provide us with an efficient and robust production server down the road.

As stated in the opening of this article, the key to success is graphics, without which the project could not succeed. Yet not only have we succeeded at garnering nice graphics, it is the very sparkle of our crown jewels. We have nearly as many active graphic artists as active programmers (a rare position for an open source project to be in!) Our media archive grew to such volume that we had to break it out of the main CVS archive, and set up its own tree on the CVS server. In browsing the website, one can get a hint of the good work stored away in CVS; terrain tiles, vegetation, buildings, character artwork, animations, and beautiful rendered objects have been created and provide a stunningly solid foundation for future graphics development.

The next questions the reader would ask, after hearing our good progress, could be, "So when will we be able to play? Or, when will it be ready for play testing?" Both excellent questions, and of course impossible to answer with any certainty, given that this project relies entirely on the labor of volunteers. We hope to have a qserver/uclient based demo system assembled within a few weeks; this will not be playable, in any rational sense of the word, but will be an interesting thing to tinker with. STAGE will be the next major effort; we think we can complete the bulk of the design within the next month, and begin implementation in May. Estimating that it will take a few months of concerted, distributed coding effort, we might have something to play test later this summer. Or maybe not; it all hinges on how many volunteers we get, and how much time they can dedicate. (Hint, hint!)

We have a great deal of faith in our chances for success. The project is still going strong, six months since it started, and we have much to show for our efforts. As we peer down the road ahead of us, we realize that it is long indeed, but with each passing step another soul joins our column, and with each new ally our pace grows.

Inside the Head of Bryce Harrington
by Shane Wickson

I am going to start this by pointing out that the goal of the WorldForge Project is not just to provide a framework for a gaming system, but to build a community around that framework and provide a rich role-playing environment. In order to accomplish that goal, we not only have to plan and code, but we have to get to know each other, something we bit-pushers are sometimes not very good at. Getting to know a bit about each other was what I had in mind when I took on the job of interviewing Bryce, and it is my hope that after you finish reading this you will feel like you know a bit more about Bryce.

First, lets get the technical stuff out of the way. Bryce's full interview is available online at http://www.worldforge.org/website/news/newsletters/irclogs/bryce_interview.html Read it to get a bit more insight into what that man is like. For the shorter version, read on.

Bryce grew up in Oregon and now resides in Hermosa Beach, California. He's gonna be 28 soon, is a rocket scientist, and is single (hear that, ladies?). He possesses really nice academic credentials, having earned his BS from USC and his MS from Caltech. Bryce the elected to pursue riches and fame outside of the academic community instead of shooting for his Ph.D. After a few 'lost years' in which little is know about his life, Bryce resurfaced as a rocket scientist and member of the WorldForge Project. Like most of us code jockeys, he started with computers at a very early age. His uncle brought over an Apple computer chock full of games and Bryce got to play with it for a week or so. After that, he was hooked and began diligently saving up for his own computer. Mustering all of his 3rd grade will-power, he managed to horde up $5. Thankfully, his father came to the rescue and bought the family a TRS-80. Quickly realizing their mistake, the family returned that and purchased a VIC20, and another nerd was born. :)

Bryce's credentials in the OpenSource/Gaming Community are really impressive as well. He was not only one of the original Civilization FAQ contributors, but he also helped maintain the Civilization II Wishlist, which eventually made it into the hands of Microprose. He's worked on numerous other gaming projects (which crashed and burned for various reasons), and he's actually submitted code to Mozilla.

On the role-playing side, Bryce began playing games in late high school. Not liking AD&D, he tried several of the other options available at the time: CoC, GURPS, Traveller, Cyberpunk, Shadowrun, to name a few. Evidently, Bryce is a hard man to please, because he wasn't happy with those games either. So, he buckled down and wrote Circe, his very own RPG, and has been playing and refining it ever since.

On the family side, the coolest thing I found out was that Bryce has a sister who is an actress. How cool is that? Or is it that I'm easily impressed by such things since I'm only a simple computer guy from Texas? Well, I think its cool, so its going in the write-up. If you don't like it, volunteer to do next months interview.

OK, so now you have the background. Whoopee. We all know that's not what interests you. If so, I could have gotten away with a two minute bio and I would be working on work stuff right now (like I should be). What is Bryce like as a person? Who is "the man behind the mask"? :)

First off, Bryce is a smartass. It made the interview rather fun for myself, because I'm kind of a smartass as well. I still smile at some of the antics that went on during the interview, and I'd strongly suggest wasting some of your time on reading it. Bryce also possesses a good sense of humor: he didn't miss a Monty Python reference and answered most of my off-topic questions in a rather imaginative fashion.

Bryce's admitted vice was Diet Coke. With no drinking, drugs, fast cars or fast women for me to write about, I had to look elsewhere for material. Actually pseudo-journalism instead of tabloid style trash. Thanks, Bryce. Everything else I managed to find out about Bryce points to a strong individualist. He likes new music. He roots for the underdog, but doesn't seem to follow football (a very foreign concept for us Texans). A perfect illustration of this came out in the following question:

If you were to be any superhero, which one would it be? huh. Green Lantern. Why is that? he could make cool stuff with that ring, and probably no one else would pick him. I like being unique.

All that, and he used to raise gerbils! Gerbils. Go figure. The final thing that I was curious about was his attitude towards the project: what made it different from any other project, and what he liked about WorldForge. To Bryce, this projects biggest asset (aside from Uta and the rest of the incredibly talented artists) is that it is comprised of really mature, dedicated people.Later in the conversation, we had to qualify 'mature', but I think his assessment is still correct. To sum up, Bryce is a fun, hardworking, and intelligent individual. If I had a sister, I would probably set him up with her. I think we can allow him to stay with the project a little while longer. :)