animate: Animation for sprites

[ bsd3, game, library ] [ Propose Tags ]

Prototypical sprite animation with type-safety.


[Skip to Readme]

Modules

[Index]

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

  • No Candidates
Versions [RSS] 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 2018-05-19T21:40:09Z
Distributions
Reverse Dependencies 4 direct, 0 indirect [details]
Downloads 6260 total (25 in the last 30 days)
Rating 2.25 (votes: 2) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2018-05-19 [all 1 reports]

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