Size: a a a

2020 December 23

VD

Valentin Drazdov in Alprog I/O
Это ровно так же как многие говорят «да изи маней, делаешь раннер тупой для айфона, вставляешь туда рекламу и получаешь пассивный доход»
источник

IE

Ilia Eliseev in Alprog I/O
Лишний
Блин, оказывается, слоты это тоже геймдев.
Я сразу подумал о слотах, как во Vue.js. Профдеформация 😂
источник

A

Andrei Konshyn in Alprog I/O
Valentin Drazdov
И непростой
когда ты делаешь не web-поделку, а игру для автоматов, то у тебя еще 2 млн требований 🤷‍♂️
источник

A

Andrei Konshyn in Alprog I/O
и одними анимированными текстурами ты не обойдешься
источник

A

Andrei Konshyn in Alprog I/O
я не то, чтобы оправдываю слоты. но ехидничать не занимавшись умеет каждый, я вот тоже
источник

VD

Valentin Drazdov in Alprog I/O
Нотформат ими занимался и рассказывал про боль разработки ))) потому немного в курсе
источник

VD

Valentin Drazdov in Alprog I/O
Даже в веб версии полно особенностей
источник

Л

Лишний in Alprog I/O
Да хто ж спорит. Я все-таки о том, что это тоже геймдев. Я ко всяким казино, слотам и тд никогда так не относился. Ну то есть, когда я вижу сайт с качественной анимацией и интерактивом там-сям, типа жмешь на ослика, он поднимает хвостик, я же не называю это геймдевом, хотя и на поднятии хвостика можно заморочаться с анимацией. Почему я должен называть геймдевом сайт, где вместо ослика рулетка, а вместо поднятия хвостика ее верчение? И никакой тебе атмосферы, никакого погружения в процесс игры, в сюжет, в задуманную динамику, просто азарт, желание отыграться, и даже морду набить некому, крупье ненастоящий.)
источник

Л

Лишний in Alprog I/O
А в играх он настоящий, потому что когда я ему морду набью в чем-то вроде rdr, я прям кайфану, хоть я ему и ненастоящие деньги слил.)
источник

Л

Лишний in Alprog I/O
Условно, конечно.
источник

S

Sergey in Alprog I/O
источник

S

Sergey in Alprog I/O
Слоты - это прекрасно, в общем
источник

АТ

Александр Тужик... in Alprog I/O
слоты - это нижний геймдев
источник

S

Sergey in Alprog I/O
а я думал, гиперказуалки
источник

АТ

Александр Тужик... in Alprog I/O
и они тоже
источник

Л

Лишний in Alprog I/O
Александр Тужик
слоты - это нижний геймдев
В Верхнем Геймдеве уже празднуют, а в Нижнем все еще моют посуду.)
источник

P

Pavel in Alprog I/O
Социалки для одноклассников не забудьте
источник
2020 December 24

FB

Frost Bite in Alprog I/O
Лишний
В Верхнем Геймдеве уже празднуют, а в Нижнем все еще моют посуду.)
Золотую посуду)
источник
2020 December 25

Т.

Тимур ... in Alprog I/O
ID:0
Логарифм и резинки
#код
Как-то в одном из чатов обронили фразу: «а когда вам последний раз был нужен логарифм?». Забавно, но мне он потребовался буквально на следующий день. Это ещё один маленький пост о том, какого рода математика нужна геймплейному программисту в повседневной жизни.

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

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

Юнитологи классом повыше обычно используют небезызвестную функцию SmoothDamp. Внутри там скрывается мудрённое решение из книги Game Programming Gems 4. Вот только нам приходится где-то хранить текущую скорость для каждого процесса сглаживания, да и в целом довольно страшно выглядит. Нельзя ли как-то попроще сделать и без лишних переменных в местах вызова?

На самом деле если мы задумаемся, как будет выглядеть FPS-независимый способ приближения со сглаживанием, то быстро поймём, что нам надо проходить одинаковую долю расстояния за одинаковое время. Например, за первую секунду проходим половину пути, за вторую секунду половину от половины, то есть остаётся четверть, затем 1/8, 1/16 и так далее. И никогда мы по настоящему не достигаем цели, но нам это и не надо. При таком движении неважно в какой точке этого процесса мы оказались (на первой секунде, второй и т.п.), мы всегда знаем, как рассчитать движение дальше. От пути всегда остаётся лишь

1 / 2^t

А значит пройденное расстояние от времени вычисляется по формуле:

1 - 1 / 2^t

Двойка здесь всего лишь указатель на то, что в качестве одинаковых промежутков мы выбрали половину расстояния. Мы можем подставить туда 3, чтобы получить треть, или любое другое число больше 1. Можно думать об этом числе, как о степени агрессивности нашего In в нашем FPS-независимом сглаживании (аналог InCubic, InQuad и т.д.). Формула продолжит работать.

Но для полного счастья нам не хватает настройки времени, за которое дракончик будет визуально догонять персонажа из любой точки. Конечно, полностью он догнать не может, но нам хватит преодоления, скажем, 98% пути:

1 - 1 / base^t = 0,98
base^t = 1 / (1 - 0,98)
t = log(1 / (1 - 0,98), base)

Ну вот и всё. Теперь мы можем инициализировать этими параметрами нашу бесконечную резинку-пружинку, после чего ей можно будет скармливать deltaTime, а в ответ получать LerpK. Таким образом получилось простое FPS-независимое сглаживание для всего, что можно лерпать. Финальный класс можно видеть на скриншоте.

По-моему, симпатично получилось. А вы что думаете?
Подскажите easing что такое? Концовка анимации?
источник

A

Andrei Konshyn in Alprog I/O
плавная анимация, если в терминах математики, то функция интерполяции, какая-то кривая
источник