EVN Wiki

Shän (abbreviated form of ship animation) is a type of data resource in EV Nova. These shans tell the game about complex ship graphics.

The shän resource[]

ℹ️️

EV Bible text

The following information was transcribed from the Nova Bible, ©1995-2006 by Matt Burch. The original document can be viewed here.

Shan (ship animation) resources contain sprite info for ship graphics, which are too complex for the more rudimentary spin resource.

Ship sprite[]

  • BaseImageID: The resource ID of the basic sprite images for this ship
  • BaseMaskID: The ID of the corresponding sprite masks (ignored if the base image is an rleD/rle8 resource)
  • BaseSetCount: The number of sprite sets for the basic sprite images. A sprite set is usually 36 sprite images, and the graphics for all of a ship's basic sprite sets are stored in the same PICT/rleD/rle8 resource, referred to in BaseImageID.
  • BaseXSize : the X size of each basic sprite image
  • BaseYSize: The Y size of each basic sprite image
  • BaseTransp: The inherent transparency of the basic sprite images, from 0 (no transparency) to 32 (fully transparent).

Alt frames[]

  • AltImageID: The resource ID of the alternating sprite images for this ship. Sprites from the alt sprite sets can be displayed on top of the basic sprite for the ship, cycling through each available sprite set at a rate defined in the Delay field, below. Set to zero if unused.
  • AltMaskID: The corresponding mask ID. Set to zero if unused.
  • AltSetCount: The number of sprite sets for the alternating sprites.
  • AltXSize
  • AltYSize

Engine glow[]

  • GlowImageID
  • GlowMaskID
  • GlowXSize
  • GlowYSize

Note: if you use engine glows or running lights, you must have the same number of engine glow and/or running light frames as base frames (including banking frames!) or Nova will choke.

Running lights[]

  • LightImageID
  • LightMaskID
  • LightXSize
  • LightYSize

Weapon effects[]

  • WeapImageID
  • WeapMaskID
  • WeapXSize
  • WeapYSize

Shield bubble[]

  • ShieldImageID: (shield sprite have a number of frames exactly equal to 1, FramesPer, or BaseSetCount*FramesPer)
  • ShieldMaskID
  • ShieldXSize
  • ShieldYSize

Flags[]

  • 0x0001: Extra frames in base image are used to display banking. The first set of sprites is used for level flight, the second for banking left, and the third for banking right.
  • 0x0002: Extra frames in base image are used for animated ship parts such as for folding/unfolding wings. The sprites will be cycled upon landing, taking off, and entering/exiting hyperspace.
  • 0x0004: The second set of frames in the base image are displayed when the ship is carrying at least one of its KeyCarried type ships onboard.
  • 0x0008: Extra frames in base image are shown in sequence, just like the sprites in the alternating image. The AnimDelay field has the same effect in this case.
  • 0x0010: Stop the ships' animations when it is disabled
  • 0x0020: Hide alt sprites when the ship is disabled
  • 0x0040: Hide running light sprites when the ship is disabled
  • 0x0080: Ship unfolds when firing weapons, and folds back up when not firing.
  • 0x0100: Adjust ship's visual presentation to correct for the skew caused by graphics that are rendered highly off-axis from vertical. This uses the ship's UpCompressY and DnCompressY fields to interpolate the proper sprite frame to display based on the ship's actual heading. Use this with caution, as it tends to cause very jerky ship rotation and is mostly included as a curiosity.

Note that the first four flags in this field are mutually exclusive - i.e. you can have a ship that banks, unfolds, changes appearance when it is carrying a certain other ship type, or animates in sequence, but these effects can't be combined. The only exception is that having both flags 0x0001 and 0x0002 set is treated specially - it results in a ship whose extra frames are used for banking and which always displays its engine glow when it is turning, whether or not it is actually accelerating. (This something that got thrown in at some point when I realized that it would be necessary to have in order to replicate the behavior of a certain type of ship from a certain TV show).

AnimDelay[]

The delay between frames of the sprite animations, in 30ths of a second.

WeapDecay[]

The rate at which the weapon glow sprite fades out to transparency, if applicable. 50 is a good median number - lower numbers yield slower decays.

FramesPer[]

The number of frames for one rotation of this ship - usually 36 is a good number, but larger ships can benefit from having more frames per rotation to make their turning animation look smoother. Be sure this value is equal to the actual number of frames per revolution in your images, or bad things will happen!

BlinkMode[]

0 or -1 is Ignored

  1. 1 is Square-wave blinking:
    1. BlinkValA is the delay between blinks
    2. BlinkValB is the light on-time
    3. BlinkValC is the number of blinks in a group
    4. BlinkValD is the delay between groups
  2. 2 is Triangle-wave pulsing:
    1. BlinkValA is the minimum intensity (1-32)
    2. BlinkValB is the intensity increase per frame, x100
    3. BlinkValC is the maximum intensity (1-32)
    4. BlinkValD is the intensity decrease per frame, x100
  3. 3 is Random pulsing:
    1. BlinkValA is the minimum intensity (1-32)
    2. BlinkValB is the maximum intensity (1-32)
    3. BlinkValC is the delay between intensity changes
    4. BlinkValD is ignored

Gun exit points[]

  • GunPosX
  • GunPosY
  • TurretPosX
  • TurretPosY
  • GuidedPosX
  • GuidedPosY
  • BeamPosX
  • BeamPosY

Here you can set the exit points on the ship sprite for four different classes of weapons. Note that The "Gun" "Beam" etc. designations are for convenience only, since which set of weapon exit points is used by a given weapon are defined in that weapon's ExitType field. The x & y positions of each weapon exit point are measured in pixels from the center of the ship when the ship is pointing straight up (frame index 0). See the next four fields if you need to account for any perspective corrections in your sprites.

Perspective compensation[]

  • UpCompressX
  • UpCompressY
  • DnCompressX
  • DnCompressY

If you have ship sprites that are rendered at an angle, these fields are used to correct for the ships perspective when calculating the weapon exit points (above). If the ship is pointing generally "up" (heading is 0-90 or 270-359) then UpCompressX/Y are used; if the ship is pointing generally "down" (heading is 91-269 degrees) then DnCompressX/Y are used. These values are divided by 100 and then multiplied by the rotated x & y values in the weapon exit point fields to apply a rough correction factor, so values less that 100 will bring the exit points in closer to the ship and values greater than 100 will move the exit points farther out. Experimentation is the best way to learn how this works. Values of zero are interpreted the same as a value of 100, so you can leave this field set to zero if unused.

Verticality[]

  • GunPosZ
  • TurretPosZ
  • GuidedPosZ
  • BeamPosZ

Here you can set further weapon exit point offsets in order to compensate for skew caused by the z position of a ship graphic's weapon exit point. These values are added to a shot or beam's position after the weapon exit point x & y offsets and the x & y compression factors have been applied, so the effect of these values is not scaled. Positive values here move up the screen, negative values move down the screen. (this is a lot easier to use with the editor than it is to describe)

See also[]

Nova Bible
Technical MissionsSpace ObjectsSpace Object TypesOutfitsWallpapersTech LevelsRanksSoundsPersonsDudesShipsFleetsScan Masks
Resource Types spïnshänböömchärcölrcröndëscdüdeflëtgövtjünkïntfmïsnnëbuöopsoütfpërsränkröidshïpspöbsÿstwëap
Appendixes Combat RatingLegal statusStrings
Sorted
User Interface cölrïntf • DITL • DLOG
Graphics spïnshänbööm • pict • rleD • rle8 • cicn
Sound snd
Text dëscStrings • vers
Ship spawns düdeflëtpërs
Setting gövtspöbsÿstnëbu
Commodities jünköopsröid
Gameplay chärcrönmïsnshïpoütfwëapränk