Почему на Java не пишут игры под десктоп?

Начал изучать программирование, нашел хороший ресурс Javarush,ещё очень люблю игры, кто ж их не любит... И вот подумал, а почему не совместить учёбу с приятным. Загорелся желанием написать небольшую игру, но зато свою, только вот смотрю информацию про геймдев(исключим пока мобильную разработку) и там тесно засели такие вот языки как С++/С#, неужели Java вообще не подходит для написания хороших десктопных оптимизированных приложений?
Если есть опытные джависты, которые пробовали писать не только мобилки на Java, можете подсказать хорошие библиотеки и движки? Или в этой сфере в Java уже всё плохо?
  • Вопрос задан
  • 974 просмотра
Пригласить эксперта
Ответы на вопрос 5
mayton2019
@mayton2019
Bigdata Engineer
Проблема в реалтайме. Обычно когда речь идет об игре то на сцену выходит именно он.

Для современных игр при скорости кадров 60 или выше очень важно чтобы основной цикл
обработки событий приложения работал без задержек. Отклик. Геймеры - народ претензиозный.
Очень быстро чувствуют дефекты игры. Какой им смысл покупать мышку выдающую импульсы
управления с частотой 200 гц, когда вся игровая подсистема будет периодически фризится и лагать.

Java не обеспечивает 60 fps просто в силу своей архитектуры памяти и GC. Это период цикла
в 16 милисекунд. Хотя современные GC типа G1 имеют управляемый таймаут stop-the-world,
тем не менее он не гарантируемый а скорее рекомендательный. Тоесть нельзя совсем
застраховаться от пропусков кадров и продергиваний. Можно скорее говорить о процентиле
чем о минимуме.

Java хорошо работает в обычных веб-приложениях и в back-end процессах потому-что одиночный таймаут
даже в 500 мс никто не заметит. В джобах и фоновых задачах - вообще плевать. Хоть несколько секунд.
Главное чтоб суммарная средняя скорость обработки бизнес-операций была на высоте. С этим вроде
все в порядке.

Вот. Поэтому реал-тайм игры лучше писать на С++/C/Rust. В них есть более-менее гарантируемое понятие отклика приложения. Ну а игру типа квеста или походовой стратегии на Java вполне себе можно написать.

Я не знаю как написан майнкрафт. Но я думаю что автор приложил огромное количество усилий
чтобы GC в его серверной и клиентской части почти ничем не был занят. И такой подход
годится для единичных игр но для майнстрима - скорее всего нет. Геймдев - это тоже бизнес
и он не любит рисков. Нужно так чтоб рилтайм == рилтайм.
Ответ написан
xez
@xez
TL Junior Roo
Вообще-то, самая популярная в мире игра написана на джаве.
Ответ написан
vabka
@vabka
Токсичный шарпист
Главная проблема в том, что нет инструментов для разработки игр на жаве.
Инструментов нет из-за того что исторически на жаве никто игры серьёзные не делал.
Не делали из-за того что java не хватает возможностей по контролю за памятью, как это есть в том же C++, да и не было никаких больших компаний, которые бы в какой-нибудь момент могли бы её продвигать, как это делала MS с C# и XNA.

Да и сейчас в том же c# у разработчика больше возможностей, чтобы писать более эффективный по памяти код, чем у java
Ответ написан
Комментировать
@windystrconv
Есть lwjgl и libgdx, для геймдева. Являются по сути обвязками над C/C++ либами. Ознакомьтесь:
https://www.lwjgl.org/
https://libgdx.com/
На libgdx можно вполне пилить игры, даже под андроид.
Ответ написан
Комментировать
raydac
@raydac
очень ленивый программист
даже на голой Java вполне можно писать десктопные кросс-платформенные 2D, как пример морской бой
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы