Created by Sun Microsystems, Project Darkstar is an easy to use, open source software infrastructure for the development and execution of horizontally scalable online games, virtual worlds, and social networking applications. It is designed to help developers and operators avoid a range of serious, yet typical, problems associated with these applications today, including zone overloading, data corruption, and server under-utilization. In addition, Project Darkstar will enable developers to support new dimensions of play such as evolvable virtual worlds and very large scale battlefields. Project Darkstar is freely available to all and is advanced by the Project Darkstar Community as a Sun-led open source development project.Project Darkstar offers a dramatically different online game architecture that features a flexible and efficient scaling model, a robust data model, and a simple programming model. These key innovations differentiate Project Darkstar most significantly from alternatives: 1) Project Darkstar fundamentally changes the scaling model for online games. Traditionally, an online game's scaling architecture is inextricably linked to its conceptual design, inhibiting the flexibility of both. In this traditional model, game designers divide the game into conceptual zones of game play, each of which is then coded to run independently from the others. Unfortunately, the isolation of these zones means that players in different zones cannot generally interact with one another. Moreover, all play within a zone must be processed by a fixed set of pre-allocated resources, as determined at design time by the developer, regardless of the level of activity occurring in the zone. This means that resources will be underutilized in zones where activity levels are lower than the game designer expected. On the flip side, the processing load in a very active zone can, and too often does, exceed the processing capacity of its allocated resources, resulting in a zone closure, outright zone failure, or even the creation of entirely new game shards. The Project Darkstar vision describes a very different scaling approach. In this architectural model, an online game server's work is broken into small units, each corresponding to one action in a game, and each of which can be processed anywhere on the server-side network. Actions are grouped, using an affinity scheme that determines which actions should be executed together on the same machine, because, for example, they are working on the same data. Grouped actions are then distributed across multiple servers, and, on each server, individual actions are further distributed across all available threads for parallel execution. Because each action can be executed anywhere on the server-side network, and because Darkstar's affinity groups change to reflect changing interaction patterns during live gameplay, dynamic scaling needs can be easily accommodated: workloads can always be balanced across any number of servers, and scaling up or down becomes a simple matter of adding or removing server machines. With this design, the hard link between zones and resources is eliminated; developers can focus on game design and allow the Project Darkstar infrastructure to optimize resource allocation. The Project Darkstar architecture enhances scalability of the game, enables players from all play areas to interact with each other, and more evenly balances load to achieve higher server utilization. 2) Data integrity is intrinsically assured by the Project Darkstar architecture. Project Darkstar maintains game state in a globally shared and persistent datastore. The datastore is updated with the results of each action during gameplay; this minimizes data loss in the event of any system failure. In addition, all data access requests are processed transactionally to insure that game state remains consistent in the face of simultaneous, conflicting player actions or system failures. Cheats are more easily prevented because all shared data are maintained on the server, rather than on players' machines. 3) Project Darkstar presents a simple server-side programming model to game developers. Project Darkstar's event-driven programming model features easy-to-use services for managing communications, tasks, and data access. These services shield developers from the complexities of multi-threaded and distributed systems programming -- including task scheduling, threading, and distribution, as well as contention management, load balancing, transaction management, and more -- all of which are handled automatically by the Project Darkstar infrastructure.
|