Оптимизация игры на Unity
часть 1. Batching
часть 2. Terrain
часть 3 - Код. Profiler
часть 4 - Интерфейс. Sprite Atlas
часть 5 - 3D модели. Текстурный атлас. Объединение мешей
источник
#gamedev
👉 @game_devv
часть 1. Batching
часть 2. Terrain
часть 3 - Код. Profiler
часть 4 - Интерфейс. Sprite Atlas
часть 5 - 3D модели. Текстурный атлас. Объединение мешей
источник
#gamedev
👉 @game_devv
👍4🔥4
Сегодня я хочу рассказать о своём проекте — «Game Engine 3», программной оболочке для создания двумерных игр и приложений.
Game Engine 3 — это инструмент для создания 2D‑игр с физикой и анимацией. С открытым исходным кодом, интуитивным редактором визуального программирования на основе нодов и возможностями работы с графикой, физикой и анимацией, он подходит как для новичков, так и для профессионалов. В этой статье разберем, что делает эту оболочку уникальной.
https://habr.com/ru/articles/902426/
#gamedev
👉 @game_devv
Game Engine 3 — это инструмент для создания 2D‑игр с физикой и анимацией. С открытым исходным кодом, интуитивным редактором визуального программирования на основе нодов и возможностями работы с графикой, физикой и анимацией, он подходит как для новичков, так и для профессионалов. В этой статье разберем, что делает эту оболочку уникальной.
https://habr.com/ru/articles/902426/
#gamedev
👉 @game_devv
👍11🔥3⚡1❤1😁1
Распараллеливаем задачи в C#: ускоряем код и избегаем гонок данных 📢
30 апреля в 20:00 OTUS проведёт открытый вебинар «Распараллеливание задач в C#: ускорение вычислений и работа с Concurrent Collections».
Что разберём
— Parallel.For и Parallel.ForEach — когда стоит распараллеливать циклы
— AsParallel() и PLINQ — ускоряем LINQ‑запросы и управляем степенью параллелизма
— потокобезопасные коллекции .NET — выбираем ConcurrentDictionary, Bag, Queue на практическом кейсе
Спикер — Виктор Дзицкий, Senior .NET Engineer с опытом оптимизации высоконагруженных сервисов.
Кому будет полезно
— разработчикам C#, желающим выжать максимум из многоядерных процессоров
— инженерам, работающим с Big Data или ресурсоёмкими расчётами
— всем, кто строит высокопроизводительные приложения и не хочет наступать на грабли многопоточности
После вебинара вы сможете
— уверенно применять Parallel и PLINQ в продуктивном коде
— выбирать подходящую коллекцию для потокобезопасного доступа к данным
— повысить производительность сервисов без лишних блокировок
Участие бесплатное. Количество мест ограничено — бронируйте прямо сейчас.
→ Регистрируйтесь https://vk.cc/cL3bsd
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
30 апреля в 20:00 OTUS проведёт открытый вебинар «Распараллеливание задач в C#: ускорение вычислений и работа с Concurrent Collections».
Что разберём
— Parallel.For и Parallel.ForEach — когда стоит распараллеливать циклы
— AsParallel() и PLINQ — ускоряем LINQ‑запросы и управляем степенью параллелизма
— потокобезопасные коллекции .NET — выбираем ConcurrentDictionary, Bag, Queue на практическом кейсе
Спикер — Виктор Дзицкий, Senior .NET Engineer с опытом оптимизации высоконагруженных сервисов.
Кому будет полезно
— разработчикам C#, желающим выжать максимум из многоядерных процессоров
— инженерам, работающим с Big Data или ресурсоёмкими расчётами
— всем, кто строит высокопроизводительные приложения и не хочет наступать на грабли многопоточности
После вебинара вы сможете
— уверенно применять Parallel и PLINQ в продуктивном коде
— выбирать подходящую коллекцию для потокобезопасного доступа к данным
— повысить производительность сервисов без лишних блокировок
Участие бесплатное. Количество мест ограничено — бронируйте прямо сейчас.
→ Регистрируйтесь https://vk.cc/cL3bsd
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Я работал над небольшим проектом и написал несколько шейдеров, которыми теперь хочу бесплатно поделиться с сообществом!
Шейдеры созданы для Unity 6, но должны без проблем работать и в Unity 5.
Они поддерживают URP и HDRP, а также позволяют легко настраивать ширину и цвет обводки.
Код чистый и хорошо документирован, чтобы вы могли легко адаптировать его под свои нужды.
Надеюсь, шейдеры окажутся вам полезными! 🚀
https://www.reddit.com/r/Unity3D/comments/1k96py2/free_outline_shaders_for_unity_6_from_my_project
#gamedev
👉 @game_devv
Шейдеры созданы для Unity 6, но должны без проблем работать и в Unity 5.
Они поддерживают URP и HDRP, а также позволяют легко настраивать ширину и цвет обводки.
Код чистый и хорошо документирован, чтобы вы могли легко адаптировать его под свои нужды.
Надеюсь, шейдеры окажутся вам полезными! 🚀
https://www.reddit.com/r/Unity3D/comments/1k96py2/free_outline_shaders_for_unity_6_from_my_project
#gamedev
👉 @game_devv
👍7🔥5
Напоминание: вебинар OTUS «Распараллеливаем задачи в C#» уже 30 апреля 📢
Старт: 30 апреля, 20:00 МСК
Что разберём
— Parallel.For и Parallel.ForEach — когда стоит распараллеливать циклы
— AsParallel() и PLINQ — ускоряем LINQ‑запросы и управляем степенью параллелизма
— потокобезопасные коллекции .NET — выбираем ConcurrentDictionary, Bag, Queue на практическом кейсе
Спикер — Виктор Дзицкий, Senior .NET Engineer с опытом оптимизации высоконагруженных сервисов.
Кому будет полезно
— разработчикам C#, желающим выжать максимум из параллелизма
— инженерам, работающим с Big Data или ресурсоёмкими расчётами
— всем, кто строит высокопроизводительные приложения
После вебинара вы сможете
— уверенно применять Parallel и PLINQ в продуктивном коде
— выбирать подходящую коллекцию для потокобезопасного доступа к данным
— повышать производительность сервисов без лишних блокировок
Участие бесплатное, ещё можно успеть.
→ Регистрируйтесь
Реклама. ООО «Отус онлайн‑образование», ОГРН 1177746618576
Старт: 30 апреля, 20:00 МСК
Что разберём
— Parallel.For и Parallel.ForEach — когда стоит распараллеливать циклы
— AsParallel() и PLINQ — ускоряем LINQ‑запросы и управляем степенью параллелизма
— потокобезопасные коллекции .NET — выбираем ConcurrentDictionary, Bag, Queue на практическом кейсе
Спикер — Виктор Дзицкий, Senior .NET Engineer с опытом оптимизации высоконагруженных сервисов.
Кому будет полезно
— разработчикам C#, желающим выжать максимум из параллелизма
— инженерам, работающим с Big Data или ресурсоёмкими расчётами
— всем, кто строит высокопроизводительные приложения
После вебинара вы сможете
— уверенно применять Parallel и PLINQ в продуктивном коде
— выбирать подходящую коллекцию для потокобезопасного доступа к данным
— повышать производительность сервисов без лишних блокировок
Участие бесплатное, ещё можно успеть.
→ Регистрируйтесь
Реклама. ООО «Отус онлайн‑образование», ОГРН 1177746618576
Миграция моей игры с Rust
Когда я начал работу над Architect of Ruin в декабре 2023 года, то решил делать её в игровом движке Bevy. Мой выбор был мотивирован собственным интересом к Rust — языку, от работы с которым я получаю много удовольствия. Ещё больше меня привлекла в этом движке модель ECS, с которой мне тоже нравится работать, а также сообщество Bevy, которое мне очень симпатично.
Поэтому стало неожиданностью то, что в январе 2025 года мы выполнили миграцию нашей игры с Rust и Bevy. Я потратил примерно шесть недель, чтобы полностью переписать игру на C#, и последние три месяца мы работаем в Unity.
Смена движка — частый убийца проектов. При этом может резко снижаться продуктивность, неизбежно возникают регрессии, а каждый шаг вперёд как будто приводит к трём шагам назад. Не говоря уже о том, что опыт работы с одним языком и движком нельзя полностью перенести на новый язык и движок.
Но мы решились на это, и в посте я объясню, почему.
https://habr.com/ru/articles/906460/
#gamedev
👉 @game_devv
Когда я начал работу над Architect of Ruin в декабре 2023 года, то решил делать её в игровом движке Bevy. Мой выбор был мотивирован собственным интересом к Rust — языку, от работы с которым я получаю много удовольствия. Ещё больше меня привлекла в этом движке модель ECS, с которой мне тоже нравится работать, а также сообщество Bevy, которое мне очень симпатично.
Поэтому стало неожиданностью то, что в январе 2025 года мы выполнили миграцию нашей игры с Rust и Bevy. Я потратил примерно шесть недель, чтобы полностью переписать игру на C#, и последние три месяца мы работаем в Unity.
Смена движка — частый убийца проектов. При этом может резко снижаться продуктивность, неизбежно возникают регрессии, а каждый шаг вперёд как будто приводит к трём шагам назад. Не говоря уже о том, что опыт работы с одним языком и движком нельзя полностью перенести на новый язык и движок.
Но мы решились на это, и в посте я объясню, почему.
https://habr.com/ru/articles/906460/
#gamedev
👉 @game_devv
🔥4👍3🥰1
Media is too big
VIEW IN TELEGRAM
Учебник по VFX в Unity — Эффект Chain Lightning
Сегодня давайте посмотрим, как можно создать эффект Chain Lightning в Unity! Это сложный эффект, требующий технического подхода. Мы пройдем путь от написания кода до использования рендереров линий и систем частиц.
00:00 Intro
00:36 Scene Overview
01:05 Line Renderer Setup
01:59 Enemy Detector Script
03:09 Chain Lightning Script Start
07:54 Test 01
09:32 Chain Reaction Function
13:21 Test 02
14:01 Chain Lightning Script Fixes
15:14 Line Renderer Visual Improvements
15:40 Hit and Impact VFX Overview
16:51 End Results
17:19 Credits
источник
#gamedev
👉 @game_devv
Сегодня давайте посмотрим, как можно создать эффект Chain Lightning в Unity! Это сложный эффект, требующий технического подхода. Мы пройдем путь от написания кода до использования рендереров линий и систем частиц.
00:00 Intro
00:36 Scene Overview
01:05 Line Renderer Setup
01:59 Enemy Detector Script
03:09 Chain Lightning Script Start
07:54 Test 01
09:32 Chain Reaction Function
13:21 Test 02
14:01 Chain Lightning Script Fixes
15:14 Line Renderer Visual Improvements
15:40 Hit and Impact VFX Overview
16:51 End Results
17:19 Credits
источник
#gamedev
👉 @game_devv
🔥5👍2
TeleStore — платформа для разработчиков, где выплаты происходят быстро, а подключение не требует юрлица.
Мы создали альтернативу App Store и Google Play: маркетплейс с полноценной платёжной системой, низкими комиссиями (от 7,5%) и международной инфраструктурой.
Принимайте платежи картами (включая МИР) и получайте выплаты в USDT — моментально, на любой криптокошелёк.Интеграция занимает всего день: у нас есть SDK и техподдержка на каждом этапе.
Для первых 30 партнёров — бонус от $500 на продвижение, креативы и трафик от нашей маркетинг-команды. Мы не просто размещаем — мы помогаем зарабатывать.
Если вы создаёте браузерные игры или Telegram Mini Apps — подключайтесь:📍 Заявка: https://tglink.io/50f0142914ab?erid=2W5zFHTAJ7z
📍 О платформе: https://tglink.io/436effee4e79
Реклама. Иванов А.О. ИНН 451200841661.
Мы создали альтернативу App Store и Google Play: маркетплейс с полноценной платёжной системой, низкими комиссиями (от 7,5%) и международной инфраструктурой.
Принимайте платежи картами (включая МИР) и получайте выплаты в USDT — моментально, на любой криптокошелёк.Интеграция занимает всего день: у нас есть SDK и техподдержка на каждом этапе.
Для первых 30 партнёров — бонус от $500 на продвижение, креативы и трафик от нашей маркетинг-команды. Мы не просто размещаем — мы помогаем зарабатывать.
Если вы создаёте браузерные игры или Telegram Mini Apps — подключайтесь:📍 Заявка: https://tglink.io/50f0142914ab?erid=2W5zFHTAJ7z
📍 О платформе: https://tglink.io/436effee4e79
Реклама. Иванов А.О. ИНН 451200841661.
This media is not supported in your browser
VIEW IN TELEGRAM
Этот проект содержит исходный код игр Command & Conquer: Tiberian Dawn и Command & Conquer: Red Alert, выпущенных как часть сборника Command & Conquer Remastered Collection.
Код распространяется под лицензией GPL v3 и предоставляет возможность энтузиастам и разработчикам модифицировать, изучать и использовать движок в рамках условий лицензии. В проекте используется C++ и множество современных практик разработки, а также система сборки CMake.
https://github.com/electronicarts/CnC_Remastered_Collection
#gamedev
👉 @game_devv
Код распространяется под лицензией GPL v3 и предоставляет возможность энтузиастам и разработчикам модифицировать, изучать и использовать движок в рамках условий лицензии. В проекте используется C++ и множество современных практик разработки, а также система сборки CMake.
https://github.com/electronicarts/CnC_Remastered_Collection
#gamedev
👉 @game_devv
👍4🔥4
Path to Glory
Отличный доступный геймплей в сочетании с прекрасной музыкой и звуком. Маленькие графические эффекты, такие как качающиеся деревья или капли дождя на озерах.
Игра на HTML5 и JavaScript всего 13 кб
demo https://play.js13kgames.com/path-to-glory/
https://github.com/remvst/knight
#gamedev
👉 @game_devv
Отличный доступный геймплей в сочетании с прекрасной музыкой и звуком. Маленькие графические эффекты, такие как качающиеся деревья или капли дождя на озерах.
Игра на HTML5 и JavaScript всего 13 кб
demo https://play.js13kgames.com/path-to-glory/
https://github.com/remvst/knight
#gamedev
👉 @game_devv
👍5
3 000 000 ₽ за ваши игры!
Хотите войти в игровую индустрию и сразу начать зарабатывать? У вас есть шанс не только научиться разрабатывать игры с нуля, но и выиграть 1 000 000 ₽ за свой проект!
Мы предлагаем вам не просто обучение, а реальный шанс войти в игровую индустрию.
Как это работает?
1️⃣ Осваиваете геймдизайн с нуля
2️⃣ Собираете команду и создаёте свою игру (наставники помогут собрать команду и довести игру до ума)
3️⃣ Участвуете в конкурсе с призовым фондом 3 000 000 ₽. Каждый победитель получит 1 000 000 ₽
4️⃣ Получаете шанс продать игру или запустить её в сторы
Начните бесплатно — приходите на мини-курс по геймдизайну, где вы узнаете, как сделать первые шаги в геймдеве и попасть в студию Gamebox.
🕹 Регистрируйтесь сейчас и начните путь к своей игре: https://epic.st/I1P-g?erid=2VtzqxL6ifM
Финал конкурса — 24 июля 2026. Успейте подать заявку!
Хотите войти в игровую индустрию и сразу начать зарабатывать? У вас есть шанс не только научиться разрабатывать игры с нуля, но и выиграть 1 000 000 ₽ за свой проект!
Мы предлагаем вам не просто обучение, а реальный шанс войти в игровую индустрию.
Как это работает?
1️⃣ Осваиваете геймдизайн с нуля
2️⃣ Собираете команду и создаёте свою игру (наставники помогут собрать команду и довести игру до ума)
3️⃣ Участвуете в конкурсе с призовым фондом 3 000 000 ₽. Каждый победитель получит 1 000 000 ₽
4️⃣ Получаете шанс продать игру или запустить её в сторы
Начните бесплатно — приходите на мини-курс по геймдизайну, где вы узнаете, как сделать первые шаги в геймдеве и попасть в студию Gamebox.
🕹 Регистрируйтесь сейчас и начните путь к своей игре: https://epic.st/I1P-g?erid=2VtzqxL6ifM
Финал конкурса — 24 июля 2026. Успейте подать заявку!
❤2
Media is too big
VIEW IN TELEGRAM
3 шейдера, о которых должен знать КАЖДЫЙ 2D- разработчик
В этом уроке по Unity мы будем использовать shadergraph для создания 3 различных шейдеров, которые вы можете добавить в свой арсенал инструментов для геймдева. Если вы новичок в работе с shadergraph, то этот урок расскажет вам о большом количестве общих узлов, которые вам понадобятся!
00:00 - Intro
00:46 - Creating lighting using shaders
04:00 - Create repeating texture patterns
05:56 - Creating a Damage Effect (Sprite Flash) Shader
07:28 - Coding the hit effect (Coroutines)
08:54 - Coding the hit effect (Tweening)
Надеюсь, вам понравится!
источник
#gamedev
👉 @game_devv
В этом уроке по Unity мы будем использовать shadergraph для создания 3 различных шейдеров, которые вы можете добавить в свой арсенал инструментов для геймдева. Если вы новичок в работе с shadergraph, то этот урок расскажет вам о большом количестве общих узлов, которые вам понадобятся!
00:00 - Intro
00:46 - Creating lighting using shaders
04:00 - Create repeating texture patterns
05:56 - Creating a Damage Effect (Sprite Flash) Shader
07:28 - Coding the hit effect (Coroutines)
08:54 - Coding the hit effect (Tweening)
Надеюсь, вам понравится!
источник
#gamedev
👉 @game_devv
👍7❤4
Разработчик? Хватит публикуй свои приложения с пониженной комиссией на новой платформе.
Мы создали альтернативу App Store и Google Play: маркетплейс с полноценной платёжной системой, низкими комиссиями и международной инфраструктурой.
TeleStore — платформа для разработчиков, где выплаты происходят быстро, а подключение не требует юрлица.
Принимайте платежи картами (включая МИР) и получайте выплаты в USDT — моментально, на любой криптокошелёк.Интеграция занимает всего день: у нас есть SDK и техподдержка на каждом этапе.
Для первых 30 партнёров — бонус от $500 на продвижение, креативы и трафик от нашей маркетинг-команды. Мы не просто размещаем — мы помогаем зарабатывать.
Если вы создаёте браузерные игры или Telegram Mini Apps — подключайтесь:📍 Заявка: https://tglink.io/4302a84da944?erid=2W5zFGC1gZv
📍 О платформе: https://tglink.io/65bbff76b408
Реклама. Иванов А.О. ИНН 451200841661.
Мы создали альтернативу App Store и Google Play: маркетплейс с полноценной платёжной системой, низкими комиссиями и международной инфраструктурой.
TeleStore — платформа для разработчиков, где выплаты происходят быстро, а подключение не требует юрлица.
Принимайте платежи картами (включая МИР) и получайте выплаты в USDT — моментально, на любой криптокошелёк.Интеграция занимает всего день: у нас есть SDK и техподдержка на каждом этапе.
Для первых 30 партнёров — бонус от $500 на продвижение, креативы и трафик от нашей маркетинг-команды. Мы не просто размещаем — мы помогаем зарабатывать.
Если вы создаёте браузерные игры или Telegram Mini Apps — подключайтесь:📍 Заявка: https://tglink.io/4302a84da944?erid=2W5zFGC1gZv
📍 О платформе: https://tglink.io/65bbff76b408
Реклама. Иванов А.О. ИНН 451200841661.
Game++. while (!game(over))
Когда деревья были большими, а игровые движки маленькими - выбора писать или не писать свой не стояло - если у тебя нет своего движка, фактически у тебя нет игры. Кто-то покупал чужой движок и наслаждался прекрасными велосипедами импортной сборки, в то время как другие пилили свое, на что уходили месяцы, если не годы.
Эта серия статей родилась как заметки на полях к замечательной книге Game Engine Architecture, книга большая, объемная и охватывает все аспекты создания движка. Но там нет нюансов практической разработки. А чтобы видеть нюансы надо понимать не только теорию, все же GAE больше теория, но знать как работает код игры изнутри. Чтобы понимать как, и главное почему, используются выбранные механизмы внутри игры, чтобы видеть проблемы с производительностью и архитектурой, как их искать и как чинить, для этого придется понять как работают и как создавались игровые движки.
https://habr.com/ru/users/dalerank/articles/
#gamedev
👉 @game_devv
Когда деревья были большими, а игровые движки маленькими - выбора писать или не писать свой не стояло - если у тебя нет своего движка, фактически у тебя нет игры. Кто-то покупал чужой движок и наслаждался прекрасными велосипедами импортной сборки, в то время как другие пилили свое, на что уходили месяцы, если не годы.
Эта серия статей родилась как заметки на полях к замечательной книге Game Engine Architecture, книга большая, объемная и охватывает все аспекты создания движка. Но там нет нюансов практической разработки. А чтобы видеть нюансы надо понимать не только теорию, все же GAE больше теория, но знать как работает код игры изнутри. Чтобы понимать как, и главное почему, используются выбранные механизмы внутри игры, чтобы видеть проблемы с производительностью и архитектурой, как их искать и как чинить, для этого придется понять как работают и как создавались игровые движки.
https://habr.com/ru/users/dalerank/articles/
#gamedev
👉 @game_devv
👍6🔥3
Media is too big
VIEW IN TELEGRAM
Математика в играх на Unity. Библиотека Mathf
Рассматриваю различные функции библиотеки Mathf в Unity, в том числе Sin, Cos, Perlin Noise, PingPong и так далее. В видео можно увидеть примеры использования и узнать что-то новое для себя из этой библиотеки.
источник
#gamedev
👉 @game_devv
Рассматриваю различные функции библиотеки Mathf в Unity, в том числе Sin, Cos, Perlin Noise, PingPong и так далее. В видео можно увидеть примеры использования и узнать что-то новое для себя из этой библиотеки.
источник
#gamedev
👉 @game_devv
❤6👍1
Выжимаем максимум из .NET: асинхронные потоки, Channels, Pipelines и работа с памятью 📢
19 мая в 20:00 OTUS проведёт открытый вебинар «Выжимаем максимум из .NET: асинхронные потоки, Channels, Pipelines и работа с памятью».
Что разберём
— IAsyncEnumerable и await foreach — стриминг данных в реальном времени
— Channels — паттерн Producer‑Consumer и контроль нагрузки
— System.IO.Pipelines — парсинг сетевых пакетов без лишних аллокаций
— Span<T>, Memory<T>, ArrayPool — оптимизация GC и работа с памятью
— Кейсы: TCP‑сервер 1000+ подключений, ETL гигабайтов данных
Спикер — Елена Сычева, Senior .NET Engineer с 17 годами опыта, преподаватель СПбГУ.
Кому будет полезно
— .NET‑разработчикам, стремящимся к топовой производительности
— архитекторам высоконагруженных систем
— DevOps‑инженерам, кому важны память и потоки
— всем, кто хочет освоить «фишки» уровня Senior
После вебинара вы сможете
— обрабатывать данные в реальном времени через асинхронные потоки
— строить масштабируемые сервисы с Channels и Pipelines
— парсить протоколы и файлы без аллокаций
— оптимизировать память через Span<T>, ArrayPool и BenchmarkDotNet
Участие бесплатное. Количество мест ограничено — бронируйте прямо сейчас.
→ Регистрируйтесь
Реклама. ООО «Отус онлайн‑образование», ОГРН 1177746618576
19 мая в 20:00 OTUS проведёт открытый вебинар «Выжимаем максимум из .NET: асинхронные потоки, Channels, Pipelines и работа с памятью».
Что разберём
— IAsyncEnumerable и await foreach — стриминг данных в реальном времени
— Channels — паттерн Producer‑Consumer и контроль нагрузки
— System.IO.Pipelines — парсинг сетевых пакетов без лишних аллокаций
— Span<T>, Memory<T>, ArrayPool — оптимизация GC и работа с памятью
— Кейсы: TCP‑сервер 1000+ подключений, ETL гигабайтов данных
Спикер — Елена Сычева, Senior .NET Engineer с 17 годами опыта, преподаватель СПбГУ.
Кому будет полезно
— .NET‑разработчикам, стремящимся к топовой производительности
— архитекторам высоконагруженных систем
— DevOps‑инженерам, кому важны память и потоки
— всем, кто хочет освоить «фишки» уровня Senior
После вебинара вы сможете
— обрабатывать данные в реальном времени через асинхронные потоки
— строить масштабируемые сервисы с Channels и Pipelines
— парсить протоколы и файлы без аллокаций
— оптимизировать память через Span<T>, ArrayPool и BenchmarkDotNet
Участие бесплатное. Количество мест ограничено — бронируйте прямо сейчас.
→ Регистрируйтесь
Реклама. ООО «Отус онлайн‑образование», ОГРН 1177746618576
❤1