Project Goal: The ultimate goal of this project was to create a computer game, which would be playable between two opponents over a network. Specific design goals were the development of a method of establishing and maintaining a connection between two client programs, an easy to use and visually appealing interface, and game design that's both simple to understand and fun to play.
- Finding a starting point -- This project's beginnings are in a story written by a friend of mine, Chris Slempa, who is a Literature major here at UNCA. After writing the story, he had an idea for a game based on it. Although many changes were made, his basic idea was the starting point for this project.
- Making a connection -- Because the project would require Java applications to send messages to each other, I began work on writing a class that could accomplish that. The final project uses a CGI script located on a server to establish an initial connection between the two client programs. Once it does that, the client programs open direct sockets to one another in order to exchange messages.
- Building the interface -- Before anyone can play the game, there has to be an interface. It was decided that it would be a graphical interface. I composed the interface using Java objects such as buttons and progress bars, as well as images that I drew using an image editing program. Methods were also implemented for updating components and animating the images.
- Deducing the logic -- After deciding on what the game would do, I had to make it do that. In order to implement the game logic, I broke the game's functionality down into several different actions it could take, with separate conditions for each action. Though the algorithms for some actions got very complicated, the design was able to be realized in a playable form.
This project was a worthwhile experience for me, since it allowed me to expand my knowledge and experience with Java, Perl, and general networking concepts. It also gave me an appreciation for what it's like to work on a large project, as this is much more complex than any other software project I've worked on in the past. I expect this experience to good stepping stone toward future software projects I may be involved in after UNCA.
Advisor: J. Dean Brock