Czech Danish Dutch English French German Hungarian Italian Norwegian Polish Portuguese Brasilian Portuguese Romanian Serbian Spanish Swedish
The following document describes what the completed game will look like. It doesn't guarantee ANYTHING about the current version of the game.

The game

The purpose of this project is to make a UNIX/Linux remake of the famous DOS-game "stunts".

"The old game"

The original DOS game (developed by Broderbund and Mindscape) can be downloaded on several abandonware sites, e.g the XTC site.

Stunts is a 3D racing game, with simple CGA/EGA/VGA graphics and no texture or smooth shading, but because of the spectacular stunts (loopings, bridges to jump over, etc.) it was really fun to play. One of the best aspects of this game is that it had a track editor. Because of the tile-based tracks, every gamer was able to make it's own tracks.

Similarities / differences

UltimateStunts will be a game very similar to Stunts: Some of the minor differences are: But there are also some major differences:

Detailed specification

The game

The game will be a threedimensional racing game, in which creating your own tracks and doing stunts are esential parts of the gameplay. The physics will be quasi-realistic: gameplay is more important than realism. The goals that a player can have are beating opponents in a race, getting a high score, and creating tracks that are long, fast, funny or (almost) impossible to drive.

Multi-player

Players will be able to drive on their own (just to get in the highscore list), against computer opponents, against their friends in a split-screen session, or in a multiplayer session over a LAN or over the internet. Combinations will also be possible, for example to play against computer opponents over the internet.

Network

Whenever network communication is involved in a gaming session, a separate server program is started on one of the computers. It will be possible to start the server with a menu item in the client program, but it will also be possible to start it manually on a dedicated server computer. All client programs that are involved in the gaming session need to connect to the server. The server does not only give through all data, but it also acts as a referee. The game simulation will run on the server, and all local simulators need to synchronise with the server. The server also decides on which track the game is played, and which cars are allowed. All files should be available at the server, and if they are not available at one of the clients, that client will be able to download the missing files automatically.

Graphics

Ultimate Stunts will be able to provide high-quality 3D graphics, but it will become very flexible at this point. In order to provide a playable game even on platforms where no hardware acceleration is available, it will be possible to scale down the complexity of the graphics to a minimum. On the other hand, on high-end platforms, advanced technologies will be used.

The tracks

The tracks will consist of square tiles, just like in Stunts. The differences are: The sizes of the tiles will be set to 40x40x12 meter, because these sizes are approximately equal to the tile-sizes in Stunts. Support for other tile sizes is not planned. Large tiles (like the wide corners in Stunts) are built up from smaller tiles.

The track editor

The track editor will be a user-friendly program for editing tracks. It will be possible to start the track editor from a menu item in the main program. Because tracks in Ultimate Stunts are more 3D than Stunts tracks, the editor will be more complex. It will be inspired by the rollercoaster editor of Rollercoaster Tycoon. The basic idea is to have a "cursor" at the end of a road. The user can select if the roads needs to turn right or left, if it needs to go up/down, if a stunt needs to be included etcetera. Then the tile editor should automatically apply the right changes to the track. Of course the track editor should also validate the track, and make it impossible to make invalid changes. The track editor should also have the possibility for importing original Stunts tracks.

Replays

Just like Stunts, Ultimate Stunts will have the possibility to create and view replays (but it will not be able to read original Stunts replays). Ultimate Stunts replays will contain every position and orientation for every moving object in the scene, for every frame. With the right conversion tools, this data can also be used in animation programs (like 3D Studio), for example for creating an intro video for Ultimate Stunts. In Ultimate Stunts it will also be possible to use a replay as a ghost player.

The stunts3dedit editor

When this project was started, there were no plans for a 3d editor, but as soon as complex tiles were needed, it was created to reduce the difficulty of writing tile definitions in text files. The 3d editor will be what it is now: a simple tool for very low-level polygon manipulation, with some high-level modifiers. A feature that becomes increasingly important is the possibility to import foreign file formats. The usage will be: create a model in an external editor, import it in stunts3dedit, do some fixes, and save it for use in Ultimate Stunts.

Requirements

UltimateStunts is very flexible in it's system requirements: it can be played on computers without hardware-acceleration, but it is possible to take full advantage of the 3D-technology in modern PC's.
The following things are required to get the windows binaries working: The following things are required on a typical UNIX-system: For compiling in windows, Cygwin can be used. You'll need the opengl and the w32api packages, SDL, and of course the usual compiling stuff.

To get a nice-looking game with a normal frame-rate, the following is recommended:

The following optional items are supported by UltimateStunts:

The technology

The main developing platforms are Linux and Cygwin (= in windows), but I am trying to keep it portable with other unix-like environments, like MacOS/X. For graphics and input, a openGL/SDL combination is used. Networking is done by standard UNIX (BSD) network functions. The gaming communication will use UDP/IP. Sound is implemented both on FMOD and on openAL.

The project will provide a number of different programs. These include the following:

Currently, the kdevelop program is used for developing.

Network and simulation

The functionality of the various programs involved in a game-session will be very flexible, as the most optimal configuration will depend on the network parameters, like bandwidth. The following text describes future versions. It does NOT apply to the current version.

In a local game, when only one computer is involved in the game session, all things (including graphics, AI players and physics) are done by a single program. When more than one human player is involved, in a networked game, data will be distributed by the server program. The main physics simulation is done by the server program, but (depending on the connection bandwidth) some client programs might also calculate physics, to correct for the slow synchronisation with the server.

AI players can be started inside both the server and the UltimateStunts client. They can also be added using the separate AI-client program. Experts who want optimal performance, can use the server program to act also as a client. This way, the server program can log in on an internet-game over a slow connection, and act as a server to various players in a LAN. This enables the possibility to share a single client-server connection by several players.

Graphics

Because the graphics are tile-based, rendering can be done faster by disabling the default openGL z-buffering and just rendering the tiles in the right order. Besides that, the graphics features used will be very configurable. If z-buffering is disabled, texturing disabled, smooth shading disabled, background disabled, resolution set to 320x200 etc. etc., the game will look very similar to the original DOS-game, but it will run on any computer.