Development issues for a networked, object oriented gaming architecture (NOOGA) teaching tool
We describe the outcome and experience of trying to develop an architecture and framework for a Networked Object Oriented Gaming Architecture (NOOGA). The aim of this project was to create an easily extensible framework that facilitates teaching students about object oriented design, design patterns, and software engineering in an interesting context. Our original goal was to develop a game serve to serve multiplayer games such as battleship, dots, and Boggle. We planned to implement these three games, but to design an extensible server that would permit new games to be added to the server framework. The NOOGA framework would be studied and used from both a client and server standpoint. Students would first develop clients that would connect to the server to play a specific game and would, in more advanced courses, add new games to the server. This paper will focus on the development process and design decisions made during development. We initially decided to implement the client/server model using Java's Remote Method Invocation (RMI). Later, we developed a protocol for communicating between the server and clients using low-level sockets to facilitate client implementation in C and C++. We describe the success in developing an extensible server, but describe failures in ensuring robustness in the face of faulty clients. Since the NOOGA server was intended to facilitate student development of networked clients, our original goals were not fully realized.