Libtcod

Материал из Клуб любителей рогаликов
Версия от 16:19, 3 апреля 2013; Sanja (обсуждение | вклад) (Обновление до актуальной версии. Изменение списка фич.)
Перейти к: навигация, поиск
ver. 1.5.1
29.08.2012
Автор J.C.Wilk
Лицензия Freeware
Платформа Win.gifLinux.gifMac.gif
Язык 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>

  1. 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>

Ссылки

Официальный сайт
Официальный форум
Блог разработки

Русские шрифты для библиотеки

Terminal 8x8 antialiased row order
Terminal 8x8 grayscale TCOD order
Terminal 12x12 grayscale TCOD order
Terminal 12x12 grayscal TCOD order, но с большими символами для БОЛЬШИХ монстров