CS 295-1 Project Introduction:
Borealis Game Anjali Jhingran, Redha Elminyawi, Peter Sibley, and Yanif Ahmad
Recently in the database, networking and sensor network communities researchers have developed the notion of a stream management system[1,2,3]. In these systems, there is a continuous flow of data, say from stock tickers, and a collection of relatively static queries that operate on incoming data, e.g. "notify me when MSFT exceeds $200 a share", these queries remain resident for long durations. Researchers have extended these systems, to a distributed setting[4,5], in which there are networks of computers and sensors each node running a portion of a query.Although some benchmarks and applications have been proposed(e.g. Linear Road)[6,7], the focus in the research has not been on application development;most proposed applications are quite simple. We propose that a massively multi-player online real time role-playing game (MMORPG) or real time strategy game is an reasonably complex application to write using the tools provided by a streaming database. MMORPG's require information about players' locations in the virtual world and their status. The large amount of data and their networked nature makes them an ideal test application. Current MMORPG's are implemented using a client-server model and partition the game world into segments or use multiple disjoint copies of worlds to do load sharing. For this project we will port an existing game to run using the operators provided by Borealis[8], a distributed stream processing engine, and potentially add new primitives. The larger question we believe this project will address is: Are the streaming database operators and model sufficient for writing a general network and data intensive application?
Project Goals:
- Add dynamic box loading functionality to Borealis
- Add basic math functionality to Borealis expression language
- Convert an existing open source MMORPG to run on a Borealis Query network
Project Time line:
- 10/22 websites/proposal
- 11/19 progress report
- 12/08 mini-workshop
- 12/10 final report
Progress 11/19/04:
After surveying the open source games, we decided to use at a simpler first person shooter, Cube[9] as our basis. This engine implements, in 8K lines of C++, a basic multi-player game FPS with standard (not incredibly optimized) rendering engine. Our original goal was to use a MMORPG but we could not find reasonable mature open source code. We are still working on converting the client server communication to Borealis streams. Currently the game uses enet for its networking.In the main loop of the game , at the start the client processes any messages from the server then updates its local world information. At the end of the main loop the client sends the server an update. The packets are of the form:
The map is used by the client to indicate that the client wants to change the map. Position and Velocity are 3-vectors. We are writing up a Borealis XML schema for a single stream that will contain tuples of the same form as these packets, and modifying the cube source code to send and receive these tuples. After this we will work on moving computation to the Borealis server. Map mutation, occlusion culling were two items we though could be moved onto the Borealis network.
- position
- yaw
- pitch
- roll
- velocity
- items (client accessories)
- player-name
- team
- message
- map
Report
Ref.:
[1] Daniel Abadi, Don Carney, Ugur Cetintemel, Mitch Cherniack, Christian Convey, Sangdon Lee, Michael Stonebraker, Nesime Tatbul, and Stan Zdonik, Aurora: A New Model and Architecture for Data Stream Management, VLDB Journal, Vol. 12, No. 2, August, 2003
[2] The STREAM Group. STREAM: The Stanford Stream Data Manager IEEE Data Engineering Bulletin, Vol. 26 No. 1, March 2003
[3] Sirish Chandrasekaran, Owen Cooper, Amol Deshpande, Michael J. Franklin, Joseph M. Hellerstein, Wei Hong, Sailesh Krishnamurthy, Samuel R. Madden, Vijayshankar Raman, Fred Reiss, and Mehul A. Shah. TelegraphCQ: Continuous Dataflow Processing for an Uncertain World. To appear, CIDR 2003.
[4] Mitch Cherniack, Hari Balakrishnan, Don Carney, Ugur Cetintemel, Ying Xing and Stan Zdonik, Scalable Distributed Stream Processing, Proceedings of the Conference for Innovative Database Research (CIDR), January, 2003, Asilomar, CA.
[5] Y. Ahmad, U. Cetintemel. Network-Aware Query Processing for Stream-Based Applications. (Proceedings of the 30th International Conference on Very Large Data Bases (VLDB '04).)
[6] STREAM Query Repository http://www-db.stanford.edu/stream/sqr/
[7] S. Babu, L. Subramanian, and J. Widom. A Data Stream Management System for Network Traffic Management In Proc. of the Workshop on Network-Related Data Management (NRDM 2001), May 2001
[8] Daniel Abadi, Yanif Ahmad, Hari Balakrishnan, Magdalena Balazinska, Ugur Cetintemel, Mitch Cherniack, Jeong-Hyon Hwang, John Jannotti, Wolfgang Lindner, Samuel Madden, Alexander Rasin, Michael Stonebraker, Nesime Tatbul, Ying Xing, Stan Zdonik. The Design of the Borealis Stream Processing Engine. Technical Report. CS-04-08. Brown University, July 2004. [9] Cube game and 3d engine http://sourceforge.net/projects/cube/. 2004