Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Регистрируясь, я даю согласие на обработку данных и условия почтовых рассылок.
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр Зазеркалье – это погружение в глубины мифов, магии и странствий. Вас ждут сражения на дорогах удивительных миров, соединенных порталами. Сочная графика и потрясающий сюжет, множество героев, общение с игроками. Без рекламы и любых назойливых ограничений.

Зазеркалье – фэнтези MMORPG

Мультиплеер, Ролевые, Приключения

Играть

Топ прошлой недели

  • solenakrivetka solenakrivetka 7 постов
  • Animalrescueed Animalrescueed 53 поста
  • ia.panorama ia.panorama 12 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая «Подписаться», я даю согласие на обработку данных и условия почтовых рассылок.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Маркет Промокоды Пятерочка Промокоды Aroma Butik Промокоды Яндекс Путешествия Промокоды Яндекс Еда Постила Футбол сегодня
0 просмотренных постов скрыто
2
ooWooGameStudio
ooWooGameStudio

Случайность в играх: математические алгоритмы, которые оживляют игровой мир⁠⁠

9 месяцев назад

Случайность – неотъемлемый элемент современного игрового процесса. От распределения лута до генерации уровней – случайные события влияют на динамику, баланс и реиграбельность. Ниже рассмотрены ключевые подходы к реализации случайности, математические основы и наиболее популярные алгоритмы.

Применение случайности в играх

  • Генерация контента. Процедурное создание карт, уровней и миссий позволяет разработчикам создавать бесконечное множество уникальных сценариев.

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

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

Математическая природа случайности

Большинство игр используют так называемые псевдослучайные числа, которые генерируются с помощью специальных алгоритмов. В отличие от настоящей случайности, которая требует использования внешних источников хаоса (например, шумов или физических процессов), псевдослучайные числа создаются детерминированными программными методами. Это значит, что если задать одинаковое начальное значение (seed), алгоритм всегда выдаст одну и ту же последовательность чисел. Такая воспроизводимость крайне полезна для тестирования и отладки игр, а также для синхронизации событий в мультиплеерных сессиях, где важно, чтобы все игроки видели одинаковые результаты случайных процессов.

Алгоритмы генерации случайных чисел

Линейный конгруэнтный генератор (LCG)

LCG – один из самых простых и быстрых алгоритмов для генерации псевдослучайных чисел. Он работает по следующей формуле:

Как работает LCG

  1. Инициализация:
    Алгоритм начинается с исходного числа (X0), которое выбирается как seed.

  2. Рекурсия:
    На каждом шаге вычисляется новое значение по формуле. Операция взятия по модулю гарантирует, что результат всегда остаётся в пределах заданного диапазона.

  3. Генерация последовательности:
    Процесс повторяется, и получается последовательность чисел, которая кажется случайной, если смотреть на отдельные значения.

Преимущества LCG

  • Простота реализации:
    Алгоритм требует минимального объёма кода и легко реализуется практически на любом языке программирования. Зачастую стандартная библиотека Random реализует именно такой подход

  • Высокая скорость:
    Основные операции (умножение, сложение, операция по модулю) выполняются очень быстро, что делает алгоритм подходящим для задач, где важна производительность.

Недостатки и ограничения

  • Короткий период повторения:
    Поскольку множество возможных состояний ограничено (от 0 до m−1), последовательность рано или поздно начинает повторяться. При неправильном выборе параметров период может быть слишком коротким, что приводит к предсказуемости.

  • Корреляция между значениями:
    Сгенерированные числа могут быть статистически зависимыми. Это особенно заметно при использовании LCG для многомерного моделирования, где точки могут выстраиваться в определённые шаблоны или линии, а не распределяться равномерно.

  • Чувствительность к параметрам:
    Чтобы достичь максимально возможного периода и хорошего качества случайности, необходимо тщательно подбирать значения m, a и c. Неправильная комбинация может привести к существенным искажениям в распределении чисел.

  • Ограниченность для сложных задач:
    Для задач, где качество случайности критично (например, в криптографии, симуляциях физических процессов или азартных играх), LCG не подходит. Его предсказуемость и недостаточная сложность могут стать уязвимостью или привести к неверным результатам.

  • Опасность взлома:

    LCG достаточно просто взломать, всего по первым 3-5 числам, а если увеличить количество входных данных, то это можно будет сделать даже на стареньком ноуте.

Mersenne Twister

Один из самых популярных алгоритмов в разработке игр. Он обладает чрезвычайно длинным периодом (2¹⁹⁹³⁷ − 1) и обеспечивает равномерное распределение. Благодаря сбалансированному соотношению между качеством и скоростью, Mersenne Twister применяется во многих игровых движках.

Как работает алгоритм

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

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

  • Процесс "темперирования":
    После обновления состояния полученные числа проходят через серию битовых преобразований – так называемый процесс темперирования. Эти операции (битовые сдвиги, XOR и маскирование) устраняют возможные корреляции между соседними числами, обеспечивая равномерное распределение по всему диапазону.

Основные преимущества

  • Чрезвычайно длинный период:
    С периодом в 219937−12^{19937} - 1219937−1 последовательность чисел повторяется настолько редко, что для большинства практических задач в играх повторение практически не происходит.

  • Равномерное распределение:
    Алгоритм гарантирует равномерное распределение чисел в 623 измерениях, что критически важно для симуляций, процедурной генерации уровней и других аспектов игрового дизайна.

  • Баланс между скоростью и качеством:
    Благодаря оптимизации операций на битовом уровне, Mersenne Twister способен быстро генерировать случайные числа без ущерба для их статистического качества. Это делает его идеальным для игровых движков, где производительность имеет решающее значение.

Ограничения

  • Не для криптографии:
    Хотя алгоритм отлично справляется с задачами общего назначения, его не следует использовать там, где требуется криптографическая стойкость. При наличии достаточных данных о состоянии генератора, его последовательность можно предсказать.

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

XORShift

XORShift – это алгоритм генерации псевдослучайных чисел, который основан исключительно на битовых операциях: XOR (исключающее ИЛИ) и битовых сдвигах. Его простота и эффективность делают его привлекательным для задач, где критична производительность.

Основной принцип работы

  • Инициализация состояния:
    Алгоритм использует внутреннее целочисленное состояние (или набор состояний), которое инициализируется исходным значением (seed). Это состояние будет преобразовываться на каждом шаге.

  • Битовые операции:
    Основная идея заключается в последовательном применении битовых сдвигов и операции XOR. Простой пример для 32-битного числа может выглядеть так:

    x ^= x << a;

    x ^= x >> b;

    x ^= x << c;

    Здесь a, b и c – подобранные константы, которые определяют, насколько сильно будут перемешаны биты. Эти операции изменяют состояние так, что полученное число кажется случайным.

  • Обновление состояния:
    После выполнения этих операций новое состояние используется для генерации следующего числа. Весь процесс повторяется, создавая последовательность псевдослучайных чисел.

Преимущества XORShift

  • Высокая скорость:
    Битовые операции выполняются крайне быстро на современных процессорах, что делает алгоритм одним из самых производительных.

Ограничения и недостатки

  • Качество случайности:
    Хотя XORShift хорошо справляется с генерацией числовых последовательностей, его статистическая "случайность" может уступать более сложным алгоритмам. В некоторых случаях последовательности могут иметь выявляемые закономерности или корреляции, особенно в многомерном пространстве.

  • Непригодность для критичных задач:
    Для задач, требующих высочайшего качества случайных чисел, XORShift может оказаться недостаточно надёжным.

  • Вариативность реализации:
    Существует множество вариантов алгоритма XORShift, и выбор конкретных констант (a, b, c) существенно влияет на качество выходной последовательности. Неправильный подбор параметров может привести к сокращению периода генератора или к появлению предсказуемых шаблонов.

PCG (Permuted Congruential Generator)

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

Основной принцип работы

  • Базовый этап (LCG):
    Алгоритм начинается с применения линейного конгруэнтного генератора, где новое состояние вычисляется по формуле приведенной в пунтке про LCG

  • Этап перестановки битов:
    Вместо того чтобы напрямую использовать число, полученное на базовом этапе, к нему применяется функция перестановки XOR.

Преимущества PCG

  • Высокое качество случайности:
    Перестановка битов значительно улучшает статистические характеристики выходной последовательности.

  • Быстродействие:
    Используемые арифметические и побитовые операции выполняются очень быстро, что позволяет генерировать случайные числа в режиме реального времени, не замедляя работу игры.

  • Экономия памяти:
    В отличие от некоторых более сложных алгоритмов, PCG требует относительно небольшого объёма памяти, что делает его оптимальным выбором для мобильных игр и встроенных систем с ограниченными ресурсами.

Недостатки PCG

  • Сложность реализации:
    В отличие от простых LCG, PCG включает дополнительный этап перестановки битов, что делает его реализацию более сложной. Это может затруднить отладку и понимание внутренней работы генератора для новичков.

  • Относительно небольшая база практического опыта:
    Несмотря на положительные результаты тестирования, PCG – сравнительно новый алгоритм. Его применение в долгосрочных проектах и в условиях экстремальной нагрузки может выявить скрытые недостатки, которые пока менее изучены по сравнению с более зрелыми генераторами, такими как Mersenne Twister.

  • Не подходит для криптографических целей:
    Как и большинство PRNG, PCG не обеспечивает криптографическую стойкость.

Криптографически безопасные генераторы (CSPRNG)

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

Основные принципы работы

  • Использование криптографических примитивов:
    CSPRNG базируются на проверенных криптографических алгоритмах, таких как блочные шифры (например, AES) или криптографические хеш-функции.

Преимущества использования CSPRNG

  • Высокая степень энтропии:
    Такие генераторы обеспечивают практически «настоящую» случайность, что критически важно для предотвращения манипуляций и мошенничества. Например, в азартных играх.

  • Защита от предсказуемости:
    Криптографические методы гарантируют, что даже при наличии некоторых данных о состоянии генератора, предсказать последующие числа практически невозможно. Это делает их незаменимыми в системах, где безопасность имеет первостепенное значение.

Недостатки и компромиссы

  • Скорость работы:
    Из-за сложных криптографических операций, таких как шифрование и хеширование, CSPRNG обычно работают медленнее по сравнению с традиционными алгоритмами.

  • Потребление ресурсов:
    Криптографически безопасные алгоритмы требуют больше вычислительных ресурсов для обеспечения высокого уровня безопасности.

  • Сложность реализации:
    Реализация CSPRNG требует глубокого понимания криптографических принципов и тщательного тестирования, чтобы избежать ошибок, которые могут снизить уровень безопасности.

Аппаратные генераторы случайных чисел

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

Принцип работы

  • Физическая основа:
    В основе HRNG лежат процессы, происходящие в физическом мире, такие как тепловой шум в диодах, шум в резисторах, флуктуации в электрических цепях или квантовые эффекты. Например, при измерении шума диода регистрируется случайная величина, возникающая из-за колебаний заряда на уровне атомов. Аналогично, квантовые процессы, например, распад радиоактивных элементов или квантовая туннельная проводимость, дают истинно случайные результаты.

  • Конвертация в цифровой сигнал:
    Полученные аналоговые сигналы преобразуются в цифровой формат с помощью аналого-цифровых преобразователей (ADC). Этот процесс позволяет использовать физическую случайность для генерации последовательности чисел, пригодной для программного применения.

Преимущества аппаратных генераторов

  • Истинная случайность:
    Поскольку источники HRNG основаны на физических явлениях, генерируемые числа не являются предсказуемыми и не повторяются, что делает их идеальными для криптографических и высокозащищённых приложений.

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

Ограничения и проблемы интеграции

  • Сложность аппаратной реализации:
    Для работы HRNG требуется специализированное оборудование, которое должно точно измерять и обрабатывать физические сигналы. Это усложняет их интеграцию в стандартные игровые движки.

  • Стоимость и ресурсоемкость:
    Создание и поддержка аппаратного генератора требует дополнительных затрат на оборудование, калибровку и периодическое обслуживание.

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

Выбор алгоритма: баланс между качеством и производительностью

При выборе алгоритма разработчикам необходимо учитывать:

  • Производительность. В реальном времени важна скорость генерации случайных чисел.

  • Качество случайности. Для игровых механик, влияющих на баланс, необходим алгоритм с минимальной корреляцией.

  • Воспроизводимость. Возможность регенерировать последовательности по заданному сиду полезна для отладки и синхронизации в мультиплеерных режимах.

  • Безопасность. Для критичных к предсказуемости систем (например, азартных игр) следует использовать CSPRNG.

Mersenne Twister остается золотым стандартом для большинства игр благодаря своему оптимальному сочетанию всех вышеперечисленных характеристик. Однако для специализированных задач все чаще применяются алгоритмы типа PCG или криптографически безопасные методы.

Заключение

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

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

Показать полностью 3
[моё] Gamedev Инди Инди игра Статья Развитие Случайность Игровая механика Теория Длиннопост
1
4
SteamSun.Games
SteamSun.Games
Лига Ролевиков
Серия Мир Города Парового Солнца

Братство Шести Ключей в Городе Парового Солнца⁠⁠

9 месяцев назад

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

Братство Шести Ключей в Городе Парового Солнца

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

В отличие от многих других организаций, Братство Шести Ключей не обладает чёткой иерархической структурой. В нём есть только должность председателя, занимающегося повесткой для регулярных собраний, причём председатель меняется каждый месяц. Ходят слухи, что за Братством стоит группа влиятельных и богатых людей, финансирующих крупный проект, который является magnum opus для всей организации. Впрочем, версии о том, кем являются эти люди и над какой задачей могут биться входящие в Братство специалисты, настолько противоречивы, что установить истину не удаётся.

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

Показать полностью 1
[моё] Savage Worlds Стимпанк Настольные ролевые игры Ролевые игры Наше НРИ RPG Механизм Изобретения Игровая механика
0
poyaskoipera
poyaskoipera
Юмор для всех и каждого

Двери в играх⁠⁠

9 месяцев назад

Не челлендж, но сможет ли кто нибудь найти игру, где двери открываются в одну сторону)

Видеоигра Дверь Игровая механика Текст Компьютерные игры
11
35
SneakenParadise
SneakenParadise
Лига Геймеров

ЭКСТРЕННОЕ ВКЛЮЧЕНИЕ ЧТОБЫ ЕЩЕ РАЗ РАССКАЗАТЬ КАКАЯ ИГРА KINGDOM COME DELIVERANCE 2 ВОСХИТИТЕЛЬНАЯ!⁠⁠

9 месяцев назад

Отпиздив половцев я понял что мне очень тяжело нести спизженное барахло!
Ничего лучше не придумал чем придти к корчме в городе и одарить попрошайку!
А что из этого вышло вы сейчас узнаете:

Сцена 1

Нищий просит гроши, и я милостиво сжалился!

Нищий обрадовался и КАК ДАВАЙ СОБИРАТЬ ДОБРО

Этого я не ожидал, они начали пиздится за мешки с добром

Видите стражника со щитом справа? Он идет не разнимать драку😁

Последняя сцена, дядя не вывез бесплатную раздачу🥲

А теперь расскажите мне какая «смута ахуенная игра» я кончил, спасибо за внимание!

Показать полностью 5
[моё] Компьютерные игры Kingdom Come: Deliverance II Мат Игровая механика Скриншот Гуманитарная помощь Длиннопост
22
4
SteamSun.Games
SteamSun.Games
Лига Ролевиков
Серия Мир Города Парового Солнца

Тайные общества Города Парового Солнца⁠⁠

9 месяцев назад

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

(Автор иллюстрации - Илья Шальков)

(Автор иллюстрации - Илья Шальков)

Общественности известно о существовании Братства Шести Ключей, объединяющего наиболее выдающихся учёных, изобретателей и магомехаников ради развития науки. В противовес им выступает движение Клэпперов - рабочих, радикально противостоящих использованию новых технологий. Опоры рельса парового солнца регулярно оказываются объектом саботажа со стороны фанатиков из Культа Затмения - деструктивного общества, члены которого считают, что Затмение было величайшим событием за время существования человечества. Общество Северо-Запада, скорее клуб по интересам, чем тайное общество в полном смысле этого слова, верит, что здания и улицы города понемногу меняют свой облик под действием таинственных сил, и расследует этот феномен. Орден Альбатроса ищет в песках Лимба знания, оставшиеся от древней цивилизации, чтобы использовать их на благо человечества. Противники демонов из Ордена Святого Германа устраивают общественные беспорядки и покушения на членов диаспоры и Посольства. В свою очередь разведывательная служба Железного Посольства Эрин Куг-Муш раскинула по всему городу обширную агентурную сеть, конкурировать с которой может разве что Кустодес Умбра - тайная полиция канцлера. И наконец не стоит забывать, что в Паутине также действуют разведки всех мало-мальски значимых европейских держав.

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

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

Показать полностью 1
[моё] Savage Worlds Стимпанк Настольные ролевые игры Ролевые игры Наше НРИ RPG Альтернативная история Механизм Изобретения Игровая механика
3
akatosh199512
akatosh199512
Лига Геймеров

Способ работает также в Gothic 3⁠⁠

10 месяцев назад
Перейти к видео
Компьютерные игры Игры The Elder Scrolls V: Skyrim Игровая механика Игровой юмор Видео Вертикальное видео Короткие видео
1
dodgemind
Лига Геймеров

Мы неправильно играем⁠⁠

11 месяцев назад

Современные видеоигры от корпораций, такие как Horizon forbidden west, mirror's edge catalyst, все части assassin's creed. А также старые игры, например оригинальная трилогия сталкера, gta, borderlands и тому подобное. Всех их объединяет одна деталь, которая одним людям нравится, а других от неё трясёт - это дроч в открытом мире. Миллионы однообразия, погружающие игроков в пучину задротства в погоне за идеальным прохождением игры. Попробуйте взять любую игру подобного толка и пройти её по сюжету, не распыляясь на отыгрыш роли и сбор коллектбелзов. И вы сразу поймёте откуда взялась игровая импотенция у современных геймеров и для чего придуманы все эти побочные активности в открытых мирах. Неситесь по сюжету и снимайте сливки с видеоигрового произведения. А возню в открытом мире оставьте на потом, только если этому миру удастся по настоящему влюбить вас в себя.

[моё] Компьютерные игры Открытый мир Задроты Короткопост Игровая механика Текст
24
11roo
11roo

Я НЕ ПОНИМАЮ )⁠⁠

11 месяцев назад

НЕ понимаю почему в шутерах и других играх с ограниченным передвижением нет "бампера"

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

сверху - значит спереди. снизу значит со спины...

и вот НУЖНО сделать ТОЖЕ САМОЕ но для предметов в которые ты упираешься. вот ты чуть упёрся плечом в дверной проём. вот ты прижался спиной к ящику. вот твои ноги уткнулись в микрокамень который нельзя перешагнуть - СООБЩИТЕ об этом игроку. чтобы он сразу понимал в чём дело. пусть это будут синие обозначения по краю экрана ...

очевидное решение проблемы с которой сталкивался каждый. которую я 1000 раз видел на стримах.

просто нужно обозначить что ваш персонаж во чтото упёрся! (а не поймал баг, или перестали работать устройства ввода)

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

Показать полностью
[моё] Компьютерные игры Игровая механика Инновации Идея Дизайнер Текст
6
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Маркет Промокоды Пятерочка Промокоды Aroma Butik Промокоды Яндекс Путешествия Промокоды Яндекс Еда Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии