Difference between revisions of "Version compatibility"

From ECWolf Wiki
Line 14: Line 14:
 
* '''Minor'''
 
* '''Minor'''
 
:These changes are recommended for best forwards compatibility, but do not cause any change in behavior from the previous version.
 
:These changes are recommended for best forwards compatibility, but do not cause any change in behavior from the previous version.
 +
 +
=== Upgrade to 1.2 ===
 +
'''Critical'''
 +
* Due to the new ROTT style trigger system, some [[action specials]] have been changed. While this won't technically prevent ECWolf from loading the mod, it will be completely unplayable if a custom [[map translator]] was used.
 +
** Door_Open arguments have been changed to (tag, speed, delay, lock, type) from (speed, lock, type).
 +
*** Horizontal/Vertical is no longer determined by activation direction. This would not work right when activated by a switch. Instead the first bit of the type argument is used so 0 = horizontal, 1 = vertical. Obviously higher numbers are still reserved for other types of doors.
 +
*** Delay should be set to 300 to be the same as before and specifies the number of tics the door will hold open.
 +
** Pushwall_Move arguments have been changed to (tag, speed, direction, distance) from (speed, direction, distance)
 +
*** Direction has been modified to include support for diagonal push walls. ECWolf does not yet support diagonal push walls, but this was done in preparation for when it's needed for ROTT support. As a result you need to multiply your direction by 2 (so move away from the activator is 2 instead of 1).
 +
 +
'''Major'''
 +
* Gatling gun pick up is now represented by {{Class|GatlingGunUpgrade}}. If you are using "replaces {{Class|GatlingGun}}" just use "replaces GatlingGunUpgrade" instead.
 +
 
=== Upgrade to 1.1 ===
 
=== Upgrade to 1.1 ===
 
'''Major'''
 
'''Major'''

Revision as of 08:34, 27 May 2013

One of the main design goals of ECWolf is to allow easy mod authoring in a way that requires little programming knowledge. In turn it is reasonable to expect that future updates to the engine will not break released mods. While this will eventually be the case, this is not true for the 1.x series. Starting with ECWolf 2.0 backwards compatibility will be kept, but until then fixing issues takes priority. The main reason for this is because there are certain features that are currently only partially implemented and I don't need broken features to get in the way of normal progress.

Forwards compatibility tips

While this is by no means a complete list, the following items will allow mods to be easily ported from one version to another by following upgrade directions posted here in the future.

  • Whenever you are asked to provide a z-coordinate always use 0. Please note that this may not be the default value. Particularly when it comes to projectiles. If a specific value is given for a z-height elsewhere then use that instead.
  • When you create a SOLID object, always give it a height of 64. (Again, this is not the default.)
  • Always acquire a target with A_Look before using Monster AI attacks. Right now the player is assumed to be the target.
  • Inherit from WolfensteinMonster when creating monster with Wolfenstein style definitions. (NOP A_Chase)

Upgrading mods

There are three categories of changes for upgrading mods.

  • Critical
These changes cause ECWolf to reject the mod if not corrected.
  • Major
These changes cause the mod to behave differently than in the previous version. ECWolf will still start, but gameplay may be drastically different than intended.
  • Minor
These changes are recommended for best forwards compatibility, but do not cause any change in behavior from the previous version.

Upgrade to 1.2

Critical

  • Due to the new ROTT style trigger system, some action specials have been changed. While this won't technically prevent ECWolf from loading the mod, it will be completely unplayable if a custom map translator was used.
    • Door_Open arguments have been changed to (tag, speed, delay, lock, type) from (speed, lock, type).
      • Horizontal/Vertical is no longer determined by activation direction. This would not work right when activated by a switch. Instead the first bit of the type argument is used so 0 = horizontal, 1 = vertical. Obviously higher numbers are still reserved for other types of doors.
      • Delay should be set to 300 to be the same as before and specifies the number of tics the door will hold open.
    • Pushwall_Move arguments have been changed to (tag, speed, direction, distance) from (speed, direction, distance)
      • Direction has been modified to include support for diagonal push walls. ECWolf does not yet support diagonal push walls, but this was done in preparation for when it's needed for ROTT support. As a result you need to multiply your direction by 2 (so move away from the activator is 2 instead of 1).

Major

  • Gatling gun pick up is now represented by GatlingGunUpgrade. If you are using "replaces GatlingGun" just use "replaces GatlingGunUpgrade" instead.

Upgrade to 1.1

Major

  • If you define your monsters in Wolfenstein style (that's: NOP A_Chase) then you will probably want to inherit from WolfensteinMonster. There's nothing special about this actor other than it sets the defaults for these kind of monsters. If you don't either change your actor to reflect that actor, or inherit from it, your monster will change significantly in aggressiveness.
  • If you inherited directly from Weapon your weapon will now have Doom like bobbing. To fix add WEAPON.DONTBOB. (You can also inherit from WolfWeapon, but this will carry other effects.)
  • If you have a custom player class not inheriting from BJPlayer it will also have movement bob. Add player.movebob 0 to correct.
  • Meleerange now default to 44 if you don't inherit from WolfMonster (where it will be 42). This may seem like a small change, but the old behavior is to have the meleerange equal to the radius (42).
  • The missilechance property has been removed. It is the same as missilefrequency, but missilefrequency takes a floating point value that is 0.005*missilechance.

Minor

  • Rename WAF_NORANDOM to GAF_NORANDOM if used with A_GunAttack.