summaryrefslogtreecommitdiff
path: root/README
blob: 0886740f49dc964ed39873e365995f7f4f6d5321 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
-*- org -*-

#+TITLE The Chickadee Game Development Toolkit

* About

  Chickadee is a game development toolkit for Guile Scheme.  It comes
  with built-in support for 2D/3D games using SDL and OpenGL, but is
  generic enough to be used with any I/O backend, in case you are
  writing a text adventure or want to render your Roguelike to a
  terminal!

  Here's what rendering a sprite looks like:

  #+BEGIN_SRC scheme
    (use-modules (chickadee)
                 (chickadee math vector)
                 (chickadee graphics sprite)
                 (chickadee graphics texture))

    (define sprite #f)

    (define (load)
      (set! sprite (load-image "images/chickadee.png")))

    (define (draw alpha)
      (draw-sprite sprite #v(256.0 176.0)))

    (run-game #:load load #:draw draw)
  #+END_SRC

* Features

  Chickadee has the following features:

  - Generic fixed timestep game loop
    - Plug in any input/output system!
  - Built-in SDL + OpenGL game loop implementation
    - Get started writing games quickly!
    - 2D/3D rendering engine via OpenGL
    - Keyboard/mouse/controller input via SDL
  - High-level OpenGL interface
    - Sprites
    - Shapes
    - Fonts
    - GLSL shaders
    - Tiled maps
  - Math
    - Vectors
    - Matrices
    - Quaternions
    - Axis-aligned bounding boxes
    - Easing functions
  - Scripting
    - Coroutines
    - Time-based scheduling
  - Generic A* pathfinding algorithm

* Dependencies

  - Guile >= 2.1.4
  - Guile-OpenGL >= 0.1.0
  - Guile-SDL2 >= 0.3.0

* License

  GNU GPL version 3 or later