Difference between revisions of "4"

From Worms Knowledge Base

Jump to: navigation, search
(argh I keep confusing the two)
(map editor)
Line 39: Line 39:
 
=== Game engine/process ===
 
=== Game engine/process ===
 
* Live map and scheme editing; changes saved in message stream
 
* Live map and scheme editing; changes saved in message stream
** Map editor:
+
** Map editor: (also see separate section for feature list)
 
*** Integrated with game logic (editing tools accessible just like weapons from a separate palette)
 
*** Integrated with game logic (editing tools accessible just like weapons from a separate palette)
*** Support basic colour editing tools
 
*** Support clipboard operations
 
 
*** Maps should be sent as collision mask first, with progressive colour layer following
 
*** 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
 
**** Colour data for loaded maps should not be stored in the message stream, but rather stored as an object reference
Line 53: Line 51:
 
* How to elegantly design a unified interface for pre- and in-game map editing?
 
* 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)
 
* 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)
 +
 +
=== Map editor ===
 +
* Open-source as much as possible
 +
* Support basic colour editing tools (MS-Paint-ish)
 +
* Support clipboard operations
 +
* "Plug-in" code model for landscape generators and texturizers
 +
** Add map generation for common schemes, e.g. RR (see [[MapGen]])
 +
* Draw on the landscape (monochrome) level, see live texturized map?
 +
* Layers? (parallax foreground, destructible land, indestructible land, destroyed land background, parallax background)
  
 
=== Replays ===
 
=== Replays ===

Revision as of 22:23, 8 August 2010

Worms Armageddon 4.x plan / idea dump. Please don't edit this page unless you've been invited to. Instead, feel free to discuss features on the talk page or Team17 forums.

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

Plan

Platform/Libraries

  • Programming language: D 2 (?)
  • Input/windowing: SDL (?)
  • Graphics: SDL and SDL+OpenGL (?)
    • True colour everywhere; use 3D/hardware acceleration where available
  • Network: standard TCP/IP

Code

  • Split into open-source (not W:A-specific) and closed-source (W:A-specific) parts
  • Separate input, network, rendering and each game logic instance into threads and use message passing?
  • 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

Storage

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

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 diff" feature (e.g. on mouse hover over scheme viewer button), which compares locally-available schemes and displays a diff against closest matching scheme (e.g. "Closest-matching scheme: Hysteria; Low gravity ammo: 0 -> 1")

Game engine/process

  • Live map and scheme editing; changes saved in message stream
    • Map editor: (also see separate section for feature list)
      • 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
  • 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)

Map editor

  • Open-source as much as possible
  • Support basic colour editing tools (MS-Paint-ish)
  • Support clipboard operations
  • "Plug-in" code model for landscape generators and texturizers
    • Add map generation for common schemes, e.g. RR (see MapGen)
  • Draw on the landscape (monochrome) level, see live texturized map?
  • Layers? (parallax foreground, destructible land, indestructible land, destroyed land background, parallax background)

Replays

  • Replays are stored internally as broken into message streams / metadata / maps, but exportable to self-contained files
    • Exportable as one replay for the entire session, or one replay per round as usual (latter doesn't reference maps that were loaded but not played on)
  • Replays should seek to the "game start" by default, by allow rewinding back to pre-start chat and map editing

Gameplay

  • Per-scheme features:
    • Roper:
      • Trick detection? (like here)

WormNET

  • Each player has their own unique username
    • Usernames are not editable, administrators can change them though
      • By derivation, clan tags are forbidden in usernames
    • Clans will be able to provide a flag-sized bitmap as a clan logo, which will be displayed instead of the country flag
      • Country flag will still be visible on hover
    • An additional editable "title" may be added, to represent secondary affiliations (to allow smth. like the present cfc`Komo`b2b)
  • In-progress games should be joinable, at least as a spectator
    • Spawning a team on the landscape in the middle of a game is certainly an option, though
  • Channels structure, ranks are TBD...

Customization

  • Custom missions
  • Scripting
    • Schemes
    • Maps?
    • Schemes + maps (missions)
  • Map editor
    • Custom terrain textures

New scheme format

  • Format
    • Text or binary? What about network/file aspect? Preserving whitespace/comments?
  • Options
    • Rope knocking
    • All individual teststuff options
    • Optional fixes for certain bugs
    • RubberWorm features
    • Fiddler features (including weapon customization)
    • Many more (see current internal W:A engine options)

External links

Personal tools