Мне тут скинули ссылку на это обсуждение. Что ж, придется ответить.
Отсутствие зависимости от Java. Лаунчер должен быть нативным - один бинарник без зависимостей. Electron и .NET Core 3 отпадают, т.к. их бинарники - лишь контейнеры, распаковывающие гору файлов во временные папки.
Давайте внимательно посмотрим какие проблемы ждут того человека, что решит писать лаунчер для майнкрафта не на Java
Кросс-языковая интеграция. Это сложно. по любом вам понадобится код на Java для взаимодействия с authlib и составления api
Выбор фреймворка. Ниже предлагают Qt - отличный фреймворк. Однако вам придется делать установщик лаунчера, что бы притащить все эти .dll, а если собирать статически - можно огрести проблем с раздутым бинарников раз, и с некоторыми библиотеками вроде libpthread два.
GUI. Я не представляю как вы будете делать красивое GUI в Qt так, что бы оно одинакого смотрелось как на винде, так и на лине. Пользователям нужны яркие цвета, анимации, а не дефолтные кнопки. Редактирование дизайна под проект станет нетривиальной задачей
Сама сборка лаунчера под проект станет нетривиальной задачей для школьника
t1ha, wyHash, xxHash - работают практически на скоростях оперативки (особенно два первых). 64х-битного и даже 32х-битного хэша с головой хватит для проверки файла. Кроме того, получаем огромную экономию размера на передаче списка валидных хэшей от сервера лаунчеру.
Криптостойкость. Этим всё сказано. Даже MD5 не является хорошим решением, а вы предлагаете такие быстрые нестойкие хеши. Получив файл чита с таким же хешем как у оригинального файла все ваши нативные защиты пойдут лесом
Экономный бинарный, но расширяемый двусторонний протокол.
И повторить судьбу лаунчера Сашка с его уязвимостью перед DoS/DDoS/атаки медленного чтения и тп. У нас не 400 packet per second, нам нахрен не нужно экономить байты, что бы писать бинарную сериализацию, строить какие то свои велосипеды, придумывать бинарный протокол.
Серверная часть. Qt в серверной части - весьма малоэффективен и не подходит для больших нагрузок. CoW, концепция слот-сигнал, привязка объекта к определенному потоку, всё это мешает эффективной обработке поступающих запросов. Qt5 не особо использует новые стандарты C++, нужно ждать выхода Qt6. Работа с базами данных так же принесет некоторые проблемы