Libtcod — различия между версиями

Материал из Клуб любителей рогаликов
Перейти к: навигация, поиск
(Обновление до актуальной версии. Изменение списка фич.)
Строка 1: Строка 1:
 
{{КарточкаБиблиотеки
 
{{КарточкаБиблиотеки
| версия = ver. 1.5.0b2
+
| версия = ver. 1.5.1
| дата = 21.01.2010
+
| дата = 29.08.2012
 
| автор = J.C.Wilk
 
| автор = J.C.Wilk
 
| платформа = {{ОС|Windows}}{{ОС|Linux}}{{ОС|MacOS}}
 
| платформа = {{ОС|Windows}}{{ОС|Linux}}{{ОС|MacOS}}
Строка 11: Строка 11:
  
 
== Особенности ==
 
== Особенности ==
* Портативность. Поддержка Windows и Linux.
+
* '''Портативность'''
* Обработка ввода с клавиатуры и мыши. Поддерживаются режимы как для пошаговой игры, так и для реалтайм.
+
:Код игры на C/C++/Python легко переносится на Windows, Linux и Mac OS X. Существуют сторонние порты библиотеки на другие языки и платформы.
* 16-битная цветовая палитра консоли.
+
* '''Ввод с клавиатуры и мыши'''
* Эффект сглаживания шрифтов
+
:Модуль работы с клавиатурой позволяет обрабатывать ввод как для пошаговых игр, так и игр в реальном времени.
* Генератор псевдослучайных чисел, основанный на очень хорошем алгоритме - [http://ru.wikipedia.org/wiki/Вихрь_Мерсенна Вихре Мерсенна].
+
* '''24-битная графика'''
* Парсер конфигурационных файлов
+
:Не стоит ограничивать себя созданием монохромного или 16-цветного рогалика. 24 бита открывают целый мир новых возможностей визуализации.
* Поддержка изображений в формате bmp и png
+
* '''Сглаживание шрифтов'''
* Генератор шума Перлина
+
:Шрифты со включенным сглаживанием выглядят намного лучше. Даже самые маленькие, размером 8х8.
* Генератор карт высот
+
* '''Субпиксельное разрешение и обратный вызов SDL'''
* Инструментарий FOV
+
:Возможен вывод пикселей вдвое меньших клетки экрана с помощью спецсимволов шрифта. Возможна также постобработка изображения с помощью SDL.
* Инструментарий поиска пути (A*)
+
* '''Поддержка Юникода'''
* Генератор подземелья
+
:В комплект включено несколько юникод-шрифтов.
* Архиватор файлов данных (zlib)
+
* '''Отличные генераторы псевдослучайных чисел'''
 +
:Реализация алгоритма [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.5.x ==
+
== Изменения, планирующиеся на версию 1.6.0 ==
* Упрощение библиотеки. Будут убраны некоторые функции. Оставят по одному алгоритму FOV и генератора шума
+
* Чистка sys_sdl_c.c
* Защита от ошибок. Отказ от позиции "а и хрен с ним, пусть вылетает". dev-билды будут напичканы assert-ами, а публичные релизы максимально защитят от вылетов
+
:Разделение кода на платформы (SDL1, SDL2) и рендеры (24-бита, 32-бита, OpenGL, GLSL).
* Субпиксельная работа с графикой. Это вчетверо увеличит разрешение выводящихся на экран изображений. И сделает более плавную картинку FOV
+
 
* Инструментарий уплотнения. Поможет решить проблему наложения одного на другое. Например, висячих подсказок для зданий в игре на бегающего рядом @
+
* Унификация консоли/изображений
* Очень гибкий генератор подземелья
+
:В данный момент изображения могут выводиться только на консоли. Цвета внутри консоли хранятся по-особенному, в несовместимом формате с изображениями. Эта унификация позволит избавиться от этой проблемы.
* Отказ от алгоритма A* в пользу алгоритма Дейкстры
+
 
 +
* Поддержка Android
 +
:Без комментариев...
 +
 
 +
== Дальнейшие релизы ==
 +
 
 +
* Инструментарий упаковки
 +
:Будет использоваться для размещения прямоугольных объектов на карте, предотвращая взаимное перекрытие. Вы будете вставлять объекты в упаковщик один за одним, определяя их оптимальное расположение. Если некоторый объект будет перекрываться другим объектом, то упаковщик передвинет его в ближайшее к оптимальной точке свободное место. Этот инструментарий использовался в Chronicles of Doryen для вывода "подсказок" в городах (названия магазинов и т.п.). Когда игрок бегает по округе, то текст всегда выводится так, чтобы не перекрывать @ игрока (и друг друга тоже).
 +
 
 +
* Порт Javascript ?
 +
 
 +
* Звуковой модуль
 +
 
 +
* Сетевой модуль
  
 
== Примеры ==
 
== Примеры ==
  
 
=== Hello World ===
 
=== Hello World ===
<pre>
+
<syntaxhighlight>
 
#include "libtcod.hpp"
 
#include "libtcod.hpp"
  
 
int main() {
 
int main() {
     TCODConsole::initRoot(80,50,"test",false);  //Создаем окно
+
     TCODConsole::initRoot(80, 50, "test", false);  //Создаем окно
 
     while (! TCODConsole::isWindowClosed()) {
 
     while (! TCODConsole::isWindowClosed()) {
 
         TCODConsole::root->clear();  //Чистим консоль
 
         TCODConsole::root->clear();  //Чистим консоль
         TCODConsole::root->printCenter(40,25,TCOD_BKGND_NONE,"Hello world!");  //Выводим строку "Hello World"
+
         TCODConsole::root->printCenter(40, 25, TCOD_BKGND_NONE, "Hello world!");  //Выводим строку "Hello World"
 
         TCODConsole::flush(); //Обновляем консоль
 
         TCODConsole::flush(); //Обновляем консоль
 
         TCODConsole::checkForKeypress(); //Проверяем нажатие клавиш.
 
         TCODConsole::checkForKeypress(); //Проверяем нажатие клавиш.
 
     }
 
     }
 
}
 
}
</pre>
+
</syntaxhighlight>
  
 
== Ссылки ==
 
== Ссылки ==

Версия 16:19, 3 апреля 2013

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, но с большими символами для БОЛЬШИХ монстров