Вот так выглядит главное окно программы:
Вот так выглядит программа при запущеннм сервере. Можно запустить и остановить сервер, в том числе и принудительно, а также выбрать уровень логгирования или отправить команду серверу:
Можно управлять игроками (банить, кикать, давать или лишать административных привилегий):
Также можно управлять установленными мирами:
Смотреть информацию о доступных модах:
И менять настройки сервера:
Будет приятно услышать конструктивную критику и получить помощь в разработке программы. Исходный код: github
Комментарии (16)
Sinatr
07.01.2019 18:37В слове server пропущена первая буква… Ну или еще кучка идей для именования утилит: MCanager, MCelper, MCool (последний варианты кстате «клевый», если решите использовать, поделитесь донатом плиз).
Softer
07.01.2019 19:50Если это запускатор — такое в принципе не нужно. На нормальных серверах нет ни винды ни Х-ов. Ну разве что для самообучения… :)
ApacheeJava
07.01.2019 22:35-1это удобно, чтобы с друзьями поиграть, так более удобно всем управлять
Softer
07.01.2019 23:08Ну такое, как по мне — правка server.properties, bukkit.yml и их аналогов удобней. Равно как и старт сервера через shell-ник…
YaakovTooth
08.01.2019 08:02По тебе. Кроме тебя ещё чуть больше восьми миллиардов людей на планете, чтобы от их лица говорить „это в принципе не нужно”.
Softer
08.01.2019 13:08Да, но многие ли из них буду заморачиваться с сервером Майнкрафта? :) Многие для игры с друзьями просто купят Realm.
Sazonov
08.01.2019 12:09С ходу, то что с телефона разглядел:
1) Косяки с многопоточностью. Если вы хотите останавливать поток по bool переменной, её нужно сделать atomic.
2) Куча синглтонов. Они не нужны в принципе, но если уж очень хочется, то сделайте их через базовый класс.
3) Какие-то ненужные обвёртки вокруг stl контейнеров, которые ничего не делают. Самописный QSettings.
4) GUI сильно связан с логикой.Igorgro Автор
08.01.2019 12:41Можно поподробнее про 3 пункт? По поводу п.4 согласен, но не знаю что с этим делать, постоянно замечаю у себя этот косяк (не только в этой программе). Может быть посоветуете что-нибудь почитать по этой теме?
Sazonov
08.01.2019 13:57Для code review есть замечательный сайт codereview.stackexchange.com. Хабр немного не для этого.
Про 3-й пункт, минимально вот так:
template < typename T > class Singleton { public: static T& instance() { static T inst; return inst; } protected: Singleton() {} virtual ~Singleton() {} private: Singleton( const Singleton& ) = delete; Singleton& operator=( const Singleton& ) = delete; }; // Ну и использование: class MyClass : public Singleton<MyClass>{ ...
По поводу высокой связанности, в Qt есть сигналы/слоты. Неплохой пример, правда под QtQuick/QML можно глянуть тут.
Но я бы на вашем месте намного больше парился насчёт понимания многопоточности. Прочитайте про atomic/volatile. Про оптимизации компиляторов и т.п.Door
08.01.2019 20:10Ну зачем же вы вредный код показываете: virtual деструктор здесь не нужен. Да и вообще, реюзабельность таких темплейтных синглтон классов — сильно под сомнением — вам всё равно нужно еще дописать
MyClass
. Этот код компилируется [1]:
MyClass instances[100];
Sazonov
09.01.2019 04:44Спасибо за замечание. Если честно, скопипастил с какой-то своей старой лабы. Сам уже очень давно не использовал синглтоны на практике. Думаю суть посыла автор понял.
RoPi0n
Помню была стандартная оболочка, которая выглядела примерно также. В чем разница между ней и вашей?