Overview of Europa Development

Notes for Developers or the Naturally Curious

Alex Nicolaou and Jay Steele




Summary

The pages in this development directory give a casual overview of the code for Europa and the development process. For the developer who is curious as to the process that brought the game about, this is a good source, with details of the implementation coming from the javadoc-generated documentation.
The authors worked on this project across the internet, and did not meet each other face to face from the day the project was begun in earnest onwards. The code itself was designed by each individual seperately, around specifications about how the program was to work. Both the code itself and the process that created it are described in some detail.




1. In the Beginning


The "wouldn't it be cool if..." conversation.
In early January, 1996, Jay was in Mississauga and somehow he and Alex got into a conversation about creating a client/server version of XBattle, a game which was immensely popular amongst students of the Computer Graphics Lab. The focus of the conversation soon narrowed down to how to transmit the board in a format small enough to ensure that even over slow network connections the game would still be playable. Jay returned to Nova Scotia, and you might think the conversation would have ended there, but in reality it was the beginning of a much longer electronic discussion.
The earliest messages that we saved are dated at January 11th, and January 15th, and involve actually deciding to do the project. From the beginning it was our intent to enter the Java Cup International, a contest promoted by Sun Microsystems, Netscape, and other sponsors to attract interest in and spread the word about Sun's new language: Java. The primary goal of the entry was to meet the objectives of the contest while still providing us with a fun game for when the dust cleared after the judging.
Once we had decided on a communication protocol, Jay (who is responsible for all of the graphics that you see in Europa) started thinking about a design for fancy terrain and writing the client. The idea was that Jay would write the client and Alex would write the server; a great theory but hard to co-ordinate when nothing was still written. So it was that before Alex had penned a single line of code Jay produced the earliest incarnation of the program: a simple board that you could wander around on. This portion of the game was completed on February 4th, 1996, and the main contributions to the existing game were the comm and sys directories. With the basic infrastructure of the communication in place, Alex was able to write the actual server code to manage the rules of the game while Jay started prototyping different graphic ideas to give the game a fancy look. So it was that by February 16th Jay had completed the initial arcade client and Alex had succeeded in putting enough rules into the server to actually have a playable game where the players could fight. Alex drove to Waterloo to run the first test run: a game from Waterloo to Nova Scotia, and the first proof that the project was on its way to completion.




2. Gaining Momentum


Now that we were rolling, the excitement began to build. For us, the reality of having something working sparked strong enthusiasm.
The rest of February saw a lot of progress on the fundamentals of the game. Knowing that the project was going to be completed, we actually registered the applet with the Java Cup International form, which we were hesitant to do until this stage.
By March 1st, Jay had designed animations for the client, and started looking around for sound files so that he could add audio. Alex worked to polish the server internally, adding paratroops and guns, and redesigned the terrain generation to use geomorph tiles instead of being totally random. With these improvements in place, the first live test session was run that involved players who weren't on the development team. The feedback from actually running the game kept Alex busy fine-tuning the internals of the server and had Jay adding a number of touch-ups to the client as well, which resulted in a much cleaner game for the following day.
By the middle of March, the focus was on cleaning up bugs on the client side. With some free time on is hands, Jay designed the game concept and WWW pages that form the entry to the game from the user's point of view, while Alex worked on adding a login protocol that would work to let players log in, chat, and start new games in the server.




3. The Home Stretch


We knew we were finished when it became more fun to play the game than to continue programming it. It was time to do any last-minute code cleanup and prepare for actual contest submission.
Now that the server was complete, we began to spread the word to a variety of friends to ensure that we'd have willing testers. Once again, live testing brought about a new flurry of development to fix problems and add new features.
On March 21st, we had our dream come true: a series of coast to coast games involving a player in Vancouver, Alex, and Jay. A time zone difference of four hours completely bridged by little squares of flowing colour grappling for control of our game board, with a chat window in constant use for insults, brags, and strategic plans which mainly consisted of let's gang up on Alex, which seems completely unfair to Alex since Jay was the best player of the three. At around this time Alex finished designing the distribution and sent it to a friend of Jay's to test out whether someone who had never set it up could set it up from the distribution's tar file.
That brings us to the present: a mere two days before the contest, but in reality two days to spare. Excited and hopeful, but scared to be too hopeful: wish us luck!