#лытдыбр #мемасики
Сегодня на традиционном утреннем стриме продолжил накидывать код для предстоящего геймджема, и, как оказалось, использовать ECS гораздо сложнее, чем писать ECS-фреймворк (см. иллюстрацию) 😅
Впрочем, по крайней мере успел набросать системы для отображения и проигрывания анимаций.
Сегодня на традиционном утреннем стриме продолжил накидывать код для предстоящего геймджема, и, как оказалось, использовать ECS гораздо сложнее, чем писать ECS-фреймворк (см. иллюстрацию) 😅
Впрочем, по крайней мере успел набросать системы для отображения и проигрывания анимаций.
🤯1
#лытдыбр #геймджем #common_lisp
Штош, первый день Spring Lisp Game Jam 2023 подошёл к концу, а мне похвастаться особо нечем (см. рис. 1) — начал пилить анимации персонажей, но наткнулся на отсутствие в своём ECS-фреймворке а) способа передачи в системы произвольных аргументов, вроде
Продолжу, видимо, уже завтра.
Штош, первый день Spring Lisp Game Jam 2023 подошёл к концу, а мне похвастаться особо нечем (см. рис. 1) — начал пилить анимации персонажей, но наткнулся на отсутствие в своём ECS-фреймворке а) способа передачи в системы произвольных аргументов, вроде
delta-time
, и б) обратных индексов, позволяющих быстро (за O(log N)
хотя бы) получить ответ на вопрос, "у какой (каких) entity в таком-то компоненте вот такой-то слот имеет вот конкретно такое значение". Первое победил, про второе только сейчас додумал, как можно сделать относительно безболезненно с алгоритмической точки зрения (см. рис. 2), но с точки зрения дружелюбности к кэшу процессора там пиздец, конечно, полный раздрай, хорошо хоть происходит всё это действительно за логарифм от количества entity с этим компонентом.Продолжу, видимо, уже завтра.
🔥3
#мемасики
Короче, с воскресенья на понедельник плохо выспался, допоздна в D&D играли. Провёл утренний стрим, позавтракал и решил чаю заварить, иначе какой нормальный человек чаем завтрак не заполирует. Поставил чайник и вдруг понял, что пакетики закончились. Пошарился по полкам, нашёл запасную пачку и вдруг понимаю, что передо мной стоит притёртая баночка кофе, которую хозяйка оставила. Редко раньше кофе пил, а тут вдруг захотелось, дай-ка, думаю, приободрюсь перед рабочим днём, а раз захотелось, почему бы и не навернуть. Нашёл в шкафчике джезву, сыпанул две щедрых ложки в холодную воду, заварил, налил в чашку и тут вдруг sve se prebojilo u crvenu boju i zazvučalo "Ja sam Crnogorac", jebem moje uši, ništa nije jasno, puzeći iz zemlje Ljudevit Gaj i govori neku sranje o Hrvatima i moralu, stari pedal, zašto mu nije ležalo u zemlji? Sada osim crnogorskog jezika ne razumijem ništa.
Čini mi se da je kafa bila prokleta.
Короче, с воскресенья на понедельник плохо выспался, допоздна в D&D играли. Провёл утренний стрим, позавтракал и решил чаю заварить, иначе какой нормальный человек чаем завтрак не заполирует. Поставил чайник и вдруг понял, что пакетики закончились. Пошарился по полкам, нашёл запасную пачку и вдруг понимаю, что передо мной стоит притёртая баночка кофе, которую хозяйка оставила. Редко раньше кофе пил, а тут вдруг захотелось, дай-ка, думаю, приободрюсь перед рабочим днём, а раз захотелось, почему бы и не навернуть. Нашёл в шкафчике джезву, сыпанул две щедрых ложки в холодную воду, заварил, налил в чашку и тут вдруг sve se prebojilo u crvenu boju i zazvučalo "Ja sam Crnogorac", jebem moje uši, ništa nije jasno, puzeći iz zemlje Ljudevit Gaj i govori neku sranje o Hrvatima i moralu, stari pedal, zašto mu nije ležalo u zemlji? Sada osim crnogorskog jezika ne razumijem ništa.
Čini mi se da je kafa bila prokleta.
😱5🤯1
This media is not supported in your browser
VIEW IN TELEGRAM
#лытдыбр #геймджем #common_lisp
К пятому дню геймджема я наконец допилил анимированных персонажей 😅 Зато всё хранится по науке, в ECS-хранилище. Дальше должно пойти быстрее, если бы ещё не работа, ух я бы разгулялся)
Исходнички выложил сюда 😊
К пятому дню геймджема я наконец допилил анимированных персонажей 😅 Зато всё хранится по науке, в ECS-хранилище. Дальше должно пойти быстрее, если бы ещё не работа, ух я бы разгулялся)
Исходнички выложил сюда 😊
👍2🥰1
#лытдыбр
Вот это я машина, конечно. Нехитрые статистические расчёты показывают, что уже в следующую субботу можно ожидать 27 коммитов за день 😂
Вот это я машина, конечно. Нехитрые статистические расчёты показывают, что уже в следующую субботу можно ожидать 27 коммитов за день 😂
🔥3😁3👍1
#лытдыбр #common_lisp
Всё-таки обожаю Emacs. Пишу в коде игры
Всё-таки обожаю Emacs. Пишу в коде игры
:step-
, чтобы прописать название аудиофайла, который будет проигрываться при движении персонажа игрока. Emacs (точнее, его плагин Sly для Common Lisp) выцепляет из запущенного Lisp-образа список за-intern
-енных кейвордов и ищет среди них те, что начинаются на :step
, а так как я уже запускал игру и все файлы со звуками были подгружены из каталога ресурсов, все соответствующие звуковым файлам кейворды есть в Lisp-образе, и я их вижу у себя прямо в автодополнении. Если это не круто, то я даже не знаю определение слова "круто" 🤟🔥8❤1
#мемасики
Я с утра опять прибегнул к кофеиновому допингу, поэтому ещё немножко щитпоста 😅
В коде игры случайно произошёлMOTHERFUCKING EVANGELION REFERENCE
Я с утра опять прибегнул к кофеиновому допингу, поэтому ещё немножко щитпоста 😅
В коде игры случайно произошёл
😁2🙏1
#проекты
Итак, вчера с товарищем за один день креативили контент, и этой ночью уже на последнем издыхании я зарелизил игру для Lisp Game Jam, вуаля: Thoughtbound.
Теперь я чуть-чуть проспался и готов предварительно сформулировать небольшой постмортем.
1. Архитектура Entity-Component-System — огонь 🔥 Новую функциональность в игру можно добавлять буквально лёгким движением руки, и она не ломает то, что в игре уже есть.
2. Стоковый рендеринг карты через CLOS в библиотеке
3. Хотя на различных форумах так не рекомендуют делать, но, как выяснилось, хранение каждого tile карты в отдельной entity — вполне себе рабочий вариант; для сравнения, родной рендеринг через
4. Хотя реализация ECS у меня пока самая наивная и жручая память, в реальном проекте это нестрашно — запущенная игра создаёт около тысячи игровых объектов с 14 различными компонентами, но потребляет при этом на всё про всё около 200 Мб памяти, что по современным меркам пшик.
5. В игре довольно серьёзная нарративная составляющая и даже есть вот прямо сюжет с нотками пост-модернизма, что для моих предыдущих проектов нетипично 😅
6. Столкновения персонажей с препятствиями — это сложно, таки и не доделал их полностью идеально 🥲
7. С гуёвой библиотекой
8. Генеративные искуственные нейронные сети — суперское подспорье в проектах вроде такого. Особенно если английский не твой родной, а рисовать не умеешь 🤣 Немного инсайда: у меня настолько мало фантазии, что даже название проекта предложил чятжпт))
9. Весь код игры, как сообщает
10. Не хочу быть нескромным, но среди других финишировавших в геймджеме работ не видел хоть одной настолько же полной контентом, как наша 😊 Хотя, безусловно, есть крайне интересные с технической точки зрения проекты.
11. Истинно говорю вам, кофе — напиток дьявола. В какой-то момент на выходных мне казалось, что я навсегда утратил возможность засыпать 😳
12. Вдвоём геймджемить куда веселее)
Итак, вчера с товарищем за один день креативили контент, и этой ночью уже на последнем издыхании я зарелизил игру для Lisp Game Jam, вуаля: Thoughtbound.
Теперь я чуть-чуть проспался и готов предварительно сформулировать небольшой постмортем.
1. Архитектура Entity-Component-System — огонь 🔥 Новую функциональность в игру можно добавлять буквально лёгким движением руки, и она не ломает то, что в игре уже есть.
2. Стоковый рендеринг карты через CLOS в библиотеке
cl-tiled
чудовищно тормозной для любых практических целей.3. Хотя на различных форумах так не рекомендуют делать, но, как выяснилось, хранение каждого tile карты в отдельной entity — вполне себе рабочий вариант; для сравнения, родной рендеринг через
cl-tiled
жрёт около 70% CPU (который у меня 12-ядерный Ryzen, на секундочку), а рендеринг той же карты с использованием ECS по entity на тайл — 5-6%.4. Хотя реализация ECS у меня пока самая наивная и жручая память, в реальном проекте это нестрашно — запущенная игра создаёт около тысячи игровых объектов с 14 различными компонентами, но потребляет при этом на всё про всё около 200 Мб памяти, что по современным меркам пшик.
5. В игре довольно серьёзная нарративная составляющая и даже есть вот прямо сюжет с нотками пост-модернизма, что для моих предыдущих проектов нетипично 😅
6. Столкновения персонажей с препятствиями — это сложно, таки и не доделал их полностью идеально 🥲
7. С гуёвой библиотекой
Nuklear
тяжко: из-за того, что она написана на чистом C, чуть шаг влево-шаг вправо — и ты вывалился в LDB, а в Emacs это даже не сразу понятно, просто окно игры перестаёт обновляться.8. Генеративные искуственные нейронные сети — суперское подспорье в проектах вроде такого. Особенно если английский не твой родной, а рисовать не умеешь 🤣 Немного инсайда: у меня настолько мало фантазии, что даже название проекта предложил чятжпт))
9. Весь код игры, как сообщает
cloc
, состоит из 715 строк, что лишний раз подтверждает, что Common Lisp — один из самых мощных языков в мире 🤗10. Не хочу быть нескромным, но среди других финишировавших в геймджеме работ не видел хоть одной настолько же полной контентом, как наша 😊 Хотя, безусловно, есть крайне интересные с технической точки зрения проекты.
11. Истинно говорю вам, кофе — напиток дьявола. В какой-то момент на выходных мне казалось, что я навсегда утратил возможность засыпать 😳
12. Вдвоём геймджемить куда веселее)
itch.io
Thoughtbound by Andrew, ViruScD
Post-modern dungeon crawler in fantasy setting. Available for Windows, Linux
🔥12❤1😁1
#common_lisp
Обнаружил тут на днях существование целого Roguelike tutorial for Common Lisp. Надо бы заценить, у самого в ближайших планах запилить туториал по использованию своего ECS-фреймворка
Обнаружил тут на днях существование целого Roguelike tutorial for Common Lisp. Надо бы заценить, у самого в ближайших планах запилить туториал по использованию своего ECS-фреймворка
cl-fast-ecs
😊nwforrer.github.io
Roguelike tutorial for Common Lisp - Part 0 - Setup
This set of tutorials is going to follow the Python TCOD tutorial, but will be written in Common Lisp and use the BearLibTerminal library.
Prior Knowledge This tutorial assumes you are familiar with programming in Common Lisp. If you’re not familiar, I would…
Prior Knowledge This tutorial assumes you are familiar with programming in Common Lisp. If you’re not familiar, I would…
#лытдыбр
Только что вернулся со стендап-концерта Яси Тринадцатко, и в реальности она ещё более клевая, чем в ютубе 😍
Спасибо организаторам (но с фигой в кармане, потому что билеты пришлось покупать через чудовищно кривой сайт на немецком(!), сделанный, судя по всему, на похапе, настолько от него веяло двухтысячными с веб 1.0, версткой таблицами и вот этим всем из моего детства)
Только что вернулся со стендап-концерта Яси Тринадцатко, и в реальности она ещё более клевая, чем в ютубе 😍
Спасибо организаторам (но с фигой в кармане, потому что билеты пришлось покупать через чудовищно кривой сайт на немецком(!), сделанный, судя по всему, на похапе, настолько от него веяло двухтысячными с веб 1.0, версткой таблицами и вот этим всем из моего детства)
👍2
#common_lisp
В поисках более адекватного механизма сборки для игры, чем то, что есть сейчас, попробовал два проекта для Common Lisp, являющихся аналогами
Вопрос в том, что из этих двух, гм, творений будет проще починить, и что-то мне подсказывает, что от fukamachiware лучше снова держаться подальше 😅
В поисках более адекватного механизма сборки для игры, чем то, что есть сейчас, попробовал два проекта для Common Lisp, являющихся аналогами
pip
и virtualenv
для Python в одном флаконе, — CLPM и Qlot. Оба худо-бедно справляются со своими непосредственными обязанностями, но оба не работают под Windows, причём если CLPM
г-на Эрика Тиммонса валится на моменте компиляции пакета cffi
— по какой-то причине gcc
при этом запускается с путём к объектному файлу вида \\?\C:\yada-yada.o
(т.н. extended length path), чего, конечно же, не понимает; то Qlot
, а точнее, Roswell
г-на Фукамачи тупо валится с сегфолтом 😂 Что неудивительно, учитывая его фаршевый код.Вопрос в том, что из этих двух, гм, творений будет проще починить, и что-то мне подсказывает, что от fukamachiware лучше снова держаться подальше 😅
GitHub
lisp-jam-spring-2023/package/build.lisp at 70dcf0189755350539247e97ab951c3ac3ebe8a3 · lockie/lisp-jam-spring-2023
Spring Lisp Game Jam 2023 entry. Contribute to lockie/lisp-jam-spring-2023 development by creating an account on GitHub.
🤔3
#common_lisp
Всю неделю по утрам танцевал невероятный танец по граблям в попытках заставить собираться игру через CLPM, для Linux всё завелось почти сразу, а с "ОС" Ш1ИДОШ5 пришлось поковыряться. И вот уже всё локально в докере работает, довольный делаю пуш в репозиторий только для того, чтобы обнаружить, что буквально в том же докер-контейнере в ебучем github actions билд с грохотом фейлится из-за того, что там в путях откуда ни возьмись появляются слэши шиворот-навыворот. А разгадка проста:безблагодатность в github actions контейнеры запускаются с прорвой каких-то непотребных докеровских настроек, в том числе с кастомным
Истинно говорю вам, micro$oft и все её продукты — говно говна, царь Мидас наоборот, который превращает абсолютно всё, чего касается, в нерабочую гору смердящего кала. Блэт, как же я зол 😡
Всю неделю по утрам танцевал невероятный танец по граблям в попытках заставить собираться игру через CLPM, для Linux всё завелось почти сразу, а с "ОС" Ш1ИДОШ5 пришлось поковыряться. И вот уже всё локально в докере работает, довольный делаю пуш в репозиторий только для того, чтобы обнаружить, что буквально в том же докер-контейнере в ебучем github actions билд с грохотом фейлится из-за того, что там в путях откуда ни возьмись появляются слэши шиворот-навыворот. А разгадка проста:
ENTRYPOINT
, из-за чего вся хвалёная воспроизводимость Docker-контейнеров идёт по пизде.Истинно говорю вам, micro$oft и все её продукты — говно говна, царь Мидас наоборот, который превращает абсолютно всё, чего касается, в нерабочую гору смердящего кала. Блэт, как же я зол 😡
GitHub
Added missing file 😅 · lockie/lisp-jam-spring-2023@b2946f4
Spring Lisp Game Jam 2023 entry. Contribute to lockie/lisp-jam-spring-2023 development by creating an account on GitHub.
🤬4🤨2🤝1💅1
#анонс #видео
Памятуя о своём опыте, взял на себя труд организовать (уже второй) онлайн-митап по Lisp-подобным языкам. Итак, вот уже в эту субботу, в 18:00 UTC+3 вас ждут следующие доклады:
• "Паттерн Entity-Component-System и металингвистическая абстракция"
• "Fennel — зачем, где и как"
• "Возрождение поддержки CL в SWIG 4"
• "Фреймворк Spritely Goblins"
• "Мой опыт на Clojure после JS"
• "Чем полезен Ultralisp и как он устроен"
Митап будет проводиться на платформе Jitsi Meet, на которой вы сможете пообщаться с докладчиками после их выступлений, по следующей ссылке.
Кроме того, будет проводиться live-трансляция на Youtube на моём канале, подпишитесь, чтобы не пропустить. Вопросы из чата Youtube тоже постараюсь не терять и зачитывать докладчикам вслух 😊
P.S. запись доступна тут.
Памятуя о своём опыте, взял на себя труд организовать (уже второй) онлайн-митап по Lisp-подобным языкам. Итак, вот уже в эту субботу, в 18:00 UTC+3 вас ждут следующие доклады:
• "Паттерн Entity-Component-System и металингвистическая абстракция"
• "Fennel — зачем, где и как"
• "Возрождение поддержки CL в SWIG 4"
• "Фреймворк Spritely Goblins"
• "Мой опыт на Clojure после JS"
• "Чем полезен Ultralisp и как он устроен"
Митап будет проводиться на платформе Jitsi Meet, на которой вы сможете пообщаться с докладчиками после их выступлений, по следующей ссылке.
Кроме того, будет проводиться live-трансляция на Youtube на моём канале, подпишитесь, чтобы не пропустить. Вопросы из чата Youtube тоже постараюсь не терять и зачитывать докладчикам вслух 😊
P.S. запись доступна тут.
👍8🔥6
#мемасики
Буквальное лицо интроверта-перфекциониста (моё) после того, как поучавствовал в геймджеме, а потом ещё и организовал онлайн-митапчик 😁
Буквальное лицо интроверта-перфекциониста (моё) после того, как поучавствовал в геймджеме, а потом ещё и организовал онлайн-митапчик 😁
🔥7🤣5😢1🤗1