Difference between revisions of "Version emulation"
From Worms Knowledge Base
m |
(How emulation is achieved.) |
||
Line 6: | Line 6: | ||
Version emulation is also implemented for backward compatibility with [[Replay file|replay files]] with [[WA versions list|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. | Version emulation is also implemented for backward compatibility with [[Replay file|replay files]] with [[WA versions list|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. |
Revision as of 00:52, 29 March 2013
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.