Если ты попробовал действительно всё, то значит это невозможно.
Попробуй декомпозировать задачу на более простые части и решить части по отдельности.
Например попробуй отдельно сделать выбор при помощи стрелочек и отдельно уже сцену с гаражём.
А chat_id у вас такой и есть или в реальном коде вы его берёте из запроса?
Вообще лично я бы не заморачивался с этим и делал бы запросы по старинке - так хотябы можно получить подтверждение доставки.
calculator212, лучше на конкретном примере рассматривать всё-таки, ибо можно придумать контрпример, где и с 10k rps в архитектуре просто не нужен брокер сообщений (+ не надо опускать слово "сообщений"), и наоборот в сервисе, в котором событие происходит дай бог раз в минуту - полезно иметь персистентную очередь.
проекту нужен брокер т.к. у них "highload", но по сути им хватает дефолтных решений, а брокер вообще хз зачем им
Хз где такое пишут, но брокеры сообщений часто нужны не из-за хайлоада, а из-за гарантий доставки/порядка при обработке каких-то событий или потоков данных.
Тогда хочу попробовать разработку ПО, cофтов, драйверов и тд
А разве десктопные приложения - это не ПО?
И что такое "софты"?
И почему ты считаешь, что десктопные приложения на C++ не пишутся? C++/Qt - наоборот одно из самых востребованных направлений на C++.
Rust - ну типа мы для тупых программеров C++ добавим Jail
Как-то сильно поверхностно. Я бы скорее сказал, что Rust по сравнению с C++ делает следующее:
1. Вносит в язык такие фичи, с помощью которых можно тривиально на этапе компиляции проверять на много разных очевидных или не очень ошибок
2. Убирает всё наследие из синтаксиса, которое накопилось за полвека.
3. Вносит минимальное количество фич в синтаксис, чтобы при этом:
а) Эти новые конструкции можно было использовать для большого количества разных вещей
б) Эти конструкции не противоречили друг другу.
Вот например есть в Rust енамы. С помощью них можно:
1. Использовать их как собственно самые обычные сишные енамы
2. Делать безопасные union-ы
3. Они заменяют собой null
4. На них строится вся обработка ошибок
5. С помощью них можно делать более безопасные абстракции (вот уже упомянули в соседних комментах FSM, корректность переходов которой гарантируется при компиляции).
6. Их можно использовать там, где возможно в C# или Java захотелось бы использовать наследование.
И это ещё не предел. И так со всеми фичами - если что-то вводится как синтаксис, а не как макрос, то это можно использовать для множества разных вещей. По этой же причине в Rust просто нет тернарного оператора и двух switch-ей как в C#.
А на основе движка ты можешь и сам игру сделать
Что ты вообще хочешь с исходниками сделать, когда их получишь?