The Project Darkstar 0.9 FAQ

Here we go, updated FAQ time:

What is Project Darkstar?

Project Darkstar is the game industry’s first open source, enterprise grade, highly scalable, online game server.

What is in the Project Darkstar SDK?

The SDK contains documentation, examples, API and a development server. In short, everything you need to start writing Darkstar based applications.

Please note that the development server (also called “the SDK server”) is not intended for production use.

A full production level SGS back-end takes a machine room with a number of hosts and sophisticated interconnect. The intent of the SDK server is to allow the game developer to write and prove his or her SGS application code without needing such a machine room. The SDK server will run on a single host, but does not support many of the SGS production features such as multi-node operation and production level administration.

Who uses Project Darkstar?
NCSoft has been prototyping a new game using the SGS

A great many smaller developers are taking advantage of the Darkstar opportunity right now as well. Project Darkstar fundamentally changes the economics of massively multi-player online game development to open it up for small developers as well as large ones.

Isn’t this just another communication framework?

Most emphatically not. Communication is the smallest (and easiest) part of what Project Darkstar does.

An AAA single player title today takes a minimum of $10M to produce. A AAA MMO takes a minimum of $30M to produce. And the clients are generally not as sophisticated or complicated as the single player title.

SO… where does the money go? The answer is networking AND server development. People who haven’t done the server side often under-estimate how hard it is to build scalable, persistent server systems. Darkstar makes this faster, simpler, and much much better then what is produced today. Darkstar based servers have the following properties:

  • Zoneless and Shardless You can have zones and shards if you want to for game design reasons, but they are no longer required for scaling.
  • Fail-over capable. When a server fails one of the others takes over, invisibly to the user. This allows a game to be up 99.999% of the time.
  • Completely transparently persistent. Everything in the game world is automatically persistent. This frees the developer from database work and allows for things like true evolving changing worlds.
  • Dupe bug and rollback proof. Dupe bugs are breaks in referential integrity. Darkstar’s transactional nature makes this impossible. Rollbacks occur from server failure before data has been persisted. Darkstar continuously streams completed transactions out to the long-term storage
  • Disaster proof. Because Darkstar is based on an integrated (and custom) enterprise level transactional data storage system, the entire back-end can go down suddenly and without earning and still be brought back online later with a sane world state that is historically accurate to within a few seconds of the accident.

One very well known and respected member of the MMO development community has referred to Darkstar as “RAD for MMO servers.”

So is Darkstar an MMO engine?

No. Darkstar simplifies and enables the server side of any game that has to scale to massive number of user’s, including MMOs, but it is not an MMO (or any other kind of game) engine. A game engine is a complete game minus the art path and some high level game logic. MMO engines can be built on top of Darkstar and gainall of Darkstar’s advantages.

What would I need to add to Darkstar to make an MMO?
Basically, the things an MMO engine provides, plus art and game logic. These include:

  • A client technology.
  • An art development path and tools
  • Game-specific client and server logic. The “game rules” for your game.

What are some client technologies?
There are many many options available today, here are just a few:

Open Source Projects

Inexpensive commercial solutions

Full commercial products

Don’t assume that the more expensive it is, the “better” it looks. Modern open source engines are doing just about everything commercial engines do. The big differences are in the supplied tools and support.

Are there any client technologies that are already Darkstar integrated?
We are working with a number of client vendors now to create “out of the box experiences” for
games that use Darkstar for servers.

Are there any complete MMO engines based on Darkstar?
Project wonderland (lg3d-wonderland.dev.java.net) is building on top of Darkstar right now. We are in discussions with a number of other important MMO engine providers to move their tools and client technologies to a Darkstar based server-side.

Does Darkstar being GPLd mean I have to GPL my game code?
No. It is our best belief that using Darkstar in no way obligates you to release your own code as GPL as long as it is just code that runs as a Darkstar application. If you make changes to the Darkstar codebase itself, then yes you are obligated to share those changes with the community.

Is Darkstar only for Java programmers?
No.

On the client side we are client technology agnostic. The team has put out a J2SE API and intends to release both a C/C++ and J2ME API as well. As the source is being opened up, we hope to see the client API ported to many other technologies by the community

On the server side, Darkstar applications must be delivered as Java Byte Code. This is necessary to enable the container way in which we automate so much of the execution for the developer. The Darkstar team only directly supports server application development in Java, but the community is free to use any compiler that generates the necessary Java byte code.

Here is a partial list of other languages that compile down to Java Byte Code.

How do I write a custom authenticator/write a custom service/write a custom transport protocol/return more info from authentication/etc…

This will all be documented in the SGS Extension Manual which will be released with the open source release.

In the mean time, see this thread:

http://www.java-gaming.org/forums/index.php?topic=16251.0

How do I set up multi-node with the SDK release

You can’t. The SDK release is intended to be used for development and is an all-in-one single stack system.
The full multi-node stack is still in development. We intend to release it as open source as well when it is ready,

Be advised though that a true multi-node SGS back-end requires more then just throwing a few white boxes and a link-sys router from CompUSA together, It is a serious enterprise software stack designed for serious enterprise hardware. To operate properly it requires many systems and significantly more back-end infrastructure then you are likely to have outside of an enterprise class machine room.

Thus it is not likely to ever be appropriate to run in an early stage development environment.

How do I get access to the BerkeleyDB APIs from inside the SGS

You can’t and shouldn’t. The use of BerkeleyDB in the 0.9 version of the SGS SDK server is an implementation detail and subject to change at any time.

If you need RDBMS access for your game the right way to do this is to write a plug-in Manager that can access your own RDBMS.