#лытдыбр
Давеча немножко пощебетал в твиттере с господином Сандером Мертенсом, автором библиотеки Flecs, реализующей паттерн Entity-Component-System, который позволяет эффективно хранить и обрабатывать данные об объектах в игровых мирах. Я эту библиотеку даже в своё время демонстрировал на открытом уроке на работе.
Сандер начал к своему детищу прикручивать планировщик запросов, прямо как в настоящей реляционной базе данных, и, внимание, небольшую виртуальную машину, что, на мой взгляд, жуткий оверкилл. Возможно, к таким архитектурным решениям его привёл выбор реализации паттерна, — классически есть двастула варианта: на основе разреженных массивов, это тот подход, которого я придерживаюсь в своём движке, и на основе т.н. архетипов, когда объекты со схожими наборами компонент группируются в таблицы. Опять-таки, второй подход мне кажется более громоздким.
В твиттере я Сандеру немножко набросил на вентилятор, мол, больно уж ваш труд на Prolog/Lisp смахивает 😅 Сандер, в свою очередь, пояснил, что большая часть сложности его реализации проистекает не из-за поддержки взаимосвязей между объектами (что мне, конечно, тоже кажется оверкиллом), а из-за поддержки в запросах булевских операторов
Давеча немножко пощебетал в твиттере с господином Сандером Мертенсом, автором библиотеки Flecs, реализующей паттерн Entity-Component-System, который позволяет эффективно хранить и обрабатывать данные об объектах в игровых мирах. Я эту библиотеку даже в своё время демонстрировал на открытом уроке на работе.
Сандер начал к своему детищу прикручивать планировщик запросов, прямо как в настоящей реляционной базе данных, и, внимание, небольшую виртуальную машину, что, на мой взгляд, жуткий оверкилл. Возможно, к таким архитектурным решениям его привёл выбор реализации паттерна, — классически есть два
В твиттере я Сандеру немножко набросил на вентилятор, мол, больно уж ваш труд на Prolog/Lisp смахивает 😅 Сандер, в свою очередь, пояснил, что большая часть сложности его реализации проистекает не из-за поддержки взаимосвязей между объектами (что мне, конечно, тоже кажется оверкиллом), а из-за поддержки в запросах булевских операторов
Not
/Or
и т.д. Что ж, в ближайших планах у меня оформление собственного кода для ECS в отдельную библиотеку, плюс обогащение его идеями, подсмотренными в том числе у Сандера, так что там видно будет 😊#лытдыбр #проекты
Наконец перетащил все запланированные на будущее задачи в проекте d2clone-kit из issues Gitlab'а впростой советский трёхкопеечный Org-файл: ROADMAP.org. Как мне представляется, это такой ультимативный анти-vendor-lock-in: даже если Gitlab последует судьбе Github и будет скуплен Microsoft, и если придётся переезжать на какой-нибудь, прости г-ди, Sourcehut или вовсе хостить проект на CGit, запущенном на Raspberry Pi под кроватью — все мои планы останутся со мной в неприкосновенном виде 👍🏻
Ещё бы перетащить все
Наконец перетащил все запланированные на будущее задачи в проекте d2clone-kit из issues Gitlab'а в
Ещё бы перетащить все
TODO
из комментариев в кодовой базе туда же, но тогда файл станет неприлично огромным 😅GitLab
ROADMAP.org · develop · Andrew Kravchuk / d2clone-kit · GitLab
Diablo 2 is arguably one of the best action RPG created ever. This is humble attempt to recreate and, hopefully, deconstruct it using Common Lisp programming language and...
👍3
#анонс #видео
Завтра в 9:00 МСК собралсятриумфально вернуться на twitch немножко постримить кодинг ECS-библиотеки на Common Lisp, часик-полтора, не более. Особой пикантности стриму придаст тот факт, что в моём часовом поясе он начнётся в 7:00, так что буду максимально невыспан, но другого времени в плотном графике дел найти не удалось.
Трансляция, как всегда, будет тут: https://twitch.tv/awkravchuk. Записи не будет, но потом планирую из нарезок стримов смонтировать один небольшой видос. Оставайтесь настроенными 😊
Завтра в 9:00 МСК собрался
Трансляция, как всегда, будет тут: https://twitch.tv/awkravchuk. Записи не будет, но потом планирую из нарезок стримов смонтировать один небольшой видос. Оставайтесь настроенными 😊
Twitch
awkravchuk - Twitch
Name's Andrew. I write code in Lisp. Sometimes I play Diablo.
🔥4👍1👏1
#лытдыбр
Ну что ж, вот снова пошла вода по трубам в моём утреннем стриме 😊
https://twitch.tv/awkravchuk
Ну что ж, вот снова пошла вода по трубам в моём утреннем стриме 😊
https://twitch.tv/awkravchuk
Twitch
awkravchuk - Twitch
Name's Andrew. I write code in Lisp. Sometimes I play Diablo.
🔥1
Forwarded from memory heap (Artyom "avp" Poptsov)
Ниже идёт мой перевод статьи под авторством Карла Ланге:
http://carl.flax.ie/dothingstellpeople.html
Мои примечания выделены курсивом.
* * *
Делай вещи, рассказывай людям.
Это всё, что вам нужно для того, чтобы стать успешными.¹ Можно обойтись только одним из этих двух правил, на это достаточно редкий случай достижения успеха, и кто-то должен сделать за вас вторую часть.
Если у вас нет никаких умений, которые можно было бы развивать и продвигать, то вам нужно освоить хотя бы одно, так как за этим — будущее. У нас есть Khan Akademy, Wikipedia, Codecademy и практически все мировые знания на кончиках ваших пальцев. Используйте это.
Затем сделайте что-то, о чём вы можете рассказать. Сделайте что-то крутое. Что-то интересное. Потратьте на это время. Заморочьтесь по-полной. Даже если ваш проект — это самая бесполезная вещь, которую вы когда-либо делали, сделайте его, если вы можете рассказать о нём. Эта часть достаточно простая, так как вы делаете что-то, что считаете крутым и интересным. Если даже проект бесполезен — отлично, вам не надо будет поддерживать его в дальнейшем.
После этого найдите мероприятия, где собираются люди, с которыми вы хотели бы работать. Потом возьмите какой-нибудь напиток (или без него) и поговорите с людьми на мероприятии о своём проекте. Расслабьтесь — скорее всего это вашим собеседникам тоже интересно. Если даже нет — поскольку вы сделали проект сами, вы будете говорить со знанием дела. Это очень важный момент — и это тоже достаточно легко, поскольку вы говорите о чём-то, сделанной вами, и вы считаете это крутым и интересным. Как дополнительный бонус, много людей приходят на подобные события просто чтобы поговорить о крутых и интересных вещах, так что вы будете в своей тарелке.
Вы не поверите, как много возможностей открывается для тех, кто делает вещи и говорит о них. Это то, что позволяет путешествовать по просторам бизнеса — вы делаете что-то интересное и говорите людям об этом. Взамен вы получаете контакты, визитки и адреса электропочты. Затем вы получаете контракты, предложения о работе, находите инвесторов и т.д. Кроме того, вы заводите друзей, которые считают, что то, что вы делаете — это круто. Вы создаёте себе имя, как "человек, который сделал/сделала вот эту крутую штуку." Затем, если кому-то понадобиться сделать что-то, каким-то образом связанное с той крутой штукой, которую вы делали — они вспомнят про вас и предложат вам работу.
Киаран МакКан и я [Карл Ланге, автор оригинальной статьи — прим. перев.] начали работу над игровым движком для HTML5 (и связанным с ним блогом). Когда мы были на первом курсе колледжа. Мы так его и не доделали, но благодаря Flax [тот самый игровой движок — прим. перев.] мы попали на стажировку в Ericsson летом второго учебного года. Сейчас я на пути в Game Closure [некая компания, судя по всему занимающаяся разработкой игр и сейчас перекупленая другой компанией — прим. перев.], и Киаран устраивается на работу в Daemonware [также компания, занимающаяся разработкой игр — прим. перев.] Мы просто делали вещи и говорили о них другим людям.
¹ Я [Карл Ланге, автор оригинальной статьи — прим. перев.] определяю успешность, как "умение пользоваться возможностями, которые вам лично интересны," но я думаю, что эта мантра также работает на успех и в случае денег. Я на самом деле не имею в виду успех как что-то, наполняющее жизнь смыслом — хотя это зависит от того, чем вы ходите в жизни заниматься. Также я даю себе отчёт, что это не распростряняется на людей во многих жизненных ситуациях.
http://carl.flax.ie/dothingstellpeople.html
Мои примечания выделены курсивом.
* * *
Делай вещи, рассказывай людям.
Это всё, что вам нужно для того, чтобы стать успешными.¹ Можно обойтись только одним из этих двух правил, на это достаточно редкий случай достижения успеха, и кто-то должен сделать за вас вторую часть.
Если у вас нет никаких умений, которые можно было бы развивать и продвигать, то вам нужно освоить хотя бы одно, так как за этим — будущее. У нас есть Khan Akademy, Wikipedia, Codecademy и практически все мировые знания на кончиках ваших пальцев. Используйте это.
Затем сделайте что-то, о чём вы можете рассказать. Сделайте что-то крутое. Что-то интересное. Потратьте на это время. Заморочьтесь по-полной. Даже если ваш проект — это самая бесполезная вещь, которую вы когда-либо делали, сделайте его, если вы можете рассказать о нём. Эта часть достаточно простая, так как вы делаете что-то, что считаете крутым и интересным. Если даже проект бесполезен — отлично, вам не надо будет поддерживать его в дальнейшем.
После этого найдите мероприятия, где собираются люди, с которыми вы хотели бы работать. Потом возьмите какой-нибудь напиток (или без него) и поговорите с людьми на мероприятии о своём проекте. Расслабьтесь — скорее всего это вашим собеседникам тоже интересно. Если даже нет — поскольку вы сделали проект сами, вы будете говорить со знанием дела. Это очень важный момент — и это тоже достаточно легко, поскольку вы говорите о чём-то, сделанной вами, и вы считаете это крутым и интересным. Как дополнительный бонус, много людей приходят на подобные события просто чтобы поговорить о крутых и интересных вещах, так что вы будете в своей тарелке.
Вы не поверите, как много возможностей открывается для тех, кто делает вещи и говорит о них. Это то, что позволяет путешествовать по просторам бизнеса — вы делаете что-то интересное и говорите людям об этом. Взамен вы получаете контакты, визитки и адреса электропочты. Затем вы получаете контракты, предложения о работе, находите инвесторов и т.д. Кроме того, вы заводите друзей, которые считают, что то, что вы делаете — это круто. Вы создаёте себе имя, как "человек, который сделал/сделала вот эту крутую штуку." Затем, если кому-то понадобиться сделать что-то, каким-то образом связанное с той крутой штукой, которую вы делали — они вспомнят про вас и предложат вам работу.
Киаран МакКан и я [Карл Ланге, автор оригинальной статьи — прим. перев.] начали работу над игровым движком для HTML5 (и связанным с ним блогом). Когда мы были на первом курсе колледжа. Мы так его и не доделали, но благодаря Flax [тот самый игровой движок — прим. перев.] мы попали на стажировку в Ericsson летом второго учебного года. Сейчас я на пути в Game Closure [некая компания, судя по всему занимающаяся разработкой игр и сейчас перекупленая другой компанией — прим. перев.], и Киаран устраивается на работу в Daemonware [также компания, занимающаяся разработкой игр — прим. перев.] Мы просто делали вещи и говорили о них другим людям.
¹ Я [Карл Ланге, автор оригинальной статьи — прим. перев.] определяю успешность, как "умение пользоваться возможностями, которые вам лично интересны," но я думаю, что эта мантра также работает на успех и в случае денег. Я на самом деле не имею в виду успех как что-то, наполняющее жизнь смыслом — хотя это зависит от того, чем вы ходите в жизни заниматься. Также я даю себе отчёт, что это не распростряняется на людей во многих жизненных ситуациях.
#лытдыбр #мемасики
На прошлых выходных пытался настроить Netflix на Raspberry Pi, воткнутой в телевизор, и, как всегда, чуть не улетел в космос на жопной тяге из-за пакетного менеджера Debian. Можно сколько угодно шутить про Gentoo, однако сообщения об ошибках от её пакетного менеджера всегда предельно ясны: "программа
На прошлых выходных пытался настроить Netflix на Raspberry Pi, воткнутой в телевизор, и, как всегда, чуть не улетел в космос на жопной тяге из-за пакетного менеджера Debian. Можно сколько угодно шутить про Gentoo, однако сообщения об ошибках от её пакетного менеджера всегда предельно ясны: "программа
foo
не может быть установлена, потому что зависит от библиотеки bar
с выключенным USE-флагом baz
, но уже установленная программа qux
требует, чтобы USE-флаг baz
у библиотеки bar
таки был включен". Debian'овский пакетный менеджмент хорош, более того, я считаю, что Debian — самый годный из дистрибутивов с бинарными пакетами, но его сообщения об ошибках меня уже второй десяток лет поражают до глубины души: "kodi-bin:armhf : Depends: libsmbclient:armhf (>= 2:4.0.3+dfsg1) but it is not going to be installed". А почему libsmbclient:armhf 2:4.0.3+dfsgklmnёprst
не будет установлен? Да потому что пошёл ты нахуй, вот почему. Понятная картинка (я аж GIMP ради неё расчехлил):❤3😁2😈1
This media is not supported in your browser
VIEW IN TELEGRAM
#fennel #проекты
Наш с товарищем игровой проект, судя по всему, переезжает с Defold на Löve2d — первый, конечно, является замечательным движком, но больно уж мне не нравится, что прежде чем написать хоть строчку кода, в нём нужно полчаса вазюкать мышкой, коей необходимо мацать туда-сюда графическое представление игровых объектов в редакторе. В Löve2d всё делается кодом, никаким редактором и не пахнет 😅
Заодно благодаря переезду появилась возможность сделать истинно интерактивную разработку, прямо как в горячо любимом нами Common Lisp 😊 Не без костылей, конечно, но стараниями господина Фила Хагельберга в Fennel и парой взмахов моим напильником получилось как будто бы сносно, см. видос.
Наш с товарищем игровой проект, судя по всему, переезжает с Defold на Löve2d — первый, конечно, является замечательным движком, но больно уж мне не нравится, что прежде чем написать хоть строчку кода, в нём нужно полчаса вазюкать мышкой, коей необходимо мацать туда-сюда графическое представление игровых объектов в редакторе. В Löve2d всё делается кодом, никаким редактором и не пахнет 😅
Заодно благодаря переезду появилась возможность сделать истинно интерактивную разработку, прямо как в горячо любимом нами Common Lisp 😊 Не без костылей, конечно, но стараниями господина Фила Хагельберга в Fennel и парой взмахов моим напильником получилось как будто бы сносно, см. видос.
❤1👍1
#common_lisp #лытдыбр
Сегодня на утреннем стриме зритель задал коронный вопрос, почему, мол, пишешь на лиспе. Я выдал вот такой экспромт 😅
https://youtu.be/iGkkRwCj3Po
Пора бы побриться, да
Сегодня на утреннем стриме зритель задал коронный вопрос, почему, мол, пишешь на лиспе. Я выдал вот такой экспромт 😅
https://youtu.be/iGkkRwCj3Po
🔥3😁1
#лытдыбр #соцсети
Пока не знаю зачем, но завёл себе учётку в Mastodon, пусть будет: @awkravchuk@functional.cafe
Первый раз в моей жизни, когда мне пришлось гуглить, как пользоваться социальной сетью, лол. Чтобы не забыть:
Пока не знаю зачем, но завёл себе учётку в Mastodon, пусть будет: @awkravchuk@functional.cafe
Первый раз в моей жизни, когда мне пришлось гуглить, как пользоваться социальной сетью, лол. Чтобы не забыть:
• a favorite is for the author ("I liked this")
• a bookmark is for you ("I want to see this again later")
• a boost is for your followers ("more people should see this")
Functional Café
Andrew Kravchuk (@awkravchuk@functional.cafe)
295 Posts, 307 Following, 201 Followers · #Lisp aficionado
👍3
Forwarded from Подгорица News 💙
Подгорица стала самым дешевым городом Европы
Британское издание Mirror заявило, что провести два дня в Подгорице в пять раз дешевле, чем в Швейцарии.
Так, двухдневный отдых в Подгорице может обойтись всего в 222 фунта стерлингов (примерно 250 евро): перелет на двоих туда-обратно, такси, питание, просмотр достопримечательностей, две ночи в отеле. В Швейцарии то же самое обойдется в 1022 фунта стерлингов.
По оценке Mirror, Подгорица может похвастаться сочетанием старой и новой архитектуры богатой историей и культурой. А ещё: парки, потрясающие виды на реку и одни из лучших ночных клубов на Балканах.
А вот рейтинг самых дешевых городов Европы, если сравнивать цены на двухдневный отдых.
1. Подгорица, Черногория: 222,03 фунта стерлингов.
2. Скопье, Северная Македония: 273,87 фунтов стерлингов.
3.Дебрецен, Венгрия: 303,80 фунтов стерлингов.
4. Сегед, Венгрия: 322,85 фунтов стерлингов.
5. Варшава, Польша: 326,96 фунтов стерлингов.
Подгорица News
Британское издание Mirror заявило, что провести два дня в Подгорице в пять раз дешевле, чем в Швейцарии.
Так, двухдневный отдых в Подгорице может обойтись всего в 222 фунта стерлингов (примерно 250 евро): перелет на двоих туда-обратно, такси, питание, просмотр достопримечательностей, две ночи в отеле. В Швейцарии то же самое обойдется в 1022 фунта стерлингов.
По оценке Mirror, Подгорица может похвастаться сочетанием старой и новой архитектуры богатой историей и культурой. А ещё: парки, потрясающие виды на реку и одни из лучших ночных клубов на Балканах.
А вот рейтинг самых дешевых городов Европы, если сравнивать цены на двухдневный отдых.
1. Подгорица, Черногория: 222,03 фунта стерлингов.
2. Скопье, Северная Македония: 273,87 фунтов стерлингов.
3.Дебрецен, Венгрия: 303,80 фунтов стерлингов.
4. Сегед, Венгрия: 322,85 фунтов стерлингов.
5. Варшава, Польша: 326,96 фунтов стерлингов.
Подгорица News
❤1👍1
#проекты #common_lisp
Вот уже третью неделю по утрам занимаюсь тем, что выпиливаю из своего проекта d2clone-kit код, реализующий паттерн Entity-Component-System в отдельную библиотеку с пермиссивной лицензией, которую можно будет использовать в других проектах, и стримлю процесс на Twitch (записи не выкладываю, но вот-вот найду время на монтаж недлинного видео-нарезки).
Рабочее название библиотеки, или, скорее, мини-фреймворка —
По ходу реализации понял, что для наибольшего быстродействия придётся изменить схему хранения, со sparse array в терминологии г-на Мишеля Каини, автора аналогичной библиотеки EnTT для C++, на big matrix в его же терминологии. Первая позволяет экономить память, при этом продолжая почти также эффективно утилизировать кэш процессора, но возникают проблемы, если нужно перебрать несколько разных аспектов данных (компонентов в терминологии ECS) у объектов одновременно — при этом паттерн доступа к памяти оказывается таким же хаотичным, как и без всяких этих наших ECS. Более того, аналогичные проблемы возникнут и тогда, когда понадобится обратный индекс, т.е. возмножность по конкретному значению поля компонента получить один или несколько объектов, которым оно принадлежит, — такое может быть полезно для реализации имён объектов, или взаимоотношений между объектами (например, родитель ⇿ дочерний объект).
Помимо sparse array, есть вариант реализации под названием archetype, он используется в сишной библиотеке Flecs, но этот вариант довольно сложен в реализации, мне не кажется, что я бы его потянул в какое-то разумное время. Остаётся третий, самый простой вариант, именуемый big array или big matrix, в котором данные объектов просто сваливаются в огромные массивы соответствующих типов, по длине равные количеству объектов в игре, и насрать, если не у каждого объекта есть все аспекты данных (компоненты). Понятное дело, что память при этом расходуется чудовищно неэффективно, по моим примерным прикидкам, в типичной среднего размера игре с двумя сотнями разных компонентов, каждый из которых содержит в среднем по пять полей данных, на каждый объект будет расходоваться где-то по 8 килобайт памяти, т.е. миллион объектов — и вот игра уже выжрала 8 гигабайт 😅 Зато быстродействие у этого метода самое непревзойдённое, никаких лишних хопов по памяти, всё оседает в L1/L2/L3 кэшах, красота кругом. Можно даже решить проблему с излишней памятью, добавив механизм разбиения массивов с данными компонентов на "страницы", но это я решил отложить на будущее.
Решив поменять внутреннее устройство, понял, что и без тестового фреймворка не обойтись, несмотря на то, что я обычно свято следую принципу "I don't always test my code, but when I do, I do it in production". В качестве такового взял rove г-на Фукамачи, благо он довольно симпатично выглядит и входит в состав шаблона проекта, сгенерированного для меня его же утитилой cl-project. Как всегда у г-на Фукамачи, не обошлось без косяков — из командной строки тесты почему-то не запускаются, приходится запускать лисповый файл с одной-единственной формой
К чему я затеял этот суб-проект — надеюсь, в этом году будет проводиться ежегодный Lisp Game Jam, на котором удастся повыделываться этой своей библиотекой 😊 Собственно, задача-максимум — повторить вот эту дёмку, сделанную на Flecs, и сравнить быстродействие, — очень уж хочется показать, что Common Lisp по производительности может дышать в спину чистому C и потому вполне себе пригоден для геймдева 🔥
Вот уже третью неделю по утрам занимаюсь тем, что выпиливаю из своего проекта d2clone-kit код, реализующий паттерн Entity-Component-System в отдельную библиотеку с пермиссивной лицензией, которую можно будет использовать в других проектах, и стримлю процесс на Twitch (записи не выкладываю, но вот-вот найду время на монтаж недлинного видео-нарезки).
Рабочее название библиотеки, или, скорее, мини-фреймворка —
cl-fast-ecs
. Паттерн ECS, в свою очередь, необходим для того, чтобы хранить и обрабатывать игровые объекты таким образом, чтобы обеспечивать максимальное быстродействие, собственно, главная его идея состоит в хранении логически взаимосвязанных данных игровых объектов последовательно в памяти, чтобы расчёсывать кэш процессора вдоль шёрстки 😽По ходу реализации понял, что для наибольшего быстродействия придётся изменить схему хранения, со sparse array в терминологии г-на Мишеля Каини, автора аналогичной библиотеки EnTT для C++, на big matrix в его же терминологии. Первая позволяет экономить память, при этом продолжая почти также эффективно утилизировать кэш процессора, но возникают проблемы, если нужно перебрать несколько разных аспектов данных (компонентов в терминологии ECS) у объектов одновременно — при этом паттерн доступа к памяти оказывается таким же хаотичным, как и без всяких этих наших ECS. Более того, аналогичные проблемы возникнут и тогда, когда понадобится обратный индекс, т.е. возмножность по конкретному значению поля компонента получить один или несколько объектов, которым оно принадлежит, — такое может быть полезно для реализации имён объектов, или взаимоотношений между объектами (например, родитель ⇿ дочерний объект).
Помимо sparse array, есть вариант реализации под названием archetype, он используется в сишной библиотеке Flecs, но этот вариант довольно сложен в реализации, мне не кажется, что я бы его потянул в какое-то разумное время. Остаётся третий, самый простой вариант, именуемый big array или big matrix, в котором данные объектов просто сваливаются в огромные массивы соответствующих типов, по длине равные количеству объектов в игре, и насрать, если не у каждого объекта есть все аспекты данных (компоненты). Понятное дело, что память при этом расходуется чудовищно неэффективно, по моим примерным прикидкам, в типичной среднего размера игре с двумя сотнями разных компонентов, каждый из которых содержит в среднем по пять полей данных, на каждый объект будет расходоваться где-то по 8 килобайт памяти, т.е. миллион объектов — и вот игра уже выжрала 8 гигабайт 😅 Зато быстродействие у этого метода самое непревзойдённое, никаких лишних хопов по памяти, всё оседает в L1/L2/L3 кэшах, красота кругом. Можно даже решить проблему с излишней памятью, добавив механизм разбиения массивов с данными компонентов на "страницы", но это я решил отложить на будущее.
Решив поменять внутреннее устройство, понял, что и без тестового фреймворка не обойтись, несмотря на то, что я обычно свято следую принципу "I don't always test my code, but when I do, I do it in production". В качестве такового взял rove г-на Фукамачи, благо он довольно симпатично выглядит и входит в состав шаблона проекта, сгенерированного для меня его же утитилой cl-project. Как всегда у г-на Фукамачи, не обошлось без косяков — из командной строки тесты почему-то не запускаются, приходится запускать лисповый файл с одной-единственной формой
(asdf:test-system :cl-fast-ecs)
.К чему я затеял этот суб-проект — надеюсь, в этом году будет проводиться ежегодный Lisp Game Jam, на котором удастся повыделываться этой своей библиотекой 😊 Собственно, задача-максимум — повторить вот эту дёмку, сделанную на Flecs, и сравнить быстродействие, — очень уж хочется показать, что Common Lisp по производительности может дышать в спину чистому C и потому вполне себе пригоден для геймдева 🔥
🔥3👍1🤔1