Libtcod
Версия от 16:19, 3 апреля 2013; Sanja (обсуждение | вклад) (Обновление до актуальной версии. Изменение списка фич.)
29.08.2012 | |
---|---|
Автор | J.C.Wilk |
Лицензия | Freeware |
Платформа | |
Язык | C, C++, C#, Python, Common Lisp |
Содержание
Краткое описание
Продвинутая библиотека, упрощающая разработку рогаликов. Последнее время (2009 год) стала очень популярной ввиду простоты работы и хорошей функциональности.
Особенности
- Портативность
- Код игры на C/C++/Python легко переносится на Windows, Linux и Mac OS X. Существуют сторонние порты библиотеки на другие языки и платформы.
- Ввод с клавиатуры и мыши
- Модуль работы с клавиатурой позволяет обрабатывать ввод как для пошаговых игр, так и игр в реальном времени.
- 24-битная графика
- Не стоит ограничивать себя созданием монохромного или 16-цветного рогалика. 24 бита открывают целый мир новых возможностей визуализации.
- Сглаживание шрифтов
- Шрифты со включенным сглаживанием выглядят намного лучше. Даже самые маленькие, размером 8х8.
- Субпиксельное разрешение и обратный вызов SDL
- Возможен вывод пикселей вдвое меньших клетки экрана с помощью спецсимволов шрифта. Возможна также постобработка изображения с помощью SDL.
- Поддержка Юникода
- В комплект включено несколько юникод-шрифтов.
- Отличные генераторы псевдослучайных чисел
- Реализация алгоритма "Complementary Multiply With Carry" и алгоритма Вихря Мерсенна.
- Мощный парсер текстовых файлов настроек
- Файлы настроек пишутся в человекочитаемом формате. Имеется встроенная поддержка таких типов переменных, как: цвета, кубики и др.
- Поддержка форматов bmp и png
- В консоль можно выводить изображения в этих форматах.
- Инструментарий шума Перлина
- Реализованы симплекс шум, вейвлет шум и шум Перлина.
- Инструментарий карт высот
- В комплект входит утилита генерации карт высот.
- Инструментарий FOV
- Поддерживаются алгоритмы:
- basic raycasting
- recursive shadowcasting
- diamond raycasting
- precise permissive fov
- restrictive shadowcasting a.k.a. MRPAS
- Инструментарий поиска пути
- Используются алгоритмы Дейкстры и A*. Можно применять их как на встроенной структуре данных, так и на вашей собственной через обратный вызов.
- Инструментарий BSP (Двоичное разбиение пространства)
- Для генерации подземелий, городов, областей.
- Сжатие zlib
- Нужно в основном для файлов сохранения.
- Гибкий генератор имён
- Широко настраиваемый генератор имён на базе слогов. 20 наборов слогов для генерации, в том числе кельтские, нордические, а также наборы для названий городов/областей
Изменения, планирующиеся на версию 1.6.0
- Чистка sys_sdl_c.c
- Разделение кода на платформы (SDL1, SDL2) и рендеры (24-бита, 32-бита, OpenGL, GLSL).
- Унификация консоли/изображений
- В данный момент изображения могут выводиться только на консоли. Цвета внутри консоли хранятся по-особенному, в несовместимом формате с изображениями. Эта унификация позволит избавиться от этой проблемы.
- Поддержка Android
- Без комментариев...
Дальнейшие релизы
- Инструментарий упаковки
- Будет использоваться для размещения прямоугольных объектов на карте, предотвращая взаимное перекрытие. Вы будете вставлять объекты в упаковщик один за одним, определяя их оптимальное расположение. Если некоторый объект будет перекрываться другим объектом, то упаковщик передвинет его в ближайшее к оптимальной точке свободное место. Этот инструментарий использовался в Chronicles of Doryen для вывода "подсказок" в городах (названия магазинов и т.п.). Когда игрок бегает по округе, то текст всегда выводится так, чтобы не перекрывать @ игрока (и друг друга тоже).
- Порт Javascript ?
- Звуковой модуль
- Сетевой модуль
Примеры
Hello World
<syntaxhighlight>
- include "libtcod.hpp"
int main() {
TCODConsole::initRoot(80, 50, "test", false); //Создаем окно while (! TCODConsole::isWindowClosed()) { TCODConsole::root->clear(); //Чистим консоль TCODConsole::root->printCenter(40, 25, TCOD_BKGND_NONE, "Hello world!"); //Выводим строку "Hello World" TCODConsole::flush(); //Обновляем консоль TCODConsole::checkForKeypress(); //Проверяем нажатие клавиш. }
} </syntaxhighlight>
Ссылки
Официальный сайт
Официальный форум
Блог разработки