GameMaker Do you need to make two different sprite arrays if you have an asymmetrical character?

Hello all,

I recently got my state machine working with a sprite array, however, I come to a bit of an obstacle, my character is asymmetrical and that design choice is a large part of the game's story. So conceptually speaking, is there a better way to mirror an asymmetrical sprite ? As far as I know, there are two choices, setting image_xscale = sign(hsp) or creating two separate sprite arrays for two different directions.
 
If it's just so that the items stay in the "good" hand, you can draw them separately, but otherwise, you gotta draw as many sprites as you need angles if this bothers you.
 

Alice

Darts addict
Forum Staff
Moderator
Generally, it's not uncommon to just mirror the sprite even when the character has asymmetric features, as this trope page shows. It doesn't seem like people are overly critical of that thing - even in very blatant cases - so it probably won't hurt your game much if you do a basic image_scale = sign(hsp) thing (actually, it's a little more complex than that, because if your hsp is 0 then the sprite will disappear altogether).

Still, paying extra attention to preserve the actual placement of the features would be a nice touch and I think at least some players would appreciate that. So it depends on how much extra effort are you willing to spend to keep the asymmetric features in proper place.

In some cases, it may be possible to split the symmetric and asymmetric features into separate sprites and then stack them accordingly. E.g. if the body is generally symmetric, but the character has an eyepatch, you might want to draw the main body mirrored and draw separate-sprite eyepatch on top of it, and then again mirrored hairstyle on top of eyepatch. It makes the drawing code a little more complex, but it may save you some sprite-work, depending on how reusable are asymmetric features across different character animations. Just a thought.

So yeah, to sum up your options:
1. Just mirror the sprites.
(lazy, but not uncommon even among renowned games)
2. Make the alternative side sprites with properly placed asymmetric features.
(more effort, but I'm sure at least some people would appreciate it)
3. Composites of mirrored sprites and alternative side sprites.
(makes drawing code more complex, but may achieve effects of 2. with less spritework, depending on how prominent the asymmetric features are)
 
Top