#common_lisp #лытдыбр
На новый год мейнтейнеры SBCL решили в качестве подарка пользователям не уступать традиции выпускать по новой версии каждый месяц и выпустить новую юбилейную версию 2.5.0, а у меня, как обычно, обновились соответствующие docker-образа для геймдева. Правда, фикс проблемы, из-за которой на особенно сложных окнах в моей GUI-либе cl-liballegro-nuklear SBCL крэшится с внутренней ошибкой, попадёт только в следующую версию (его закоммитили буквально через несколько часов после релиза), а это, считай, в феврале. Ну да ничего, есть много других вещей, над которыми нужно поработать в следующем году 😊
На новый год мейнтейнеры SBCL решили в качестве подарка пользователям не уступать традиции выпускать по новой версии каждый месяц и выпустить новую юбилейную версию 2.5.0, а у меня, как обычно, обновились соответствующие docker-образа для геймдева. Правда, фикс проблемы, из-за которой на особенно сложных окнах в моей GUI-либе cl-liballegro-nuklear SBCL крэшится с внутренней ошибкой, попадёт только в следующую версию (его закоммитили буквально через несколько часов после релиза), а это, считай, в феврале. Ну да ничего, есть много других вещей, над которыми нужно поработать в следующем году 😊
Telegram
Лисп в изгнании
#лытдыбр #common_lisp
Лол, чёт я обмакросился, аж компилятор поломал 😅
Лол, чёт я обмакросился, аж компилятор поломал 😅
🔥7❤5
This media is not supported in your browser
VIEW IN TELEGRAM
А на этот НГ присоединяюсь к пожеланиям вот такого же душного как и я спикера:
🥰13❤4💊2👍1😢1
#лытдыбр #common_lisp
Ну штош, праздники плавно подходят к концу, и я наконец доделал фичу в своём ECS-фреймворке на CL, которую начал ещё в прошлом году 🌚 А именно, определение внутренних Struct-of-Arrays хранилищ данных компонентов через
Сначала я вообще хотел навертеть там мьютексов, и даже выяснил, что захват мьютекса в SBCL занимает всего 2 тысячных миллисекунды, но потом я узнал о таком великолепном механизме CLOS, как UPDATE-INSTANCE-FOR-REDEFINED-CLASS, который позволяет кастомизировать процесс обновления существующих инстансов классов в соответствии с новым определением класса, причём этот механизм работает лениво, т.е. обновление происходит только при первом обращении к инстансу, получается, мьютекс не нужен 😊 Самым тяжким, наверное, было заставить этот механизм работать одинаково под всеми шестью поддерживаемыми мной реализациями Common Lisp, потому что стандарт стандартом, но в мелочах они часто отличаются.
Ещё у меня в коментах спрашивали, что там с производительностью, так вот, буквально сегодня утром закончил замеры — в бенчмарке создаётся 10к объектов с тремя компонентами, и затем 10к раз вызывается (через run-systems) система, обращающаяся ко всем трём компонентам и делающая с ними нехитрую арифметику с тригонометрией. Выяснилось, что замена хранилищ данных на классы замедляет скорость работы буквально в рамках погрешности, на пару процентов 🎉 Более того, я закодил так, что в релизном варианте (при добавлении кейворда
В общем, наконец с этой задачей окончено, можно двигаться дальше, есть много планов на этот год, включая попытку в коммерческий релиз игры на Common Lisp 🤩
Ну штош, праздники плавно подходят к концу, и я наконец доделал фичу в своём ECS-фреймворке на CL, которую начал ещё в прошлом году 🌚 А именно, определение внутренних Struct-of-Arrays хранилищ данных компонентов через
defclass
, а не defstuct
, что позволяет гораздо проще и без багов переопределять компоненты "на лету", прямо во время работы систем, а именно — добавлять/удалять новые поля в компонентах и менять их типы. Как сообщает git
, 533 additions и 307 deletions, заняло гораздо больше времени, чем я рассчитывал, но результатом доволен.Сначала я вообще хотел навертеть там мьютексов, и даже выяснил, что захват мьютекса в SBCL занимает всего 2 тысячных миллисекунды, но потом я узнал о таком великолепном механизме CLOS, как UPDATE-INSTANCE-FOR-REDEFINED-CLASS, который позволяет кастомизировать процесс обновления существующих инстансов классов в соответствии с новым определением класса, причём этот механизм работает лениво, т.е. обновление происходит только при первом обращении к инстансу, получается, мьютекс не нужен 😊 Самым тяжким, наверное, было заставить этот механизм работать одинаково под всеми шестью поддерживаемыми мной реализациями Common Lisp, потому что стандарт стандартом, но в мелочах они часто отличаются.
Ещё у меня в коментах спрашивали, что там с производительностью, так вот, буквально сегодня утром закончил замеры — в бенчмарке создаётся 10к объектов с тремя компонентами, и затем 10к раз вызывается (через run-systems) система, обращающаяся ко всем трём компонентам и делающая с ними нехитрую арифметику с тригонометрией. Выяснилось, что замена хранилищ данных на классы замедляет скорость работы буквально в рамках погрешности, на пару процентов 🎉 Более того, я закодил так, что в релизном варианте (при добавлении кейворда
:ecs-unsafe
в *features*) данные хранятся по-старому, в структурах. По ходу дела я также выяснил, что этот релизный вариант всего процентов на 5-6 быстрее не-релизного варианта, который по умолчанию.В общем, наконец с этой задачей окончено, можно двигаться дальше, есть много планов на этот год, включая попытку в коммерческий релиз игры на Common Lisp 🤩
GitLab
Use classes instead of structs for storage SoA (58f39a5f) · Commits · Andrew Kravchuk / cl-fast-ecs · GitLab
Blazingly fast Entity-Component-System microframework ⚡📦 https://awkravchuk.itch.io/cl-fast-ecs
🔥19
#лытдыбр #common_lisp
Между делом тут запилил в ECS-фреймворке давно напрашивавшийся рефакторинг — позаменял все глобальные переменные на те, которые предоставляет библиотека global-vars — они почти как настоящие лисповские переменные с динамической областью видимости, только быстрее, потому что шарятся между тредами, как в какой-нибудь прямолинейной C-шке и всегда являются bound, т.е. у них всегда есть значение. В итоге небольшая система move, для которой я хвастался дизассемблерным листингом в туториале по ECS, занимавшим 210 байт, теперь ужалась до 169 байт стройного и прямолинейного ассемблерного кода! 🎉Хотя тут, судя по всему, и разработчики компилятора SBCL постарались, он как будто более уверенно обращается с переменными с плавающей запятой.
В общем, пытаюсь отвлечься от традиционного ежегодного бюроктатического ада с ВНЖ, как могу 😅
Между делом тут запилил в ECS-фреймворке давно напрашивавшийся рефакторинг — позаменял все глобальные переменные на те, которые предоставляет библиотека global-vars — они почти как настоящие лисповские переменные с динамической областью видимости, только быстрее, потому что шарятся между тредами, как в какой-нибудь прямолинейной C-шке и всегда являются bound, т.е. у них всегда есть значение. В итоге небольшая система move, для которой я хвастался дизассемблерным листингом в туториале по ECS, занимавшим 210 байт, теперь ужалась до 169 байт стройного и прямолинейного ассемблерного кода! 🎉
В общем, пытаюсь отвлечься от традиционного ежегодного бюроктатического ада с ВНЖ, как могу 😅
GitLab
Added use of global-vars; dropped BIND-STORAGE in favor of MAKE-STORAGE (b4a578e1) · Commits · Andrew Kravchuk / cl-fast-ecs ·…
Blazingly fast Entity-Component-System microframework ⚡📦 https://awkravchuk.itch.io/cl-fast-ecs
❤11⚡1
#лытдыбр #common_lisp
Не далее, чем сегодня утром, в лисповый биндинг
Автор библиотеки мне ещё по ходу дела накидал фидбека, так что в итоге совместными усилиями получилась вообще красота, теперь вместо чудовищного
можно просто и красиво написать
😊
Не далее, чем сегодня утром, в лисповый биндинг
cl-liballegro
замёрджили мой пулл-реквест с макросами, упрощающими доступ к полям структур из liballegro
— ещё один пунктик из TODO-списка в постмортеме к моему первому рогалику выполнен 😌Автор библиотеки мне ещё по ходу дела накидал фидбека, так что в итоге совместными усилиями получилась вообще красота, теперь вместо чудовищного
(print (cffi:foreign-slot-value mouse-state '(:struct al:mouse-state) 'al::buttons))
можно просто и красиво написать
(al:with-mouse-state-slots () mouse-state
(print buttons))
😊
GitHub
Make use of CFFI:WITH-FOREIGH-SLOTS to simplify accessing Allegro structs by lockie · Pull Request #57 · resttime/cl-liballegro
Here are the changes I propose as a followup to #21.
First of all, the ALLEGRO_MOUSE_STATE struct: I've added the call to cffi:with-foreign-slots macro inside of pre-existing WITH-MOUSE-STA...
First of all, the ALLEGRO_MOUSE_STATE struct: I've added the call to cffi:with-foreign-slots macro inside of pre-existing WITH-MOUSE-STA...
🔥14👏2
This media is not supported in your browser
VIEW IN TELEGRAM
Maxima скомпилировали для запуска в браузере!
Maxima это программа для работы с математическими выражениями. Примечательно то, что эта система написана на Common Lisp.
И вот недавно на Reddit появилось сообщение, что Maxima удалось скомпилировать в WebAssembley так что теперь её можно запустить прямо в браузере.
Я записал для вас небольшую гифку с демкой, а кому интересно, тот может сам потыкать в пример развернутый на сайте:
http://maxima-on-wasm.pages.dev/
Что в этой истории примечательного? То что компиляция в WebAssembly расширяет возможности использования Common Lisp. Я пока не погружался в детали того как это работает, но судя по тому, что в данном проекте использовался ECL (Embeddable Common Lisp), могу предположить, что Maxima транслировали в C, а затем уже собрали в WebAssembly.
#commonlisp #news
Maxima это программа для работы с математическими выражениями. Примечательно то, что эта система написана на Common Lisp.
И вот недавно на Reddit появилось сообщение, что Maxima удалось скомпилировать в WebAssembley так что теперь её можно запустить прямо в браузере.
Я записал для вас небольшую гифку с демкой, а кому интересно, тот может сам потыкать в пример развернутый на сайте:
http://maxima-on-wasm.pages.dev/
Что в этой истории примечательного? То что компиляция в WebAssembly расширяет возможности использования Common Lisp. Я пока не погружался в детали того как это работает, но судя по тому, что в данном проекте использовался ECL (Embeddable Common Lisp), могу предположить, что Maxima транслировали в C, а затем уже собрали в WebAssembly.
#commonlisp #news
🔥11
#лытдыбр
Ну штош, сегодня с утра успешно продлил ещё на год своймультипаспорт черногорский ВНЖ. Пока пешочком шёл от местного МВД до дома, любуясь заснеженными верхушками гор, осознал, что я в самоизгнании, получается, уже третий год. Как там поёт Шеннон Кёртис, And then sometimes you blink and it's been years 😔
Теперь можно немношк выдохнуть и фигачить дальше, игра саму себя в стиме не выпустит 😅
Ну штош, сегодня с утра успешно продлил ещё на год свой
Теперь можно немношк выдохнуть и фигачить дальше, игра саму себя в стиме не выпустит 😅
YouTube
Shannon Curtis - Slowly Break
Shannon Curtis performing Slowly Break. (c) 2014 Saint Cloud Records
From the new album METAFORMA.
Order:
CD - http://shannoncurtis.net/store
iTunes - http://geni.us/metaforma
Google Play - http://geni.us/metaforma
Amazon - http://geni.us/mfamazon…
From the new album METAFORMA.
Order:
CD - http://shannoncurtis.net/store
iTunes - http://geni.us/metaforma
Google Play - http://geni.us/metaforma
Amazon - http://geni.us/mfamazon…
❤12
❤7
Forwarded from leaky relu
смотрите, я сделал стикеры лисп(взято отсюда https://github.com/commonlispbr/stickers/blob/master/README.md)
https://telegram.me/addstickers/lispalienstickers
https://telegram.me/addstickers/lispalienstickers
GitHub
stickers/README.md at master · commonlispbr/stickers
Collection of stickers about Lisp in general and as well Common Lisp - commonlispbr/stickers
🔥15
#лытдыбр
Нет в мире IT вещи, которая бесит сильнее, чем Discord под Linux с его самой беспомощной в мире системой обновлений. Почуяв на своих серверах хоть дуновение запашка новой версии, он наглухо отказывается запускаться (см. рис. 1), любезно открывая тебе в браузере веб-страничку, где ты должен сам скачать (!) дистрибутив, аж в целых 2 (прописью: двух) вариантах: пакет для Debian-подобных линуксов и тарбол с бинарниками. И что же Discord делает после того, как ты вручную (!!) устанавливаешь его обновление? Качает, блядь, обновления (см. рис. 2).
Мне кажется, за такой способ обновления софта нужно всю команду разработки ссылать на урановые рудники, чтобы другим неповадно было 🤬
Нет в мире IT вещи, которая бесит сильнее, чем Discord под Linux с его самой беспомощной в мире системой обновлений. Почуяв на своих серверах хоть дуновение запашка новой версии, он наглухо отказывается запускаться (см. рис. 1), любезно открывая тебе в браузере веб-страничку, где ты должен сам скачать (!) дистрибутив, аж в целых 2 (прописью: двух) вариантах: пакет для Debian-подобных линуксов и тарбол с бинарниками. И что же Discord делает после того, как ты вручную (!!) устанавливаешь его обновление? Качает, блядь, обновления (см. рис. 2).
Мне кажется, за такой способ обновления софта нужно всю команду разработки ссылать на урановые рудники, чтобы другим неповадно было 🤬
🔥10😁4🥴1
#лытдыбр #common_lisp
Вчера вечером закончил с пачкой давно назревших изменений в Docker-образе для сборки лисповых игр под Windows и Linux, docker-lisp-gamedev:
• бампнул версию компилятора
• сделал сборку из исходников для линуксовых middleware-библиотек (
• наконец, самая мякотка — сделал автоматическое тестирование собранных Docker-образов посредствомкостылей, мусора и веточек
Ещё вчера вечером чинил отвалившуюся сборку под MacOS в CI, но это уже другая история 😅
Так что теперь бампать версии софта внутри контейнера я могу одним лёгким движением руки, и если что-то где-то отъебнёт, я тут же про это узнаюи быстро, решительно починю. Обожаю возиться с автоматизацией сборки софта ☺️
Вчера вечером закончил с пачкой давно назревших изменений в Docker-образе для сборки лисповых игр под Windows и Linux, docker-lisp-gamedev:
• бампнул версию компилятора
SBCL
до 2.5.1, в которую попал фикс моей проблемы со слишком зубодробительными макросами для UI;• сделал сборку из исходников для линуксовых middleware-библиотек (
liballegro
, raylib
и SDL2
), чтобы не зависеть от мейнтейнеров убунты, и чтобы их версии и флаги компиляции плюс-минус совпадали с виндусовскими;• наконец, самая мякотка — сделал автоматическое тестирование собранных Docker-образов посредством
pipewire
и Xvfb
, во всех вариациях ОС и middleware, аж целая матрица получилась 😎Так что теперь бампать версии софта внутри контейнера я могу одним лёгким движением руки, и если что-то где-то отъебнёт, я тут же про это узнаю
GitLab
Andrew Kravchuk / docker-lisp-gamedev · GitLab
A Docker image containing tools necessary for Common Lisp game development and deployment. https://hub.docker.com/r/lockie/docker-lisp-gamedev
❤8😁4🔥1🫡1
#мемасики
По мотивам поста в Lisp Forever: в лисповой записи
Я помню, что обещал тёзке Commander_Trashdin поучаствовать в синтаксической специальной олимпиаде, показав красоту синтаксиса лиспов на практических примерах, но чёт навалилось столько дел, что нет времени на писькомерство, а надо бы 😅
По мотивам поста в Lisp Forever: в лисповой записи
(-> obj foo bar baz)
меньше скобок, чем в семантически аналогичной мейнстримнойobj.foo().bar().baz()
👍8
#лытдыбр #common_lisp
Небольшой сник-пик новой библиотеки, над которой я работал последнюю пару недель и уже причёсываю для того, чтобы выложить в паблик. Кто пользовался этим веб-интерфейсом (для взаимодействия с которым библиотека), наверняка вздрогнул, увидев скриншот, такое не забывается 😅
Небольшой сник-пик новой библиотеки, над которой я работал последнюю пару недель и уже причёсываю для того, чтобы выложить в паблик. Кто пользовался этим веб-интерфейсом (для взаимодействия с которым библиотека), наверняка вздрогнул, увидев скриншот, такое не забывается 😅
😁4
#лытдыбр #common_lisp
Ну штош, отболев традиционную зимнюю ОРВИ, я наконец добил проект, который пилил пол-февраля, необходимый для отчётов об ошибках в играх: окошко "Hey guys, we got a big error here" со стек-трейсом — это, конечно, прикольная пасхалка, но рядовой пользователь никогда в жизни не будет его скриншотить, а тем более ещё искать, куда отправить. Шынмера для таких целей запилила целое своё серверное приложение по имени Feedback и клиент к нему в рамках своего движка Trial, увидев которые, мой внутренний software engineer немножко умер внутри, потому что же уже миллион лет существует готовое решение под названием Sentry, специально предназначенное для сбора ошибок в программах на огромном количестве языков, которое можно селф-хостить, а можно использовать в облаке бесплатную версию с довольно щедрыми лимитами.
Более того, я даже нашёл неофициальный клиент для Sentry на Common Lisp, под названием
Теперь ничто не мешает приступить на выходных к джему 7DRL, который начнётся уже в эту полночь по UTC 🙈
Ну штош, отболев традиционную зимнюю ОРВИ, я наконец добил проект, который пилил пол-февраля, необходимый для отчётов об ошибках в играх: окошко "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 🙈
GitLab
Andrew Kravchuk / lisp-sentry · GitLab
A full-featured Common Lisp client library for Sentry application monitoring software. https://lockie.gitlab.io/lisp-sentry
🔥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
• #видео | Открытый урок "Функциональщина на 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
🔥19❤2👀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 и его маркетинге 💪
Штош, вчера в полночь по CET закончился геймджем 7DRL, и за несколько минут до этого я отправил на него игру, сделанную за ту неделю, которая оказалась весьма провальной 🙈 Я всего-то и хотел, что подшаманить внутреннюю архитектуру своего предыдущего рогалика и добавить новых мобов с новыми типами магического урона, придуманных моим товарищем, но вместо этого в начале недели решал всякие технические проблемы (старый добрый yak shaving), а потом в середине недели залип в перфекционизм и вылизывал до блеска механизмы передвижения и collision detection, опомнившись только в субботу, когда у меня нет ни UI, ни боёвки, ни экипировки, ни генерации мобов, а дедлайн уже через 48 часов. Начал в спешке всё пилить и в итоге ни фига не успел, так что отправил игру на джем с пометкой "Incomplete" — там ведь суть челленджа в том, чтобы создать за 168 часов законченный рогалик.
В общем, хорошо, что успел переделать нормально движение и учёт коллизий, и заодно начал делать атрибуты персонажей в рамках ECS архитектуры. Также стала очевидной пара технических проблем, на которые нужно обратить внимание. В общем, теперь пора сконцентрироваться на предстоящем в этом году релизе игры в Steam и его маркетинге 💪
👍10🔥3
#лытдыбр #common_lisp #проекты
Между делом в рамках подготовки демо будущей игры(это уже третья итерация рогалика, лол) напилил в своём ECS-микрофреймворке для лиспа новых крутых фичей: хелпер-функции для сброса состояния компонента на дефолтные значения, макрос DEFENTITY для определения глобальных переменных с автоматически инициализируемыми сущностями, и самая мякотка — генерируемые слоты у компонентов, прямо как в SQL и зафейленными тестами, лол, и делать новый релиз
Ещё и переписал всю внутрянку библиотеки для деревьев поведения cl-fast-behavior-trees, чтобы было легче менять деревья на лету во время разработки, но эти изменения пока не закоммитил — надо опробовать либу в деле, на демо рогалика 😊
В общем, в планах в ближайшее время сбацать клёвое демо и далее работать над ним, чтобы можно было его показывать незнакомым людям после фразы "а я вообще-то в виде хобби видеоигры разрабатываю" 😁
Между делом в рамках подготовки демо будущей игры
GENERATED STORED
, потому что уже надоело городить костыли для автоматического подсчёта номера тайла исходя из координат на экране 🙈 Надо будет разобраться с выкладыванием в Guix 0.7
. Ещё и переписал всю внутрянку библиотеки для деревьев поведения cl-fast-behavior-trees, чтобы было легче менять деревья на лету во время разработки, но эти изменения пока не закоммитил — надо опробовать либу в деле, на демо рогалика 😊
В общем, в планах в ближайшее время сбацать клёвое демо и далее работать над ним, чтобы можно было его показывать незнакомым людям после фразы "а я вообще-то в виде хобби видеоигры разрабатываю" 😁
GitLab
Andrew Kravchuk / cl-fast-ecs · GitLab
Blazingly fast Entity-Component-System microframework ⚡📦 https://awkravchuk.itch.io/cl-fast-ecs
👍11🔥2