#лытдыбр #common_lisp
Сам поверить не могу, но я закончил первый черновик второй части туториала по геймдеву на Common Lisp 🎉 Теперь наступает нудный период редактуры и вычитывания, плюс надо наснимать скриншотов и сделать в Tiled карту, которая будет фигурировать в демо. Есть даже ненулевая вероятность уложиться в собственный с потолка взятый дедлайн(интересно, а бывают не взятые с потолка?) и опубликовать-таки его на следующей неделе)
Кстати, если кто-то хочет чуть позже помочь с вычиткой текста, милости прошу отметиться в коментах, в качестве благодарности, правда, смогу лишь упомянуть вас в конце статьи ❤️
Сам поверить не могу, но я закончил первый черновик второй части туториала по геймдеву на Common Lisp 🎉 Теперь наступает нудный период редактуры и вычитывания, плюс надо наснимать скриншотов и сделать в Tiled карту, которая будет фигурировать в демо. Есть даже ненулевая вероятность уложиться в собственный с потолка взятый дедлайн
Кстати, если кто-то хочет чуть позже помочь с вычиткой текста, милости прошу отметиться в коментах, в качестве благодарности, правда, смогу лишь упомянуть вас в конце статьи ❤️
🎉8👍3
#лытдыбр #common_lisp
О, репозиторий Quicklisp обновился, как я и предсказывал. Как я об этом узнал? Очень просто, билд дёмки для туториала начал валиться с segfault'ом, см. рис. 1.
После разбирательства стало понятно, что дело, скорее всего, не вбобине квиклиспе, а в том, что я дампил в лисп-образ память, аллоцированную через CFFI, а хрупкая сишная натура библиотеки
О, репозиторий Quicklisp обновился, как я и предсказывал. Как я об этом узнал? Очень просто, билд дёмки для туториала начал валиться с segfault'ом, см. рис. 1.
После разбирательства стало понятно, что дело, скорее всего, не в
liballegro
после загрузки образа работать с такой памятью не может, но осадочек остался, несмотря на найденные ложечки 😅🤣8👍1🎃1
#лытдыбр #common_lisp
Наконец опубликовал вторую часть туториала по геймдеву на Common Lisp. Вы знаете, куда ставить плюсики 😊
Наконец опубликовал вторую часть туториала по геймдеву на Common Lisp. Вы знаете, куда ставить плюсики 😊
Хабр
Геймдев на Lisp. Часть 2: подземелья и интерфейсы
В первой части мы познакомились с архитектурным паттерном Entity-Component-System, часто используемым в разработке игр, и металингвистической парадигмой программирования, заключающейся в построении и...
🔥20
#лытдыбр #common_lisp
По горячим следам после публикации туториала пофиксил багу, которую сам же и внёс в
По горячим следам после публикации туториала пофиксил багу, которую сам же и внёс в
cl-tiled
, когда реализовывал поддержку объектов-шаблонов, правда, она проявлялась только на уровне SAFETY 3
, странно, что столько людей её репортят. Вообще количество баг-репортов в мои проекты за эти несколько дней ощутимо увеличилось, это не может не радовать 😊GitHub
Fixed type mismatch loading tile objects by lockie · Pull Request #38 · Zulu-Inuoe/cl-tiled
Hey! This tiny PR fixes SBCL warning that got thrown on high SAFETY settings when loading tile objects (it's been reported here).
🔥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, но в итоге решил остановиться на "своём" стеке —
Выбрал красивый моноширинный шрифт и вот такой вот крутышный 12x12 тайлсет с огромным количеством тайлов и приятным стилем, подходящим фентезийному рогалику.
С утра думал, в каком формате хранить идентификацию отдельных тайлов (типа, как понимать, что по оффсету (100, 100) там спрайт игрока, а по оффсету (200, 200) там спрайт стены) и в итоге тоже решил остановиться на знакомых инструментах и использовать файлы тайлсета Tiled с кастомными свойствами 😅
Начал реализовывать персонажа игрока (видеозапись с его отладкой прилагается) и тут же уткнулся в вопрос того, а как, собственно, реализовывать пошаговость и разные скорости у разных персонажей. Начал шарить на RogueBasin и наткнулся на потрясающую книжку "Exploring Roguelike Games" за авторством John Harris, в 65 главе которой подробно рассматриваются эти вопросы и которую я и использую в качестве чтива перед сном 😊
Ну штош, сегодня утром начался 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 парадигме, собственно, почти дошёл до третьей части)
На второй день джема придумал, как мне кажется, изящный способ решения проблемы с пошаговостью и разными скоростями персонажей, и сделал базовые версии поведения персонажей врагов и генерации карты — тупо шёл по питоновскому 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, заработал с первого раза, что крайне подозрительно 🤔😅
Также начал делать боёвку, но доделаю уже завтра, хочется сделать сразу хорошо и предусмотреть все тонкости, ближний/дальний бой, скорость атаки, возможность убежать от удара и проч. Видос текущей версии игры прилагается)
Итак, третий день джема пока как будто самый продуктивный. Сделал примитивную генерацию подземелья с монстрами, область видимости игрока (a.k.a FoV) и "туман войны", причём FoV, переделанный мной из питоновского кода с Roguebasin, заработал с первого раза, что крайне подозрительно 🤔😅
Также начал делать боёвку, но доделаю уже завтра, хочется сделать сразу хорошо и предусмотреть все тонкости, ближний/дальний бой, скорость атаки, возможность убежать от удара и проч. Видос текущей версии игры прилагается)
🔥15
This media is not supported in your browser
VIEW IN TELEGRAM
#devlog #common_lisp
Ого, уже четвёртый день джема, но и я безжалостно трачу всё свободное время на разработку игры 😊 Сегодня сделал клёвое окошко с текстовым логом происходящих в подземелье событий, всё как в настоящих рогаликах, и худо-бедно допилил базовую контактную боёвку, практически целиком слизав модель, параметры и формулы из Path of Exile — воистину, что я ни делаю, получается дьябла 😁
На приложенном видосе можно наблюдать, как гоблины безжалостно крошат моему персонажу лицо)
Ого, уже четвёртый день джема, но и я безжалостно трачу всё свободное время на разработку игры 😊 Сегодня сделал клёвое окошко с текстовым логом происходящих в подземелье событий, всё как в настоящих рогаликах, и худо-бедно допилил базовую контактную боёвку, практически целиком слизав модель, параметры и формулы из 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
#devlog #common_lisp
Штош, на седьмой день джема уже немного подвыдохся, пытаясь с утра починить пару мелких багов и так их и не выловив 😔 Из новых фичей реализовал действие "пропустить ход", управление мышью и дальнебойные атаки у мобов — на видео можно заценить, как я отлаживал свою реализацию алгоритма Брезенхема для определения линии стрельбы, а на рис. 1 видно, что под руку стрелку лучше не соваться 😁
Потом начал делать экипировку для игрока, сначала задушился, потому что написал свой самый огромный ECS-компонент за всё время использования этой парадигмы, а потом под вечер чёт второе дыхание открылось и написался очень симпатичный код (см. рис. 2), правда, добить его придётся завтра)
Заодно на завтра из важного остался A* алгоритм для мобов, возможность самому игроку атаковать дальнебойным оружием, и всяческие QoL фичи и прочая полировка. Даже есть шанс сделать в итоге что-то, за что самому не будет стыдно 😌
Штош, на седьмой день джема уже немного подвыдохся, пытаясь с утра починить пару мелких багов и так их и не выловив 😔 Из новых фичей реализовал действие "пропустить ход", управление мышью и дальнебойные атаки у мобов — на видео можно заценить, как я отлаживал свою реализацию алгоритма Брезенхема для определения линии стрельбы, а на рис. 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 😌
И вот наступил последний день перед финишной прямой геймджема в виде выходных) Сегодня вазюкался с экипировкой персонажа игрока, чувствуя себя как в том мемасике про свидетелей иеговы, "а что дальше? — не знаю, я так далеко ещё никогда не заходил" 😁 В итоге по ходу ещё переделал боёвку и вот только что сохранил коммит на 700 строк, но всё равно остались лакуны в виде отсутствующего магического урона и главного игрока, пока не способного наносить дальнебойный урон. И переделать врагов на A* тоже не успел, надеюсь уже завтра с утреца добить всякие важные мелочи и начать приводить результат в товарный вид)
На видео очередной летсплей, в котором нормальные предметы экипировки засвечиваются на 3:13 😌
🔥11👍7
This media is not supported in your browser
VIEW IN TELEGRAM
#devlog #common_lisp
Ну чтош, предпоследним днём джема я доволен) Сделал важные штуки, типа A* у врагов и дальнего боя у игрока, доделал дофига важных элементов интерфейса — экран победы, справку и даже выбор статов для увеличения при левел-апе 💪 Кроме того, пофиксил целую россыпь мелких багов и даже логотип нарисовалшучу, мне его чятжпт нарисовал .
Из важного остаётся только добавить использование маны на свитки, а то сейчас магии, кроме них, вообще нет; магическое оружие в виде посохов и волшебных палочек, наверное, придётся убрать. А так весь завтрашний день можно потратить на балансировку всех этих фич, ну разве что если с утра пораньше встану, попробую добавить звуковые эффекты для атмосферы 👻
На видео сегодня процесс отладки A* у врагов)
Ну чтош, предпоследним днём джема я доволен) Сделал важные штуки, типа A* у врагов и дальнего боя у игрока, доделал дофига важных элементов интерфейса — экран победы, справку и даже выбор статов для увеличения при левел-апе 💪 Кроме того, пофиксил целую россыпь мелких багов и даже логотип нарисовал
Из важного остаётся только добавить использование маны на свитки, а то сейчас магии, кроме них, вообще нет; магическое оружие в виде посохов и волшебных палочек, наверное, придётся убрать. А так весь завтрашний день можно потратить на балансировку всех этих фич, ну разве что если с утра пораньше встану, попробую добавить звуковые эффекты для атмосферы 👻
На видео сегодня процесс отладки A* у врагов)
❤6🔥6👍1
#лытдыбр #common_lisp
А вот и результат моих трудов для осеннего Lisp Game Jam '24, процедурно-генерируемый рогалик Lispy Rogue 😁 Даже летсплей видео к нему сделал)
На полноценный девлог уже нет сил, в понедельник-вторник напишу постмортем, там много чего интересного)
А вот и результат моих трудов для осеннего Lisp Game Jam '24, процедурно-генерируемый рогалик Lispy Rogue 😁 Даже летсплей видео к нему сделал)
На полноценный девлог уже нет сил, в понедельник-вторник напишу постмортем, там много чего интересного)
itch.io
Lispy Rogue by Andrew
A procedurally generated fantasy roguelike. Available for Windows, macOS, Linux
❤13👍6🔥4