• 10
• 10
• 12
• 12
• 14

# Control Structure for Animating Billboards

This topic is 1884 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

## Recommended Posts

Currently I'm working on a 2.5D FPS game somewhat like Doom graphics-wise. Currently, I decided that before getting into polygon-structured enemies (especially in a Java software renderer), I would deal with 2D billboard sprites that emulate the behavior of a 3D character (animations for running sideways, forward, away, etc.), just like in Doom. I already can render sprites in the game, and have the animations face the correct way using vector math (the "look" vector).

However, now I'm thinking about how to control the animations for the enemies; an attack or death animation each have multiple frames. If i wanted to stop an attack animation because they die, would I add a simple check for that, or is there a more elegant solution? Just trying to create a good structure for the animations in my game . . .

As of right now, I have a enum called AnimationFrames, which loads each frame of an animation into a variable, so there's an AttackFrame1, AttackFrame2, etc, as well as an endFrame to know when the animation is over. The renderFrame() method sends the frame to the rendering pipeline. The nextFrame() method decides what the next frame would be (hopefully all this is self explanatory). Would I structure the animation control schemes like this:

public void attackAnimation(/*stuff*/) {
AnimationFrame frame = AnimationFrame.attackframe1;
while (!dead && frame != Frame.endFrame) {
renderFrame(frame);
frame = nextFrame(“attack”, frame);
}
}

public void dieAnimation(/*stuff*/) {
AnimationFrame frame = AnimationFrame.dieFrame1;
while (frame != Frame.endFrame) {
renderFrame(frame);
frame = nextFrame(“die”, frame);
}
}


or is there a more elegant or obvious solution? Am I missing something? I'm not even exactly sure what to ask I'm just wondering if this will work for a control scheme . . .I would start programming this into my game to test it out now, but I'm unfortunately behind code-wise than I am idea/planning-wise.

On a side note, does anyone have any useful links or books/articles that deal with controlling the flow of animation in a game? This seems to be the topic I'm currently addressing in my game.

--Chris

##### Share on other sites

The way I have seen animation implemented in game engines has been quite the same everywhere: they define a class (let's say Animation) that has a method Update(timeFromLast) and a variable animationTime. Update adds timeFromLast to animationTime and finds the current frame (or interpolation of them). There is usually also an enum that specifies the behaviour at the beginning/end; without interpolation, loop and stop are probably the only reasonable behaviour.

Drawing an animated object is simple then: you usually take the current frame from Animation in draw() function of your model and make the magic there.

##### Share on other sites

The way I have seen animation implemented in game engines has been quite the same everywhere: they define a class (let's say Animation) that has a method Update(timeFromLast) and a variable animationTime. Update adds timeFromLast to animationTime and finds the current frame (or interpolation of them). There is usually also an enum that specifies the behaviour at the beginning/end; without interpolation, loop and stop are probably the only reasonable behaviour.

Drawing an animated object is simple then: you usually take the current frame from Animation in draw() function of your model and make the magic there.

ifthen,

That makes sense But how exactly does that fit in with a character being mid-attack animation to switch to the dying animation? Does the update() method then interpolate between the current attack frame and the first dying frame, and then continue with the dying frames, or something along those lines? Should I make another method for this? I might be getting too much into the details here...

Edited by chrisprij