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

По всем вопросам @awkravchuk
Download Telegram
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
#лытдыбр #common_lisp

Геймджем геймджемом, а новый релиз топового опенсорсного лиспового компилятора SBCL по расписанию, поэтому сделал новый билд под винду с поддержкой последней нормальной версии Windows 7, и докерфайлы с SBCL и прочими важными инструментами для сборки лисповых игр 😊
6
#лытдыбр

Тут ещё подъехали новости, в лисповых джемах всегда нужно было использовать бесплатные ассеты и ссылаться на них, а теперь ещё и добавили новое правило, что арт, сгенерированный нейросетями, тоже нельзя, потому что, видите ли, для такого арта нельзя сослаться на автора. Я во время джема придумал и сгенерил офигенную обложку к игре, но орги тут наехали, что нельзя, луддиты проклятыя. Пришлось искать человекоделанный арт и проявлять безумные навыки в Gimp, в итоге судите сами — было/стало:
🔥82👍1😁1
#лытдыбр #common_lisp

Ну штош, в воскресенье закончилось голосование в осеннем Lisp Game Jam '24, и по его результатам, мой рогалик на Common Lisp Lispy Rogue занял 6 место из 24, что гораздо лучше, что я ожидал, но всё равно не первое, однако в категории "Entertainment" (how enjoyable is it?) он занял таки первое место, я доволен 😊

Как я уже писал в постмортеме, попробую пофиксить ряд косяков и выступить с ещё одним, более продуманным рогаликом, в марте следующего года на джеме 7DRL ("7 day rogue like"), а пока буду готовиться к важному пока секретному игровому проекту и заодно к третьей части своего туториала по геймдеву на CL — и для того, и для другого понадобится довести до ума свою библиотеку для деревьев поведения 🎄
🔥22
#лытдыбр #common_lisp

Выловил тут проблему с TYPE-ERROR при переопределении компонента "на лету", при работающей игре, про которую писал в постмортеме (см. рис. 1). Оказывается, у меня всё чётенько работает, но штука в том, что Emacs (а, точнее, его плагин для Common Lisp Sly) больно хитрожопый — когда ты прожимаешь C-c C-c, чтобы отправить в лисп-процесс новое определение компонента, он копирует форму, на которой стоит курсор, в отдельный временный файл, и компилирует этот файл в отдельном треде, блэт. Из-за этого код работающих в игре систем запинается в тот момент, когда все функции для работы с компонентом уже переопределены на новые, а сама внутренняя структура с данными компонента у всех сущностей ещё пока старая (но будет заменена на новую буквально миллисекундами позже).

Пока не придумал, как нормально справиться с излишней хитрожопостью Sly, разве что притащить в зависимости либу для многопотока bordeaux-threads и при запуске ecs:run-systems захватывать некий глобальный мьютекс, а при переопределении компонентов проверять, что он отпущен. Такое себе решение, лишняя зависимость и производительность будет чутка хуже — туда-сюда мьютекс хватать-отпускать. Надо с ним переспать, может чего получше придумаю 😄
1
#лытдыбр #common_lisp

На этой неделе произошёл nerd sniping moment, таксказатб — случайно наткнулся на докер-образ msys2-docker-experimental, который, как и я в своих сборочных скриптах для игр, решает проклятую проблему развёртывания windows-окружения для сборки под нормальной ОС (Linux), и, конечно, не мог пройти мимо него: мой вариант этого решения по сути был шаткой конструкцией из костылей, которая от мимолётного дуновения обновлений с грохотом рушилась. Начал ковырять, вроде всё получалось гораздо лучше и стройнее, чем было до этого, но я постоянно наталкивался на невиданные ранее баги — например, моя либа cl-liballegro-nuklear не компилировалась, но это я поправил, опять-таки упростив механизм сборки. Потом был какой-то плавающий баг в лисповом CFFI — я для него даже сделал pull request, но он внезапно починился сам 🤷 А вот в пятницу наткнулся на совершенно фантастический баг в пакете ImageMagick для MSYS2, которым я подготавливаю иконки для виндусового инсталлера — указываешь ему в качестве файла для вывода абсолютный путь, и он с какого-то рожна автоматом дописывает в начало /msys64 и, конечно, такого пути не находит и фейлится. Дабл-ю Ти Эф, как говорится, баг этот я обворкэраундил, но осадочек остался.

В итоге только сегодня всё добил до конца, проверив новую сборку под винду на проекте Cycle of Evil. Внёс изменения в шаблон игры на Common Lisp и заодно сделал автоматическую сборку докер-образов для сборки лисповых игр, жутко люблю такие штуки — меня хлебом не корми, только дай сборку чего-нибудь автоматизировать 😊
🔥6👾1
#лытдыбр

Подписчик тут в чате подсказал, что баг с Imagemagick — и не баг вовсе, а фича, причём отключаемая; подпискичи у меня лучшие вообще 🥰

Там тоже есть тонкости, но в общем пофиксил и это в сборочном скрипте шаблона игры, ещё один шажок на пути к полностью автоматизированному люксовому гейскому космическому капитализму 😊
👍71