Нужно ли мне использовать OpenGL в моей 2D-симуляционной игре на Java?

Недавно я разрабатывал сим-игру на Java, как показывают многие из моих вопросов, и я прошел долгий путь! Графически этого немного не хватает, и в настоящее время я использую формы для предметов, людей, комнат и т. д.

Я просматривал другие подобные проекты и заметил, что один из них использует OpenGL. Я читал CokeAndCode "Космические захватчики 103 - рефакторинг и OpenGL" и до сих пор не знаю, нужно ли это мне в моей игре или нет.

Вот видео, которое я использовал для ответа на предыдущий вопрос, но оно по-прежнему показывает в основном то, что у меня есть на данный момент (http://www.screenjelly.com/watch/Bd7d7pObyFo), хотя за последние несколько недель я провел много рефакторинга и перекодирования, но графически ничего не изменилось. Насколько я понимаю, в настоящее время я использую java2D для этого.

Я действительно не знаю, как я должен продолжать графически с этой игрой. Это мой первый проект, который я сделал помимо обучения для собственного удовольствия, и поэтому я все еще новичок в этом.

Заранее спасибо!


person Relequestual    schedule 12.08.2009    source источник


Ответы (4)


Это может быстро превратиться в длинный субъективный разговор, но я хочу заявить, что вам не нужен openGL. Ваше приложение не обязательно должно быть самым красивым. Nethack по-прежнему привлекает людей и между нами: графика отстой.

Вы хотите узнать о 2D и 3D графике и текстурах и так далее? Тогда попробуйте что-нибудь... лучший способ научиться. Затем вы можете добавить это в свое резюме.

Существует множество руководств, которые помогут вам сделать первые шаги в OpenGL или какой-либо другой графической библиотеке. Вы даже можете попробовать Qt Jambi. Но как только вы начнете, вас ждет поездка ;)

person Philippe Carriere    schedule 14.08.2009
comment
Ага, ваше право. Я думаю, что пока поработаю над этим в 2D, а потом, когда это будет мало, посмотрю на более простой проект, чтобы разобраться с openGL. Я действительно что-то еще, что я тогда был бы в состоянии сделать. Я хотел бы узнать кое-что о графике, да, но я очень плохо делаю графику. Ах хорошо - person Relequestual; 15.08.2009

Согласно этому, в значительной степени можно реализовать работающую графическую игру. в Java2D с приличной производительностью, если вы следите за тем, чтобы не делать определенного количества плохих вещей.

Это может помочь вам проверить и посмотреть, каков ваш подход по сравнению с этим.

Я понятия не имею, как далеко продвинулась Java с поддержкой OpenGL, поэтому, будь я на вашем месте, я бы, вероятно, просто посмотрел, сколько рефакторинга кода Java2D я мог бы сделать, и понял, что делать дальше.

Надеюсь, это поможет, хотя бы немного.

person Platinum Azure    schedule 12.08.2009
comment
Спасибо, я действительно прочитаю эту ссылку там. Мне нужно заново реализовать элементы игры, чтобы она заработала, так как теперь я знаю намного больше, чем когда начинал. Я просто чувствую, что никто не захочет играть в нее с формами и без графики, скажем так, когда два похожих проекта расширяются из оригинальной графики игры, чего я действительно не хочу, или у меня пока нет опыта для этого. - person Relequestual; 12.08.2009
comment
Читать. Я не могу сказать, что я сделал НИЧЕГО из того, что он говорит делать. гм. - person Relequestual; 15.08.2009
comment
Ну, я только наполовину реализовал некоторые из этих вещей. Но статья, кажется, специализируется на графике в реальном времени, то есть они утверждают, что их стратегии ведут к оптимальной скорости. Ваш звонок о том, стоит ли их попробовать. - person Platinum Azure; 15.08.2009
comment
Ссылка не работает (сейчас xrds.acm.org/article.cfm?aid=1247245) и за платной стеной :( - person afaulconbridge; 05.12.2015

Одна хорошая сторона использования opengl (даже для 2D-графики) заключается в том, что вы получите (если все сделано правильно) аппаратное ускорение графики для ваших сцен.

Кроме того, вы можете использовать ортогональную проекцию и оставить одну из осей (Z) равной нулю для создания 2D-графики. Будет легко, если вы захотите добавить 3D-эффект (например, молнию или что-то подобное), если вы используете OpenGL.

Однако все зависит от того, насколько вы хотите улучшить графику, поскольку добавление OpenGL может немного усложнить ситуацию, чем простой Java2D.

person Edison Gustavo Muenz    schedule 14.08.2009
comment
Ага, спасибо за информацию. Я думаю, это было бы действительно здорово, но очень сложно. Я думаю, как только у меня будет почти рабочая игра с java2D, я посмотрю на нее подробнее. - person Relequestual; 15.08.2009

Как продолжить графически: используйте текстуры, более интересную анимацию (реализуйте простой физический движок и/или обнаружение столкновений, что всегда выглядит красиво).

Когда вы переходите к 3D (например, с помощью opengl), вы можете добавить к уравнению световые эффекты, что обычно сильно влияет на эстетику в целом. Например, если движущийся круг был сферой с красивой текстурой (мрамор или что-то в этом роде), то вы могли бы сделать так, чтобы он действительно играл на доске, и вы могли бы указать значения диффузного и зеркального отражения, чтобы варьировать освещение, например, здесь.

Движение камеры также может улучшить графику.

person Emile Vrijdags    schedule 12.08.2009
comment
Если честно, я думаю, что переход на 3D может быть немного не в моих силах. Круг должен быть человеком, хе-хе. Я не планировал обнаруживать столкновения с другими движущимися объектами, я планировал позволить людям проходить друг через друга, как в оригинальной игре (тематическая больница, кстати). Спасибо за ваш вклад, однако, ценится. - person Relequestual; 12.08.2009
comment
лол, да я только что снова посмотрел видео и прочитал текст на кнопках :) - person Emile Vrijdags; 12.08.2009
comment
3D может быть не таким сложным, как кажется, когда вы сохраняете одну ось нулевой для всех объектов и выполняете ортогональную проекцию, математика остается примерно такой же, но вы получаете дополнительные преимущества использования освещения и 3D-объектов. Может быть, просто сделайте несколько руководств по java 3d и запустите мини-проект, чтобы почувствовать его (и повеселиться), возможно, это поможет вам лучше провести рефакторинг, чтобы вы могли добавить его позже. - person Emile Vrijdags; 12.08.2009
comment
Гум. Возможно. Интересно. Возможно, я рассмотрю реализацию этого позже, но пока планирую придерживаться 2D, но, возможно, сделать изображения немного трехмерными, под которыми я подразумеваю не сверху вниз, а все же единый набор изображений. Я просто не хочу перекодировать всю графику позже. Я просто управляюсь как есть, и производительность низкая, но это из-за моего кода. МНОГО работы предстоит :) - person Relequestual; 12.08.2009