Jim Rice
Senior Seminar Project Web Page
THE CLASS:
CS80 - Senior Seminar
Jim Rogers, Professor
Earlham College, Richmond IN
THE ASSIGNMENT:
To design, create, test, debug, and present a work that represents the culmination of all the student's Computer Science skills and knowledge, at the same time addressing a serious issue or sub-field of study within Computer Science.
MY PROJECT:
The average collegeiate table-top fantasy game player has long wished for a good, stable, cheap way to continue his (or her) hobby after leaving school. Many ex-students opt for expensive online games like Everquest or Neverwinter Nights. Others prefer the classic MUDD - Multi-user Dungeons and Dragons, the text based fantasy worlds created by strange guys with bad hair and pasty complexions.
These solutions are invariably constricting and sometimes expensive. Players find they are limited by the game engine and especially lag. Table top gamers, by contrast, are used to being limited only by their imaginations and the necessity of going to class the next morning.
Introducing OLGA
OLGA, the On Line Gaming Application, will enable gamers to connect with their college friends from long distances, typing their characters' words and deeds instead of speaking them.
OLGA is text based, like most MUDDs, but is open only to players in a single game: most MUDDs generate lag when 800 people are all logged on at once. Designed to accomodate, a small number of people (2-20), OLGA's peer-to-peer deisgn could conceivably handle many, many more. (More on peer-to-peer later.) The small number of people creates a much closer environment, reducing lag created by spam or the sheer number of players.
OLGA includes a dice-rolling application, adjustable and customizable hit and damage tables, a character generator. It functions in a shell, allowing users to type commands and also to set macros. A text editor is included to allow users to create pre-defined messages and display them with a macro.
Currently in production, OLGA should be out by mid December. If it isn't, I'll be in school a while longer than I had intended.
Why Olga is Peer-to-Peer
"Peer-to-Peer" computing, also known as distributed computing, answers the question "Isn't there a more efficient way to manage a network than a server?"
As many ISPs have discovered in recent years, the problem with a server based approach toward internet, and toward networks in general, is that performance downgrades a great deal with the addition of a great deal of traffic. Essentially it forces a few computers to do the work of hundreds, if not thousands. Wouldn't it be better if we could make these machines do the data and connection management for themselves?
Distributed networks take a divide-and-conquer approach to that problem by making each machine in a network manage all its connections to all the other machines in the network. This takes the burden off of a single server and places it on the CPUs of all the machines in the network.
I decided to take a distributed approach to this project for several reasons. Distributed computing is a powerful and effective way to transmit data to many computers. It's advantage lies in the fact that it doesn't use a server; there is no hub to log on to and be kicked off of.
Instead, all users are connected to each other. This means that there is no dependency upon one person to "host" a game, or to manage everyone else's connections, or to transfer data from one node to the next. In a peer to peer network, any computer can drop the connection with no adverse effects on any other user.
Since every node manages its own connection to other nodes, no one machine is bogged down trying to manage everyone else's data. Ideally this ends up freeing CPU time, allowing for more productive processing.
The Paper
Because distributed networks such a complicated topic, and because I have little experience
designing and implementing them, I am doing a fair amount of research on the subject. The
results of this research, using the sources found in my bibiography, will be apparent not
only in my project but also in a research paper.In this paper, I will discuss the advantages and disadvantages of peer-to-peer networks as
compared to server-based networks. I will also go into detail about accepted design and
implementation methods. I will also write about my own choices and experiences regarding
the architectural design and implementation.
I'd be a fool to ignore the advice of my peers. If you have any suggestions, comments, criticisms, or questions, please let me know.
CONTACT INFORMATION:
Email me: Jim Rice
LINKS: