Как стать автором
Поиск
Написать публикацию
Обновить

Комментарии 51

Статья понравилась, очень жаль что в свое время эксперементировал не с Java, а с Delphi, в результате через некоторое время ему настал конец в геймдеве.

P.S. При комбинации клавиш «Alt + Print Screen» будет захвачено только активное окно и не будет необходимости резать скриншоты.
Спасибо, насчет скриншотов учту, а сейчас фоткал с помощью Gyazo.
НЛО прилетело и опубликовало эту надпись здесь
А я как раз таки наоборот, очень рад что не связался с джавой =) на делфи, кстати, можно легко писать казуалки, в том числе и тридешные (ну это я еще о том времени, когда люди ставили игры на комп, а не играли в социалках), да и в любом случае, нативный код будет быстрее чем джавовский через ВМ, а в играх это довольно критично.

И в качестве оффтопика (надеюсь меня не забрасают тапками, но меня действительно волнует эта тема). Кроме того что в играх важна скорость реакции, она так же важна и в любых других приложениях, а в особенности мне, как программисту, хочется скорости и гибкости среды разработки, в которой я работаю (пишу на флеше и js). Так вот, я не понимаю, как стали столь популярными IDE на основе еклипса? С огромнейшим контекстным меню, с кучей всяких не особо полезных и не всегда работающих штук, аля комбайн. Может быть я как то не правильно пользуюсь ими? Даже вебшторм подтормаживает, когда в процессе прокрутки попробовать открыть контекстное меню (MBA 2011). Быть может правильно использовать данные программы для того же C++ или самой Java? Но непонятно, почему тогда те же JetBrains используют ее для своих продуктов? И самым недоразумением во всей этой компании для меня является Flash Builder. Почему Adobe не написали на том же ейр удобный и заточенный именно под флеш инструмент? Еще в эклипсе предусмотрен механизм установки плагинов, но почему он такой не прозрачный и непонятный? почему нет маркета какого-то по категориям например?
Заранее благодарю за ответ на мою эмоциональную простыню и готов признать, что я предосудительно отношусь к ПО на java в случае приведения рациональных аргументов)
Про eclipse ничего не скажу, а вот netbeans — это моё все, очень удобная IDE.
А по поводу производительности, думаю здесь немного разные задачи у нативного приложения и java. Что что нативное выиграет в скорости, то java отыграет в переносимости.
Переносимость? Почему у меня кроссплатфореммый саблим не тормозил даже на лоуэнд ноуте? Соответственно не тормозит и сейчас. ГТК приложения в основном не тормозят, да и имеют родной (более-менее) интерфейс под операционку. Даже редактор на яваскрипте в браузере не тормозит (правда на старом ноуте тормозило). Кроме того, есть переносимое Моно, QT. В чем проблема джавы? Почему она не ускоряется? Или может это проблема движка редактора текста? Может он тормозит? Потому что на джаве есть быстрое ПО (по крайней мере я думаю что ВиртуалБокс именно на джаве написан). Ведь довольно обидно покупать ноут за стопицот денег и все равно видеть, как на нем тормозит текстовый редактор…
Витуалбокс написан не на джаве. Программная виртуализация в нём основана на Qemu, а графический интерфейс написан с использованием Qt.
Тоже раньше был поклонником NetBeans, пока не начал изучать Android. Со временем как то стало привычно.
Первое: JetBrains делает свои среды разработки не на основе Эклипс — у них, как и у NetBeans, все свое.

Почему Эклипс:

— он бесплатный, исходники открытые — бери и делай свою IDE. Писать IDE с нуля — дело сложное и хлопотное, если для компании важно время выхода среды разработки на рынок, то Eclipse — как раз для нее.
— есть куча документации, а также готовых плагинов с открытыми исходниками — сделать свой плагин для этой среды также достаточно легко.
— Eclipse — стандарт в мире корпоративной разработки. Весьма вероятно, что он уже стоит у разработчиков, а значит и поставить ваш плагин им будет нетак и сложно.
Eclipse Marketplace — аппстор для плагинов, доступен и из самого Эклипса, и через веб.

Да, у него есть проблемы с производительностью, но если честно, я не знаю ни одной современной среды разработки, которая бы не тормозила. И Visual Studio, и JetBrains IDEs, и НетБины, и Эклипс — все они весьма задумчивы даже на хорошем железе (4 ядра i7, 16 гиг оперативы — все тормозят, не переживайте). Не термозят легковесные редакторы — тот же SubLime или N++, — или среды разработки попроще — например, Code::Blocks или в какой-то степени XCode — но они и умеют гораздо меньше, чем «титаны».
Спасибо за исчерпывающий ответ
Ух ты. Alt+PrntScrn работает даж в старых виндах?
Ну смотря что считать за старые винды. На XP работало
Век живи, век учись…
В 95-й точно работало, в 3.1 не проверял :-)
очень жаль что в свое время эксперементировал не с Java, а с Delphi, в результате через некоторое время ему настал конец в геймдеве.

Так вот из-за кого это…
Блин, спасибо! :)
Почему бы для разработки игр на Java не использовать libGDX? Просто потом можно будет при желании не очень сложно портировать на Android. К тому же в этом движке много чего предусмотрено для разработки игр.
Я бы отнес ИЛ-2 Штурмовик к играм ААА-класа! Как по мне, так на 2001 год вполне себе ААА, главное, проект «наш» и написан на Java!
Насколько я знаю, там только часть написана на Java…
Только скрипты на Java, если не изменяет память. А все остальное православно написано — на C++.
НЛО прилетело и опубликовало эту надпись здесь
откуда такая информация?
Когда-то, в далеком детстве, эта игра падала с ошибкой java'овской. Ну и в процессе гугления и были обнаружены обсуждения по поводу использования Java в игре. Вот так я и узнал. :)

К слову, сейчас вбил в гугл и вот в этом review написано:

Next urban legend says, that IL-2 is coded in Java. Again, this assumption is based on rumors only, and has no substance. Java is used in IL-2, but just in small part. C++ is mostly used in coding this baby.
На самом деле, на C++ там написан только менеджмент ресурсов и рендер, всё остальное на яве.
Это всё или будет продолжение?
Естественно будет. Звук, больше игровой логики, все дела.

И где продолжение?

Вы бы хоть рассказали, что за игру пишите и что хотите получить в конечном итоге, а то сразу после выбора IDE:
Итак, создаем проект, в нем класс Game(попутно создав в нем точку входа).
Ну, так как в этом уроке из игровой логики практически ничего нет, я не думаю что это очень важно. Во второй части уже явно будет видно что это платформер.
НЛО прилетело и опубликовало эту надпись здесь
Minecraft же на java вроде бы. Вполне себе ААА-класс.
Майнкрафт — инди-игра. Класс игр определяется отнюдь не количеством игроков, в неё играющих.
А чем он определяется? Есть какая-то общепринятая классификация?
Могу предположить, что определяется бюджетом, как главным фактором, но это все маркетинг. Сейчас полно треша, который относит себя к играм ААА-класа.
Факторов много, это и бюджет, и количество продаж, и рейтинг, и всякие новые технические плюшки и тд., но по большей части все это субъективно.
Майнкрафт стартанул как инди игра, но как по мне, так сейчас ее смело можно ставить в один ряд с другими играми ААА-класса.
НЛО прилетело и опубликовало эту надпись здесь
Соглашусь, да, коментарии не очень. Но насчет второго: у Нотча наблюдается точно такая же конструкция. О его навыках я высокого мнения. Может и не стоит оглядываться на других, но все же…
Не стоит, не стоит. Надо самому понимать каждый символ в своей программе. Конкретно while(running) приводит к тому, что ваша програмка жрет 100% времени ЦП, даже когда ей нечего делать. И нигде в программе нет running=false, даже пожаловаться на отсутствие синхронизации не получается :). То есть фактически while(true).

Я от геймдева далек, но мне кажется, основные проблемы там как большому количеству пользователей взаимодействовать с еще более большим количеством объектов, некоторые из них сами активные. И while(true) там совершенно недопустим — тормознет всех.
НЛО прилетело и опубликовало эту надпись здесь
notch обычно пишет прототипы, которые потом сильно допиливаются (если возникает нужда).
Из текущего кода например вычисление delta в game loop, не взлетит на нормальном проекте.
Как только рендер и(или) игровой цикл начнут расти по времени, а gc будет активно работать, на разных машинах вы получите в лучшем случае — дерганную картинку и не играбильность, а в худшем — ошибки синхронизации игровой логики.
Если почитать тот-же www.java-gaming.org/, то там это момент обсуждался очень долго. В том числе еще тогда, когда там notch активно писал, а minecraft был прототипом.
Статья очень слабая.
1 цикл для рендера и для просчета, это никто уже сейчас не оценит.
Собственно поддерживаю gvsmirnov.
Такие статьи не для Game Development, а просто для программок, которым надо вывести графику в какое либо место.
Создадим три функции — update(long delta), render() и init(). Я надеюсь что их значение вам понятно.

Тем кому понятно, этот код не нужен, а тем кому не понятно, конечно статья может была бы интересна, но для них не все понятно. Вы на какой уровень читатель рассчитывали?
читателей*
Мне кажется, код этот был создан под впечатлением Нотчевского Minicraft. Однако следует учесть, что та игра делалась на конкурсе за 48 часов, и поэтому образцом хорошего стиля служить не может. Хотя, конечно, общие принципы там верные.
Добавим нашу картинку в папку assets(папку создать в корне проекта), саму папку надо добавить в build path.

А можно поподробнее про то, как это сделать? Я добавил в Project -> Properties -> Java Build Path -> Source папку assets, но, тем не менее, строка

URL url = this.getClass().getClassLoader().getResource(path);

выбрасывает null. Что я делаю не так?
Попробуйте скачать проект с гитхаба, он то точно запуститься, хоть я и удивлен что у вас не работает это.
Я так понял, пример идет без использования OpenGL, т.е. просто рисование по канве.
А нет ли проблем с framerate при таком способе? Возможно ли удерживать 50-60 кадров в секунду в динамических сценах? (При условии, что компьютер в принципе поддерживает подобный FPS в других программах)
Не пишите такие комментарии в коде никогда. По программе и так видно, что она делает в каждой строке кода. Лучше писать, зачем она это делает.

Например
g.fillRect(0, 0, getWidth(), getHeight()); //заполнить прямоугольник

Лучше написать что-то типа //делаем черный фон

Ну и JavaDoc тоже не просто так придумали.
На самом деле хочу поблагодарить за статейку. Очень коротко и понятно! Сам просто с java вообще никогда не работал, а тут попросили на скоряк для девушки в универе сделать простецкую игру чтобы сбивать самолеты. Но в инете прям отвратно кусками инфу собирать, особено когда с java не работал. Статья очень помогла и за 2 часика игрушка была готова! Еще раз спасибо!

А где продолжение?

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации