Comments 8
А про то, что игры не пишутся на Java, я пошутил :)
А я бы вот не сказал, что это шутка. Я пишу сервер sandbox mmo на Java (а точнее на Kotline). И я могу официально заявить, что, к сожалению, для Java нет практически ничего для геймдева, или оно (около-)мертвое.
Физические движки - из живого только dyn4j. Тот же официальный сайт jBullet указывает последний релиз в 2010 году (14 лет назад! Это было еще во времена Java 6). JBox2D - последний релиз в 2014 году.
Рендер - по сути только libgdx. Есть еще несколько прям "движков", но в основной массе они ориентированы на андроид.
Вообще забавно, что C# стал мейнстрим языком для геймдева, а Java забыта, несмотря на "расцвет" во времена появления андроида. Видимо надо сказать спасибо пушу от Микрософта (XNA, Silverlight) и успеху Unity.
Спасибо комментарий!
Я в свободное время люблю позаниматься разработкой игр. Действительно, jmonkeyengine это, наверное, единственный из игровых движков, который хотя-бы чуть-чуть на слуху. Но есть игры и основанные просто на библиотеке lwjgl. Например, Minecraft или Wildermyth. Они используют графическую библиотеку и пишут свой небольшой движок.
Есть крутые питерские ребята (компания EXBO), которые вдохновившись идеями движка Minecraft смогли написать свою игру неплохого уровня. Года два назад они вышли в Steam.
А сам моддинг Minecraft, а именно RU-комьюнити разработчиков последнее время подают очень неплохие надежды.
Этого, конечно, мало, мне даёт уверенность что это возможно, просто никто не берётся из-за отсутствия хорошего движка с качественным SDK и кейсов AAA уровня.
P.S. про dyn4j я не знал, спасибо за интересную наводку, поизучаю
Да, про lwjgl я забыл упомянуть.
В целом игры на Java конечно есть, но, как правило, все приходится писать самому или брать что есть. Там, где под C# есть десяток альтернатив, под Java у нас хорошо, если вообще есть что-то.
Надеюсь, что финализация Foreign Function & Memory API позволит сделать нормальные врапперы над свежими версиями нативных библиотек без JNI-костылей.
Я всё жду value classes, но видимо на десктопе они появятся нескоро, а на мобильных устройствах - вообще спустя кучу лет.
Из-за их отсутствия либо получается медленный код, либо люди начинают его переписывать на примитивных типах. Например `setPosition(float x, float y)` и ещё хуже `getPositionX(), getPositionY()`. Простое копировани позиции превращается в кучу бойлерплейта.
В идеале в таких случаях должен быть класс Point(x, y) и создание и передача в функцию должны работать так же эффективно, как передача пары чисел.
Если говорить про игры написанные на Java, есть еще отличная игра Starsector, которая лет 10 активно развивается и под которую есть множество модов, тоже соответственно на Java. В стиме ее нет, якобы потому-что релиза еще нет (хотя уже много лет она стабильнее большинства релизов других игр, да и контента прилично). https://fractalsoftworks.com
Вроде libgdx не только рендер, а вполне себе движок. Нет?
Начнём утро с недостижимого return. Представляю вам фрагмент:
Вообще, если бы не порт с C я бы предположил, что это последствие неудачного мерджа, когда были взяты обе стороны конфликта
Что скрывается в коде игрового движка, написанного на Java?