Skip to content

Vehicle Sprite Layout

spacek531 edited this page May 4, 2022 · 6 revisions

This page shows the order and angles in which the sprites for the various angles for tracked ride vehicles are laid out.

Legacy sprite groups combined multiple angles into a single sprite group, new sprite groups combine fewer angles into a single sprite group - most have a single bank and pitch which are mirrored for all permutations.

All vehicles start facing the Northeast direction. This is sprite_direction 0 (sprite_direction is used to control the vehicle's yaw). Vehicles turn clockwise as sprite_direction increases in 360/n increments where n is the sprite precision. One revolution of the vehicle with a particular pitch and roll is called a rank.

image

The order begins at the Northeast direction and rotates clockwise

The only exception to the Northeast rule is diagonal sprite groups, since no cardinally-aligned track piece uses the same slopes as the diagonal slopes. Diagonal track sprites start aligned to the diagonal (East) instead of Northeast. This is allowed because sprite_direction is divided by the precision to get the correctly-rotated sprite in each rank, and because of that a 45-degree offset is allowed when the diagonal sprite groups have a precision set to 4; if the precision is set to 8 or higher (potentially because a new track element uses the slope), the sprites must use the Northeast rule.

Every vehicle (almost) has to have its riders. Rider sprites use the same order as the vehicle they belong to, and follow directly after the vehicle's sprites. If multiple rider sprites are present, they follow each other in complete blocks of sprites: the peep sprite associated with a given vehicle sprite is found by incrementing by the total number of the vehicle sprites as many times as the peep number you want to find.

If a vehicle is animated in any way (animated, swinging, or spinning), the animation frames of a given angle are contiguous. The number of these frames is known as the base_num_frames.

image

The animation frames are contiguous for the given angle

The base_num_frames for swinging and spinning coasters are properly calculated from the flags that determine spin and swing type. The base_num_frames for animated rides is assumed to be 4 despite the animation code, and the overrideVerticalFrames flag and value must be set according to the animation type.

The below table shows all current sprite groups, their associated legacy sprite group, and the geometric angles they represent. The table is organized to represent the order the game expects. If a sprite group is unused in an object, the game continues to the next sprite group and treats that sprite group as having 0 images.

Sprite Group Default sprite precision Incline Banking Starting Yaw Offset Legacy Sprite Group Notes
slopeFlat 32 0 0 0 flat
slopes12 4 11.1026 0 0 gentleSlopes
slopes12 4 -11.1026 0 0 gentleSlopes
slopes25 32 22.2052 0 0 gentleSlopes Min precision 8 for diag steep slopes. Defaults to 4 on rides with additional spinning frames
slopes25 32 -22.2052 0 0 gentleSlopes Min precision 8 for diag steep slopes. Defaults to 4 on rides with additional spinning frames
slopes42 8 40.36 0 0 steepSlopes Min precision 8 for diag steep slopes
slopes42 8 -40.36 0 0 steepSlopes Min precision 8 for diag steep slopes
slopes60 32 58.5148 0 0 steepSlopes
slopes60 32 -58.5148 0 0 steepSlopes
slopes75 4 75 0 0 verticalSlopes
slopes75 4 -75 0 0 verticalSlopes
slopes90 32 90 0 0 verticalSlopes
slopes90 32 -90 0 0 verticalSlopes
slopes105 4 105 0 0 verticalSlopes
slopes105 4 -105 0 0 verticalSlopes
slopes120 4 120 0 0 verticalSlopes
slopes120 4 -120 0 0 verticalSlopes
slopes135 4 135 0 0 verticalSlopes
slopes135 4 -135 0 0 verticalSlopes
slopes150 4 150 0 0 verticalSlopes
slopes150 4 -150 0 0 verticalSlopes
slopes165 4 165 0 0 verticalSlopes
slopes165 4 -165 0 0 verticalSlopes
slopeInverted 4 180 0 0 verticalSlopes
slopes8 4 8.0503 0 0 diagonalSlopes Most rides have a 45-degree yaw offset since they have precision 4. Above 4, use a 0-degree yaw offset
slopes8 4 -8.0503 0 0 diagonalSlopes Most rides have a 45-degree yaw offset since they have precision 4. Above 4, use a 0-degree yaw offset
slopes16 4 16.1005 0 0 diagonalSlopes Most rides have a 45-degree yaw offset since they have precision 4. Above 4, use a 0-degree yaw offset
slopes16 4 -16.1005 0 0 diagonalSlopes Most rides have a 45-degree yaw offset since they have precision 4. Above 4, use a 0-degree yaw offset
slopes50 4 49.1035 0 0 diagonalSlopes Most rides have a 45-degree yaw offset since they have precision 4. Above 4, use a 0-degree yaw offset
slopes50 4 -49.1035 0 0 diagonalSlopes Most rides have a 45-degree yaw offset since they have precision 4. Above 4, use a 0-degree yaw offset
flatBanked22 8 0 -22.5 0 flatBanked Min precision 4 for inline twist
flatBanked22 8 0 22.5 0 flatBanked Min precision 4 for inline twist
flatBanked45 32 0 -45 0 flatBanked Min precision 4 for inline twist
flatBanked45 32 0 45 0 flatBanked Min precision 4 for inline twist
inlineTwists 4 0 -15 0 inlineTwist
inlineTwists 4 0 15 0 inlineTwist
inlineTwists 4 0 -30 0 inlineTwist
inlineTwists 4 0 30 0 inlineTwist
inlineTwists 4 0 -45 0 inlineTwist
inlineTwists 4 0 45 0 inlineTwist
inlineTwists 4 0 -60 0 inlineTwist
inlineTwists 4 0 60 0 inlineTwist
inlineTwists 4 0 -75 0 inlineTwist
inlineTwists 4 0 75 0 inlineTwist
slopes12Banked22 32 11.1026 -22.5 0 flatToGentleSlopeBankedTransitions Only rides with BankedCurveTo25Up need higher precision than 4
slopes12Banked22 32 11.1026 22.5 0 flatToGentleSlopeBankedTransitions Only rides with BankedCurveTo25Up need higher precision than 4
slopes12Banked22 32 -11.1026 -22.5 0 flatToGentleSlopeBankedTransitions Only rides with BankedCurveTo25Up need higher precision than 4
slopes12Banked22 32 -11.1026 22.5 0 flatToGentleSlopeBankedTransitions Only rides with BankedCurveTo25Up need higher precision than 4
slopes8Banked22 4 8.0503 -22.5 0 diagonalGentleSlopeBankedTransitions Most rides have a 45-degree yaw offset since they have precision 4. Above 4, use a 0-degree yaw offset
slopes8Banked22 4 8.0503 22.5 0 diagonalGentleSlopeBankedTransitions Most rides have a 45-degree yaw offset since they have precision 4. Above 4, use a 0-degree yaw offset
slopes8Banked22 4 -8.0503 -22.5 0 diagonalGentleSlopeBankedTransitions Most rides have a 45-degree yaw offset since they have precision 4. Above 4, use a 0-degree yaw offset
slopes8Banked22 4 -8.0503 22.5 0 diagonalGentleSlopeBankedTransitions Most rides have a 45-degree yaw offset since they have precision 4. Above 4, use a 0-degree yaw offset
slopes25Banked22 4 22.2052 -22.5 0 gentleSlopeBankedTransitions
slopes25Banked22 4 22.2052 22.5 0 gentleSlopeBankedTransitions
slopes25Banked22 4 -22.2052 -22.5 0 gentleSlopeBankedTransitions
slopes25Banked22 4 -22.2052 22.5 0 gentleSlopeBankedTransitions
slopes25Banked45 32 22.2052 -45 0 gentleSlopeBankedTurns
slopes25Banked45 32 22.2052 45 0 gentleSlopeBankedTurns
slopes25Banked45 32 -22.2052 -45 0 gentleSlopeBankedTurns
slopes25Banked45 32 -22.2052 45 0 gentleSlopeBankedTurns
slopes12Banked45 4 11.1026 -45 0 flatToGentleSlopeWhileBankedTransitions
slopes12Banked45 4 11.1026 45 0 flatToGentleSlopeWhileBankedTransitions
slopes12Banked45 4 -11.1026 -45 0 flatToGentleSlopeWhileBankedTransitions
slopes12Banked45 4 -11.1026 45 0 flatToGentleSlopeWhileBankedTransitions
corkscrews 4 -16.4 -15.8 2.3 corkscrews
corkscrews 4 -43.3 -34.4 14 corkscrews
corkscrews 4 -90 -45 45 corkscrews
corkscrews 4 -136.7 -34.4 76 corkscrews
corkscrews 4 -163.6 -15.8 87.7 corkscrews
corkscrews 4 16.4 15.8 2.3 corkscrews
corkscrews 4 43.3 34.4 14 corkscrews
corkscrews 4 90 45 45 corkscrews
corkscrews 4 136.7 34.4 76 corkscrews
corkscrews 4 163.6 15.8 87.7 corkscrews
corkscrews 4 -16.4 15.8 -2.3 corkscrews
corkscrews 4 -43.3 34.4 -14 corkscrews
corkscrews 4 -90 45 -45 corkscrews
corkscrews 4 -136.7 34.4 -76 corkscrews
corkscrews 4 -163.6 15.8 -87.7 corkscrews
corkscrews 4 16.4 -15.8 -2.3 corkscrews
corkscrews 4 43.3 -34.4 -14 corkscrews
corkscrews 4 90 -45 -45 corkscrews
corkscrews 4 136.7 -34.4 -76 corkscrews
corkscrews 4 163.6 -15.8 -87.7 corkscrews
restraintAnimation 4 0 0 0 restraintAnimation
restraintAnimation 4 0 0 0 restraintAnimation
restraintAnimation 4 0 0 0 restraintAnimation
curvedLiftHill 32 9.8287 0 0 curvedLiftHill

The angles were calculated with data from Sizes and angles in the game world.

Clone this wiki locally