NOOGA

Network Object Oriented Game Architecture



Duke University - CURIOUS '01

author: D. Bernstein, A. English, B. Koh
 
 

Table of Contents

    Introduction
    Design and Basic Operation(brief)
    Usage Suggestions
    Supported Games
    Supported Protocols
/*******************************/

 
 

INTRODUCTION
 
 

NOOGA, which stands for Network Object Oriented Game Architecture, provides users with the basic network infrastructure for creating simple turn-based board games. Written entirely in Java 1.3, NOOGA is portable across multiple platforms and uses RMI to support network activity. It is designed such that users with minimal or no network knowledge can add new games and create clients for the NOOGA server. Recognizing that RMI is mainly a Java-supported technology, NOOGA also provides connectivity via TCP/IP socket connections, thereby enabling the server to communicate with clients written in other languages. It is our hope that NOOGA will be a useful teaching tool which can provide examples of good and bad OO design as well as ideas for future assignments.
 
 
 
 
 
 

/*******************************/
 
 

DESIGN AND BASIC OPERATION ........... in a nutshell
 
 


 
 
 
 
 
 

/*******************************/
 
 
 
 

USAGE SUGGESTIONS
 
 

It is our hope that NOOGA can be useful as a teaching tool both in and out of the classroom. Since it was almost entirely written by students, NOOGA is plagued by many common design mistakes. For example, bad variable names, redundant code, and hard coding, among other flaws, can be found in certain parts of code. However, there also exist features which are examples of good design. NOOGA's extensive class hierarchy allows new game handler and socket protocol modules to be added with relative ease. Additionally, the isolation of RMI within the NOOGAServer, NOOGAGameHandler, and NOOGAClient classes is a good design feature because client code never has to implement RMI in order to interface with the server. These can be pointed out in lecture followed by good/bad design reasoning. Outside of the classroom, NOOGA can be given to students as part of an assignment. In the same way that Nachos is used to teach OS design and concepts by having students modify its code and add new features, NOOGA can be used to teach OOP by allowing students to add new modules which provide additional functionality. Adding support for new game types, for instance, would give students practice in familiarizing themselves with the NOOGA API and in realizing how it's structure makes it flexible in some ways and inflexible in others. Their OO reasoning can also be put to the test if asked how they would re-design NOOGA from scratch, learning from mistakes that have already been committed in the original version.
 

/*******************************/
 

SUPPORTED GAMES

Currently, NOOGA supports:

  • Joggle - like the classic word game "Boggle"
  • Joggle Racer - similar to Joggle, but more competitive in that players "race" to submit words before other players. each word can only be submitted once, after which other players will not receive points for submitting the same word.
  • Dots - connect the dots on a grid to form squares. the player with the most squares wins
  • BattleShip - like the classic board game
  • All games have both gui and text interfaces and are included in the nooga-archive.jar file.
     

    /*******************************/
     

    SUPPORTED PROTOCOLS

    NOOGA supports RMI, XML, and Simple String connectivity.