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
#лытдыбр #common_lisp
Геймджем геймджемом, а новый релиз топового опенсорсного лиспового компилятора SBCL по расписанию, поэтому сделал новый билд под винду с поддержкойпоследней нормальной версии Windows 7, и докерфайлы с SBCL и прочими важными инструментами для сборки лисповых игр 😊
Геймджем геймджемом, а новый релиз топового опенсорсного лиспового компилятора SBCL по расписанию, поэтому сделал новый билд под винду с поддержкой
GitHub
Release v2.4.10 · lockie/sbcl-w7
Unofficial automated SBCL build usable on Windows 7 - Release v2.4.10 · lockie/sbcl-w7
❤6
#лытдыбр
Тут ещё подъехали новости, в лисповых джемах всегда нужно было использовать бесплатные ассеты и ссылаться на них, а теперь ещё и добавили новое правило, что арт, сгенерированный нейросетями, тоже нельзя, потому что, видите ли, для такого арта нельзя сослаться на автора. Я во время джема придумал и сгенерил офигенную обложку к игре, но орги тут наехали, что нельзя, луддиты проклятыя. Пришлось искать человекоделанный арт и проявлять безумные навыки в Gimp, в итоге судите сами — было/стало:
Тут ещё подъехали новости, в лисповых джемах всегда нужно было использовать бесплатные ассеты и ссылаться на них, а теперь ещё и добавили новое правило, что арт, сгенерированный нейросетями, тоже нельзя, потому что, видите ли, для такого арта нельзя сослаться на автора. Я во время джема придумал и сгенерил офигенную обложку к игре, но орги тут наехали, что нельзя, луддиты проклятыя. Пришлось искать человекоделанный арт и проявлять безумные навыки в Gimp, в итоге судите сами — было/стало:
🔥8❤2👍1😁1
#лытдыбр #common_lisp
А вот и постмортем подъехал к Lispy Rogue 😊
https://telegra.ph/Lispy-Rogue-postmortem-11-05
А вот и постмортем подъехал к Lispy Rogue 😊
https://telegra.ph/Lispy-Rogue-postmortem-11-05
Telegraph
Lispy Rogue: постмортем
Наконец пришло время подвести итоги Autumn Lisp Game Jam 2024, на котором я выступил с игрой в жанре rogue-like Lispy Rogue (да, у меня всё плохо с неймингом вещей, я ж программист). Давно хотел потыкать и в этот жанр, так как в нём много интересных челленджей…
🔥8👍3
#лытдыбр #common_lisp
Ну штош, в воскресенье закончилось голосование в осеннем Lisp Game Jam '24, и по его результатам, мой рогалик на Common Lisp Lispy Rogue занял 6 место из 24, что гораздо лучше, что я ожидал, но всё равно не первое, однако в категории "Entertainment" (how enjoyable is it?) он занял таки первое место, я доволен 😊
Как я уже писал в постмортеме, попробую пофиксить ряд косяков и выступить с ещё одним, более продуманным рогаликом, в марте следующего года на джеме 7DRL ("7 day rogue like"), а пока буду готовиться к важному пока секретному игровому проекту и заодно к третьей части своего туториала по геймдеву на CL — и для того, и для другого понадобится довести до ума свою библиотеку для деревьев поведения 🎄
Ну штош, в воскресенье закончилось голосование в осеннем Lisp Game Jam '24, и по его результатам, мой рогалик на Common Lisp Lispy Rogue занял 6 место из 24, что гораздо лучше, что я ожидал, но всё равно не первое, однако в категории "Entertainment" (how enjoyable is it?) он занял таки первое место, я доволен 😊
Как я уже писал в постмортеме, попробую пофиксить ряд косяков и выступить с ещё одним, более продуманным рогаликом, в марте следующего года на джеме 7DRL ("7 day rogue like"), а пока буду готовиться к важному пока секретному игровому проекту и заодно к третьей части своего туториала по геймдеву на CL — и для того, и для другого понадобится довести до ума свою библиотеку для деревьев поведения 🎄
itch.io
Lispy Rogue by Andrew
A procedurally generated fantasy roguelike. Available for Windows, macOS, Linux
🔥22
#лытдыбр #common_lisp
Выловил тут проблему с
Пока не придумал, как нормально справиться с излишней хитрожопостью Sly, разве что притащить в зависимости либу для многопотока
Выловил тут проблему с
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), и, конечно, не мог пройти мимо него: мой вариант этого решения по сути был шаткой конструкцией из костылей, которая от мимолётного дуновения обновлений с грохотом рушилась. Начал ковырять, вроде всё получалось гораздо лучше и стройнее, чем было до этого, но я постоянно наталкивался на невиданные ранее баги — например, моя либа
В итоге только сегодня всё добил до конца, проверив новую сборку под винду на проекте Cycle of Evil. Внёс изменения в шаблон игры на Common Lisp и заодно сделал автоматическую сборку докер-образов для сборки лисповых игр, жутко люблю такие штуки — меня хлебом не корми, только дай сборку чего-нибудь автоматизировать 😊
На этой неделе произошёл nerd sniping moment, таксказатб — случайно наткнулся на докер-образ msys2-docker-experimental, который, как и я в своих сборочных скриптах для игр, решает проклятую проблему развёртывания windows-окружения для сборки под нормальной ОС (Linux), и, конечно, не мог пройти мимо него: мой вариант этого решения по сути был шаткой конструкцией из костылей, которая от мимолётного дуновения обновлений с грохотом рушилась. Начал ковырять, вроде всё получалось гораздо лучше и стройнее, чем было до этого, но я постоянно наталкивался на невиданные ранее баги — например, моя либа
cl-liballegro-nuklear
не компилировалась, но это я поправил, опять-таки упростив механизм сборки. Потом был какой-то плавающий баг в лисповом CFFI — я для него даже сделал pull request, но он внезапно починился сам 🤷 А вот в пятницу наткнулся на совершенно фантастический баг в пакете ImageMagick для MSYS2, которым я подготавливаю иконки для виндусового инсталлера — указываешь ему в качестве файла для вывода абсолютный путь, и он с какого-то рожна автоматом дописывает в начало /msys64
и, конечно, такого пути не находит и фейлится. Дабл-ю Ти Эф, как говорится, баг этот я обворкэраундил, но осадочек остался.В итоге только сегодня всё добил до конца, проверив новую сборку под винду на проекте Cycle of Evil. Внёс изменения в шаблон игры на Common Lisp и заодно сделал автоматическую сборку докер-образов для сборки лисповых игр, жутко люблю такие штуки — меня хлебом не корми, только дай сборку чего-нибудь автоматизировать 😊
xkcd
Nerd Sniping
🔥6👾1
#лытдыбр
Подписчик тут в чате подсказал, что баг с Imagemagick — и не баг вовсе, а фича, причём отключаемая; подпискичи у меня лучшие вообще 🥰
Там тоже есть тонкости, но в общем пофиксил и это в сборочном скрипте шаблона игры, ещё один шажок на пути к полностью автоматизированному люксовому гейскому космическому капитализму 😊
Подписчик тут в чате подсказал, что баг с Imagemagick — и не баг вовсе, а фича, причём отключаемая; подпискичи у меня лучшие вообще 🥰
Там тоже есть тонкости, но в общем пофиксил и это в сборочном скрипте шаблона игры, ещё один шажок на пути к полностью автоматизированному люксовому гейскому космическому капитализму 😊
GitHub
GitHub - lockie/cookiecutter-lisp-game: A cookiecutter template for Common Lisp videogame projects
A cookiecutter template for Common Lisp videogame projects - lockie/cookiecutter-lisp-game
👍7❤1
#лытдыбр #common_lisp
Тихо и незаметно вышел новый минорный релиз моего ECS-микрофреймворка на Common Lisp, cl-fast-ecs 0.6.1. В нём из изменений только более подробная документация, а вообще он должен послужить трамплином для грядущих фиксов, связанных с переопределением компонентов на лету — эта кроличья нора оказалась размером с марианскую впадину и в ней нашёлся ещё ряд багов, но конец уже виден 😁
Тихо и незаметно вышел новый минорный релиз моего ECS-микрофреймворка на Common Lisp, cl-fast-ecs 0.6.1. В нём из изменений только более подробная документация, а вообще он должен послужить трамплином для грядущих фиксов, связанных с переопределением компонентов на лету — эта кроличья нора оказалась размером с марианскую впадину и в ней нашёлся ещё ряд багов, но конец уже виден 😁
itch.io
0.6.1 release
This minor release contains a bunch of documentation improvements, check it out ! See changelog for a full list of changes...
👍11❤1
#лытдыбр
Тут с утра в понедельник включаю колонки, чтобы с утреца под музычку перед работой поковырять свою ECS-библиотеку, щёлкаю выключателем своих Microlab Solo 1, а колонки внезапно громко гудят. Покрутил в компе звук, потом вооюбще джек из него выдернул — один хрен гудят. Решил открутить заднюю крышку, посмотреть, что там, — я ж в детстве занимался электротехникой, перед тем как понять, что руки у меня растут из жопы и надо становиться программистом) Удивился оттого, насколько внутри моих легендарных дорохо-бохато Solo 1 всё дёшево — вся плата усилителя неряшливо заляпана компаундом, на самой плате не распаяны какие-то элементы, в цепи питания никакой стабилизации, тупо диодный мост и два жирных электролитических конденсатора, один из которых, как я и ожидал исходя из симптомов, от старости сверху треснул и потёк, заляпав всё уже подсохшими грязно-жёлтыми каплями электролита. Второй, скорее всего, в таком же состоянии, но на нём сверху гордая наклейка QC pass 😁
Ну и я прикинул, что могу, конечно, пойти в магазин радиодеталей, купить паяльник, припой, флюс, найти там такие же конденсаторы, аккуратно отковырять компаунд, отпаять кондёры, аккуратно впаять новые, но аккуратно — это точно не про меня. Поэтому нашёл местную контору по починке электроники за пару кварталов от своего дома и отнёс её туда, где мне сказали, что во вторник позвонят, но произошёл polako momentpolako — сербск. "не спеши", "помедленнее" , поэтому во вторник не позвонили, и в среду тоже. Сегодня выдалась хорошая солнечная погода (а вчера был и завтра будет адовый дождь с ветром 20 м/с), решил пройтись до конторы и узнать, чокак. Прихожу — а там закрыто и на двери листочек с надписью по-сербски "сегодня, 21.11, не работаем, спасибо за понимание". Видать, не одному мне погода понравилась 😂
Тут с утра в понедельник включаю колонки, чтобы с утреца под музычку перед работой поковырять свою ECS-библиотеку, щёлкаю выключателем своих Microlab Solo 1, а колонки внезапно громко гудят. Покрутил в компе звук, потом вооюбще джек из него выдернул — один хрен гудят. Решил открутить заднюю крышку, посмотреть, что там, — я ж в детстве занимался электротехникой, перед тем как понять, что руки у меня растут из жопы и надо становиться программистом) Удивился оттого, насколько внутри моих легендарных дорохо-бохато Solo 1 всё дёшево — вся плата усилителя неряшливо заляпана компаундом, на самой плате не распаяны какие-то элементы, в цепи питания никакой стабилизации, тупо диодный мост и два жирных электролитических конденсатора, один из которых, как я и ожидал исходя из симптомов, от старости сверху треснул и потёк, заляпав всё уже подсохшими грязно-жёлтыми каплями электролита. Второй, скорее всего, в таком же состоянии, но на нём сверху гордая наклейка QC pass 😁
Ну и я прикинул, что могу, конечно, пойти в магазин радиодеталей, купить паяльник, припой, флюс, найти там такие же конденсаторы, аккуратно отковырять компаунд, отпаять кондёры, аккуратно впаять новые, но аккуратно — это точно не про меня. Поэтому нашёл местную контору по починке электроники за пару кварталов от своего дома и отнёс её туда, где мне сказали, что во вторник позвонят, но произошёл polako moment
😁4🫡1
#лытдыбр #common_lisp
На той неделе ковырялся с переопределением компонентов на лету в своём ECS-фреймворке, приделал-таки либу для многопотока
Попробую при этом сохранить уже существующий интерфейс у фреймворка, и ещё и предусмотреть, чтобы не было больших проблем с производительностью, чтобы в названии
На данный момент в MOP я разбираюсь примерно никак, поэтому, собсно, скачал и начал читать фундаментальный труд по MOP — "The Art of Metaobject Protocol" Кизалиса. Надеюсь, успею за разумное время осуществить задуманное)
На той неделе ковырялся с переопределением компонентов на лету в своём ECS-фреймворке, приделал-таки либу для многопотока
bordeaux-threads
, так что с помощью глобального мьютекса, костылей и веточек оно таки заработало, но я обнаружил целую россыпь багов поменбше. Закоммитил новый код в локальную веточку и начал чинить баги помельче, но от этого начали фейлиться старые тесты. Кароч я посмотрел на свой, откровенного говоря, уже довольно фаршевый код фреймворка, психанул и решил переписать его с использованием лисповского MetaObject Protocol, потому что по сути всё вот это вот переопределение на лету там поддерживается изкоробки — благо, умные люди из лиспового коммьюнити мне уже говорили, мол, а чего MOP не используешь. Попробую при этом сохранить уже существующий интерфейс у фреймворка, и ещё и предусмотреть, чтобы не было больших проблем с производительностью, чтобы в названии
cl-fast-ecs
можно было оставить слово fast 😅На данный момент в MOP я разбираюсь примерно никак, поэтому, собсно, скачал и начал читать фундаментальный труд по MOP — "The Art of Metaobject Protocol" Кизалиса. Надеюсь, успею за разумное время осуществить задуманное)
GitLab
Fixed error on component with index redefinition (31e4ee39) · Commits · Andrew Kravchuk / cl-fast-ecs · GitLab
Blazingly fast Entity-Component-System microframework ⚡📦 https://awkravchuk.itch.io/cl-fast-ecs
🔥14
#лытдыбр
Кто по скидке себе купил четвёртую дьяблу и Last Epoch длячилла в канун нового года слежения за состоянием индустрии дьяблоклонов, тот я 😅
Кто по скидке себе купил четвёртую дьяблу и Last Epoch для
🤩4
#common_lisp
Меж тем в воскресенье в Тбилиси прошёл митап по функциональщине, на котором был крутой доклад про оптимизацию кода на Common Lisp от Димы Игнатьева, широко известного в узких кругах как— благодаря его троллингу в начале 10-х я заинтересовался лиспом)) Из доклада даже я вынес для себя что-то новое 😊
Ссылка с таймкодом вот
Меж тем в воскресенье в Тбилиси прошёл митап по функциональщине, на котором был крутой доклад про оптимизацию кода на Common Lisp от Димы Игнатьева, широко известного в узких кругах как
love5an
Ссылка с таймкодом вот
YouTube
Fprog Tbilisi Meetup (01.12.2024)
Fprog Tbilisi Meetup
* Программа мероприятия:
*** Воркшоп: формальная верификация программ с состоянием на Lean4 (@GabrielFallen)
(sic!) Воркшоп стартует в 12:00, хронометраж ~3 часа. Это практическое занятие, берите с собой компьютеры. После воркшопа…
* Программа мероприятия:
*** Воркшоп: формальная верификация программ с состоянием на Lean4 (@GabrielFallen)
(sic!) Воркшоп стартует в 12:00, хронометраж ~3 часа. Это практическое занятие, берите с собой компьютеры. После воркшопа…
👀8🔥2
#лытдыбр #common_lisp
Ну штош, сегодня дочитал The Art of MetaObject Protocol (точнее, дошёл до того места, где эта книга перетекает в нудный справочник по MOP), а вчера на практическом опыте (см. рис. 1) убедился, что скорость доступа к слотам CLOS-объектов такая же (если не выше), как и скорость доступа к слотам
> The cost is roughly 1.6 times that of an open coded structure slot accessor.
Причём, что интересно, этот вывод верен как минимум для трёх компиляторов — SBCL, CCL и Franz Allegro ©®™ CL, я проверял)
Получается, что затеянный рефакторинг моего ECS-фреймворка не только упростит его код и решит проблемы с переопределением компонентов при работающих системах, но и с точки зрения производительности не сделает хуже — по крайней мере, если отталкиваться от нарисованного у меня в голове плана этого рефакторинга; а как известно, в бою первым гибнет план боя 😅
В общем, осталось найти время и силы на то, чтобы перелопатить свой код 😁
Ну штош, сегодня дочитал The Art of MetaObject Protocol (точнее, дошёл до того места, где эта книга перетекает в нудный справочник по MOP), а вчера на практическом опыте (см. рис. 1) убедился, что скорость доступа к слотам CLOS-объектов такая же (если не выше), как и скорость доступа к слотам
defstruct
-структур, хотя я всю жизнь думал, что слоты объектов медленнее 🤯 Да даже документация к SBCL утверждает, что> The cost is roughly 1.6 times that of an open coded structure slot accessor.
Причём, что интересно, этот вывод верен как минимум для трёх компиляторов — SBCL, CCL и Franz Allegro ©®™ CL, я проверял)
Получается, что затеянный рефакторинг моего ECS-фреймворка не только упростит его код и решит проблемы с переопределением компонентов при работающих системах, но и с точки зрения производительности не сделает хуже — по крайней мере, если отталкиваться от нарисованного у меня в голове плана этого рефакторинга
В общем, осталось найти время и силы на то, чтобы перелопатить свой код 😁
🔥11👍1👌1
This media is not supported in your browser
VIEW IN TELEGRAM
#лытдыбр #common_lisp
Итак, после полутора недель возни переделал внутрянку своей ECS-библиотеки на использование CLOS-классов вместо структур для добавления возможности переопределения компонентов на лету, во время работы систем, но мёрджить пока рано — есть целый ряд мелочей, которые хотелось бы улучшить, да и тесты проходят только на двух компиляторах, SBCL и CCL, с другими нет-нет, да что-то отвалится 😅 Надеюсь, хотя бы до НГ успею зкончить эту уже поднадоевшую задачу)
Итак, после полутора недель возни переделал внутрянку своей ECS-библиотеки на использование CLOS-классов вместо структур для добавления возможности переопределения компонентов на лету, во время работы систем, но мёрджить пока рано — есть целый ряд мелочей, которые хотелось бы улучшить, да и тесты проходят только на двух компиляторах, SBCL и CCL, с другими нет-нет, да что-то отвалится 😅 Надеюсь, хотя бы до НГ успею зкончить эту уже поднадоевшую задачу)
🔥13👀1
#лытдыбр
Судя по всему, я скорее всего таки успею до НГ сделать рефакторинг своей ECS-библиотеки на CLOS-классы, тесты для всех компиляторов уже проходят 😊
Ну и по причине неизбежно надвигающихся каникул на моём мини-канале Шепелявый Щитпост 30 и 31 декабря запланирована двухдневка новогодних мемасиков, после которой канал тоже уйдёт на недельку на каникулы. Подписывайтесь, если ещё не, чтобы кекать каждый час, поедая мандаринки и шурша мишурой 😁🎄
Судя по всему, я скорее всего таки успею до НГ сделать рефакторинг своей ECS-библиотеки на CLOS-классы, тесты для всех компиляторов уже проходят 😊
Ну и по причине неизбежно надвигающихся каникул на моём мини-канале Шепелявый Щитпост 30 и 31 декабря запланирована двухдневка новогодних мемасиков, после которой канал тоже уйдёт на недельку на каникулы. Подписывайтесь, если ещё не, чтобы кекать каждый час, поедая мандаринки и шурша мишурой 😁🎄
🔥10