Libtcod — различия между версиями
Sanja (обсуждение | вклад) м |
Sanja (обсуждение | вклад) м |
||
(не показано 7 промежуточных версий 3 участников) | |||
Строка 1: | Строка 1: | ||
− | { | + | {{КарточкаБиблиотеки |
− | | | + | | версия = ver. 1.5.1 |
− | + | | дата = 29.08.2012 | |
− | | | + | | автор = J.C.Wilk |
− | + | | платформа = {{ОС|Windows}}{{ОС|Linux}}{{ОС|MacOS}} | |
− | |J.C.Wilk | + | | лицензия = Freeware |
− | | | + | | язык = C, C++, C#, Python, Common Lisp |
− | + | }} | |
− | |||
− | |||
− | |||
− | |||
− | | | ||
− | |||
− | |C, C++, C#, Python | ||
− | |||
== Краткое описание == | == Краткое описание == | ||
Продвинутая библиотека, упрощающая разработку рогаликов. Последнее время (2009 год) стала очень популярной ввиду простоты работы и хорошей функциональности. | Продвинутая библиотека, упрощающая разработку рогаликов. Последнее время (2009 год) стала очень популярной ввиду простоты работы и хорошей функциональности. | ||
== Особенности == | == Особенности == | ||
− | * | + | * '''Портируемость''' |
− | * | + | :Код игры на C/C++/Python легко переносится на Windows, Linux и Mac OS X. Существуют сторонние порты библиотеки на другие языки и платформы. |
− | * 16- | + | * '''Ввод с клавиатуры и мыши''' |
− | * | + | :Модуль работы с клавиатурой позволяет обрабатывать ввод как для пошаговых игр, так и игр в реальном времени. |
− | * | + | * '''24-битная графика''' |
− | * | + | :Не стоит ограничивать себя созданием монохромного или 16-цветного рогалика. 24 бита открывают целый мир новых возможностей визуализации. |
− | * Поддержка | + | * '''Сглаживание шрифтов''' |
− | * | + | :Шрифты со включенным сглаживанием выглядят намного лучше. Даже самые маленькие, размером 8х8. |
− | * | + | * '''Субпиксельное разрешение и обратный вызов SDL''' |
− | * Инструментарий FOV | + | :Возможен вывод пикселей вдвое меньших клетки экрана с помощью спецсимволов шрифта. Возможна также постобработка изображения с помощью SDL. |
− | * Инструментарий поиска пути | + | * '''Поддержка Юникода''' |
− | * | + | :В комплект включено несколько юникод-шрифтов. |
− | * | + | * '''Отличные генераторы псевдослучайных чисел''' |
+ | :Реализация алгоритма [http://en.wikipedia.org/wiki/Multiply-with-carry#Complementary-multiply-with-carry_generators "Complementary Multiply With Carry"] и алгоритма [http://ru.wikipedia.org/wiki/%D0%92%D0%B8%D1%85%D1%80%D1%8C_%D0%9C%D0%B5%D1%80%D1%81%D0%B5%D0%BD%D0%BD%D0%B0 Вихря Мерсенна]. | ||
+ | * '''Мощный парсер текстовых файлов настроек''' | ||
+ | :Файлы настроек пишутся в человекочитаемом формате. Имеется встроенная поддержка таких типов переменных, как: цвета, кубики и др. | ||
+ | * '''Поддержка форматов bmp и png''' | ||
+ | :В консоль можно выводить изображения в этих форматах. | ||
+ | * '''Инструментарий шума Перлина''' | ||
+ | :Реализованы симплекс шум, вейвлет шум и шум Перлина. | ||
+ | * '''Инструментарий карт высот''' | ||
+ | :В комплект входит утилита генерации карт высот. | ||
+ | * '''Инструментарий FOV''' | ||
+ | :Поддерживаются алгоритмы: | ||
+ | :* basic raycasting | ||
+ | :* recursive shadowcasting | ||
+ | :* diamond raycasting | ||
+ | :* precise permissive fov | ||
+ | :* restrictive shadowcasting a.k.a. MRPAS | ||
+ | * '''Инструментарий поиска пути''' | ||
+ | :Используются алгоритмы Дейкстры и A*. Можно применять их как на встроенной структуре данных, так и на вашей собственной через обратный вызов. | ||
+ | * '''Инструментарий BSP (Двоичное разбиение пространства)''' | ||
+ | :Для генерации подземелий, городов, областей. | ||
+ | * '''Сжатие zlib''' | ||
+ | :Нужно в основном для файлов сохранения. | ||
+ | * '''Гибкий генератор имён''' | ||
+ | :Широко настраиваемый генератор имён на базе слогов. 20 наборов слогов для генерации, в том числе кельтские, нордические, а также наборы для названий городов/областей | ||
− | == Изменения, планирующиеся на версию 1. | + | == Изменения, планирующиеся на версию 1.6.0 == |
− | * | + | * Чистка sys_sdl_c.c |
− | * | + | :Разделение кода на платформы (SDL1, SDL2) и рендеры (24-бита, 32-бита, OpenGL, GLSL). |
− | * | + | |
− | * Инструментарий | + | * Унификация консоли/изображений |
− | * | + | :В данный момент изображения могут выводиться только на консоли. Цвета внутри консоли хранятся по-особенному, в несовместимом формате с изображениями. Эта унификация позволит избавиться от этой проблемы. |
− | * | + | |
+ | * Поддержка Android | ||
+ | :Без комментариев... | ||
+ | |||
+ | == Дальнейшие релизы == | ||
+ | |||
+ | * Инструментарий упаковки | ||
+ | :Будет использоваться для размещения прямоугольных объектов на карте, предотвращая взаимное перекрытие. Вы будете вставлять объекты в упаковщик один за одним, определяя их оптимальное расположение. Если некоторый объект будет перекрываться другим объектом, то упаковщик передвинет его в ближайшее к оптимальной точке свободное место. Этот инструментарий использовался в Chronicles of Doryen для вывода "подсказок" в городах (названия магазинов и т.п.). Когда игрок бегает по округе, то текст всегда выводится так, чтобы не перекрывать @ игрока (и друг друга тоже). | ||
+ | |||
+ | * Порт Javascript ? | ||
+ | |||
+ | * Звуковой модуль | ||
+ | |||
+ | * Сетевой модуль | ||
+ | |||
+ | == Примеры == | ||
+ | |||
+ | === Hello World === | ||
+ | <source lang="cpp"> | ||
+ | #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(); //Проверяем нажатие клавиш. | ||
+ | } | ||
+ | } | ||
+ | </source> | ||
== Ссылки == | == Ссылки == |
Текущая версия на 13:09, 25 ноября 2015
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
<source lang="cpp">
- 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(); //Проверяем нажатие клавиш. }
} </source>
Ссылки
Официальный сайт
Официальный форум
Блог разработки