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

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

Ну штош, отболев традиционную зимнюю ОРВИ, я наконец добил проект, который пилил пол-февраля, необходимый для отчётов об ошибках в играх: окошко "Hey guys, we got a big error here" со стек-трейсом — это, конечно, прикольная пасхалка, но рядовой пользователь никогда в жизни не будет его скриншотить, а тем более ещё искать, куда отправить. Шынмера для таких целей запилила целое своё серверное приложение по имени Feedback и клиент к нему в рамках своего движка Trial, увидев которые, мой внутренний software engineer немножко умер внутри, потому что же уже миллион лет существует готовое решение под названием Sentry, специально предназначенное для сбора ошибок в программах на огромном количестве языков, которое можно селф-хостить, а можно использовать в облаке бесплатную версию с довольно щедрыми лимитами.

Более того, я даже нашёл неофициальный клиент для Sentry на Common Lisp, под названием cl-sentry-client, но убедился, что для сдампанных в выполняемые файлы Lisp-программ он показывает довольно бесполезные стек-трейсы, а это чуть ли не главное, что нужно для понимания сути ошибки. Посмотрел ему под капот, и немножко умер внутри ещё раз — он, на секундочку, тащит зависимостью Swank, лисповую часть плагина к Emacs для работы на Common Lisp, просто для того, чтобы получать стек-трейсы (но всё равно обсирается, потому что расположение исходных файлов при сборке не обязательно совпадает с расположением исходных файлов на машине, где программу запускают, их там вообще скорее всего не будет). Поэтому я затеял проект по написанию полноценного Sentry-клиента на Common Lisp, который бы сохранял прямо в сдампанном образе все нужные исходники и заодно поддерживал бы нужные мне фичи протокола Sentry, вроде отправки файлов и пользовательских комментариев. Прошу любить, жаловать и ставить звёздочки: lisp-sentry 😊

Теперь ничто не мешает приступить на выходных к джему 7DRL, который начнётся уже в эту полночь по UTC 🙈
🔥16👍4
У всех есть дома пакет с пакетами, а это закреп с закрепами 😅

#видео | Открытый урок "Функциональщина на C"
#статьи | ARPG на Scheme
#проекты | Roadmap d2clone-kit
#видео | Мой Twitch
#видео | Why Lisp?
#соцсети | Мой Mastodon
#видео | Волосатое лексическое окружение
#проекты | Библиотека cl-fast-ecs
#видео | Пишем свой Лисп
#проекты | Курс Clojure Developer
#проекты | SBCL с поддержкой Windows 7
#проекты | Шаблон игры на Common Lisp
#статьи | Common Lisp в разработке игр
#проекты | Игра Thoughtbound
#видео | Онлайн Lisp митап #2
#видео | Паттерн ECS и металингвистическая абстракция
#видео | Benchmarking cl-fast-ecs performance
#видео | When the code works the first time
#проекты | Библиотека cl-liballegro-nuklear
#статьи | LISP в космосе
#статьи | Геймдев на Lisp. Часть 1
#проекты | Игра Mana Break
#статьи | Мой рейтинг языков программирования
#видео | Devlog игрового движка на Common Lisp #0
#видео | Devlog #1
#видео | Devlog #2
#видео | Devlog #3
#видео | Devlog #4
#статьи | Software Should Be Memory Safe
#видео | Devlog #5
#статьи | Производительность асинхронщины на Clojure
#видео | Devlog #6
#видео | Devlog #7
#видео | Devlog #8
#проекты | Библиотека cl-aseprite
#проекты | Игра Cycle of Evil
#видео | Devlog #9
#видео | Писать игры на Lisp — кайфово!
#видео | Результат хакатона HealthSamurai
#проекты | Библиотека trivial-adjust-simple-array
#проекты | Библиотека cl-astar
#соцсети | Мой Telegram-канал с щитпостом
#статьи | Геймдев на Lisp. Часть 2
#проекты | Игра Lispy Rogue
#соцсети | Стикеры с маскотом Common Lisp
#проекты | Библиотека lisp-sentry
#соцсети | Телеграм-канал нашей инди-студии LuckyLambda
🔥192👀2😁1
Лисп в изгнании pinned «У всех есть дома пакет с пакетами, а это закреп с закрепами 😅 • #видео | Открытый урок "Функциональщина на C" • #статьи | ARPG на Scheme • #проекты | Roadmap d2clone-kit • #видео | Мой Twitch • #видео | Why Lisp? • #соцсети | Мой Mastodon • #видео | Волосатое…»
#лытдыбр #проекты

Штош, вчера в полночь по CET закончился геймджем 7DRL, и за несколько минут до этого я отправил на него игру, сделанную за ту неделю, которая оказалась весьма провальной 🙈 Я всего-то и хотел, что подшаманить внутреннюю архитектуру своего предыдущего рогалика и добавить новых мобов с новыми типами магического урона, придуманных моим товарищем, но вместо этого в начале недели решал всякие технические проблемы (старый добрый yak shaving), а потом в середине недели залип в перфекционизм и вылизывал до блеска механизмы передвижения и collision detection, опомнившись только в субботу, когда у меня нет ни UI, ни боёвки, ни экипировки, ни генерации мобов, а дедлайн уже через 48 часов. Начал в спешке всё пилить и в итоге ни фига не успел, так что отправил игру на джем с пометкой "Incomplete" — там ведь суть челленджа в том, чтобы создать за 168 часов законченный рогалик.

В общем, хорошо, что успел переделать нормально движение и учёт коллизий, и заодно начал делать атрибуты персонажей в рамках ECS архитектуры. Также стала очевидной пара технических проблем, на которые нужно обратить внимание. В общем, теперь пора сконцентрироваться на предстоящем в этом году релизе игры в Steam и его маркетинге 💪
👍10🔥3
#лытдыбр #common_lisp #проекты

Между делом в рамках подготовки демо будущей игры (это уже третья итерация рогалика, лол) напилил в своём ECS-микрофреймворке для лиспа новых крутых фичей: хелпер-функции для сброса состояния компонента на дефолтные значения, макрос DEFENTITY для определения глобальных переменных с автоматически инициализируемыми сущностями, и самая мякотка — генерируемые слоты у компонентов, прямо как в SQL GENERATED STORED, потому что уже надоело городить костыли для автоматического подсчёта номера тайла исходя из координат на экране 🙈 Надо будет разобраться с выкладыванием в Guix и зафейленными тестами, лол, и делать новый релиз 0.7.

Ещё и переписал всю внутрянку библиотеки для деревьев поведения cl-fast-behavior-trees, чтобы было легче менять деревья на лету во время разработки, но эти изменения пока не закоммитил — надо опробовать либу в деле, на демо рогалика 😊

В общем, в планах в ближайшее время сбацать клёвое демо и далее работать над ним, чтобы можно было его показывать незнакомым людям после фразы "а я вообще-то в виде хобби видеоигры разрабатываю" 😁
👍11🔥2
#common_lisp

Меж всем тем, в январе этого года тихо и незаметно вышла новая версия самой распространённой middleware-библиотеки для создания игр SDL, 3.2, которая ломает совместимость с существовавшей уже лет десять SDL2. Биндинги Common Lisp к SDL были традиционно низкого качества и кишели багами и фичами-медвежьими услугами, и вот тут человечек из CL-сообщества подсуетился и сделал бинды к SDL3. Вроде на первый взгляд выглядят неплохо, т.к. написаны, судя по всему, вручную, а не через кривой генератор, как к SDL2. Я-то уже прикипел к менее распространённому middleware liballegro, но cl-sdl3 стоит взять на заметку лисперам-игроделам, привыкшим к обилию туториалов и документации по используемым инструментам 😊
🔥13
#лытдыбр #common_lisp

А сегодня с утра тихо и незаметно вышла новая версия 0.7 моего ECS-микрофреймворка для Common Lisp cl-fast-ecs. Из крутых изменений, как я уже проспойлерил, макрос DEFENTITY для определения глобальных сущностей, генерируемые слоты, дженерик RESET-COMPONENT и дженерик ASSIGN-COMPONENT. Не обошлось и без поломанной обратной совместимости: функция BIND-STORAGE удалена, вместо неё достаточно вызвать MAKE-STORAGE для инициализации фреймворка; а feature expression :ECS-UNSAFE, добавляющий процентов 5 производительности ценой возможности переопределения компонентов был переименован в :ECS-RELEASE. Соответствующие изменения уже внесены в обе части туториала, а документация теперь всегда соответствует версии библиотеки в репозитории Lucky Lambda 🎉

Теперь можно заниматься дальше деревьями поведения и дёмкой будущего рогалика 😊
👍11🔥32
#лытдыбр #соцсети

Наконец осилил сделать телеграм-канал нашей с товарищем игровой студии для целей продвижения среди не-программистов 😅

Подпишитесь и расскажите о нас друзьям)
12👍6
#лытдыбр

Угадайте, кто вчера был на стендапе самой недооценённой комикессы России? 🤚😊
🔥21👏5
#лытдыбр #common_lisp

Наконец закоммитил огромный внутренний рефакторинг своей библиотеки для деревьев поведения cl-fast-behavior-trees. Проверил на практике (в демо нашего нового рогалика, оставайтесь тунцом — завтра, даст Будда, выложу в паблик), работает без сучка без задоринки 😊

Версию библиотеки пока не стал бампать, есть ещё идея, как там ещё чутка соптимизировать, хотя, казалось бы, куда уж дальше — теперь на одно дерево поведения создаётся только один ECS-компонент и одна система, а не целая пачка, как раньше 😅

В общем, происходит буйство перфекционизма))
🔥12
Forwarded from LuckyLambda
В этот погожий субботний день мы хотим влиться в традицию рассказывать о прогрессе разработки инди-игр за неделю, известную как #ScreenShotSaturday, и наконец поделиться с вами текущей версией демо нашей игры 😊

Эту неделю мы занимались доведением до совершенства управления персонажем игрока и механики передвижения монстров, а также реализацией их ИИ. Пока единственная доступная мобам стратегия — едва завидев игрока, подбежать и остервенело стукать по нему в ближнем бою, пока кто-либо из участников драки не откинется 😁 В дальнейшем мы добавим и другие, более хитрые тактики поведения.

Также реализовали базовый интерфейс, в частности, справочно-приветственное окно сразу при запуске игры, на котором перечислены управляющие клавиши. Чтобы закрыть это окно и попасть в подземелье, нужно нажать Esc, а снова его увидеть можно, нажав в игре кнопку F1 или ?.

Прямо сейчас в демо не реализована боевая система — в журнале сообщений внизу экрана пишется, что такой-то моб атакует игрока, но на самом деле этого не происходит. Над боёвкой будем работать в первую очередь на следующей неделе.

Буквально в последний момент добавили перезапуск уровня по нажатию клавиши 0, так что можно полюбоваться различными процедурно генерируемыми подземельями ☺️

Демо можно скачать по ссылке или установить из клиента платформы Itch, который почти такой же удобный, как клиент Steam 😌. Пишите в комментариях здесь или на itch.io, что вы думаете о демо и что хотели бы увидеть в дальнейшем, мы читаем все комментарии и прислушиваемся к вашему мнению!
🔥4
#common_lisp

Тут ньюсфидом принесло прекрасное: запускающийся прямо в браузере (!) Emacs с подмножеством Common Lisp(!!): https://lisperator.net/s/slip

Можно в приглашение REPL слева вбить что-то в духе (load "examples/clock.lisp"), и оно запустит графическую (!!!) дёмку. В общем, куда техника шагнула, аж дух захватывает 😱

Подумываю иногда о том, что надо бы тоже попробовать для браузера игры делать, но для этого нужно прямо сильно заморочиться с ECL — это пока единственный компилятор, умеющий генерировать WASM, и там это прямо сейчас активно пилят. Поживём-увидим, в общем 😊
👍14❤‍🔥1🔥1🥰1
This media is not supported in your browser
VIEW IN TELEGRAM
#common_lisp #видео

Надысь тут в Lisp-дискорде человек хвастался своими успехами в геймдеве на Common Lisp с использованием Raylib, не могу не поделиться небольшим, но крутейшим видосом процесса разработки 😊
🔥15
#лытдыбр

Никогда бы не подумал, что докачусь до программирования в draw.io 🙈

Это я доделываю дерево поведения для мобов в нашем рогалике и сильно надеюсь успеть к завтрашней субботе-скриншотнице)
🔥9
Forwarded from LuckyLambda
Итак, снова настала суббота, а вместе с ней время представлять вашему вниманию новую версию демо нашего рогалика в рамках #ScreenShotSaturday 😊 Как всегда, её можно скачать на страничке проекта по кнопке Download.

Как и обещали, мы сделали базовую механику сражений — теперь можно устроить мобам мордобой 😁 Так как оба участника нашей студии по образованию математики, мы провели много времени, обсуждая подсчёт чисел урона и базовые боевые характеристики. Один из участников, пожелавший скрыться за псевдонимом кофейный лис, предложил модель боя, более близкую к теоретическим основаниям матстатистики, чем к традиционно принятым в видеоиграх схемам, и после долгих обсуждений мы реализовали именно её. Кроме того, мы использовали буквально самый крутой на данный момент генератор случайных чисел под названием PCG, созданный в академических кругах всего десяток лет назад.

Ещё на этой неделе мы улучшили поведение мобов — теперь они не дёргаются при передвижении и не мешаются друг другу при погоне за персонажем игрока, а определение столкновений работает безглючнее. Более того, мы отняли у мобов возможность пользоваться телепатией, начиная погоню за игроком даже в случае, когда до него нет линии видимости 😅 Впрочем, в будущем мы можем осознанно добавить такую возможность для каких-нибудь особенных типов монстров с паранормальными способностями.

Также в новом билде появилось удобное главное меню и некоторые другие мелкие изменения интерфейса — оставляем в качестве развлечения для самых пытливых заметить, какие именно ☺️

На следующей неделе мы будем продолжать работать над базовыми рогаличными механиками — на очереди предметы и экипировка. Есть много важных вещей, которые нам нужно реализовать до полноценной игры, оставайтесь с нами, чтобы следить за прогрессом и не пропустить официальный релиз в Steam!
🔥13👍7🥰1