nataraj: (Default)

Goblin Camp — попытка создать опенсорсный клон игры Dwarf Fortress. Смысл игры в управлении поселением Гоблинов (или в оригинале Гномов), при этом управления косвенного, в игре не предусмотрено прямого управления Гоблинами/Гномами, можно лишь ставить задачи в общем виде, а вот как подопечные поведут себя в результате — вопрос мастерства организации...

https://gitlab.com/dhyannataraj/goblin-camp/-/releases/v0.23

Изначально Goblin Camp написал некто Ilkka Halila, в 2010, повозился с ней годик и забросил. Мне как любителю Dwarf Fortress, Rim World и прочих симуляторов колоний с непрямым управлением, постоянно хотелось запустить в них руки, но сильно останавливала закрытость кода. Возможность писать моды есть, но тратить свое время на разбирательство в закрытом коде, я считаю неуважением к человечеству, поэтому стараюсь избегать к этого… И вот я в какой-то момент таки нашел ту программу в которую запустить руки не зазорно.

На тот момент Gobln Camp была давно заброшена и категорически не собиралась на современных дистрибутивах. Пришлось приложить не нулевое количество усилий, чтобы оно заработало и задышало.

Этот релиз закрывает проблему с работой графических тайлов. Оригинальная версия от Ilkka Halila использовала библиотеку SDL версии 1, а сейчас доступна только SDL2. Пришлось разбираться и переделывать.

Кроме того, есть у меня подозрение, что графические тайлы там вообще никогда толком не работали: они не целиком загружались. Там были существенные проблемы с вычислением координат мышки и смещения при перетаскивании.

Самый лучший баг был такой: если устроить перетаскивание и перемещать мышь строго влево-вверх, то при отпускании кнопки мыши, оно дополнительно срабатывало как однократное нажатие левой кнопки. Если был хоть раз в процессе вильнул вниз или вправо, эффекта не возникало.

Плюс современная библиотека libtcod (которая лежит в основе движка игры) на этот старый код выдает кучу deprecation-warning’ов. Начал их постепенно зачищать…

Оригинал

nataraj: (Default)
У меня внезапно случился каникулярный проект.

Вместо того чтобы нормально поработать, пока все отдыхают и от меня отстали, меня вставило, и я сделал еще один подход к попытке сборки игрушки Goblin Camp.

Это, говорят, некая подобная Dwarf Fortress игра, которую забросили в 2012 году.

Проблема с ней в том, что автор в качестве структуро-образующего фреймворка выбрал libboost, который в свою очередь оказался очень капризным и чувствительным к версиям практически всего...

Сначала я пытался подобрать дистрибутив дебиана, собрав его в chroot'е так чтобы нужная комбинация таки совпала... Я старательно пытался его ставить в разные позы с разными компиляторами, но не осилил. При этом часть проблем вылезала именно с внутренностями boost'а который был приложен к исходникам программы. Это еще в прошлый подход.

В этот подход я пришел к идее, что надо исключить из уравнения одну из переменных, или даже две. Попробовать собрать все это дело с бустом который идет в дебиане (благо к нему приложены все патчи необходимые для работы с идущим с дистрибутивом компиляторе) и выкинуть нафиг систему сборки bjam которая отдельно доставляет проблемы, и в которой вообще непонятно что происходит и собрать все нормальным cmake'ом (на который, если продолжать возиться с проектом все равно переходить)

И вот тут вот получилось. Не без проблем, libboost все равно показал себя как крайне не стабильная... мнэ... субстанция, но DuckDuckGo, StackOverfrow, strace и 83 кило упертости таки победили...

Результат экзерсисов сложил в отдельную ветку и снабдил инструкцией.

https://gitlab.com/dhyannataraj/goblin-camp/tree/cmake-build
nataraj: (Default)
С удивлением открыл для себя операцию "пробел" между строковыми константами в cpp...

Оказывается
int main()
{
 char * str =  "abcd" "efgh";
 printf("%s\n", str);
}

успешно собирается и печатает подряд буквы от a до h

Profile

nataraj: (Default)
Swami Dhyan Nataraj

July 2024

S M T W T F S
 123456
789 10111213
14151617181920
21222324252627
28293031   

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated May. 13th, 2025 09:07 pm
Powered by Dreamwidth Studios