summaryrefslogtreecommitdiffhomepage
path: root/Readme.md
blob: 70b538355266a3507cea455ebec5030857221600 (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

<!-- <img align="right" src="https://user-images.githubusercontent.com/11139432/233201393-5a683fd2-6661-4af9-a332-1b9b0d5e5edb.png" width="288px">  -->

# Rodeo Kit

<img align="right" src="https://user-images.githubusercontent.com/11139432/233207951-1c804cf4-365e-44e8-849d-9fc1a4c49be1.gif">  

[API Cheatsheet](https://dev.catgirls.rodeo/rodeo_kit/cheatsheet)

[See here](https://dev.catgirls.rodeo/rodeo_kit) for more details about the goals and approach of this project.

<!-- [Rodeo Kit Example](https://github.com/realtradam/rodeo_sample_game) -->

## Short-Term Roadmap

### Rendering

- [x] Low level 2D rendering system by collecting vertices/indices and then uploading them in batches to the GPU through [BGFX](https://github.com/bkaradzic/bgfx).
- [x] Loading and drawing textures.
- [x] Default shader that allows tinting of any textures drawn.

### Input

- [x] Callback event-based input system.
- [x] Bind inputs(such as character keys) to function pointers. Once the key is pressed the function is called.
- [x] Abstract into "commands" which allows adding functions, adding multiple inputs, and assigning to "scenes" that can be enabled or disabled.  
- [X] Implementing further input abstractions by 5 categories:  
    - [x] Binary (such as keys on a keyboard, or buttons on a controller)
    - [X] Bounded Range (such as the x and y joysticks on a controller)
    - [ ] Bounded Magnitude (such as pressure sensitive triggers on a controller)
    - [x] Unbounded Range (such as the x and y mouse delta)
    - [x] Positional (such as the position of a mouse)

### Logging

- [x] Implemented logging system with 3 different levels(info, warn, error).
- [x] System allows for setting your own logging function instead if the default "print to console" is not desired.
- [ ] Option to disable specific warning levels.

### Build System

- [x] CMake build system which manages pulling dependencies from git-submodules and building them automatically as required.
- [ ] Builds for all target platforms.
    - [x] Linux.
    - [x] Web(Emscripten).
    - [ ] Windows.

### Sound

- [x] A basic system for loading sounds and music, as well as playing it.

### Documentation

- [ ] Add short descriptions above each function.
- [x] Automated static site generator for the documentation, in the style of the [Raylib Cheatsheet](https://www.raylib.com/cheatsheet/cheatsheet.html).
- [ ] Example games showing off common usages of the kit.

### Scripting Bindings

- [ ] Bindings to an embedded version of Ruby known as mruby.
- [ ] Create bindings directly to C versions of functions.
- [ ] Create comfortable API on top of the direct bindings.