Worms Armageddon 4.0 is a planned major update to Worms Armageddon. Due to limitations of the current codebase, W:A 4.x will be a complete rewrite except for the game logic (physics etc.), which will allow things not possible or very difficult to implement in 3.x.

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.)

The game engine, the network code, and the interface are separated in such a way so that the prior can work without the latter

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

Allow importing offline WWP content (missions/training) from WWP's CD

The missions screen should display a choice between W:A and WWP. Initially, the WWP button will be greyed out OSLT, and clicking on it would prompt the user to insert the WWP CD, which will run the conversion wizard.

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

Start-up

Load quickly! It'd be shameful 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 (manually accessible through an advanced console):

Object cache browser

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?

Don't write the control rendering code in the control class. Instead, have a rendering system which renders specific controls.

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?

In-game:

Pressing Escape pops up a menu and shows the mouse cursor, however it is not locked to the Escape dialog.

With the mouse cursor unlocked, mousing over a worm brings its name/HP bubble to the front. (solves this idea)

Options

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 network model 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?

Store map as a collection of chunks instead of a single solid object. This allows:

Loading maps of different sizes (dynamic resizing)

On-the-fly "extension" of maps (building girders in open space, or digging in any direction for infinite cavern maps)

Efficient in-memory representation of large maps with a lot of blank space

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)