Project Darkstar
Original author(s) | Sun Microsystems |
---|---|
Initial release | August 30, 2007 |
Stable release | 0.9.11
/ October 29, 2009 |
Written in | Java |
Platform | Java |
Type | MMOG middleware |
License | GPLv2, BSD |
Website | "Project Darkstar" at the Wayback Machine (archived 2010-02-08) |
Project Darkstar is a discontinued open source framework for MMOG development, written in Java and deployed as game engine middleware. Project Darkstar began as a personal project of Jeff Kesselman in 1999, later becoming a research project at Sun Microsystems,[1] aimed 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][3]
History
[edit]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 by Sun Microsystems' Chief Gaming Officer, Chris Melissinos,[4] and is at that time that Mr. Kesselman brought the third iteration of the project into the group where it was dubbed the "Sun Game Server" (SGS). (The initialism survived in the package names of the Project Darkstar Server until its demise.)
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 (GDC) that year. Following a reorganization of the Software CTO's office in 2005, Mr. Melissinos and Mr. Kesselman moved the project to Sun Labs under Sun Labs Director Karl Haberl. Karl increased the manpower, adding Seth Proctor and Dan Ellard as co-researchers, as well as contractors James Megquier and Sten Anderson. This team delivered what is now known as the Early Access version, the first working server, for GDC 2005.
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 worked for a time on the RedDwarf Server as a successor to Darkstar.[5]
Features
[edit]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.
Project Darkstar was designed 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.[6] As such, there are many features that it supported, with many features implemented and integrated into it actively.[clarification needed]
- CPU load balancing
- Meta-services
- Persistent data storage using Berkeley DB
- Transactions
- Duping prevention
- Channel communication
- Scalable data structures
- Pluggable protocols
- Administrative tools[citation needed]
The API of Project Darkstar was the key component for developers who used the technology. With it, they could 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 the 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 management, data persistence, and channel communication.[7]
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.[8] 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.[citation needed]
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.[citation needed]
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.[citation needed]
Notable uses
[edit]- Open Wonderland - a 100% Java open source toolkit for creating collaborative 3D virtual worlds [9][10]
Reception
[edit]Some authors have suggested that the management of Central Object Store and Distributed Random Access might not be realistically possible in a highly interactive game environment.[11]
RedDwarf
[edit]RedDwarf Server was an open-source middleware solution for developing the server side of massively multiplayer online games. It was the official community fork of Project Darkstar. Once Oracle discontinued support for the project, the community rebranded the latest codebase of Project Darkstar's repositories and released it as RedDwarf Server.[12] RedDwarf inherited the Project Darkstar licensing scheme, with the RedDwarf Server distributed under GPLv2 and the server APIs being made available under the GNU General Public License (GPL) with the classpath exception. The Java and C client APIs—available as part of the RedDwarf project—were distributed under a BSD license.[13]
Clients can communicate with the server using a Java or C API. The community also released client APIs for additional platforms including C#, Python, Objective-C, and ActionScript.[14] RedDwarf Server uses a built-in protocol for network communications.[15]
References
[edit]- ^ Stephen Shankland (2006). "Sun's Project Darkstar aims for gaming services". CNET. Retrieved 2012-02-27.
- ^ Brent Rabowsky; Radiosity Press (8 January 2010). Interactive Entertainment: A Videogame Industry Guide. gameindustrybook. p. 55. ISBN 978-0-9842984-1-9. Retrieved 27 February 2012.
- ^ Tim Blackman (2006). "Scalable Data Storage in Project Darkstar" (PDF). Oracle.com. Retrieved 2012-02-27.[permanent dead link ]
- ^ Editor, Rob Fahey Contributing (2003-06-05). "Sun launches major initiative with Game Technologies Group". GamesIndustry.biz. Retrieved 2024-09-16.
{{cite web}}
:|last=
has generic name (help) - ^ "RedDwarf Server". 2010-02-17. Archived from the original on 2010-02-17. Retrieved 2020-07-17.
- ^ Andrew Davison (30 April 2007). Pro Java 6 3D Game Development: Java 3D, JOGL, JInput and JOAL APIs. Springer. p. 10. ISBN 978-1-59059-817-7. Retrieved 27 February 2012.
- ^ Diomidis Spinellis; Georgios Gousios (22 January 2009). Beautiful architecture. O'Reilly Media, Inc. p. 52. ISBN 978-0-596-51798-4. Retrieved 27 February 2012.
- ^ Vaclav Snasel; Jan Platos; Eyas El-Qawasmeh (20 August 2011). Digital Information Processing and Communications: International Conference, ICDIPC 2011, Ostrava, Czech Republic, July 7–9, 2011. Proceedings. Springer. p. 219. ISBN 978-3-642-22388-4. Retrieved 27 February 2012.
- ^ Joseph Fong; Reggie Kwan; Fu Lee Wang (2008). Hybrid Learning and Education: First International Conference, Ichl 2008 Hong Kong, China, August 13–15, 2008 Proceedings. Springer. p. 57. ISBN 978-3-540-85169-1. Retrieved 27 February 2012.
- ^ Youngkyun Baek (1 April 2010). Gaming for classroom-based learning: digital role playing as a motivator of study. Idea Group Inc (IGI). p. 272. ISBN 978-1-61520-713-8. Retrieved 27 February 2012.
- ^ Hamido Fujita; Imran Zualkernan (15 October 2008). New trends in software methodologies, tools and techniques: proceedings of the seventh SoMeT_08. IOS Press. p. 359. ISBN 978-1-58603-916-5. Retrieved 27 February 2012.
- ^ "Reddwarfserver | Take a Good Book -".
- ^ "Reddwarfserver | Take a Good Book -".
- ^ "RedDwarf". 23 April 2013.
- ^ https://svn.java.net/svn/sgs-server~svn/branches/sgs-server-0.9.10/sgs-server/src/main/resources/com/sun/sgs/impl/kernel/doc-files/config-properties.html