Project Darkstar
Encyclopedia
Project Darkstar was an open source
Open source
The term open source describes practices in production and development that promote access to the end product's source materials. Some consider open source a philosophy, others consider it a pragmatic methodology...

 MMOG
Massively multiplayer online game
A massively multiplayer online game is a multiplayer video game which is capable of supporting hundreds or thousands of players simultaneously. By necessity, they are played on the Internet, and usually feature at least one persistent world. They are, however, not necessarily games played on...

 middleware solution written in Java
Java (programming language)
Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities...

 by the Project Darkstar team at Sun Microsystems
Sun Microsystems
Sun Microsystems, Inc. was a company that sold :computers, computer components, :computer software, and :information technology services. Sun was founded on February 24, 1982...

. It was a research project headed by Sun Microsystems engineer Jim Waldo that was publicly released on August 30, 2007, 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." February 2, 2010, Oracle shut down the project, and a community fork has been made called RedDwarf Server
RedDwarf Server
RedDwarf Server is an open source middleware solution for developing the server-side of massively multiplayer online games. It is the official community fork of Project Darkstar, an open-source project supported and managed by Sun Microsystems. Upon Oracle's acquisition of Sun, support for Project...

.

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 2004, Sun's Game Technology Group was formed, and at that time Mr. Kesslman 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 increased 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.

On February 2, 2010, in the wake of the purchase of Sun by Oracle, Jim Waldo posted on the "Project Announcement" forum that "Sun Labs engineering effort is no longer being applied to Darkstar development". A number of members of the Sun Labs team and a number of members of the Darkstar community have gone on to work on the RedDwarf Server
RedDwarf Server
RedDwarf Server is an open source middleware solution for developing the server-side of massively multiplayer online games. It is the official community fork of Project Darkstar, an open-source project supported and managed by Sun Microsystems. Upon Oracle's acquisition of Sun, support for Project...

 as a successor to Darkstar.

Technical Aspects

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
Client (computing)
A client is an application or system that accesses a service made available by a server. The server is often on another computer system, in which case the client accesses the service by way of a network....

, server
Game server
A game server is a remotely or locally run server used by game clients to play multiplayer video games. Most video games played over the Internet operate via a connection to a game server...

 implementations, a Project Darkstar stack on which the server implementations run, and several meta-service
Web service
A Web service is a method of communication between two electronic devices over the web.The W3C defines a "Web service" as "a software system designed to support interoperable machine-to-machine interaction over a network". It has an interface described in a machine-processable format...

 nodes that handle traffic between each node in the server stack. A server implementation is a user created program
Computer program
A computer program is a sequence of instructions written to perform a specified task with a computer. A computer requires programs to function, typically executing the program's instructions in a central processor. The program has an executable form that the computer can use directly to execute...

 written with the Project Darkstar API
Application programming interface
An application programming interface is a source code based specification intended to be used as an interface by software components to communicate with each other...

. 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 game
Multiplayer online game
A Multiplayer Online Game is a multiplayer video game which can be played via a game server over the internet, with other players around the world...

s. As such, there are many features that it supports, and many features that are being implemented and integrated into it actively.

Current Feature Set

  • CPU
    Central processing unit
    The central processing unit is the portion of a computer system that carries out the instructions of a computer program, to perform the basic arithmetical, logical, and input/output operations of the system. The CPU plays a role somewhat analogous to the brain in the computer. The term has been in...

     load balancing
    Load balancing (computing)
    Load balancing is a computer networking methodology to distribute workload across multiple computers or a computer cluster, network links, central processing units, disk drives, or other resources, to achieve optimal resource utilization, maximize throughput, minimize response time, and avoid...

  • Meta-services
  • Persistent data storage using Berkeley DB
    Berkeley DB
    Berkeley DB is a computer software library that provides a high-performance embedded database for key/value data. Berkeley DB is a programmatic software library written in C with API bindings for C++, PHP, Java, Perl, Python, Ruby, Tcl, Smalltalk, and most other programming languages...

  • Transactions
    Database transaction
    A transaction comprises a unit of work performed within a database management system against a database, and treated in a coherent and reliable way independent of other transactions...

  • Duping
    Duping
    Duping refers to the practice of exploiting a bug in a video game to illegitimately create duplicates of unique items or currency in a persistent online game, such as an MMOG. Duping can vastly destabilize a virtual economy or even the gameplay itself, depending on the item duplicated and the rate...

     prevention
  • Channel
    Channel (communications)
    In telecommunications and computer networking, a communication channel, or channel, refers either to a physical transmission medium such as a wire, or to a logical connection over a multiplexed medium such as a radio channel...

     communication
  • Scalable data structures
  • Pluggable protocols
  • Administrative tools

Planned Feature Set

  • Networked load balancing
  • Profiling
    Performance analysis
    In software engineering, profiling is a form of dynamic program analysis that measures, for example, the usage of memory, the usage of particular instructions, or frequency and duration of function calls...

     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 is single threaded, even though the stack is fully parallel. The main parts of the API include task
Task (computers)
A task is an execution path through address space. In other words, a set of program instructions that are loaded in memory. The address registers have been loaded with the initial address of the program. At the next clock cycle, the CPU will start execution, in accord with the program. The sense is...

 management, data persistence
Persistence (computer science)
Persistence in computer science refers to the characteristic of state that outlives the process that created it. Without this capability, state would only exist in RAM, and would be lost when this RAM loses power, such as a computer shutdown....

, 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
Crash (computing)
A crash in computing is a condition where a computer or a program, either an application or part of the operating system, ceases to function properly, often exiting after encountering errors. Often the offending program may appear to freeze or hang until a crash reporting service documents...

 or shutdown
Shutdown (computing)
To shut down or power off a computer is to remove power from a computer's main components in a controlled way. After a computer is shut down, main components such as CPUs, RAM modules and hard disk drives are powered down, although some internal components, such as an internal clock, may retain...

, 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
Database
A database is an organized collection of data for one or more purposes, usually in digital form. The data are typically organized to model relevant aspects of reality , in a way that supports processes requiring this information...

 must also be serializable
Serialization
In computer science, in the context of data storage and transmission, serialization is the process of converting a data structure or object state into a format that can be stored and "resurrected" later in the same or another computer environment...

, as the database
Database
A database is an organized collection of data for one or more purposes, usually in digital form. The data are typically organized to model relevant aspects of reality , in a way that supports processes requiring this information...

 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
Reset (Computing)
In a computer or data transmission system, to reset means to clear any pending errors or events and bring a system to normal condition or initial state usually in a controlled manner. It is usually done in response to an error condition when it is impossible or undesirable for a processing activity...

 and the managed object is rolled back
Rollback (data management)
In database technologies, a rollback is an operation which returns the database to some previous state. Rollbacks are important for database integrity, because they mean that the database can be restored to a clean copy even after erroneous operations are performed...

 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
Multicast
In computer networking, multicast is the delivery of a message or information to a group of destination computers simultaneously in a single transmission from the source creating copies automatically in other network elements, such as routers, only when the topology of the network requires...

 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.

Example Projects Powered by Project Darkstar

  • Open Wonderland - a 100% Java open source toolkit for creating collaborative 3D virtual worlds
The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK