Difference between revisions of "Version emulation"

From Worms Knowledge Base

Jump to: navigation, search
(Lots of rewording)
m (moved User:LeTotalKiller/Version emulation to Version emulation: The article is ready.)
 
(4 intermediate revisions by 3 users not shown)
Line 1: Line 1:
 
{{ParentArticle|[[Game logic]]}}
 
{{ParentArticle|[[Game logic]]}}
  
Leading up to [[Worms Armageddon ReadMe (English)/v3.6.19.7 Beta Update|WA beta update v3.6.19.7]] (2004.02.09), Deadcode determined that it was necessary to maintain [[w:Backward compatibility|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, emulation of version 3.0 was also added.
+
Leading up to [[Worms Armageddon ReadMe (English)/v3.6.19.7 Beta Update|WA beta update v3.6.19.7]] (2004.02.09), Deadcode determined that it was necessary to maintain [[w:Backward compatibility|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 [[Worms Armageddon ReadMe (English)/v3.6.26.4 Beta Update|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.
 
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.
  
Similarly, there is backward compatibility but not forward compatibility when reading replay files. Thus, for example, a v3.6.31.0 user can watch replays recorded by WA v3.6.31.0 or prior, but not those recorded with versions later than v3.6.31.0.
+
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.

Latest revision as of 10:35, 21 April 2013

(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