We encountered many problems during this project, some of which were
unrecoverable. Our
ambition was to write a 3-D game with a nice gameplay and AI.
The 3-D graphics rountines,
specificaly raycaster, were difficult to write and debug, but we were
happy to get them to
work. Furthermore, the graphics initally ran very smoothly at
over 100 frames a second.
Meanwhile, we got the gameplay and AI functions written, and verified
their propper
functioning using code view. So, with working versions of both
the graphics and the
gameplay, we were ready to join them together. This is where
the trouble began. We soon
discovered that the graphics had been written under one set of assumptions,
while the
gameplay was based on other assumptions of the graphics. Specifically,
the graphics needed
to disallow object being to close to the player. So, many of
the move functions needed to be
rewritten. Also, the player needed to only move a small amout
at a time so that the screen
would not be jumpy. Again, the move functions were rewritten.
As an another example, the
graphics were written under with the world defined in cartesian coordinates
while the
gameplay was written another way. In the end, we had spent many
hours building a working
interface between the graphics and the the gameplay. This drascitally
cut down the speed of
the game, and we were forced to sacrifice many of our other goals for
the game (i.e. moving
computer players). Finally, somewhere during the process of rewriting
code, we lost many
features of the graphics. For instance, we originally were able
to draw the a player's true
outline on top of the background (this is shown in our screen shot).
But, we later had to
scrap that to get the game to work. The same goes for all of
our networking code.
In conclusion, we worked really hard on getting the 3-D graphics to
work, but they severely
degraded much of the rest of the game. We attribute much of this
to poor inital planning and
small amounts of sleep.