Europa
Java Cup Contest Judging Criteria
Abstract
From the beginning, Europa was intended to be a Java Cup International entry, and the Java Cup Judging Criteria guided many of the development decisions. This document presents them to show their impact on the game's design.
1. Graphics
"Use Graphics that complement, not distract."
We made a concentrated effort to advertise the multimedia features of Java (with both graphics and sound) in relevant and thoughtful ways.
The game consists of a number of dialog boxes, windows, and buttons, which have been carefully implemented to balance the amount of information being presented, the screen real-estate required, and the consistency of the game's theme. The game is designed to be usable on a screen with 800x600 resolution, the lowest commonly in use today, and is ideally sized for a 1024x768 resolution or better, which is increasingly common in the hands of the average user. For users of workstations the screen real-estate is not as critical a priority, and the game fits more than comfortably on all the workstations we tested on.
The game selection window contains information about games waiting to be played and games in progress. These queues could have been handled by a simpler (and smaller) text interface, but we felt the inclusion of the graphics helped transport the user into the world of Europa, suspend their reality, and become a more involved player.
The game client itself is a combination of Java image processing capabilities and native drawing methods. We had to carefully balance the illusion of going to battle on a distant moon, and at the same time maintain a respectable execution time for the real-time asynchronous game play. Our Europa native "Arcade" client uses a number of small images to construct a attractive 3D terrain based on data sent from the game server. Strategic placement of images results in hills and valleys represented by shadows and hilights across the game board. Furthermore, Java's power of animation is put to good use by animated tiny sequences of fire and smoke when isolated battle erupt. These battle are also accompanied by sounds of gunfire, mortar and ricocheting bullets.
Other graphical components of the game play which require much more frequent update iterations and execution speed use Java's native drawing methods like fillRect(...), moveTo(...) and lineTo(..). The combined effect of bitmaps and graphics methods provide a quick and attractive client for playing the game.
2. System Friendliness
"Bytecodes should be architecture neutral. Write once, run anywhere capability."
Both the server and client have been written entirely with JDK supplied classes, and no native methods have been employed to do anything in the game. The server has been tested on various platforms: Solaris/SunOS, Windows 95 and Windows NT. The client has been tested on Solaris/SunOS, IRIX, Linux, Windows 95 and Windows NT.
"Be kind to your users; give them a way to stop the applet in its tracks, without leaving the page."
The web page applet is invisible to the user and its primary goal in life is to present the user with a login window for accessing the game server. This dialog can be aborted, and the game will go away. When the game queue window is executing, it can be stopped by selected the "Quit" button. This will terminate the game client. When the game itself is executing, you can quit the game client by selecting the "Quit" button, and then quit the game client entirely by selecting the "Quit" button in the queue window.
3. Coding Style
"Conform to the sound principles of Object Oriented Programming within Java source code."
All of the classes are carefully designed in a strong Object Oriented style, making extensive use of encapsulation, inheritance and polymorphism.
Europa has been developed by methodically extending various Java classes to provide extra functionality. Additionally, we have created our own hierarchies to allow for judicious code re-use and simplify new code construction. Sensitive data are protected by with the data-hiding facilities of the Java language.
Highlights of the object-oriented classes in our code include: Board (superclass of ClientBoard and ServerBoard), ClientLook (superclass of ClientLookArcade and ClientLookTraditional), and QueueComponent (superclass of EuropaQueueComponent).
4. Security
"The applet should be able to transfer information from one point to another, with no possibility of interception or other interference during the process."
The client is written such that it is not possible to interfere with other games in progress. Once a game has started, the only way it can end is if all players either quit or are eliminated from the game, or the game finds it is not conversing with any of the clients and kills the game in question. The server is designed to run at all times: 24 hours a day, seven days a week, and allow connections from clients at any time.
We were unable to design a scheme that used no encryption and still kept all information totally confidential. If a malicious entity puts up a router that saves all packets across its interfaces and you have to use that router, it is very difficult to avoid being spied on. Since the game is, after all, just a game, we didn't invest much time here: and if we did discover a method of total security we feel we could probably become rich patenting it and selling it as a separate product in any case.
5. Reliability
"Bug-free, working time after time."
We have written the game in a methodical and precise manner, attempting to write and independently test subsets of the code in their own controlled test environment. The communication protocol and classes, for instance, were the first classes written and tested before there was even a graphical version of the client and server (there were some new derived classes added as the game matured).
We have also been extensively testing the entry in the weeks (and days) before the entry deadline to attempt to identify and isolate any outstanding bugs. It is our belief that we have been successful in tracking down and fixing almost all major bugs. Furthermore, we were pleasantly surprised by the ease with which we fixed a number of problems, the credit for which is presumably shared both by Java and our own design.
6. Interactivity
"An open environment for open-ended interaction, rather than a fixed set of options."
Europa exhibits an immense amount of depth--from logging in to watching players select games to play, to selecting games to play, to chatting with fellow Europa players, and to playing the game.
The game itself is a truly limitless combination of interactivity and strategy. There are many subtleties in the game that can only be found and identified from playing and playing and playing. No two games are ever alike.
Europa has the flavor of a MUD (Multi-user dungeon)--a community of players develops that know and recognize each other not by their voices or hair color, but by their names, their rating, their skill and their fighting tactics.
7. Innovation
"Boldly go where no applet has gone before."
Europa is a combination of many of the features of Java, and is truly a unique and enjoyable experience. It balances the simple with the complex, and offers users a unique community offered only by text-based chat rooms, MUDS, and talk sessions. It is a shoot-em-up arcade game, a strategic board game, a chat community, and it is a fun and competitive tournament playable across the Internet with friends and strangers.