#статьи
Опубликовал на хабре перевод статьи о том, как Lisp в космос летал. В целом от этой истории вайб, конечно, максимально похож на вот этот кадр
Опубликовал на хабре перевод статьи о том, как Lisp в космос летал. В целом от этой истории вайб, конечно, максимально похож на вот этот кадр
❤10
#проекты #лытдыбр
Делаю финальную вычитку первой части руководства по своему микрофреймворку cl-fast-ecs, и опять наталкиваюсь на плохие новости — какой-то долбоёб выкупил домен liballeg точка org и снёс оттуда сайт либы liballegro, которую я использую в каждом первом своём проекте. Это ж в скольких местах теперь придётся ссылку менять на нормальную 😩
Делаю финальную вычитку первой части руководства по своему микрофреймворку cl-fast-ecs, и опять наталкиваюсь на плохие новости — какой-то долбоёб выкупил домен liballeg точка org и снёс оттуда сайт либы liballegro, которую я использую в каждом первом своём проекте. Это ж в скольких местах теперь придётся ссылку менять на нормальную 😩
GitLab
Andrew Kravchuk / cl-fast-ecs · GitLab
Blazingly fast Entity-Component-System microframework ⚡📦 https://awkravchuk.itch.io/cl-fast-ecs
😢4
#лытдыбр #common_lisp
Наконец опубликовал первую часть туториала по ECS-фреймворку
Он у меня занял на порядок больше времени и сил, чем я планировал, наконец можно немношк выдохнуть
Наконец опубликовал первую часть туториала по ECS-фреймворку
cl-fast-ecs
: https://habr.com/ru/articles/767342 , вы знаете, куда насыпать апвоутов 😊Он у меня занял на порядок больше времени и сил, чем я планировал, наконец можно немношк выдохнуть
Хабр
Геймдев на Lisp. Часть 1: ECS и металингвистическая абстракция
В данной серии практических руководств мы подробно рассмотрим создание несложных 2D-игр на Common Lisp. Результатом первой части станет настроенная среда разработки и простая симуляция, отображающая...
🔥9
This media is not supported in your browser
VIEW IN TELEGRAM
#лытдыбр #проекты #common_lisp
Итак, в рамках идущего уже третий день Autumn Lisp Game Jam 2023 я наконец добил простейшее дерево поведения для персонажа вида "выбрать любого другого персонажа в области видимости, подбежать к нему и сделать ближнебойный BOINK".
Но мне не нравится то, что я написал 😅 Сами узлы дерева в рамках модели ECS у меня сейчас хранится неоптимально, приводя к большому количеству промахов по кэшу, поэтому настало время переписывать весь код, код сам себя не перепишет 😂
Итак, в рамках идущего уже третий день Autumn Lisp Game Jam 2023 я наконец добил простейшее дерево поведения для персонажа вида "выбрать любого другого персонажа в области видимости, подбежать к нему и сделать ближнебойный BOINK".
Но мне не нравится то, что я написал 😅 Сами узлы дерева в рамках модели ECS у меня сейчас хранится неоптимально, приводя к большому количеству промахов по кэшу, поэтому настало время переписывать весь код, код сам себя не перепишет 😂
🎄5💯1
#лытдыбр #проекты #common_lisp
В итоге проблему с промахами деревьев по кэшу решил опять-таки кодогенерацией — макрос
Кажется, мой девиз — "в любой непонятной ситуации кодогенерируй" 😂
В итоге проблему с промахами деревьев по кэшу решил опять-таки кодогенерацией — макрос
define-behaviour-tree
генерирует пачку вызовов макросов ecs:defcomponent
и ecs:defsystem
, которые, в свою очередь, уже генерируют вызовы обычных функций по возне с данными компонентов в массивах. Макрос этот настолько чудовищный, что простенькое тестовое дерево со скриншота SBCL компилирует больше секунды! Никогда такого не видел 😅Кажется, мой девиз — "в любой непонятной ситуации кодогенерируй" 😂
😱4👍1
#лытдыбр #проекты
Сегодня с утреца начал собирать из разрозненных фрагментов кода игру для отправки на осенний Lisp Game Jam, только с тем, чтобы с ужасом обнаружить, что у меня криво работает алгоритм поиска пути A* на пустой карте без препятствий, а именно, персонаж вместо того, чтобы идти по прямой, выделывает какие-то адские вензеля. Спустя три часа, один
Продолжу сборку финальной игры после обеда, есть даже шансы успеть сделать что-то не абсолютно кривое 😅
Сегодня с утреца начал собирать из разрозненных фрагментов кода игру для отправки на осенний Lisp Game Jam, только с тем, чтобы с ужасом обнаружить, что у меня криво работает алгоритм поиска пути A* на пустой карте без препятствий, а именно, персонаж вместо того, чтобы идти по прямой, выделывает какие-то адские вензеля. Спустя три часа, один
git bisect
и несколько миллионов нервных клеток я обнаружил тупейшую багу, которую допустил, когда одновременно копировал и оптимизировал реализацию очереди с приоритетами себе в проект (см. рис. 1).Продолжу сборку финальной игры после обеда, есть даже шансы успеть сделать что-то не абсолютно кривое 😅
🔥2🤔1
#лытдыбр #проекты #common_lisp
Штош, вот и подъехал результат моих ударных трудов прошлой недели в рамках осеннего Lisp Game Jam: Mana Break, симулятор колонии с непрямым управлением 🤪 Выглядит, соглашусь, непритязательно, — картодел из меня никакой, а на художественный вкус медведь в детстве наступил, — но зато с технической точки зрения впечатляет: в игре полтора десятка персонажей с шестью вариантами сложного многоступенчатого поведения, а FPS при этом остаётся в районе 800, и даже если сделать их не 15, а тысячу, FPS проседает до 500, чего по-прежнему более чем достаточно 😊
В общем, деревья поведения — технология крутая, но я пока только одной ножкой попробовал водичку, нужно исследовать границы применимости дальше, чем и продолжу заниматься на следующей неделе, пока нужно немношк выдохнуть)
Штош, вот и подъехал результат моих ударных трудов прошлой недели в рамках осеннего Lisp Game Jam: Mana Break, симулятор колонии с непрямым управлением 🤪 Выглядит, соглашусь, непритязательно, — картодел из меня никакой, а на художественный вкус медведь в детстве наступил, — но зато с технической точки зрения впечатляет: в игре полтора десятка персонажей с шестью вариантами сложного многоступенчатого поведения, а FPS при этом остаётся в районе 800, и даже если сделать их не 15, а тысячу, FPS проседает до 500, чего по-прежнему более чем достаточно 😊
В общем, деревья поведения — технология крутая, но я пока только одной ножкой попробовал водичку, нужно исследовать границы применимости дальше, чем и продолжу заниматься на следующей неделе, пока нужно немношк выдохнуть)
itch.io
Mana Break by Andrew
Indirect colony simulator. Available for Windows, macOS, Linux
🔥14👍1
#лытдыбр
Штош, вот и прошла неделя, как я проработал на своей новой фуллтайм работе — мечта мечтой, а денешки тоже нужны. Именно поэтому пока сделал паузу в утреннем стриминге на Twitch, думаю, на следующей неделе буду к нему потихоньку возвращаться, вместе с дальнейшей работой над своим игровым движком на Common Lisp в виде хобби.
На работе веслаю вебсервисы на питоне, и, что забавно, не далее, чем вчера, когда прикидывал в голове, как написать код двух логически похожих функций, пришёл к выводу, что в питоне страшно не хватает лисповых макросов 😅Гусары, молчать про Hylang, если я это притащу на работу, на меня все посмотрят, как на ебанутого, включая меня самого)
Штош, вот и прошла неделя, как я проработал на своей новой фуллтайм работе — мечта мечтой, а денешки тоже нужны. Именно поэтому пока сделал паузу в утреннем стриминге на Twitch, думаю, на следующей неделе буду к нему потихоньку возвращаться, вместе с дальнейшей работой над своим игровым движком на Common Lisp в виде хобби.
На работе веслаю вебсервисы на питоне, и, что забавно, не далее, чем вчера, когда прикидывал в голове, как написать код двух логически похожих функций, пришёл к выводу, что в питоне страшно не хватает лисповых макросов 😅
❤4😁3
#лытдыбр
Сегодня на утреннем стриме прикидывал, как бы получше разложить деревья поведения на модель хранения данных ECS, чтобы и работало быстро (как сейчас), и можно было создавать новые деревья в рантайме. В итоге нарисовал абсолютно шизофреничный план (см. рис. 1), прямо как тот чувак с мема с сигаретой в зубах рядом с доской, утыканной красными нитками. И только минут за пять до конца до меня дошло, что раз уж я кодогенерирую на всю голову, чем стираю грань между компалтаймом и рантаймом, мне вроде как не зашкварно вызывать
Сегодня на утреннем стриме прикидывал, как бы получше разложить деревья поведения на модель хранения данных ECS, чтобы и работало быстро (как сейчас), и можно было создавать новые деревья в рантайме. В итоге нарисовал абсолютно шизофреничный план (см. рис. 1), прямо как тот чувак с мема с сигаретой в зубах рядом с доской, утыканной красными нитками. И только минут за пять до конца до меня дошло, что раз уж я кодогенерирую на всю голову, чем стираю грань между компалтаймом и рантаймом, мне вроде как не зашкварно вызывать
eval
для создания новых функций в рантайме, что позволит мне совместить лучшее из двух миров — и рыбку съесть, и, так сказать, принять участие в культурной программе. Завтра с утра попробую всё это перевести в код 😅🔥5
#мысль_в_душе
Открою новую рубрику такой внезапной мыслью, пришедшей, пока откисал в ду́ше после йоги:
суффиксMOTHERFUCKING EVANGELION REFERENCE , потому что NG можно расшифровать как Neon Genesis 😅
Открою новую рубрику такой внезапной мыслью, пришедшей, пока откисал в ду́ше после йоги:
суффикс
-ng
в названиях некоторых опенсорсных проектов (чтобы за примером далеко не ходить, syslog-ng) — это 🤯3🤔2🤣2
#лытдыбр #common_lisp
Тут в личку в мастодоне принесли статью-реакцию на мой туториал по ECS: https://edoput.it/2023/11/19/data-oriented-clos.htmlвот уж не думал, что доживу до публичных диссов на свои статьи 😅
Статья сыроватая. Автор, сам, видимо, большой специалист в макросах, пишет, что типа всё круто, но я, во-первых, изобрёл для ECS свой язык, не являющийся Lisp (сложно спорить, это само определение DSL), и что во-вторых, я переизобрёл обновление структур данных на ходу (это тоже верно), хотя такое есть в CLOS (Common Lisp Object System). Ну и дальше теоретизирует, мол, можно сделать то же самое, но поверх CLOS с использованием MOP (MetaObject Protocol), потому что там под капотом можно заставить объекты храниться как угодно, хоть в кастомных аренах. Тут уже мне не хватает знаний для оценки его правоты — CLOS я всегда недолюбливал из-за тормознутости, а осилить MOP никогда не хватало терпения 😂
В общем, можно либо попробовать-таки занырнуть в MOP, либо спокойно положить в бэклог пунктик "переписать интерфейс с рукодельных макросов на CLOS" и сделать такое где-нибудь ближе к версии 1.0 😊
Тут в личку в мастодоне принесли статью-реакцию на мой туториал по ECS: https://edoput.it/2023/11/19/data-oriented-clos.html
Статья сыроватая. Автор, сам, видимо, большой специалист в макросах, пишет, что типа всё круто, но я, во-первых, изобрёл для ECS свой язык, не являющийся Lisp (сложно спорить, это само определение DSL), и что во-вторых, я переизобрёл обновление структур данных на ходу (это тоже верно), хотя такое есть в CLOS (Common Lisp Object System). Ну и дальше теоретизирует, мол, можно сделать то же самое, но поверх CLOS с использованием MOP (MetaObject Protocol), потому что там под капотом можно заставить объекты храниться как угодно, хоть в кастомных аренах. Тут уже мне не хватает знаний для оценки его правоты — CLOS я всегда недолюбливал из-за тормознутости, а осилить MOP никогда не хватало терпения 😂
В общем, можно либо попробовать-таки занырнуть в MOP, либо спокойно положить в бэклог пунктик "переписать интерфейс с рукодельных макросов на CLOS" и сделать такое где-нибудь ближе к версии 1.0 😊
🏆8🔥1
#лытдыбр #common_lisp
Продолжаю в свободное от работы время потихоньку ковырять на утренних стримах свой игровой движок на Common Lisp, уже почти допилил чистовую реализацию деревьев поведения, и тут столкнулся с интересным багом в ECS-фреймворке — при интерактивном переопределении компонента он удаляется с тех сущностей, где он имел место быть, даже если все слоты в компоненте остались нетронутыми. У меня про это даже есть древнее
Штош, примерный план, как это можно сделать, накидал, попробую реализовать на завтрашнем стриме 😊
Продолжаю в свободное от работы время потихоньку ковырять на утренних стримах свой игровой движок на Common Lisp, уже почти допилил чистовую реализацию деревьев поведения, и тут столкнулся с интересным багом в ECS-фреймворке — при интерактивном переопределении компонента он удаляется с тех сущностей, где он имел место быть, даже если все слоты в компоненте остались нетронутыми. У меня про это даже есть древнее
TODO
от марта сего года, потому что я поленился сразу прописать полноценное копирование данных при переопределении компонента. Этот недосмотр на самом деле сильно снижает юзабельность интерактивной разработки, с помощью которой можно продавать лисп неофитам 😅Штош, примерный план, как это можно сделать, накидал, попробую реализовать на завтрашнем стриме 😊
Twitch
awkravchuk - Twitch
Name's Andrew. I write code in Lisp. Sometimes I play Diablo.
❤4👍2
This media is not supported in your browser
VIEW IN TELEGRAM
#лытдыбр
Кажется, в номинации "краш года" есть победитель, причём с большим отрывом 😊
Этим крашем была Ника Тарасевич ❤️
Кажется, в номинации "краш года" есть победитель, причём с большим отрывом 😊
👍2❤1
#common_lisp
Буквально только что случился TASK FAILED SUCCESSFULLY. Предыстория такова: у меня есть реп, в котором через Github CI билдится версия компилятора Common Lisp SBCL с поддержкой Windows 7, последней худо-бедно юзабельной версии шиндуса. В версии 2.3.10 авторы SBCL что-то наворотили с процессом сборки, и мои хитрые сборочные скрипты сломались, а с наскока их починить не получилось, так что отложил на потом.
Решил сегодня попробовать ещё один подход к снаряду, чуть-чуть поковырялся, но опять ничего не вышло 😩 Собрался уже плюнуть, потом смотрю — версия SBCL обновилась до 2.3.11, они же каждый месяц релизы фигачат, как горячие пирожки. Дай, думаю, для порядка тоже версию бампану, один чёрт не соберётся. Не глядя пушу апдейт, собрался уже пойти смотреть подкаст с Тарасевич, смотрю — два письма от github пришло,ух клятi microsoft . В первом говорят, что извините, ваш пайплайн зафейлился, во втором — ваш новый релиз 2.3.11 готов. Оказывается:
1. Разработчики SBCL таки вправили сборочную систему на место,
2. всё скомпилировалось, но под конец github'овский билдер жиденько пукнул, не оказавшись в состоянии зааплоадить артефакт сборки куда надо,
3. но релиз с нужным файлом всё-таки создался.
Так что можно снова наслаждаться сборочками SBCL под винду 😊
Буквально только что случился TASK FAILED SUCCESSFULLY. Предыстория такова: у меня есть реп, в котором через Github CI билдится версия компилятора Common Lisp SBCL с поддержкой Windows 7, последней худо-бедно юзабельной версии шиндуса. В версии 2.3.10 авторы SBCL что-то наворотили с процессом сборки, и мои хитрые сборочные скрипты сломались, а с наскока их починить не получилось, так что отложил на потом.
Решил сегодня попробовать ещё один подход к снаряду, чуть-чуть поковырялся, но опять ничего не вышло 😩 Собрался уже плюнуть, потом смотрю — версия SBCL обновилась до 2.3.11, они же каждый месяц релизы фигачат, как горячие пирожки. Дай, думаю, для порядка тоже версию бампану, один чёрт не соберётся. Не глядя пушу апдейт, собрался уже пойти смотреть подкаст с Тарасевич, смотрю — два письма от github пришло,
1. Разработчики SBCL таки вправили сборочную систему на место,
2. всё скомпилировалось, но под конец github'овский билдер жиденько пукнул, не оказавшись в состоянии зааплоадить артефакт сборки куда надо,
3. но релиз с нужным файлом всё-таки создался.
Так что можно снова наслаждаться сборочками SBCL под винду 😊
GitHub
Releases · lockie/sbcl-w7
Unofficial automated SBCL build usable on Windows 7 - lockie/sbcl-w7
🔥4❤3🎉1
#лытдыбр
Вот уже меньше, чем через десять минут буду вести бесплатный открытый урок на платформе Otus "Unicode в C". Речь пойдёт не столько про C, сколько про низкоуровневое устройство Юникода, так что если интересно, буду рад компании 😊 Урок будет проходить тут, а посмотреть на ютубе без регистрации можно здесь.
Вот уже меньше, чем через десять минут буду вести бесплатный открытый урок на платформе Otus "Unicode в C". Речь пойдёт не столько про C, сколько про низкоуровневое устройство Юникода, так что если интересно, буду рад компании 😊 Урок будет проходить тут, а посмотреть на ютубе без регистрации можно здесь.
otus.ru
Курс Программист на С: практические навыки программирования на C для разработчиков, админов и IoT-специалистов
Вы изучите синтаксис С, основы архитектуры процессора и памяти, структуры данных, основы ассемблер. Сможете писать низкоуровневые приложения и приложения под UNIX, а также понять, как С используется в играх и веб-приложениях
👍12
#лытдыбр
Почему-то только тогда, когда наступает время собирать бумажки для вида на жительство и доказывать, что ты не верблюд, начинаешь ценить место, в котором живёшь и подмечать мелкие штришки, которые делают его очаровательным ❤️
Почему-то только тогда, когда наступает время собирать бумажки для вида на жительство и доказывать, что ты не верблюд, начинаешь ценить место, в котором живёшь и подмечать мелкие штришки, которые делают его очаровательным ❤️
👍6❤3
#лытдыбр
Отправил свою статью про ECS и металингвистическую абстракцию на конкурс хабра Технотекст 2023. Если попаду в шорт-лист, это уже будет успех 😊
Ну а в целом надо бы, конечно, вторую часть пилить, но куда уж мне там с моими бюрократическими приключениями
Отправил свою статью про ECS и металингвистическую абстракцию на конкурс хабра Технотекст 2023. Если попаду в шорт-лист, это уже будет успех 😊
🔥7🤗2😁1