Aura
Official Site
Introduction:
Aura will be a 3D flying multiplayer game, with the object of shooting down
as many other players as possible. There may be a single-player option
(against bots). The landscape engine will use texture-mapped voxels, with
the other players being represented with scaled bitmaps. The graphics mode
will autodetect between Mode-X (320x240x256) and VESA (either 320x240x32-bit
or 640x480x32-bit). Networking will be UDP/IP under Win95 or Win98. The
entire project will run in 32-bit protected mode. No other team members
will be needed for this project.
Team Members:
Problem Description:
Some of the more challenging parts of this project include:
- Voxel Graphics Engine: The texture-mapping voxel engine is a very
complex piece of code in itself and will be very CPU-intensive. Optimizing
this engine will be a major part of the project.
- Sprite Graphics Engine: For multiplayer, sprites will represent the
other players. These sprites will be bitmaps, distance-scaled and positioned
to show the position of the other player(s) in the landscape. 3D clipping
will be quite a problem when integrating this engine with the voxel engine,
and there may not be time to properly implement this clipping.
- Graphics Modes: As the engine renders in 24-bit color, making the
output look as good as possible will be a function of how well the colors
can be rendered to the display. For speed reasons with the voxel engine,
the resolution should be kept as low as possible. Thus the ideal mode to
run this game in will be the 320x240x32-bit VESA mode offered by SciTech
Display Doctor (SDD). For backward compatibility, both a 640x480x32-bit VESA
mode and a Mode-X (320x240x256) mode will be supported. The biggest difficulty
here will be rendering the colors down (and the resolution down) into the
proper format.
- DPMI Protected Mode: Due to the high memory usage of 32-bit graphics and
textures, the project will be written using NASM and DJGPP to run in 32-bit
DPMI protected mode under NT, Win9x, and DOS (Note: Under NT, SDD is not yet
available and so the 320x240x32-bit mode will not be a graphics option--this
may change with the next verison of SDD). Running in protected mode, while
having many benefits, also has many pitfalls. Unique routines will need to
be written for everything from file loading to memory allocation and interrupts.
- Networking: The current plan for network play is client/server UDP/IP.
This networking mode will only work under Win9x--it will NOT work in NT or DOS.
A fallback NetBIOS mode might be added if there is time. Due to the incredible
complexity of interfacing with Windows TCP/IP, an external library will be used
for this purpose.
- Single-Player: In addition to the multiplayer networked gameplay,
individual gameplay may be added, with competition against computer-controlled
bots. This will be a modular plugin into the multiplayer code--instead of
going to the network to get positions of other players, the game will simply
go to the bot code.
Implementation
Procedures (by Module)
Limited Source Code (by Module)
External Routines:
- libsocket 0.7.4 (beta 1): The library used to interface with
Win9x TCP/IP. Some sample server code from this library will also be used
to create the server-side component of Aura.
- DJGPP C libraries: Just for the rand() function (and functions
used by libsocket).
- Original Mode-X routines: By Michael Abrash. Converted, extended,
and optimized by Peter Johnson.
- Textures: Textures for the voxel terrain have all been taken from
Half-Life and undergone digital manipulation using Photoshop.
- VistaPro 4: An excellent landscape generator and renderer used
to create the landscapes for the game. The export format (heightmap and
texturemap) is loaded verbatim into Aura--this makes map revision particularly
simple.
Screen Shots:
Click here to see the screenshots.