Программирование погроммированием, но посмотрите какая красота в центре города
🔥12❤6🥰2
This media is not supported in your browser
VIEW IN TELEGRAM
Так, я вернулся. По пути решил повспоминать про то, какие вообще у нас есть простые алгоритмы для решения лабиринтов в принципе:
- поиск в глубину (может найти быстро, а может и не найти - как повезет)
- поиск в ширину (найдет, не найдет, но все облазиит - хорошо для flood fill-а)
- жадный (тупо сокращает какую-то метрику - расстояние до цели, например)
- А* (почти как жадный, но еще учитывает пройденный путь в метрике)
- Дийкстра (тот же поиск в ширину, но с весами)
Как всегда демка и код
На следующих выходных, надеюсь, сделаю видео про человечка, убегающего от звездочек.
- поиск в глубину (может найти быстро, а может и не найти - как повезет)
- поиск в ширину (найдет, не найдет, но все облазиит - хорошо для flood fill-а)
- жадный (тупо сокращает какую-то метрику - расстояние до цели, например)
- А* (почти как жадный, но еще учитывает пройденный путь в метрике)
- Дийкстра (тот же поиск в ширину, но с весами)
Как всегда демка и код
На следующих выходных, надеюсь, сделаю видео про человечка, убегающего от звездочек.
🔥7👍1
https://www.youtube.com/watch?v=FLRaPDPybq0
Наконец сделал видос про навигацию в лабиринтах.
Ну и демка с кодом
Наконец сделал видос про навигацию в лабиринтах.
Ну и демка с кодом
YouTube
Лабиринты: генерация и навигация — с визуализацией и примерами кода
В этом видео показываю, как работают алгоритмы генерации лабиринтов и поиска пути, а также как реализовать умную навигацию по ним. Всё — наглядно, с визуализацией и реальными демками в MicroStudio, которые вы можете открыть и попробовать сами.
Демка генерации:…
Демка генерации:…
🔥5❤2
Я не очень люблю разработку под Андроид и причины тому две: опенсорс и OpenGL.
Начнем со второго, потому что это более древнее зло. Как известно, OpenGL - это стандарт. Все, что вне его описания уходит либо в расширения, либо реализуется, как это считает нужным вендор. Расширения как бы тоже стандаритизированы, но вот их использование не является обязательным, а всего лишь рекомендация. Даже если вендор - это Google, а Google - это один из ключевых участников Khronos, совершенно не факт, что расширение будет на каком-нибудь Pixel-е. Поэтому лучше их вообще не использовать. Ну или обмазаться кучей проверок (на одной работе была отдельная ветка кода под ` - да, именно так и надо, к сожалению ).
С Vulkan-ом +/- все то же самое, только еще и кода в 100500 раз больше приходится писать просто, чтобы его инициализировать - напоминает старый DirectX.
Теперь к опенсорсу. Казалось бы, что плохого, что не нашлось в документации - найдется в коде. Как бы да, если вы пишите исключительно под Pixel. Но у нас же есть еще Xiaomi, Samsung, Huawei и прочие. И у каждого свой форк Андроида. И к их коду, как правило, доступа нет (если есть - поправьте и покажите, где оно лежит). В итоге по документации и гугловому коду оно должно работать, а по факту - держи рандомный код ошибки и сообщение, и сиди кури мануалы по железу, чтобы понять, что же там не так - иначе я хз как это понять.
И это я, слава богу, сижу достаточно далеко от гуи - по большей частью за JNI даже. Что там на гуе - боюсь представить. Хотя нет, не боюсь - на прошлой работе был проект под Андроид гуйный, и мы там намучились с доступностью, потому что она, опять таки, у всех вендоров (не) работает по-разному.
Начнем со второго, потому что это более древнее зло. Как известно, OpenGL - это стандарт. Все, что вне его описания уходит либо в расширения, либо реализуется, как это считает нужным вендор. Расширения как бы тоже стандаритизированы, но вот их использование не является обязательным, а всего лишь рекомендация. Даже если вендор - это Google, а Google - это один из ключевых участников Khronos, совершенно не факт, что расширение будет на каком-нибудь Pixel-е. Поэтому лучше их вообще не использовать. Ну или обмазаться кучей проверок (на одной работе была отдельная ветка кода под `
if (IE6)` - видимо тут так же надоС Vulkan-ом +/- все то же самое, только еще и кода в 100500 раз больше приходится писать просто, чтобы его инициализировать - напоминает старый DirectX.
Теперь к опенсорсу. Казалось бы, что плохого, что не нашлось в документации - найдется в коде. Как бы да, если вы пишите исключительно под Pixel. Но у нас же есть еще Xiaomi, Samsung, Huawei и прочие. И у каждого свой форк Андроида. И к их коду, как правило, доступа нет (если есть - поправьте и покажите, где оно лежит). В итоге по документации и гугловому коду оно должно работать, а по факту - держи рандомный код ошибки и сообщение, и сиди кури мануалы по железу, чтобы понять, что же там не так - иначе я хз как это понять.
И это я, слава богу, сижу достаточно далеко от гуи - по большей частью за JNI даже. Что там на гуе - боюсь представить. Хотя нет, не боюсь - на прошлой работе был проект под Андроид гуйный, и мы там намучились с доступностью, потому что она, опять таки, у всех вендоров (не) работает по-разному.
🔥4❤1🤯1
Что-то случилось: сошлись звезды или планеты выстроились в ряд - но у меня наконец поженились GarageBand и Orca.
Кто не знает, Orca - это эзотерический язык для программирования музыки на плоскости. Раз оно ожило, можно экспериментировать - буду делиться наблюдениями.
Кто не знает, Orca - это эзотерический язык для программирования музыки на плоскости. Раз оно ожило, можно экспериментировать - буду делиться наблюдениями.
🤔4❤1
This media is not supported in your browser
VIEW IN TELEGRAM
Нашел, куда с пользой на практике применить процедурную генерацию - буду пилить мод для Террарии, потому как задолбала меня там рутина типа копания туннелей.
Ну и всякие биомы можно нагенерить через SDF необычные.
Пока сделал рисование этих самых тоннелей))
Ну и всякие биомы можно нагенерить через SDF необычные.
Пока сделал рисование этих самых тоннелей))
🔥6
https://youtu.be/hHqi1CUbclM?si=v5QUkOczd2DOm2TF
Записали с товарищем очередной бухтеж.
Если кому есть что интересного обсудить/рассказать/поговорить на тему вокруг разработки, программирования, математики. графики и процедурной генерации - пишите, обсудим
Записали с товарищем очередной бухтеж.
Если кому есть что интересного обсудить/рассказать/поговорить на тему вокруг разработки, программирования, математики. графики и процедурной генерации - пишите, обсудим
YouTube
Нужно ли тебе войти в IT? Сокращения, выгорания, конкуренция, AI и выходы из сферы
Очередной подкаст с Сергеем — обсуждаем, что сейчас происходит в сфере ИТ, почему туда идут, и почему из неё порой хочется выйти (и почему мы не выходим). Поговорили о выгорании, сокращениях, LinkedIn, образовании, личном бренде, и даже немного о политике…
Вроде яблоки анонсировали интересного про Metal, AVP и ML. Проснусь - посмотрю, что там.
Пока очень полезной в продуктовом плане видится поддержка контроллеров для очков - можно будет реализовать операции, требующие точности позиционирования.
Пока очень полезной в продуктовом плане видится поддержка контроллеров для очков - можно будет реализовать операции, требующие точности позиционирования.
Liquid Glass
Пока три вопроса
1. Сколько оно жрет батареи на все эти эффекты стекла?
2. На эффекты жидкости оно SDF использует или ручками через безье фигуры строит?
3. Сколько теперь страдать дизайнерам и фигме?
Пока три вопроса
1. Сколько оно жрет батареи на все эти эффекты стекла?
2. На эффекты жидкости оно SDF использует или ручками через безье фигуры строит?
3. Сколько теперь страдать дизайнерам и фигме?
😁5🤝3
Foundation model
Выглядит многообещающим. Надеюсь работать будет так же хорошо, как презентовано.
Сделаю однажды на этом полностью процедурно генерированную RPG, если оно будет работать.
Выглядит многообещающим. Надеюсь работать будет так же хорошо, как презентовано.
Сделаю однажды на этом полностью процедурно генерированную RPG, если оно будет работать.
🔥1
Metal4
- Блит и компьют теперь просто компьют
- У рендер энкодера можно переключать аттачменты (фреймбуферы) на лету в энкодере
- новый
- теперь мы можем их выставлять заранее, а не в энкодере
- ресурсы подгружаются по мере необходимости
- я обычно не компилирую их в рантайме
- но теперь можно компилировать несколько пайплайнов под разные таргеты и тд
- добавили тензоры (раньше были только буферы и текстуры)
- новый
- CoreMLPackage -> MetalPackage->энкодер
- расширения для Metal Shading Language для поддержки всего этого
- апскейл (было и раньше)
- интерполяция кадров
- денойз для рейтрейсинга
Возможно, что-то пропустил. Детали будем смотреть в доках и следующих сессиях.
1. Меньше оверхеда и жонглирования энкодерами- Блит и компьют теперь просто компьют
- У рендер энкодера можно переключать аттачменты (фреймбуферы) на лету в энкодере
- новый
MachineLearningEncoder2. Управление ресурсами в энкодере- теперь мы можем их выставлять заранее, а не в энкодере
- ресурсы подгружаются по мере необходимости
3. Улучшенная синхронизация (?)4. Продвинутая компиляция шейдеров- я обычно не компилирую их в рантайме
- но теперь можно компилировать несколько пайплайнов под разные таргеты и тд
5. Интеграция ML наконец- добавили тензоры (раньше были только буферы и текстуры)
- новый
MachineLearningEncoder- CoreMLPackage -> MetalPackage->энкодер
- расширения для Metal Shading Language для поддержки всего этого
6. В MetalFX добавили плюшек- апскейл (было и раньше)
- интерполяция кадров
- денойз для рейтрейсинга
7. Можно мешать старый и новый с помощью MTLEventВозможно, что-то пропустил. Детали будем смотреть в доках и следующих сессиях.
👍5
This media is not supported in your browser
VIEW IN TELEGRAM
К вопросу
liquid ass. Недавно на одном проекте делал такую линзу для просмотра значений пикселей. В данном случае - индексированная гифка🔥16
Прогаем с кенгурой
Нашел, куда с пользой на практике применить процедурную генерацию - буду пилить мод для Террарии, потому как задолбала меня там рутина типа копания туннелей. Ну и всякие биомы можно нагенерить через SDF необычные. Пока сделал рисование этих самых тоннелей))
Media is too big
VIEW IN TELEGRAM
Так, вроде получилось привести в стабильное состояние отрисовку, разобраться с системами координат поля и гуи, как что чем рисовать и прочим.
В итоге сделал мод
Теперь, когда база отлажена и изучена, можно приступать к более интересным генерациям.
В итоге сделал мод
[WdF] Tools - он опубликован и в нем аж целый один инструмент, который крафтится из куска земли и умеет рыть тоннели между двумя точками. Теперь, когда база отлажена и изучена, можно приступать к более интересным генерациям.
❤4👍2🔥2
https://youtu.be/_UxxJg10GDE
Сделал вводное видео про мод. В целом, там все просто, но мало ли.
Потом буду делать уже про конкретные алгоритмы, подходы и прочее - без скучных деталей типа террарийного сдк.
Сделал вводное видео про мод. В целом, там все просто, но мало ли.
Потом буду делать уже про конкретные алгоритмы, подходы и прочее - без скучных деталей типа террарийного сдк.
YouTube
Создаём свой мод для Terraria: ультра палка-копалка с нуля
В этом видео показываю процесс создания собственного мода для Terraria на примере [WdF] Tools — инструмента для копания, который позволяет быстро рыть отрезки заданной толщины, прямоугольники и круги.
00:00 — Описание мода [WdF] Tools
01:10 — Что нужно…
00:00 — Описание мода [WdF] Tools
01:10 — Что нужно…
👍4
This media is not supported in your browser
VIEW IN TELEGRAM
Автоматизировал постройку коридоров.
Для этого я держу поле с ячейкой 5х5 тайлов, где помечаю, построен там коридор или нет. Это нужно по нескольким причинам:
1. Коридоры всегда выровнены по сетке
2. Не нужно перепердоливать созданнаю ячейку (по крайней мере в данной сессии), то есть если вы там что-то руками поменяете, оно останется
3. Оно мне нужно для постройки границ коридора (блоков вокруг)
Как строятся границы:
- для всех измененных ячеек я беру нулевых соседей
- для каждого соседа строю маску, как расположены соседи вокруг
- в зависимости от маски ставлю блоки
5х5 тайлов сделано, чтобы можно было поставить что-то высокое, добавить железную дорогу или поставить в два ряда на полку.
Из минусов - после перезапуска игры тула уже не помнит, где что было - карта чистая.
Для этого я держу поле с ячейкой 5х5 тайлов, где помечаю, построен там коридор или нет. Это нужно по нескольким причинам:
1. Коридоры всегда выровнены по сетке
2. Не нужно перепердоливать созданнаю ячейку (по крайней мере в данной сессии), то есть если вы там что-то руками поменяете, оно останется
3. Оно мне нужно для постройки границ коридора (блоков вокруг)
Как строятся границы:
- для всех измененных ячеек я беру нулевых соседей
- для каждого соседа строю маску, как расположены соседи вокруг
- в зависимости от маски ставлю блоки
5х5 тайлов сделано, чтобы можно было поставить что-то высокое, добавить железную дорогу или поставить в два ряда на полку.
Из минусов - после перезапуска игры тула уже не помнит, где что было - карта чистая.
🔥2