Прогаем с кенгурой
229 subscribers
198 photos
194 videos
17 files
160 links
Сидим с кенгурой под горой, запекаем текстуры...

{ программирование, процедурная генерация, графика, аудио, образование и немного про специфичные игры }

https://gostrobrod.dev
Download Telegram
Еще наткнулся на Kokoro TTS. Хотя он не совместим с CoreML и MPS сразу из коробки и требует плясок с бубном, коих я еще не совершал, он работает довольно шустро локально на CPU и выдает очень красивый результат. Плюс имеет большой выбор голосов (и малый выбор языков).

Может кому пригодится.
This media is not supported in your browser
VIEW IN TELEGRAM
Зацените, какое правило нашел один из пользователей. Жуки-хромосомы)))
Bug.agent
178 B
Если кто хочет потыкать сам, вот это надо положить в
Files->On my phone->Physarum->Agents и можно загрузить из песочницы.

Работает оно лучше на высокой влажности.
У меня сейчас ппц какие загруженные недели, поэтому интересного буду мало постить, но чтобы вы не скучали, вот вам бесполезный факт:

Игра «Жизнь» Конвэя - полна по Тьюрингу. То есть гипотетически, вы можете на ней выполнять что угодно, в том числе моделировать моделирование самой игры жизнь, как тут: https://oimo.io/works/life/

Очевидно, что честно такое считать нереально, поэтому используется подход на основе следующих двух:

OTCA(Out The Context Advance)-метапиксели
пиксель, состоящий из пикселей-клеток игры жизнь (вы их можете видеть на симуляции по ссылке - готовый блок, который общается сразу с такими же блоками, а не всеми соседями по границе

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

Комбинируя эти два подхода мы можем эмулировать бесконечный зум как вверх, так и вниз, не привлекая санитаров не производя безумное число вычислений, что и видно на симуляции.
🔥5🤯5👍3
Я на досуге периодически поглядываю в сторону процедурной музыки и хотя ничего годного еще не сделал, нашел кучу разных инструментов разного уровня сложности и доступности.

Разобьем на группы:


Пишем музыку нормальным кодом


SuperCollider
Это монструозный инструмент для обработки аудио и музыки от чувака, который потом еще CoreAudio яблокам пилил.

SonicPi
Тут все попроще и поприятнее - не надо глубоко погружаться в дебри - пишите себе спокойно музыку на Ruby. Сделан на SuperCollider

AudioKit
Ну и другие фреймворки - море их - под тот же питон и свифт.


Пишем музыку ненормальным кодом


Orca
И другие эзотерические языки. Пишем поведение через странную нотацию на 2д поле. У меня так и не получилось его приконнектить к midi порту - придется пересобирать ручками.

Трекеры
Хотя изначально это больше альтернатива нотной записи, которую удобно на клавиатуре набирать, сейчас некоторые из них позволяют программировать поведение и переходы (например Renoise).


Нормальные ноды


miRack
Бесплатный виртуальный модульный синтезатор. У вас есть генераторы, фильтры, модуляторы, сиквенсоры и прочее, из которых вы собираете свой синтезатор или сразу музыку делаете.

PureData / PlugData
Тоже собираем из отдельных элементов синтезатор, но тут уже ближе к коду и нужно вводить цифры, а не крутить ручки. Хотя ручки тоже можно сделать. Позволяют делать плагины для DAW-ов.

Audulus 4
Тот же модульный синтезатор, но без претензии на реальную внешность - просто ноды. Сделан кстати на AudioKit-е.


Ненормальные ноды


Midinous
Это эзотерическая форма инструментов на графах. Вы ставите ноды: ноты, генераторы и тд - и соединяете их переходами. Длина перехода определяет длительность паузы между нотами.

Senode
Очень урезанный и почти бесполезный Midinous под ios.


Если знаете что-то еще - накидывайте, интересно посмотреть.
👍3
This media is not supported in your browser
VIEW IN TELEGRAM
Я хотел рассказать про реализацию простого поведения агентов в лабиринте, но вспомнил, что для этого сначала нужен лабиринт.

Итак, алгоритмы для генерации лабиринтов:
- рекурсивный с возвратом (но лучше делать через стек, чтобы рекурсия другой стек не съела)
- Прима
- Краскала
- Бинарное дерево
- Sidewinder (хз как на русском)
- Олдоса-Бродера
- Вильсона

Расписывать смысла не вижу смысла, когда есть код и визуальная демка.
🔥5
Прогаем с кенгурой
Я хотел рассказать про реализацию простого поведения агентов в лабиринте, но вспомнил, что для этого сначала нужен лабиринт. Итак, алгоритмы для генерации лабиринтов: - рекурсивный с возвратом (но лучше делать через стек, чтобы рекурсия другой стек не съела)…
Интересный момент заметил - Телеграм подрезал видео по горизонтали.

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

Но это уже совсем другая история.
This media is not supported in your browser
VIEW IN TELEGRAM
Хотя я все еще далеко от своего компа, у меня есть айпад и микростудия - накидал на коленке демку про поведение агентов в лабиринте. Приеду - расскажу подробнее, а пока вот видос:
🔥9
Программирование погроммированием, но посмотрите какая красота в центре города
🔥126🥰2
This media is not supported in your browser
VIEW IN TELEGRAM
Так, я вернулся. По пути решил повспоминать про то, какие вообще у нас есть простые алгоритмы для решения лабиринтов в принципе:
- поиск в глубину (может найти быстро, а может и не найти - как повезет)
- поиск в ширину (найдет, не найдет, но все облазиит - хорошо для flood fill-а)
- жадный (тупо сокращает какую-то метрику - расстояние до цели, например)
- А* (почти как жадный, но еще учитывает пройденный путь в метрике)
- Дийкстра (тот же поиск в ширину, но с весами)

Как всегда демка и код

На следующих выходных, надеюсь, сделаю видео про человечка, убегающего от звездочек.
🔥7👍1
Я не очень люблю разработку под Андроид и причины тому две: опенсорс и OpenGL.

Начнем со второго, потому что это более древнее зло. Как известно, OpenGL - это стандарт. Все, что вне его описания уходит либо в расширения, либо реализуется, как это считает нужным вендор. Расширения как бы тоже стандаритизированы, но вот их использование не является обязательным, а всего лишь рекомендация. Даже если вендор - это Google, а Google - это один из ключевых участников Khronos, совершенно не факт, что расширение будет на каком-нибудь Pixel-е. Поэтому лучше их вообще не использовать. Ну или обмазаться кучей проверок (на одной работе была отдельная ветка кода под `if (IE6)` - видимо тут так же надо - да, именно так и надо, к сожалению).

С Vulkan-ом +/- все то же самое, только еще и кода в 100500 раз больше приходится писать просто, чтобы его инициализировать - напоминает старый DirectX.


Теперь к опенсорсу. Казалось бы, что плохого, что не нашлось в документации - найдется в коде. Как бы да, если вы пишите исключительно под Pixel. Но у нас же есть еще Xiaomi, Samsung, Huawei и прочие. И у каждого свой форк Андроида. И к их коду, как правило, доступа нет (если есть - поправьте и покажите, где оно лежит). В итоге по документации и гугловому коду оно должно работать, а по факту - держи рандомный код ошибки и сообщение, и сиди кури мануалы по железу, чтобы понять, что же там не так - иначе я хз как это понять.

И это я, слава богу, сижу достаточно далеко от гуи - по большей частью за JNI даже. Что там на гуе - боюсь представить. Хотя нет, не боюсь - на прошлой работе был проект под Андроид гуйный, и мы там намучились с доступностью, потому что она, опять таки, у всех вендоров (не) работает по-разному.
🔥41🤯1
Что-то случилось: сошлись звезды или планеты выстроились в ряд - но у меня наконец поженились GarageBand и Orca.

Кто не знает, Orca - это эзотерический язык для программирования музыки на плоскости. Раз оно ожило, можно экспериментировать - буду делиться наблюдениями.
🤔41
А если у вас есть MainStage (или еще что-то, позволяющее вешать разные миди каналы на разные инструменты), то можно делать вещи еще интереснее и писать сразу для ансамбля.
This media is not supported in your browser
VIEW IN TELEGRAM
Нашел, куда с пользой на практике применить процедурную генерацию - буду пилить мод для Террарии, потому как задолбала меня там рутина типа копания туннелей.

Ну и всякие биомы можно нагенерить через SDF необычные.

Пока сделал рисование этих самых тоннелей))
🔥6