libtcod a.k.a. "The Doryen Library" is a smallish library designed for writing roguelikes. It provides a bunch of useful functionality such as:
- Text-based graphics API that doesn't suck as much as Curses or OpenGL
- Colours! (like, more than 16)
- Keyboard and mouse input
- Path finding
- Field of view
- Portable (works on linux, windows and mac)
- Lots of other stuff
This project provides Rust bindings for libtcod v1.5.2.
This project follows Semantic Versioning. Since we're
under 1.0.0
anything goes. The API can change at any time.
Indeed, it probably should change! If you have better ideas on how it make it safer or more familiar to Rust developers, please let us know.
We run rustdoc
on every new commit:
http://tomassedovic.github.io/tcod-rs/tcod/index.html
But that's mostly useful for types, function signatures, etc. We don't have much in term of actual docs, but you can always check the official ones:
http://roguecentral.org/doryen/data/libtcod/doc/1.5.1/index2.html?c=true
All raw tcod bindings are available via the tcod-sys
crate. In addition we
want to provide safe (and more in line with the Rust style) wrappers -- if you
can segfault outside of unsafe
blocks, that's a bug. The safe bindings are not
yet complete, however.
- Colors
- Console
- Most of the System layer (FPS, time, fullscreen, screenshots)
- Field of view
- Map
- Path finding (both A* and Dijkstra)
- Pseudorandom number generator (prefer the
rand
crate, except for places where the API requires the built-in generators) - Name generator
- Image toolkit
- Line toolkit
- Noise
- BSP toolkit
- Filesystem utilities
- Containers
- Compression toolkit (there will probably be a better Rust library for this)
- Everything else!
tcod-rs
depends on libtcod
so you need to build or download the official
version. The libtcod
version known to work is bundled with tcod-sys
and
Cargo will build it for you, but you need the build dependencies installed.
Alternatively, you can provide the precompiled libtcod library to override the building process. See below.
To use tcod-rs
, add this to your game's Cargo.toml
:
[dependencies]
tcod = "0.12"
Run the equivalent of:
$ sudo apt-get install gcc g++ make libsdl1.2-dev
$ cd yourgame
$ cargo build --release
$ cargo run --release
on your distro.
You can also check the official libtcod build instructions for Linux.
Make sure you have Visual Studio 2013 or later with the C++ tools option installed. You also need the "MSVC ABI" version of the Rust compiler (as opposed to the "GNU ABI" one).
Then, set up the compilation environment, make sure Rust is in your
PATH
and run Cargo:
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat amd64
set PATH=%PATH%;C:\Program Files (x86)\Rust\bin
cd yourgame
cargo build --release
cargo run --release
You have to download and install MinGW. Then, add Rust's and MinGW's bin directories to your path and compile your game:
set PATH=%PATH%;C:\Program Files (x86)\Rust\bin;C:\MinGW\bin
cd yourgame
cargo build --release
cargo run --release
You can also check the official libtcod build instructions for Windows.
- Install Homebrew
- Run:
$ brew install pkg-config sdl
$ cd yourgame
$ cargo build --release
$ cargo run --release
This is based on the instructions from Jared McFarland's roguelike tutorial.
To test this, you can clone this repository directly and run the one of the provided examples:
$ git clone https://github.com/tomassedovic/tcod-rs.git
$ cd tcod-rs
$ cargo run --example keyboard
If you don't want to build libtcod yourself, you can
instruct Cargo to override the build script. See .cargo/config
from the repository for an example.
NOTE: The official MinGW pre-built libraries (for Windows) don't seem to work with tcod-rs. We're not sure exactly why this is so we'd appreciate anyone's help!
The raw bindings were generated using
rust-bindgen and are located at
src/ffi.rs
. The safe (hopefully?) wrapper was built on top of them at
src/lib.rs
.
This is far from done, patches to missing functionality wrappers, documentation and examples are very much appreciated. If your patch (any patch -- including typos) gets accepted, you'll get a commit access if you want it.
We accept GitHub as well as regular pull requests (i.e. emailing or tweeting the URL of your feature branch works).
You can regenerate the raw bindings by running:
bindgen -builtins -l tcod include/libtcod.h -o src/ffi.rs
- Bastien Léonard, @bastienleonard, [email protected]
- Darren Kaste, @dkaste, [email protected]
- Edu Garcia, @Arcnor, [email protected]
- Guillermo Galizzi [email protected]
- Gustorn [email protected]
- Jared McFarland, @jaredonline, [email protected]
- Jonny Gilchrist, @jgilchrist
- LaylConway [email protected]
- Moredread [email protected]
- Nikita Pekin
- Paul Sanford, @pmsanford, [email protected]
- Pranz, [email protected]
- Tomas Sedovic, @tomassedovic, [email protected]
- Tomasz Barański, [email protected]
tcod-rs is licensed under WTFPL v2. See
COPYING.txt
for the full text of the license (don't worry -- it's really
short and to the point).