Jump to content

Project Darkstar: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
Line 44: Line 44:


==Games That Use Project Darkstar==
==Games That Use Project Darkstar==
* [http://www.campfu.com CampFU]]
* [[Project Wonderland]]
* [[Project Wonderland]]
* [http://www.callofthekings.com/ Call of the Kings]
* [http://www.callofthekings.com/ Call of the Kings]

Revision as of 19:22, 7 May 2009

Project Darkstar is an Open Source MMOG middleware solution written in Java by the Project Darkstar team at Sun Microsystems. It is a research project headed by Sun Microsystems Distinguished Engineer Jim Waldo that was publicly released on August 30th, 2007[1], and "aims to help developers and operators avoid a range of serious, yet typical, problems associated with massive scale online games, virtual worlds, and social networking applications today, including zone overloading, data corruption, and server underutilization."[2]

History

Project Darkstar began as a personal project of Jeff Kesselman in 1999 while he was the Senior Game Integration Engineer at the Total Entertainment Network. In 2000, Mr. Kesselman came to Sun from 15 years in the game industry and joined the Sun JDk performance Tuning Team. In 2004 he was transferred the newly formed Software CTO's Game Technology Group. At that time he brought the third iteration of the project into Sun where it was dubbed the Sun Game Server. (The SGS moniker survives to this day in the package names of the Project Darkstar Server.)

Mr. Kesselman worked on the third version for a year as a solo project in Sun, debuting an early version at the Game Developers' Conference that year. Following the reorganization of the Software CTO's office in 2005, the project was moved to Sun Labs under Sun Labs Director Karl Haberl. Karl incerased the man-power, adding Seth Proctor and Dan Ellard as co-researchers, as well as contractors James Mecguire and Sten Anderson. This team delivered what is now known as the Early Access version, the first working server, for GDC 2005.

Following this, Jim Waldo and his team became interested in the technology and technical lead was handed over to him to pursue. At about the same time, the name Project Darkstar was chosen and the open source community launched.

Mr. Kesselman moved to a more outward directed role as "Chief Instigator" and eventually left Sun in August of 2008 to go back to building games as the Chief Technical Officer of Rebel Monkey Inc. Rebel Monkey's online platform, The Monkey Wrench, was built using Project Darkstar and Mr. Kesselman remains an active member of the Project Darkstar community.

The Project Darkstar Server as it exists today is the fruit of the combined labor and ingenuity of a great many talented and creative engineers, all of whom are to be credited with solving critical problems in its ongoing evolution. Its basic design and goals, however, remain fundamentally the same as originally conceived by Mr. Kesselman in 1999.

Technical Aspects

Overview of a Project Darkstar network.

When a Project Darkstar server implementation is run, it either starts a new network or joins one that is currently running. All networks contain clients, server implementations, a Project Darkstar stack on which the server implementations run, and several meta-service nodes that handle traffic between each node in the server stack. A server implementation is a user created program written with the Project Darkstar API. The clients include all client-side applications and games that are connected to a game server in the network.

Features

Project Darkstar is being developed to support all features vital to a massively multiplayer game, and at the same time be scalable enough to support non-massive multiplayer online games. As such, there are many features that it supports, and many features that are being implemented and integrated into it actively.

Current Feature Set

Planned Feature Set

  • Networked Load Balancing
  • Profiling tools
  • Management tools

API Overview

The API of Project Darkstar is the key component for developers who use the technology. With it, they can develop game servers to communicate correctly with their client technology and have a server up and running that runs on top of the Project Darkstar game stack. The API is written to hide the concurrency of the underlying system that the Project Darkstar stack performs for the developer, so that the program can be written with the illusion that it's single threaded, even though the stack is fully parallel. The main parts of the API include task management, data persistence, and channel communication.

Tasks

Control of information in a Project Darkstar server is generally handled by tasks, although in some special cases they are not necessary. They are used in instances where storage or retrieval of data must be protected from a server crash or shutdown, as tasks are saved and remembered when they are run, and can be respawned when the server is restarted in the same state as they were in before the crash. This is useful, for instance, when updating character information. If something goes wrong with the server internally, the character information is persisted and on a server restart the character information will be restored from the last state it was in before the crash.

Managed Objects

The Berkeley DB used by Project Darkstar stores all data that is to be persisted. Anything that is to be stored in the database must also be serializable, as the database is programmed to store binary information. A managed object can be anything from player data (i.e. position, equipment) to internal server data and control logic (i.e. scalable data structure, tasks). The usefulness of managed objects is seen in the instance of a server failure. Since managed objects are updated transactionally, any corrupted data is discarded on the server restart and the managed object is rolled back to its last working state.

Channels

Channels give developers an easy way of communicating with many clients. The way channels work is by giving clients a way of subscribing to channels such that they can send messages to the channel and receive messages from the channel. When a message is sent to the channel from a client or the server, the message is multicast to all clients who are subscribed to it. It is an abstraction built on top of the communications layer to assist in the development of easy and extensible communication between many clients and the server.

Games That Use Project Darkstar

References