sprite creation

Started by
7 comments, last by ARCHIGAMER 24 years, 2 months ago
I was wondering if anyone would tell me how to make a animated 2d sprite? Thanks in advanced
I wish there was a button on my monitor to turn up the intellegince. Theres a button called 'brightness' but it doesn't work
Advertisement
You create several frames of animation, and load them in an order when you display them. That way it looks like it''s moving. It''s kind of like the way movies work (almost exactly alike).
You create several frames of animation, and load them in an order when you display them. That way it looks like it''s moving. It''s kind of like the way movies work (almost exactly alike).
You create several frames of animation, and load them in an order when you display them. That way it looks like it''s moving. It''s kind of like the way movies work (almost exactly alike).
Sorry about responding so many times, I clicked twice because it didn''t load, and then i don''t know where the third came from.
The best way to do it, is to render each image in separated files, then you can create some classes to store them and to do the animation. Take a look in the following pseudocode:

//Store the image itself. First you''ll have to create a
//function to read each image file and then store it into
//the surface

typedef struct IMAGE
{
int ID; //For identification
DDSURFACE* Image; //The bitmap data
}

//Here you should create the animation sequence

typedef struct ANIMATION
{
int ID; //For identification
//1 may be walk to left, 2 walk to
// right, etc.

char[8] Sequence; //Assuming that each animation
//will have only 8 images
IMAGE* Images; //The images for the animation
}

class CSoldierSprite
{
public:
enum MOVEMENTS {WALK_LEFT, WALK_RIGHT, JUMP};

private:

ANIMATION WalkLeft, WalkRight, Jump;
int x, y; //For screen location

public:
BOOL LoadAnimations(void); //Here you load the data
void PlayAnimation(int WhichOne); //Here you tell to
// the function to
//play your animation

}

It''s very simple, I didn''t have the time to give you some real sample, but I think you got the idea.

You can improve the code by creating only one movement for each entity (pointers to), so you can share the same images with more of one entity at the same time (for example, if you have 5 soldiers, you load the data once, then you use this data with each soldier entity).

It can be even better. You can implement some kind of script engine for the animations, so you can pass the sequences for the engine and then it will play the images according with the parameters.

If you have doubts, mail me. Will be a pleasure if I could help you.

Regards,

Raul.


Metanóia
It''s better to put them all in one file and then just change the X,Y co-ords. I normally just have all images in one long line and change the X co-ordinate. This saves on memory because you don''t have to have each images DDSurface information in ram, just one image. And loading from disk is much faster too. It also saves on the number of files you have and it more inituative than man1.bmp, man2.bmp etc etc...
Actually, putting them in seperate files is a waste and a pain. It is best to make a film strip sort of graphic and read them in and change the states. Remember to have an alpha channel because you don''t want a big block walking around with your character :-) You should make a seperate sprite format with the graphic film strip and a header and other information, if you are going to change states (ie walking, running, etc..) Anyways, enough for now.

Joe Woynillowicz
Isolation Studios
As i see you all have different ways to do this.loading from disk sounds neat then my game could be highly customizeable which has been a suggestion for my game.That''s one of the reason I used to play Re-volt where if you didnt want a car you can trash it or modify it.
thnaks for your tips
I wish there was a button on my monitor to turn up the intellegince. Theres a button called 'brightness' but it doesn't work

This topic is closed to new replies.

Advertisement