Team #
7: JORBA
Michael Seto mseto@andrew.cmu.edu
Ian Kalinowski igk@andrew.cmu.edu
Jeremy Ng jwng@andrew.cmu.edu
Wee Ming Choon wmc@andrew.cmu.edu
Team Roles
(testing, reliability, application, documentation):
|
Mike |
Jeremy |
Ian |
Wee Ming |
Database |
|
|
|
X |
Game Server |
X |
X |
|
|
Client Module |
|
|
X |
|
Real time analysis |
X |
X |
|
|
Reliability analysis |
|
|
|
X |
Performance analysis |
|
|
X |
X |
CORBA development |
X |
X |
|
|
Project
Title:
Super Borbaman
Baseline
Application Description:
Fault-Tolerant Real-Time Bomberman-inspired videogame. Bomberman is an interactive multi-player game where players
navigate a grid, and blast their way through fun-filled 2D graphics to combat
other opponents.
Configuration:
CORBA, Linux/SDL, C/C++
Third-party
software, if any (databases):
MySQL
Baseline
Application Features (3-10 high-level bullets):
Required:
-
Allows a client
to play with other clients
-
Up to 4 clients (Borbamen) per game
-
A client may only
belong to one game
-
A server may
support multiple games
-
If a game does
not contain the required 4 players, it will block until there are 4 players
available.
Optional:
-
Login screen and
lobby for clients to interact before game starts
-
Rankings for top Borbamen
Reliability
Requirements (3-10 high-level bullets):
-
Preserves current
game state under single server failure
o
Coordinates of
players, and player state
o
Bomb locations,
timers
o
State of map
o
Score
-
Switch from
failed server to another server within 1 second
-
Players who
“drop” may rejoin game within 2 seconds
Real-Time
Requirements (3-10 high-level bullets):
-
Player’s actions
affect the server state within 100ms of execution
-
Clients receive
server updates concurrently every 50ms
-
Updated game
state is saved within database in 25ms
Performance
Requirements (3-10 high-level bullets):
-
Handles 50
concurrent games (4 Borbamen, 10 sprites)
-
Handles 200
concurrent Borbamen
-
Game begins 1
second after all clients are ready
January 28, 2005
-
Architectural
diagram (first draft) has been prepared (link here)
-
Interfaces (first
draft) has been prepared (link here)
February 9, 2005
-
Checkpoint 1 Code
is now available. (link here)
o
Allows Client to
find Server via a IOR published in a file
o
Client may
transmit a single key-press to the server, which will reply to the client with
the same information after storing it in the SQL database
o
TODO: Add naming service
Finalize database structure
Add missing interfaces / Update current
interfaces for the type of data we’ll need to be sending.
February 16, 2005
-
Checkpoint 2 Code
is now available. (link here)
o
Updated “Game”
interface: Includes new methods – IsGameStarted(), ExitGame()
o
Added new “GameServer” interface: JoinGame()
o
Database
structure designed
o
Database is not
currently integrated with this code, but we will have it working before the
demo
o
Client program
functionality added
o
Added basic game
logic to the server
February 20, 2005
-
Baseline Demo
(Checkpoint 3) is now available. (link here).
o
Usage
instructions available in /src/README. Or the (link here)
February 28, 2005
-
Fault-tolerant
design now available. (link here)
March 16, 2005
-
Fault-tolerant
baseline now available. (Instructions here)
(Source code here)
March 25, 2005
-
Fault-tolerant
baseline measurements now available.
o
average fault-free round-trip latency: 14762 us
o
maximum jitter in fault-free round-trip latency: 1045864 us
o
minimum jitter in fault-free round-trip latency: 69 us
o
average failure-induced round-trip latency: 59691 us
o
maximum jitter in failure-induced round-trip latency: 78808 us
o
maximum jitter in failure-induced round-trip latency: 33 us
-
Graphs characterizing the RTT for both steady-state and fault-induced scenarios are available. (link here)
-
Suggestions to improve Real-Time Determinism:
o
Create script/low priority thread to regularly precache information from the naming service:
Having this information handy reduces or removes the latency caused during failover caused by contacting the naming service.
o
Refuse to contact naming service until cache of servers is exhausted:
Reduces the probability of having to use nondeterministic network resources.
o
Explore loading balancing:
By having numerous servers with Game objects already preallocated, we remove the latency caused by the object creation during failover.
o
Look into CORBA code that creates game objects:
Remove nondeterministic elements and optimize it.
April 22, 2005
-
Presentation Slides! (Contains graphs of our HP-RT-FT implementation (link here)
-
Or, you can look at the most relevant graph directly. (link here)