Yikes, I fail at email forever. This was meant to go to the rest of the list.
---------- Forwarded message ---------- From: Mike <caron.m...@gmail.com> Date: Sun, Oct 10, 2010 at 11:35 PM Subject: Re: [Ohrrpgce] Sprites, animation food for thought To: Seth Hetu <seth.h...@gmail.com> (Oops, I figured it would. Thunderbird claimed the email didn't send the first two times) Anyway, yes. As I mentioned below the relevant snippet, each frame in an animation can have its own delay. deftime simply specified the default delay for that animation as a whole. -- Mike Caron -----Original Message----- From: Seth Hetu <seth.h...@gmail.com> Date: Mon, 11 Oct 2010 11:32:41 To: <ohrrpgce@lists.motherhamster.org>; <caron.m...@gmail.com> Subject: Re: [Ohrrpgce] Sprites, animation food for thought 3 times, but nevermind that. I've got a question about animations. Is it possible to add a "delay" value, which delays the next frame in the animation? Like: > <animation name="stand" deftime="1" loop="no"> > <dir dir="down"> > <frame>stand-down</frame> > </dir> > <dir dir="up" delay=3ms"> > <frame>stand-up</frame> > </dir> > <dir dir="right"> > <frame>stand-right</frame> > </dir> > <dir dir="left"> > <frame>stand-left</frame> > </dir> > </animation> Then the person remains standing for 3s longer than the other directions? The reason I ask is that I like your idea of defining the animation by "wrapping" a PNG sheet with XML. So maybe it would be possible/easy to add more tags and options to an animation to increase its power. Then, it's all described in the XML+PNG combo, which makes it really easy to edit external to the OHR. Just throwing out ideas, since your first email seemed to encourage it. Cool system overall. -->Seth On Mon, Oct 11, 2010 at 2:01 AM, Mike <caron.m...@gmail.com> wrote: > Shoot, if this email went out multiple times, I apologise. > > If not, please disregard this. > -- > Mike Caron > > -----Original Message----- > From: Mike Caron <caron.m...@gmail.com> > Date: Sun, 10 Oct 2010 13:37:53 > To: <ohrrpgce@lists.motherhamster.org> > Subject: Sprites, animation food for thought > > First off, a disclaimer: This is not an actual proposal for a data > format for the OHR. This is something I've cooked up for another project > which may or may not ever see the light of day (hopefully, it will, but > it's immaterial to this discussion). > > This is how I've implemented sprites and animations in this other project: > > First, all pixel data is stored in sprite sheets. These are PNGs that > contain all the sprites for a given on-screen entity. Technically, as I > am writing it in .NET, nothing is stopping them from being BMP or JPG or > something, but I prefer PNG for its true-colour and transparency support. > > Then, with each sprite sheet, there is an XML document that describes it: > > <spriteset xmlns="http://mike-caron.com/za" name="link1" file="link.png"> > <frame x="33" y="1" width="16" height="22" ox="8" oy="19" > name="stand-down" /> > > <frame x="3" y="31" width="16" height="22" ox="8" oy="19" > name="walk1-down" /> > <frame x="33" y="31" width="16" height="22" ox="8" oy="19" > name="walk2-down" /> > > <!-- etc. --> > > Each frame has a name, a position and size on the sheet, and an origin. > The origin is aligned up with the actual entity's origin (which, ATM is > always their (x,y) position, but that may be customizable later on) > > Then, after the frame definitions, we have the animation definitions: > > > This is mostly self explanitory. Every frame has either one or four > directions defined, depending on if the sprite has meaningful directions > (an item on the ground, for example, probably only has one direction. An > NPC, on the other hand, will have all four). > > Each frame in a direction can have a time parameter, which describes how > many ticks the frame is displayed for. deftime is just the default such > value. Obviously, as well, if loop is yes, the animation will start from > the beginning. If no, it will just stop on the last frame forever. > > Finally, every entity in the game references both a sprite sheet and an > animation. The idea is that you could change one or the other. For > example, if you get a better shield, the sprite sheet changes from > "link1" to "link2". And, obviously, the animation changes based on what > is happening in the game. > > A few notes on this structure: > > - There is no accounting for palettes. If you wanted to use a paletted > sprite, then by all means you are able, but don't expect to be able to > change that palette in game. The canonical way to add palette swaps is > to have a different sprite sheet with the same animations (and, I may > add some way to automate this. Eg, "this sprite sheet is exactly the > same as this other sprite sheet, so use those definitions") > > - There is also no way to get any fancier animations. I.e, there's no > way to automatically oscillate or go backwards or whatever. The way to > achieve these effects would be to duplicate the frames in the animation. > - I may or may not add sprite flipping. > > - The way the images are laid out on the sheet has absolutely nothing > to do with how they are animated or displayed. If you wanted the same > frame, but offset by 5 pixels or whatever, you just modify the origin. > No muss, no fuss. > > - Also, there are no inherent limitations on how large or small the > sprite is. If you want to make a 2d version of Shadow of the Colossus, > then be my guest! (just, don't expect the video card to necessarily play > along ;) > > So... yeah. Make of that what you will, I'm just adding ideas to the > pot. I am aware that this format, as is, is unsuitable for the OHR. It's > just my two cents. >_______________________________________________ > Ohrrpgce mailing list > ohrrpgce@lists.motherhamster.org > http://lists.motherhamster.org/listinfo.cgi/ohrrpgce-motherhamster.org > -- Mike Caron Tale of the Cave http://taleotc.com _______________________________________________ Ohrrpgce mailing list ohrrpgce@lists.motherhamster.org http://lists.motherhamster.org/listinfo.cgi/ohrrpgce-motherhamster.org