Желательно, конечно, опенсорсных, чтобы было что посмотреть и изучить.
Я знаю только freecol.
Пишите, какие знаете вы.
на джаве игры не пишут(почти), забей. геймдев это про с++\с#.
Даже если найдешь что то толку с этого не будет.
не opensource но все же
- project zomboid
- minecraft
- football manager 2014 (наверное и некоторые другие части)
- spiral knights
еще какая-то старая стратегия была про вторую мировую.
Да. в целом на джаве не пишут, но можно. И, наверное, графика здесь не ключевой фактор, есть jme3 для графики/звука. Или есть более низкоуровневые библиотеки. Производительность тоже не ключевой момент, если есть 2 ядра и немного памяти оно вполне будет работать. Нет какой-то культуры, сообщества, если хотите. Достаточного количества статей гайдов и прочего.
Aary
Статья древняя, и технологический стек древний.
Советую пересесть на C# - для java-программиста это не сложно: все очень похоже, и Rider уже по удобству догнал IDEA.
2D на джаве можно изи делать. Да и под Андроид особенно из древних 2D игр куча на джаве. А ещё на джаве написан бэкэнд Lineage 2, в сети куча сборок.
А так java по синтаксису дюже похожа с си-шарпом и прыгнуть туда труда не составит
PeeKay
изи, но смысла нет. на ровном месте понижать потолок оптимизации и ограничивать себя инструментами.
Или смысл есть, но не для вас.
Aary
Раньше я думал что и для меня есть) https://gamedev.ru/projects/forum/?id=252994
Большая часть кода правда на котлин, но это JVM, и движок на java.
kkolyan
> но смысла нет
да опционально в общем то. Например ВНку под андроид проще и вкуснее сделать на джаве, или веб, чем на юнити, и билд от юнити будет и жирнее, и больше весить, и в целом работать медленнее.
Ну и да, джава это язык сопоставимый с топами по скорости работы.
PeeKay
если игра - обычное UI-приложение, без особых наворотов, возможно имеет смысл на яве. но только если ты уже умеешь в UI под андроид. Если нет, и надо учиться - Unity будет рациональнее. по поводу веса - сомнительный аргумент для вида игр, где много арта, а Unity IL2CPP дает очень маленькие бинари. для текстовой игры - пожалуй да, жирнее.
PeeKay
> в целом работать медленнее.
с чего вдруг?
PeeKay
> Ну и да, джава это язык сопоставимый с топами по скорости работы.
это справедливо для бизнес-приложений, особенно бэкенда.
для игр - при оптимизации замучаешься с пулами объектов и другим извратом. value типов-то нет как в шарпе, где можно практически без аллокаций писать вполне приятный код.
если прям супер-уверен что оптимизация не потребуется - ну дак а какие плюсы-то по сравнению с шарпом? именно для игр, и не текстовых (для которых все сойдет).
kkolyan
> если игра - обычное UI-приложение, без особых наворотов, возможно имеет смысл на яве. но только если ты уже умеешь в UI под андроид. Если нет, и надо учиться - Unity будет рациональнее. по поводу веса - сомнительный аргумент для вида игр, где много арта, а Unity IL2CPP дает очень маленькие бинари. для текстовой игры - пожалуй да, жирнее.
Ну вот да, то что можно создать на уровне манипуляций разнообразными 2Д объектами - вполне можно реализовать на джаве, типа какую-нибудь матч-3 очередную.
kkolyan
> с чего вдруг?
потому что у юнити в довесок к тем трём с половиной абстракциям которыми я воспользуюсь для написания матч3 допилит мне туда весь остальной фреймворк который мне не нужен.
kkolyan
> для вида игр, где много арта
тут зависит от оптимизации этого самого арта.
kkolyan
> для игр - при оптимизации замучаешься с пулами объектов и другим извратом.
ну придётся сделать вручную ряд вещей которые игровой движок делает из коробки, но в общем виде опять же вопрос насколько это востребовано и какой масштаб.
kkolyan
> а какие плюсы-то по сравнению с шарпом?
Я не думаю что есть какая то прямо значительная разница того как ты будешь двигать спрайты на экране, математика и логика будут одинаковы, просто в одном случае это будет фреймворк работы с 2Д юнити, в другом чистый нативный андроид. Ну может единственный качественный плюс (он же минус для других) в том что Android Studio это IDE, а не движок, меньше кнопок, меньше распыление фокуса, меньше абстракций надо держать в голове.
PeeKay
> Ну вот да, то что можно создать на уровне манипуляций разнообразными 2Д объектами - вполне можно реализовать на джаве, типа какую-нибудь матч-3 очередную.
можно. спор же не о том, можно или нет, а о том, рациональный ли это выбор инструмента.
касаемо совсем простых игр. они сейчас кому-то нужны? ну да, вещи вроде флаппи берд иногда выстреливают, но все же. даже в матч3 сейчас насколько я понимаю кат-сцены, и бабах и пифпаф. простой манипуляцией спрайтом юзера уже не заманишь. захочется и анимаций всяких, и частиц. в юнити, или в другом зрелом фреймворке - просто возьмешь фичу, а в голой андроид-яве? что-то конечно там есть, и что-то в libgdx есть, но всеже. челленж на ровном месте. сознательные аскезы в этом плане выглядят не очень соответствующими запросам рынка. разве что если ты делаешь только прототипы.
PeeKay
> потому что у юнити в довесок к тем трём с половиной абстракциям которыми я воспользуюсь для написания матч3 допилит мне туда весь остальной фреймворк который мне не нужен.
каким образом из этого следует оно будет медленее? есть фреймворк и есть, он ЦПУ не жрет когда его не используешь. но вообще-то IL2CPP все неиспользуемое вырезает, оно не пойдет в билд.
PeeKay
> тут зависит от оптимизации этого самого арта.
у меня в профиле есть игра на юнити, весящая 10 мб, где мегабайта 4 - скайбокс. Часто ли ВН имеют вес, при котором эти 6 мегабайт что-то значат?
PeeKay
> > для игр - при оптимизации замучаешься с пулами объектов и другим извратом.
> ну придётся сделать вручную ряд вещей которые игровой движок делает из коробки,
причем здесь движок?
PeeKay
> Я не думаю что есть какая то прямо значительная разница того как ты будешь двигать спрайты на экране, математика и логика будут одинаковы, просто в одном случае это будет фреймворк работы с 2Д юнити, в другом чистый нативный андроид.
конечно значительная) в юнити, гейм мейкере и других продвинутых инструментах проделана большая работа, плодами которых пользуются люди. можно обходиться без них, или делать велосипеды - но это челленж на ровном месте.
> Ну может единственный качественный плюс (он же минус для других) в том что Android Studio это IDE, а не движок, меньше кнопок, меньше распыление фокуса, меньше абстракций надо держать в голове.
это "меньше распыления" существует только в самом начале.
допустим нужны частицы. в простом фреймворке их придется колхозить. нужны анимации. придется заколхозить. через N итераций получаем свой собственный фреймворк, только хуже. в отличие от более-менее отлаженных абстракций движков, эти - еще и время на поддержку требуют.
kkolyan
> через N итераций получаем свой собственный фреймворк, только хуже. в отличие от более-менее отлаженных абстракций движков
в общем то да) Но тут наверное для такого извращения всё и задумано. Сидеть писать самому партикловые эмиттеры)
kkolyan
> каким образом из этого следует оно будет медленее? есть фреймворк и есть, он ЦПУ не жрет когда его не используешь. но вообще-то IL2CPP все неиспользуемое вырезает, оно не пойдет в билд.
Знаешь, у меня не так много опыта с серьезными движками, я работал над сколькими то проектами как художник, и всегда удивлялся как в общем то малюсенькие игры вдруг грузятся по 50 секунд, и как они при этом бывают неотзывчивы. Может я не прав, и это просто факап конкретных реализаций, но когда я делал простенькие 2Д игры на андроиде - билд грузился за 2 секунды, и работало всё как будто плавней)
kkolyan
> даже в матч3 сейчас насколько я понимаю кат-сцены, и бабах и пифпаф. простой манипуляцией спрайтом юзера уже не заманишь. захочется и анимаций всяких, и частиц.
а один фиг всё это вручную собирать, так какая разница - в юнити или на нативном андроиде?
А вообще я согласен с основным тейком - идти в джаву ради игр странно и не рационально, если хочется делать игры нужен другой стек)
P.S: Перекодить серверную базу Lineage 2 до сих пор хочется и даже можется (я кое что уже пробовал). Там можно стоооолько всего прикольного запилить)
PeeKay
> это просто факап конкретных реализаций
скорее всего) ну а может быть еще искажение масштаба. ну т.е. возможно разница между легкостью твоих игр и ихних была больше чем кажется на первый взгляд. хотя если 50 секунд...
в общем, юнити позволяет делать оптимально, особенно в сторону low end. и чаще всего (но не всегда) это вопрос знания, а не доп. рутины.
PeeKay
> а один фиг всё это вручную собирать, так какая разница - в юнити или на нативном андроиде?
в юнити конструктор частиц довольно новороченный, с визуализацией вне плей мода. конечно на нем будет лучше)
кат сцены - для юни есть масса плагинов для задания последовательностей. а если не хочется тащить - есть корутины, что все равно лучше аналогичного велосипеда на яве.
PeeKay
> А вообще я согласен с основным тейком
👌
вообще, было бы интересно послушать еще автора темы, конечно. что им движет.