Version emulation

From Worms Knowledge Base

Jump to: navigation, search
(Up to Game logic)

Leading up to WA beta update v3.6.19.7 (2004.02.09), Deadcode determined that it was necessary to maintain backward compatibility with previous beta versions of WA to avoid segmenting the WA community. To achieve this, he implemented emulation of all the previous WA beta versions. Later, in v3.6.26.4 (2005.11.22), emulation of version 3.0 was also added.

In an online game with multiple Worms Armageddon client versions, the oldest client version present is the one selected to be emulated by all clients. The presence of WA clients that would incorrectly emulate the version that would normally be emulated causes an older version to be emulated to prevent desynchronising.

Version emulation is also implemented for backward compatibility with replay files with game engine version values up to the native value of the version of WA used to read the replay. This value in the replay file can be modified with a hex editor in case of compatibility issues, but doing so may cause playback to desynchronise from the original gameplay.

Emulation is achieved not through the code containing many copies of the logic engine, but through conditionals appearing in parts of code that would behave differently between versions. This reduces the size of the code, but increases the likelihood of errors in emulation, as has happened in the past.

Personal tools