2D Animation Engines - Application Notes
Application notes for our 2D software animation engines, EGI (for frame-based animation) and AniSprite (for sprite-based animation).
EGI - application notes
- The Smallest FLIC animation player
Getting started with programming the EGI player (using the EGI API). This application note implements the smallest functional animation player that uses EGI in C, C++, Delphi and Visual Basic.
- An EGI Player in C++
Building a simple animation player with EGI in C++ (no MFC). It is not the tiniest animation player (for that see "The Smallest FLIC animation player"), but the EGIplay utility developed here is not a toy example either.
- Easy Transparent Animations with the EGI Player
Playing animations with transparent areas is one of the key features of EGI. This paper extends the simple animation player in C++ to play animations with transparent areas.
- Embedding animations in Windows Help using EGI
One feature of the Microsoft Windows Help system (WinHelp) is that it can be extended with "plug-in" DLLs. This paper describes how to embed standard or extended FLIC animations in a WinHelp .HLP file and how to invoke these animations.
- Using EGI with DirectDraw
EGI version 3+ can decode frames from a FLIC animation directly into a DirectDraw surface. This application note describes how to use this feature.
- Transparent animations on the desktop
EGI can play animations transparently over the desktop, like an "agent" or an avatar. This application note describes how to prepare animations for this feature and how to set up the player. The usage and the internals are also explained, as well as the peculiarities of the "region" functions of Microsoft Windows, and their consequences.
Most recent update: layered windows on recent versions of Microsoft Windows.
- EGI compression schemes
Details on the (lossless) compression schemes that are used by the animation compiler/player EGI: run length encoding (RLE), zero order Huffman and Burrows-Wheeler transform.
Most recent update: information on the new "frame-shift" compression type.
AniSprite - application notes
- Using transparent boards with AniSprite
One of the new features of AniSprite 2.0 is the support for transparent boards. With a transparent board, you can draw your board with all sprites over a background that was created by other means. It allows you, for example, to move 256-colour sprites on top of an RGB background image.
Most recent update: the note about a function sorely lacking from the Windows API was dropped, because Windows now provides that function.
- Collision detection in AniSprite
AniSprite 3+ supports a flexible (and quick) model for collision detection. This paper takes it to task using a simple "billiard" animation as a vehicle.
If you are interested in the kinetics of colliding balls in a two dimensional space, you are invited to this paper as well. (And, by the way, extension to 3D is trivial. This paper does not cover that, because AniSprite is 2D only.)
- AniSprite tips
This page contains several tips that exploit specific AniSprite features or tricks that show some creative use of the AniSprite toolkit. What you will find here is a hodgepodge of mostly unrelated snippets, explained in an informal style, for example: splitting a sprite and its shadow mask into two different sprites, using luma masks to simulate alpha blending, group operations, and storing pictures in resource data of a Windows program.
Most recent update: Editorial change to clarify that AniSprite does support circular links as of version 3.0 (one of the tips was written for AniSprite 2.1).