MyNixOS website logo
Description

Animation for sprites.

Prototypical sprite animation with type-safety.

animate

Animation for sprites


animate is a general purpose animation library as it's used for graphical 2D and terminal games. Each key of an animation are left opened to custom types. This is in an effort to avoid using numbers or strings as indices and be reusable.


Example using SDL2 (and includes loading from "Paths")


Sprite Information

Sprite loaders are provided but aren't required. While the loaders are opininated compared to the rest of the library, they aren't bound to any graphics library. And many pieces are left exposed if you wish piece together some other variation.

The YAML (and JSON) files describe very typical sprite information:

# File path of spritesheet
image: "dino.png"

# Colorkey for transparency
# Optional: It's a tuple of [Red, Green, Blue] between 0-255 values.
alpha: [255, 0, 255]

# Clip is a portion of the sprite sheet
# Optional: The offset is optional.
# [x, y, width, height]
# [x, y, width, height, offsetX, offsetY] 

clips:
# Idle                      # index
- [  0, 0, 48, 48]          # 0
- [ 48, 0, 48, 48]          # 1
- [ 96, 0, 48, 48, 24, 42]  # 2
- [144, 0, 48, 48, 24, 42]  # 3

# Move
- [192, 0, 48, 48, 24, 42]  # 4
- [240, 0, 48, 48, 24, 42]  # 5
- [288, 0, 48, 48, 24, 42]  # 6
- [336, 0, 48, 48, 24, 42]  # 7
- [384, 0, 48, 48, 24, 42]  # 8
- [432, 0, 48, 48, 24, 42]  # 9

# And so on...

# Animation frames are defined by the clip indices and delay time for each clip
animations:
  Idle:
  # [index, delay (seconds)]
  - [0, 0.2]
  - [1, 0.2]
  - [2, 0.2]
  - [3, 0.2]

  Move:
  - [4, 0.01]
  - [5, 0.01]
  - [6, 0.01]
  - [7, 0.01]
  - [8, 0.01]
  - [9, 0.01]

  # And so on...
Metadata

Version

0.7.0

Platforms (77)

    Darwin
    FreeBSD
    Genode
    GHCJS
    Linux
    MMIXware
    NetBSD
    none
    OpenBSD
    Redox
    Solaris
    WASI
    Windows
Show all
  • aarch64-darwin
  • aarch64-freebsd
  • aarch64-genode
  • aarch64-linux
  • aarch64-netbsd
  • aarch64-none
  • aarch64-windows
  • aarch64_be-none
  • arm-none
  • armv5tel-linux
  • armv6l-linux
  • armv6l-netbsd
  • armv6l-none
  • armv7a-darwin
  • armv7a-linux
  • armv7a-netbsd
  • armv7l-linux
  • armv7l-netbsd
  • avr-none
  • i686-cygwin
  • i686-darwin
  • i686-freebsd
  • i686-genode
  • i686-linux
  • i686-netbsd
  • i686-none
  • i686-openbsd
  • i686-windows
  • javascript-ghcjs
  • loongarch64-linux
  • m68k-linux
  • m68k-netbsd
  • m68k-none
  • microblaze-linux
  • microblaze-none
  • microblazeel-linux
  • microblazeel-none
  • mips-linux
  • mips-none
  • mips64-linux
  • mips64-none
  • mips64el-linux
  • mipsel-linux
  • mipsel-netbsd
  • mmix-mmixware
  • msp430-none
  • or1k-none
  • powerpc-netbsd
  • powerpc-none
  • powerpc64-linux
  • powerpc64le-linux
  • powerpcle-none
  • riscv32-linux
  • riscv32-netbsd
  • riscv32-none
  • riscv64-linux
  • riscv64-netbsd
  • riscv64-none
  • rx-none
  • s390-linux
  • s390-none
  • s390x-linux
  • s390x-none
  • vc4-none
  • wasm32-wasi
  • wasm64-wasi
  • x86_64-cygwin
  • x86_64-darwin
  • x86_64-freebsd
  • x86_64-genode
  • x86_64-linux
  • x86_64-netbsd
  • x86_64-none
  • x86_64-openbsd
  • x86_64-redox
  • x86_64-solaris
  • x86_64-windows