animate: Animation for sprites

[ bsd3, game, library ] [ Propose Tags ]

Prototypical sprite animation with type-safety.


[Skip to Readme]
Versions 0.0.0, 0.1.0, 0.2.0, 0.3.0, 0.4.0, 0.5.0, 0.6.0, 0.6.1, 0.7.0
Dependencies aeson, base (>=4.7 && <5), bytestring, containers, text, vector, yaml [details]
License BSD-3-Clause
Author
Maintainer Joe Vargas
Category Game
Home page https://github.com/jxv/animate#readme
Bug tracker https://github.com/jxv/animate/issues
Source repo head: git clone https://github.com/jxv/animate
Uploaded by jxv at Sat May 19 21:40:09 UTC 2018
Distributions NixOS:0.7.0
Downloads 1224 total (32 in the last 30 days)
Rating 2.25 (votes: 2) [estimated by rule of succession]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2018-05-19 [all 1 reports]
Hackage Matrix CI

Modules

[Index]

Downloads

Maintainer's Corner

For package maintainers and hackage trustees


Readme for animate-0.7.0

[back to package description]

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...