Warning: Undefined array key 0 in /var/www/tgoop/function.php on line 65

Warning: Trying to access array offset on value of type null in /var/www/tgoop/function.php on line 65
501 - Telegram Web
Telegram Web
Инспектор, кстати.
Он чуть оквадратился в последнее время 🔨

Всё это предельно просто выглядит в коде благодаря растовским дерайв-макросам (советую освоить, если ещё не). Достаточно написать:

#[derive(Inspector)]
struct Foo {
pub bla: Bla,
pub bla_bla: BlaBla,
}


Правда, перед этим требуется пара недель жесткой и насыщенной работы, но оно того стоит.
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Рисуем собственные контролы для отображения графиков
Media is too big
VIEW IN TELEGRAM
Работа над выстрелами продолжается!
Ключевая анимация меша, пока лоупольная
Media is too big
VIEW IN TELEGRAM
Когда копипаст сцен рождает новый дизайн)
This media is not supported in your browser
VIEW IN TELEGRAM
Фундамент для редактора уровней: выбор объектов мышкой.
Media is too big
VIEW IN TELEGRAM
Иногда яркий свет гасит всю красоту амбиентной игры в тени, вот что происходит, когда по ошибке вырубился прямой свет солнца - все ушло в тень )
This media is not supported in your browser
VIEW IN TELEGRAM
Будничная перестрелка в начале недели 💥
This media is not supported in your browser
VIEW IN TELEGRAM
Вернулся к теме честного детерминизма — это когда восстанавливается полная последовательность действий пользователя, даже, когда они приходят позже. Рассказывал про этот подход раньше. Пытаюсь синхронизировать позицию. Что то где то я ошибся ) В базе идея такая: есть позиция, каждый игрок шлет атомарное изменение позиции. А сервер тупо ретранслирует изменения клиентам. Вся работа свелась к работе со списком изменений. Будем разбираться )
Media is too big
VIEW IN TELEGRAM
Один мудрец сказал: не пишет баги только тот, кто ничего не делает 🐺
Media is too big
VIEW IN TELEGRAM
Пока серьёзные ребята играют в серьёзные бюджеты, мы в гик-режиме экспериментируем со своей игровой консолью. Чтобы делать офигенчик — нужна свобода и желание. То, что не купишь ни за какие деньги.
Media is too big
VIEW IN TELEGRAM
Рассказываю про синхронизацию данных в играх простым языком. Здесь я затрагиваю метод детерминизма.

Детерминизм в играх это когда одно игровое состояние происходит из предыдущего вследствие конкретных изменений (действий/событий) игрока или сервера. Здесь нет места случайности во время применения изменений к состоянию. Применяя одни и те же изменения к одному и тому же состоянию мы получим точное новое состояние.

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

В видео я так же подробно рассматриваю простой пример.
This media is not supported in your browser
VIEW IN TELEGRAM
Коробки теперь можно двигать
Media is too big
VIEW IN TELEGRAM
Сделал прототип синхронизации. В текущем виде создается сервер и несколько клиентов. Далее каждый клиент шлет только свои изменения серверу. Сервер кладет изменения себе в тайм-лайн. Затем пересылает изменения клиентов друг другу.

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

Таким образом мы синхронизиурем все тайм-лайны изменений. Каждый клиент применяет эти изменения на опорное (начальное) состояние и получает последнее. Но поток изменений может быть большим и пересчитывать каждый кадр одно и тоже просто не целесообразно. Поэтому есть вопрос - как определить новый опорный кадр? Очевидно, что это можно сделать на сервере, так как у него есть вся информация. Либо сервер будет пересылать эту информацию клиентам.

Подробнее рассказываю в видео.
Media is too big
VIEW IN TELEGRAM
Эксперименты со стилистикой, 3д+2д.
Данная локация особо располагает к такому роду визуальных решений. Хочется в итоге видеть просвечивающиеся материалы и рисованные, объемные шейдера. Найти баланс органичного сочетания техник.
Media is too big
VIEW IN TELEGRAM
Делюсь разработкой механизма для геометрического смешивания между разными объектами и разными текстурами. Для нашей локации создаются текстурные массивы, которые индексируются из шейдера только в узких зонах перехода. Для большей части отрисовки шейдер остается максимально простым и обращается только к одной текстуре. Минимизация количества индексируемых в шейдере текстур позволяет использовать технику даже на слабых мобильных устройствах. Все маски текстурных переходов и само освещение запекаем в вершинные данные.
This media is not supported in your browser
VIEW IN TELEGRAM
После небольших исправлений коробки в зарождающемся редакторе уровней стало проще двигать. Ещё их теперь можно скалировать.
Media is too big
VIEW IN TELEGRAM
Без инструментов визуализации разработчик как без глаз.

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

И вот очередной наглядный пример того, как это помогает искать и устранять коварные проблемы.
Media is too big
VIEW IN TELEGRAM
Пробую использовать запеченное в вершины просвечивание света для растительности на наших локациях. Делюсь первыми результатами.
В ходе тактической зачистки багов, я решил немного отвлечься и сделать что-нибудь красивое.

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

Сначала я подумал рисовать скрытые линии просто более прозрачными, но это слишком скучно 😏

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

А ещё, на моём канале можно посмотреть видос о том, как такое сделать. Заходите, не стесняйтесь 😇
Please open Telegram to view this post
VIEW IN TELEGRAM
2025/07/03 14:46:01
Back to Top
HTML Embed Code: