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

По всем вопросам @awkravchuk
Download Telegram
Forwarded from LuckyLambda
Этой весенней #ScreenShotSaturday у нас небольшой юбилей — мы четвёртую неделю подряд рассказываем о прогрессе разработки нашего рогалика и выкладываем промежуточные альфа-версии, а значит, нашему проекту стукнул месяц 🥳 На этот раз Кофейный лис участвовал в нажимании кнопок под кодом, поэтому согласился отдохнуть от написания постов и вернуться к печатной машинке в следующий раз)

За эту неделю мы успели поработать с генерацией лабиринта, исследуемого игроком, сделав его гораздо больше и добавив механизмы освещённости (вернее, затенённости) и "тумана войны", которые, как нам кажется, добавляют мрачной атмосферы игре. В качестве идеального образца зловещего подземелья мы ориентировались на Монастырь из первого акта Diablo 2 — по вайбу мы по-прежнему приверженцы жанра dark fantasy 😈

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

Наконец, по случаю круглой даты специально для вас сделали возможность отправить ваш фидбек, запросы функциональности или отчёт об ошибке прямо из главного меню, без необходимости ходить на сторонние сайты (см. рис. 3)! Качайте текущую версию игры по обычной ссылке и дайте нам знать всё, что о нас думаете — мы будем рады любой обратной связи 😊
#лытдыбр #common_lisp

Меж всем тем, на той неделе случилось небольшое эпохальное событие — я переписал код нашей будущей игры в стиле literate programming, придуманном Кнутом, при котором кодовая база по сути является текстом на естественном языке с фрагментами кода, которые из него выдираются и скармливаются компилятору. Выглядит это всё нереально круто (см. рис. 1), а работает посредством пакета cl-org-syntax, сделанного одним из столпов русскоязычного лисп-коммьюнити @akater (подпишитесь на бложек, его лапищщи невероятно мощны).

Насколько мне известно, literate programming для публичного кода на Common Lisp использует примерно человек шесть во всём мире, и половину из них я знаю лично 🤣 В силу редкости работает всё неидеально — требует кастомных патчей на емаксовские пакеты, и даже с ними емакс иногда начинает чудить и по нажатию волшебных клавиш C-c C-c почему-то начинает отправлять код в пекедж cl-user вместо текущего, ну да это не страшно.

В целом это довольно крутой и необычный опыт, сродни TDD на всю голову, в котором сначала пишется тест, а потом уже код, что позволяет тщательно продумать интерфейс кода до его написания. Здесь тоже всё время пытаешься держать в голове, как ты будешь человеческими словами описывать тот код, что сейчас пишешь, и думается от этого явно по-другому. В общем, рекомендую попробовать 😊
Forwarded from LuckyLambda
Мы пережили ещё одну неделю нашего путешествия и не теряем участников. Совсем нет, напротив.

Итак, отложим на время кофе и обратим взоры на движение нашего проекта сквозь поток всевозможных континуумов. И сразу же поправлю себя — не взоры, в этот раз мы займём внимание другого вашего органа. Как вы, наверное, помните, в прошлый раз нашим зелёным локомотивом была открыта возможность оставить свои предложения, чем сразу не преминули воспользоваться неравнодушные друзья. Не все запросы мы можем реализовать по разным причинам (как концептуально, так и местами, возможно, технически), но эту просьбу оставить без внимания было бы кощунством. Поэтому представляем вашему вниманию новое чувственное измерение — звук. Это уже вторая важная авторская черта нашего проекта после собственно самой реализации, и, надеемся, она придётся вам по вкусу так же, как и нам.

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

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

Засим рекомендую вернуться к кофе, пока он не остыл, и оценить нововведения.

(Что? Почему в реакциях нет кофе?! Я протестую, моё сердце разбито 💔)

_LL_CV
#лытдыбр #common_lisp

А пока движется работа над нашей игрой, я потихоньку вношу сопутствующие улучшения в свои лисповые библиотеки для геймдева, например, добавил вот в библиотеку деревьев поведения вспомогательную отладочную функцию для дампа дерева в виде ASCII арта 💅😊
Forwarded from LuckyLambda
Снова суббота, и мы не изменяем традиции давать о себе весточку. Надеюсь, вы не устали от вычурных сравнений и заковыристых конструкций, потому что это снова я. Позвольте мне отставить чашку ароматнейшего кофе, который я по какой-то нелепости снова налил слишком заранее, и приступить.

Начнём с минутки статистики. Мир современного дизайна диктует паттерны поведения пользователей, ориентированные на буквальное, непосредственное управление. Что ж, мы не можем обойти стороной это обстоятельство и поэтому в погоне за целевой аудиторией представляем вам управление с помощью мыши. Это было тяжёлое решение, но как вы увидите, мы все же пошли на поводу у моды.

Кстати, к вопросу о “видеть”, если вы пробовали предыдущие билды, часть игрового процесса вы могли определять исключительно по соответствующим уведомлениям в журнале. Пришло время исправить и этот аспект, начиная с текущего момента к вашим услугам несколько визуальных маркеров проходящего урона. Мы обязательно их еще донастроим, но уже сейчас каждая удачная атака заметно отличается от промаха.

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

Хм, это заняло больше времени чем я рассчитывал, так что я боюсь прикасаться к чашке, он наверняка ледяной… Но я буду сильным лисом, и сразу после того, как попрощаюсь с вами, приму свою судьбу. Замечательной недели, качайте новый билд, с нетерпением ждём каждый комментарий ❤️

_LL_CV
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from LuckyLambda
Мы опять выходим на связь с очередной порцией изменений в альфа-версии нашего рогалика. На этот раз нововведений не так много из-за того, что мы провели много времени в обсуждениях сюжета и лора игры, но, по крайней мере, пришли к некоторому консенсусу.

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

Также по ходу дела пофиксили позорный баг в расчёте ближнего боя, из-за которого наносимый персонажами урон был куда ниже, чем должен был, и пофиксили мелочи, связанные с журналом событий — теперь в него выводятся только сообщения о событиях, которые действительно видны игроку, а при первом появлении ранее не виденного моба выводится вот это классическое сообщение вида You see a goblin.

На следующей неделе планируем начать работу над магией, балансом и элементами сюжета 💪 А пока качайте новый альфа-билд, чтобы вволю пострелять в монстров и дайте нам знать, что вы о нём думаете 😊
#лытдыбр #common_lisp

Это очередной нытья пост о том, как всё плохо, на этот раз в макоси. Потратил по сути весь сегодняшний рабочий день (см. рис. 1), чтобы сделать сборку игры в обоих вариантах (intel и apple silicon, спасибо хоть, что про архитектуры m68k и PomerPC не надо думать, потому что уже давно отмерли). Даже по ходу дела багу завёл в багтрекере MacPorts доисторическом (Trac, на секундочку), который, сука, у меня почему-то только с тор-браузера открывается. В итоге обкостылил, просто насильно wget-ом и tar-ом устанавливая на Ventura бинарный архив для Monterey. Бинарник-то благодаря этому костылю собрался, но при запуске он вешается на каком-то мьютексе внутрях liballegro (см. рис. 2), видимо, потому, что перемешиваются два разных стандартных рантайма в одном бинарнике, от вентуры и от монтери. Короче, с билдом под интеловые маки придётся продолжать возиться, когда на это будет время 😩

Ну казалось бы, есть у тебя в основе нормальный UNIX, с ядром, спижженным из BSD, как его можно превратить в анально огороженный сад, каковым макось является сегодня — для меня загадка. Реально, при Джобсе было лучше 😡
#лытдыбр #common_lisp

Меж всем тем, вот уже вторую неделю в нашей игре используются шейдеры, пока только для эффекта урона на персонажах, но в дальнейшем будут и для других визуальных эффектов. Финт в том, что я ни разу в жизни не писал шейдеров. Как же я добавил их в игру, спросите вы? Очень просто, с помощью DSL из либы 3bgl-shader, которая позволяет написать код на нормальном, человеческом Common Lisp (см. рис. 1), а затем автоматически транслирует его в код GLSL шейдера (см. рис. 2)! Если это не нереально круто, я тогда вообще не знаю, что означает слово "круто" 😍 Как же я с этого проекта писял кипятком, а когда написал на нём свой первый шейдер, это был вообще улёт 🤯

Сделал, кстати, к либе пуллреквест с добавлением поддержки функций plusp и minusp, вы знаете, куда насыпать лойсов, чтобы автор его побыстрее принял 🌚
Forwarded from LuckyLambda
Сегодня середина недели, и мы неожиданно принесли всем жабу.

Ладно, не только жабу. Я наконец-то оказался заметно полезным, и смог принести команде достаточно материала, чтобы сделать осознанный выбор, тем самым добавив третий авторский компонент в наш основной проект.

Итак, начиная с этого момента у игры есть название, несущее в себе в том числе смысл, который в дальнейшем мы аккуратно разложим в нужных местах нашего общего путешествия.

Что ж, оттягивать момент больше невозможно, поэтому встречайте: Imcaving

Новое название также влечёт за собой изменение домашней страницы проекта, так что не теряйте нас!

_LL_CV
#лытдыбр

На днях тут реанимировал свой древний ноутбук, чтобы с него показывать нашу игру на местном подгорицком митапе инди-разработчиков (никуда не переключайтесь, чуть позже разрожусь отчётом о событии), починил начавший разваливаться корпус у знакомого (если кому нужен ремонт ноутбука в Черногории, пишите, поделюсь контактом) и переставил ОС.

Почему переставил — стояла на нём бомжара Manjaro, такой форк Arch Linux'а, но проблема в том, что у ей внутре, как и у прародителя, systemd, а это рак, разъедающий мой уютненький линукс — из-за него то переход в ждущий режим отъебнёт, то жёсткий диск нормально не отмонтируется и по полчаса гоняет fsck при загрузке, то при выключении "подождите ещё 6000 секунд, пока этот systemd-юнит завершится". Максимальный дизреспект Леннарту Поцтерингу, в общем.

Ну я и поставил другой форк арча, под названием Artix Linux, создатели которого разделяют мою позицию по systemd. И вот загружаюсь в свежепоставленную среду с MATE, начинаю настраивать систему, и понимаю, что работает вообще всё. Ну то есть как, раньше в арчвики была аж целая статья, Post-install steps или типа того, где были всякие советы по подкручиванию разных системных крутилок для оптимизации, плюс драйвера на то поставь, на сё поставь, vaapi настрой, туда-сюда.

А у меня изкоробки всё работает, разве что пришлось отключить драйвера noveau, которые толком OpenGL не поддерживают почему-то — что удивительно, встройка Intel Graphics при этом спокойно поддерживает OpenGL 3.3, нужный для игры, и изи играет видео в 1080p. Ещё включил TRIM на SSD — по дефолту он выключен для зашифрованных дисков, потому что если включить, видите ли, злоумышленник сможет определить, какую именно ФС я использую — облегчу задачу злоумышленникам, f2fs у меня 😁

Ну и перетащил свои sysctl-настройки для старого доброго бага-мема линукса 12309, который даже и не баг вовсе, а особенность работы виртуальной памяти в линуксах (Linux ate my RAM, ага), а именно выкрученный в минимум vm.swappiness и уменьшенный до 50 vm.vfs_cache_pressure, ну и dirty_ratio побольше.

В общем, не нарадуюсь на ноутбук, который опять как новенький, это у него уже, наверное, даже не вторая и не третья, а где-то шестая жизнь 😅
Forwarded from LuckyLambda
В символический третий раз за неделю я сажусь за текст. В этот раз символически не притронусь к кофе, чтобы сделать акцент на полной событиями неделе.

Как можете заметить выше, мы определились с названием и, соответственно, общей рамкой сюжета. А значит ничего, кроме вдохновения, больше не останавливает нас от наполнения действий, событий, существ и предметов дополнительным смыслом, обогащая игровой опыт.

Следом за этим мы официально засветились в реале и по результатам обратной связи осознали что концепция требует корректировки (как же хорошо, что мы успели прийти к согласию по вопросам лора до этого). Что ж, изменения обязательно сделают нас лучше.

Что же еще успело случиться в нашем теперь определившемся спуске в глубины?

Основные заметные изменения вновь коснулись звука. Саундтрек начинает формировать ощутимую рамку и в связи с этим расширяться, поэтому для поддержания этого процесса игра теперь поддерживает управление треками, с сопутствующим функционалом кросс-фейда.

В ознаменование этого у нас теперь есть выделенные музыкальные темы на существующие на данный момент этапы игры.

К тому же мы не забываем обращать внимание на фидбэк и возвращаемся с некоторыми исправлениями. Так, раздел справки актуализирован последними веяниями моды управления, взращён экзистенциальный кризис, запрещающий игроку видеть себя, возвращена сборка под Apple Silicon и скорректирована обработка коллизий, чтобы снизить частоту возникновения ситуаций, при которых персонажи застревают друг в друге (однако не исключена полностью, и нас ожидает ещё один раунд отладки).

Ну и в завершение, возможно теперь вы сможете оставить свой след в наших мрачных коридорах.

Теперь предлагаем вам посмотреть и послушать обновления самостоятельно, скачав новый альфа-билд, и, как всегда, очень ждём реакций и обратной связи!

_LL_CV