Лисп в изгнании
231 subscribers
152 photos
21 videos
5 files
232 links
Авторский канал на околоайтишную тематику.

По всем вопросам @awkravchuk
Download Telegram
#лытдыбр #common_lisp

Сам поверить не могу, но я закончил первый черновик второй части туториала по геймдеву на Common Lisp 🎉 Теперь наступает нудный период редактуры и вычитывания, плюс надо наснимать скриншотов и сделать в Tiled карту, которая будет фигурировать в демо. Есть даже ненулевая вероятность уложиться в собственный с потолка взятый дедлайн (интересно, а бывают не взятые с потолка?) и опубликовать-таки его на следующей неделе)

Кстати, если кто-то хочет чуть позже помочь с вычиткой текста, милости прошу отметиться в коментах, в качестве благодарности, правда, смогу лишь упомянуть вас в конце статьи ❤️
🎉8👍3
#лытдыбр #common_lisp

О, репозиторий Quicklisp обновился, как я и предсказывал. Как я об этом узнал? Очень просто, билд дёмки для туториала начал валиться с segfault'ом, см. рис. 1.

После разбирательства стало понятно, что дело, скорее всего, не в бобине квиклиспе, а в том, что я дампил в лисп-образ память, аллоцированную через CFFI, а хрупкая сишная натура библиотеки liballegro после загрузки образа работать с такой памятью не может, но осадочек остался, несмотря на найденные ложечки 😅
🤣8👍1🎃1
#лытдыбр #common_lisp

По горячим следам после публикации туториала пофиксил багу, которую сам же и внёс в cl-tiled, когда реализовывал поддержку объектов-шаблонов, правда, она проявлялась только на уровне SAFETY 3, странно, что столько людей её репортят. Вообще количество баг-репортов в мои проекты за эти несколько дней ощутимо увеличилось, это не может не радовать 😊
🔥7
This media is not supported in your browser
VIEW IN TELEGRAM
#devlog #common_lisp

Ну штош, сегодня утром начался Autumn Lisp Game Jam 2024, который я хотел использовать как шанс попробовать себя в жанре rogue-like. Всю неделю рассматривал варианты, прочитал туториал по разработке рогаликов на Common Lisp с библиотекой tcod, но в итоге решил остановиться на "своём" стеке — liballegro, cl-fast-ecs и nuklear для гуя.

Выбрал красивый моноширинный шрифт и вот такой вот крутышный 12x12 тайлсет с огромным количеством тайлов и приятным стилем, подходящим фентезийному рогалику.

С утра думал, в каком формате хранить идентификацию отдельных тайлов (типа, как понимать, что по оффсету (100, 100) там спрайт игрока, а по оффсету (200, 200) там спрайт стены) и в итоге тоже решил остановиться на знакомых инструментах и использовать файлы тайлсета Tiled с кастомными свойствами 😅

Начал реализовывать персонажа игрока (видеозапись с его отладкой прилагается) и тут же уткнулся в вопрос того, а как, собственно, реализовывать пошаговость и разные скорости у разных персонажей. Начал шарить на RogueBasin и наткнулся на потрясающую книжку "Exploring Roguelike Games" за авторством John Harris, в 65 главе которой подробно рассматриваются эти вопросы и которую я и использую в качестве чтива перед сном 😊
🔥15👍1
#devlog #common_lisp

На второй день джема придумал, как мне кажется, изящный способ решения проблемы с пошаговостью и разными скоростями персонажей, и сделал базовые версии поведения персонажей врагов и генерации карты — тупо шёл по питоновскому Roguelike tutorial, переделывая всё в ECS парадигме, собственно, почти дошёл до третьей части)
👏10
#лытдыбр #мемасики

Оказывается, определение области видимости игрока в рогаликах — это целая наука. Чувствую себя, как в этом мемасике 😅
😁8
This media is not supported in your browser
VIEW IN TELEGRAM
#devlog #common_lisp

Итак, третий день джема пока как будто самый продуктивный. Сделал примитивную генерацию подземелья с монстрами, область видимости игрока (a.k.a FoV) и "туман войны", причём FoV, переделанный мной из питоновского кода с Roguebasin, заработал с первого раза, что крайне подозрительно 🤔😅

Также начал делать боёвку, но доделаю уже завтра, хочется сделать сразу хорошо и предусмотреть все тонкости, ближний/дальний бой, скорость атаки, возможность убежать от удара и проч. Видос текущей версии игры прилагается)
🔥15
This media is not supported in your browser
VIEW IN TELEGRAM
#devlog #common_lisp

Ого, уже четвёртый день джема, но и я безжалостно трачу всё свободное время на разработку игры 😊 Сегодня сделал клёвое окошко с текстовым логом происходящих в подземелье событий, всё как в настоящих рогаликах, и худо-бедно допилил базовую контактную боёвку, практически целиком слизав модель, параметры и формулы из Path of Exile — воистину, что я ни делаю, получается дьябла 😁

На приложенном видосе можно наблюдать, как гоблины безжалостно крошат моему персонажу лицо)
🔥13😁1
This media is not supported in your browser
VIEW IN TELEGRAM
#devlog #common_lisp

Итак, пятый день джема, половина позади, остаётся вторая половина. За сегодня пофиксил всякие мелочи, добавил возможность игроку выдавать люлей монстрам, сделал описание того, что в подземелье находится под мышиным курсором ("вы смотрите на стену", лол) и рудиментарную систему предметов — можно поднять с пола зелье здоровья, правда, после поднимания с ним пока ничего толком нельзя сделать, даже в рюкзаке порыться — собственно, начну завтра с окошка инвентаря 😊

На видео, как водится, демонстрация новых фичей 😌
👍11
This media is not supported in your browser
VIEW IN TELEGRAM
#devlog #common_lisp

Сегодня шестой день джема, а значит, уже пора потихоньку заканчивать с базовыми механиками, что я сегодня и делал 😊 Первым делом закончил с окошком инвентаря, затем реализовал такие важнейшие для приключенца предметы, как зелье здоровья и свиток фаербола, а для последнего реализовал механику прицеливания — можно выбирать место взрыва фаербола с помощью мышки, а можно и по-стариковски, с клавиатуры))
Кроме того, сделал возможность выкинуть предмет через тот же диалог инвентаря, и под вечер добил переход на следующий уровень — игра становится вполне себе играбельной, только спускаться вниз в подземелье можно до посинения, условий победы я пока не сделал, как и дальнебойных атак, механик прокачки, оружия, брони и прочих важных мелочей. Надеюсь добить все базовые механики до выходных, чтобы за последние два дня джема поработать над генерацией, балансом и прочей полировкой 💅

Как всегда, видос с новыми механиками прилагается, на этот раз почти летсплей))
🔥13💅1
#лытдыбр #common_lisp

Во время отладки новой фичи в игре случайно произошёл селф-харм 😭
😁9
#devlog #common_lisp

Штош, на седьмой день джема уже немного подвыдохся, пытаясь с утра починить пару мелких багов и так их и не выловив 😔 Из новых фичей реализовал действие "пропустить ход", управление мышью и дальнебойные атаки у мобов — на видео можно заценить, как я отлаживал свою реализацию алгоритма Брезенхема для определения линии стрельбы, а на рис. 1 видно, что под руку стрелку лучше не соваться 😁

Потом начал делать экипировку для игрока, сначала задушился, потому что написал свой самый огромный ECS-компонент за всё время использования этой парадигмы, а потом под вечер чёт второе дыхание открылось и написался очень симпатичный код (см. рис. 2), правда, добить его придётся завтра)

Заодно на завтра из важного остался A* алгоритм для мобов, возможность самому игроку атаковать дальнебойным оружием, и всяческие QoL фичи и прочая полировка. Даже есть шанс сделать в итоге что-то, за что самому не будет стыдно 😌
7👍5
This media is not supported in your browser
VIEW IN TELEGRAM
#devlog #common_lisp

И вот наступил последний день перед финишной прямой геймджема в виде выходных) Сегодня вазюкался с экипировкой персонажа игрока, чувствуя себя как в том мемасике про свидетелей иеговы, "а что дальше? — не знаю, я так далеко ещё никогда не заходил" 😁 В итоге по ходу ещё переделал боёвку и вот только что сохранил коммит на 700 строк, но всё равно остались лакуны в виде отсутствующего магического урона и главного игрока, пока не способного наносить дальнебойный урон. И переделать врагов на A* тоже не успел, надеюсь уже завтра с утреца добить всякие важные мелочи и начать приводить результат в товарный вид)

На видео очередной летсплей, в котором нормальные предметы экипировки засвечиваются на 3:13 😌
🔥11👍7
This media is not supported in your browser
VIEW IN TELEGRAM
#devlog #common_lisp

Ну чтош, предпоследним днём джема я доволен) Сделал важные штуки, типа A* у врагов и дальнего боя у игрока, доделал дофига важных элементов интерфейса — экран победы, справку и даже выбор статов для увеличения при левел-апе 💪 Кроме того, пофиксил целую россыпь мелких багов и даже логотип нарисовал шучу, мне его чятжпт нарисовал.

Из важного остаётся только добавить использование маны на свитки, а то сейчас магии, кроме них, вообще нет; магическое оружие в виде посохов и волшебных палочек, наверное, придётся убрать. А так весь завтрашний день можно потратить на балансировку всех этих фич, ну разве что если с утра пораньше встану, попробую добавить звуковые эффекты для атмосферы 👻

На видео сегодня процесс отладки A* у врагов)
6🔥6👍1
#лытдыбр #common_lisp

Лол, чёт я обмакросился, аж компилятор поломал 😅
🔥7😁1
#лытдыбр #common_lisp

А вот и результат моих трудов для осеннего Lisp Game Jam '24, процедурно-генерируемый рогалик Lispy Rogue 😁 Даже летсплей видео к нему сделал)

На полноценный девлог уже нет сил, в понедельник-вторник напишу постмортем, там много чего интересного)
13👍6🔥4