Revision as of 13:02, 15 August 2010

W:A 4.x will be a complete rewrite of all of W:A's codebase except the game logic (physics etc.).

Note that not all of the features listed on this page will necessarily be in 4.0. This list's main purpose is to allow writing the code in such a way that adding these features would require as little (rewriting/redesigning/refactoring) effort as possible. (It's not unlikely that some features in this list may be implemented in 3.x before 4.0 is completed.)

Code

A simplistic dummy open-source game will be written which uses open-source parts of the code, to allow community development of open-source code

It is extremely important that the UI framework is written to be as simple to use as possible. The fewer places code must be changed to add/edit a control, the better. Immediate mode GUIs may be worth considering.

Installation

Installation wizard on Windows

Copy and convert files from CD

Optionally, copy/convert files from an existing W:A installation

Start-up

Load quickly! It'd be shaming if Worms Reloaded would load faster than W:A.

Preload graphics so that starting an actual game is instant? W:A's sprites don't consume a lot of memory.

Storage/Integration

Auto-update system?

Use appropriate OS directories for user data

Store objects into fanned-out files named by the file's hash (similar to git storage, but without packs)

Network operations will not send objects that already exist on the host (objects, including maps are cached).

Operations:

Clean-up (suggest deleting unused maps, possibly old replays)

Integrity check (check that all objects correspond to their SHA-1s)

Garbage collection (unreferenced objects)

Interface

Preserve classic black&blue look-and-feel

Skins?

Non-modal interface (Allow switching from a game to the WormNET window, possibly allow playing a game and spectating another simultaneously)

Show a taskbar/tab bar when W:A is windowed, or always except when a game is running

Specific screens:

Join "lobby":

Add easily-accessible Scheme Comparator

Compares the scheme chosen by the host against all locally-available schemes, and displays the name of the closest-matching scheme, with an asterisk appended if there's any difference (e.g. "Hysteria *")

If requested by the user, shows a list of all the differences between the host's scheme and the closest-matching scheme (e.g. "Low gravity ammo: 0 -> 1")

How shall the diff display be triggered? Upon mouse hover over the scheme name? Upon clicking the scheme name? In the scheme viewer?

Options

Customisable keyboard controls

Customizable background detail levels

Move instant replays from a scheme option to a game option, since it only works offline anyway?

Team favourite colour (honoured by hosts on a first-come, first-serve basis)

Game engine/process

Integrated with game logic (editing tools accessible just like weapons from a separate palette)

Maps should be sent as collision mask first, with progressive colour layer following

Colour data for loaded maps should not be stored in the message stream, but rather stored as an object reference

Ability to extract map as it exists at a certain stage in the game

Real-time support

Real-time is always enabled

Turn-based games follow current W:A behaviour - current player is a few seconds (or whatever the latency is) ahead of other players, but other players would still be able to send certain messages "from the past"

Real-time games are synced simultaneously

Sync is achieved by "rewinding" the game engine and reapplying new input if it is received "in the past"

Optional moderation actions (allow placing objects, moving worms around with the mouse etc.) - this allows the host to fix player mistakes, or a sort of role-playing (D&D-like) mode

How to elegantly design a unified interface for pre- and in-game map editing?

All changes to game state and options must be representable as messages, however the entire game state should also be serializable/deserializable (for replay start at arbitrary points and joining in-progress games)

Maps:

Wrapped maps?

Auto-expand map size? (Allow placing girders outside map boundaries)

Infinite cavern?

Customization

Custom missions

Scripting

Schemes

Maps?

Schemes + maps (missions)

Map editor

Custom terrain textures

Map editor

Open-source as much as legally and technically possible

Support basic colour editing tools (MS-Paint-ish)

Support clipboard operations

Ability to flip maps horizontally and vertically

Ability to generate maps based on a string (as with other Worms games)

Ability to select a random map from the SavedLevels folder (or a sub-folder)