Animations Part 1 – Sprite-sheets

November 17th, 2011 by


Our engine supports 3 types of animations: animations from code, sprite-sheet animations and skeletal animations. The idea of the first system is to allows programmers to define simple animations like changing a value over time.
Sprite-sheet animations are simple animations that show a different image every so many milliseconds. This type of animations allows artists to paint each frame of the animation to create super complex animations. But it also takes much more time to create smooth animations because an artists has to create a lot of different images to make the animation look smooth. This is where the third system comes in.
Skeletal animations are probably the most complex animations. With this system an artists creates a skeleton consisting of bones, attaches sprites to each bone and then animates the bones. Then the artist creates snapshots for the skeleton at certain moments in time and the system interpolates between these snapshots. Because of this interpolation the animation looks perfectly smooth.

In this 3 part blog I will elaborate on each of the systems. I will describe how they work and I will show you how we have supported our artists with the tools they require. I will start with the simplest system namely sprite-sheet animations, then I will continue with animations from code and last but not least I will describe skeletal animations.

So let’s get started

Particles

October 27th, 2011 by

Nowadays almost all games feature some form of particle systems. Particle systems are simple effects that add enormous detail to a game. Particle systems are used to model effects that are otherwise very hard to model. Think of things like explosions, fire, portals, sparks, etc. Ronimo’s upcomming game Awesomenauts is packed with particle effects and it really adds to the feel of the game.

We are also plan to use a lot of particle effects in our game to simulate things like campfires, smoke, wind blowing, butterflies, dirt falling of things and stuff like that.

For a previous project I also created particle systems. The system worked beautifully from a programmers perspective. I pulled all optimization techniques from my bag of optimization techniques; from being task based multithreaded to very ugly pointer hacks (which can still be beautiful). However, in the end the system was way to complicated for our artist (Adriaan). Mostly because he had to modify a XML file, rerun the application and see if the changes he made looked good, this took way to much time. Here is a screenshot of the end result:

Creating a particle effect requires a lot of itererations and therefor doing a single iteration has to be fast. Very fast. Ideally, the way to do this is by using a WYSIWYG editor. So I went looking around for what is available on the webs. There are quite a few good particle system engines available like Mercury Particle EngineParticle Universe and the particle system in Ogre3D. Mercury Particle Engine is a great library for XNA but it lacked a lot of features we were looking for (emitters emitting emitters for example). In the end I decided I’d build the system myself simply because I could very easily integrate it in our technology and support all the features we want. I have also build a WYSIWYG editor so our artists can create these effects in a super short time. All in all it took me about a week to create the system and the tool (although its not completely finished). Anyway here are some screenshots from simple particle systems created with the editor and one of a particle systems in the editor.

That’s all folks! Let me know what you think! :)

– Bas