2009-05-22 5 views
3

Я некоторое время был веб-программистом, и я также могу программировать на Java. У меня есть идея для небольшой, многопользовательской игры RPG, над которой я хочу работать. Он будет воспроизводиться через Java-апплет в веб-браузере пользователя.Как освоить разработку игры?

Я написал проектный документ и спецификации игрового процесса. Теперь я хотел бы узнать, как я могу развить игру? В прошлом я работал только с окнами, такими как бизнес-приложения, со встроенными виджетами для текстовых полей, выпадающих меню и т. Д. С программированием на игру мне кажется, что мне нужно будет создать собственный виджет/элементы управления для пользовательского интерфейса игры.

Это конкретные вопросы, я имею в виду:

1) Как отобразить «Загрузка ...» сообщение с индикатором прогресса в то время как изображения игры, звук и т.д. загружено. (Использование java-апплета)

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

3) И другие общие проблемы разработки игр, о которых я должен знать, например, следует ли использовать 2D или 3D-графики, физику в играх и т. Д.

Если есть хорошая рекомендация для книги, которая поможет мне, делите.

ответ

1
  1. Самый простой маршрут - это упаковать все в файл Jar. Экран по умолчанию показывает индикатор выполнения с небольшой способностью customise. Вы можете написать собственный код для отслеживания, управления и загрузки файлов, но я лично посоветую вам этот маршрут. Если вы ищете апплеты-загрузчики, вы найдете больше информации.

  2. Я не уверен на 100%, что вы имеете в виду, но вы можете использовать Swing components так же, как вы можете использовать их в приложениях. Использовать JButton с изображением довольно тривиально, а затем подключить код события в методе actionPerformed.

  3. Самой большой проблемой, с которой вы, вероятно, столкнетесь, является анимация и EDT. Я спросил около this ранее.

This страница содержит целую кучу полезных ссылок для разработки игр.Pulp core - это система с открытым исходным кодом, которая стоит проверить - даже если вы не используете фреймворк, вы можете исследовать код.

Следует ли использовать Java-апплеты или нет, выходит из сферы действия этого вопроса, но многие из вышеперечисленных ответов дают объективные (или вообще не имеют причины) вопрос о том, использовать ли Java-апплеты. Если это игра для личного упражнения, чтобы изучить Java, тогда это отличный подход. Если вы хотите сделать это общедоступным, вам необходимо рассмотреть вопрос о том, достаточно ли текущие adoption levels для ваших нужд.

В последнее время в мире апплетов все изменилось. С 1.6 update 10 он намного более конкурентноспособен с Flash - размер загрузки меньше (обычно менее 4 Мб), время запуска уменьшается и вводится new scaling look and feel.

+0

Что касается № 2, я в основном задаюсь вопросом, можно ли отображать постоянно движущуюся область, представляющую игровой мир (движущиеся персонажи, здания, ландшафт и т. д.) и группа кнопок с компонентами Swing с правой стороны. Я буду использовать метод repaint() для рисования игрового мира. Есть предположения? –

+0

Извините за задержку ответа. Да, это возможно, вы можете использовать макет с JPanel для перемещаемого мира и кнопки на другой панели, которые статически расположены (т.е. обычный компонент). Перекраска в порядке, но в конечном итоге вы можете захотеть взглянуть на активный рендеринг для более жесткого управления анимацией. – Pool

0

Q1 = 1% вашего времени.

Q2 = 40% вашего времени.

Q3 = 59% вашего времени.

Возможно, вы также спросите, как я могу написать Halo3 для веб-браузера.

Цель чуть ниже, чтобы начать с ....

1

Не идти по пути Java-апплет.

Если вы хотите сделать быструю казуальную игру, сделайте ее Flash; иначе, разработайте полномасштабное приложение java и запустите его через веб-старт java.

Попробуйте Tower, чтобы узнать, как далеко вы можете использовать java в качестве платформы, а также как работает Java Web Start.

Что касается прогресса-бар вещь, я рекомендую вам осуществить загрузку этих файлов и на самом деле использовать их, прежде чем идти на прогресс-бар глаз конфеты :)

+0

java web start позволяет запускать приложение из браузера? nice –

+1

Использование надлежащего java позволило бы вам использовать классные библиотеки разработки 3D-игр, есть несколько хороших для Java. Попробуйте http://tower.sourceforge.net/, чтобы узнать, насколько хорошо java web start + java подходит для разработки игр. – alamar

+0

Когда я нажимаю игру сейчас для этой игры, он просит загрузить файл .jnlp. Это не то, чего я хочу, это победит цель. Я бы хотел, чтобы они воспроизводили видео через браузер, оставаясь на моем веб-сайте. –

1

http://nehe.gamedev.net/

Has тонн учебников из от базового до продвинутого с использованием OpenGL с разных языков и систем, от C до C# и Python до Java.

Я нашел это очень полезным и является отличным ресурсом для добавления в закладки. Начинайте с основ игры/3D-программирования на своей платформе/языке выбора.

удачи!

0

класс opencourseware на game theory and design. Он также поставляется с reading list.

+1

Это своего рода пристойный ответ, Теория игр - увлекательная ветвь математики, но на самом деле не важна для кодирования вашей первой вспышки FPS. – sammyo

1

Как утверждают другие, Java-апплет, вероятно, не является средой, в которой вы хотите представить свою игру. Во-вторых, большинство людей видят, что апплет запускает загрузку, которую они запускают в страхе.

Если у вас вообще нет игрового дизайна, вы устанавливаете планку очень высоко с помощью многопользовательской RPG. Вы можете начать с более простого проекта, например, воссоздать что-то вроде tetris, pacman или даже понга, чтобы вы могли получить представление обо всем, что связано с созданием игры.

Вспышка отличная, если вы настроены на онлайн-игру, Java плюс открытые оболочки Jogl также являются отличным вариантом.

Лично я бы предложил использовать Microsoft Xna. C# достаточно похож на Java, что вы должны быстро его подбирать, и Xna отлично справляется с абстрагированием некоторых деталей нижнего уровня, связанных с графическим программированием. Сообщество также очень активно и полезно.

+0

Я сделал небольшую игру pacman, спасибо :). то, о чем я больше всего не согласен, вопрос 2 (то есть ui) –

+0

Ну, самый простой подход заключается в том, что вы рисуете спрайты на экране, устанавливая их значение z, чтобы они отображались поверх всего остального. Например, Зельда рисует 3 спрайта сердца в левом верхнем углу экрана, чтобы представить ваше здоровье. – DMMcKinnon

+0

ahh ... Понятно. nice –

2

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

Аналогичным образом, большая часть интерактивности будет выполняться путем отправки нескольких потоков для одновременного выполнения многих действий (перемещение разных символов на экране) или обработки прерываний с помощью ввода пользователем.

3

Если это ваш первый матч, проект мультиплеер может быть слишком амбициозным.

Загрузка экранов не очень сложна - я реализую их, подсчитывая, сколько файлов мне нужно «загрузить», а затем продвигать индикатор выполнения (и обновлять экран) каждый раз, когда был загружен другой файл. Вы можете сделать это с такой же детализацией, как вам угодно - это может усложнить ваш код загрузки, чтобы добавить компонент пользовательского интерфейса. На данный момент я бы не стал беспокоиться об этом; возможно, просто подбросить базовый кадр «Загрузка ...», а затем реализовать полный индикатор выполнения позже, когда игра станет более твердой. Я также видел некоторые хорошие реализации при многопоточности.

Остальные два придут с опытом; Я думаю, что вам нужно больше всего - это общий учебник по разработке игр, чем конкретные ответы. Вы должны обязательно начать меньше. Как только вы поймете структуру и проблемы более мелкой игры, будет легче применить их к более крупным играм.

Наиболее разумные книги по программированию игр будут проходить основную структуру игры; Мне нравится Game Coding Complete, но это довольно сложно для новичка (он охватывает более сложные способы приближения к крупным проектам). Архитектура и дизайн игр аналогичны, но могут быть лучше подогнаны к тому, что вы ищете, так как оно также охватывает некоторые «лучшие практики» управления проектами.

Существует множество различных способов выполнения пользовательского интерфейса: от использования примитивных типов пользовательского интерфейса Java (в зависимости от того, какие другие библиотеки вы используете), для самостоятельной реализации собственной реализации «HUD» с помощью только того, что вам нужно.

-1

Если вы ищете нежный путь к разработке игр и не против обучения C#, то XNA имеет сообщество, основанное на обучении написанию игр.В нем есть образцы всех видов - образец Game State Management показывает хороший способ реализации переходов экрана и загрузки, а также аналогичный пример Network Game State Management для сетевых материалов. У них также есть целые игры, доступные в качестве исходного кода для загрузки.

Независимо от того, должны ли ваши долгосрочные цели сделать Java-апплеты, флеш-игры или вы хотите работать на C/C++ с OpenGL, XNA - отличный способ игнорировать все волосяные детали реализации рендеринга/звука /и т.д. Поверьте, это очень полезно, когда вы просто пытаетесь сделать свою первую игру.

+0

Любые причины для -1? Спасибо за отзыв;) – ojrac

0

Поскольку я не могу добавить комментарий, я добавлю ответ. Я бы рекомендовал НЕ использовать потоки для перемещения персонажей и т. Д. Для загрузки файлов, воспроизведения звуков и даже для серверных сетей это хорошо работает, но любой вид AI/Graphics, он имеет тенденцию вызывать бесконечные головные боли.

Кроме того, как говорили другие люди, Java не может быть лучшим выбором. Простая причина, по которой люди говорят, что это сложно. Объем поддержки/учебников для разработки Java-игр довольно недостаточен по сравнению с C++ (GameDev.net - отличный ресурс, но с течением времени он больше ориентируется на профессиональное развитие), Flash (достойный учебник on Kongregate), а также место, которое могло бы игра для вас), или даже C# (с использованием XNA). Развитие Java-игр улучшилось за эти годы, и вы можете делать с ним какие-то удивительные вещи, но в конечном итоге это может быть сложнее. Независимо от того, какой язык вы выберете, обязательно изучите использование графического/игрового движка, поскольку он сократит объем работы на вашем конце и позволит вам, надеюсь, создать лучшую игру.

+0

Мне не нравится, когда кто-то приходит и говорит, что не используйте Java C++. Разве я бы не подумал об этом? Мне нужно использовать Java, чтобы игра могла воспроизводиться через браузер. со вспышкой дизайнеры очень дороги в прокат. поэтому по чисто деловым причинам мне нужно использовать java. если вы не можете мне помочь, тогда не добавляйте ответ –

-1

Не ходите с помощью апплета java; апплеты обычно раздражают и замедляются.

Если вы действительно хотите, чтобы его можно было воспроизводить в браузере, рассмотрите Flash (actionscript) или, может быть, silverlight (я не очень разбираюсь в играх в silverlight).

Gamedev является большим ресурсом для общего игрового программирования вещи

И ...

Я бесстыдно украсть ссылку от ответа YX в:

MIT Open Course Ware: Game Theory and Mechanism Design

1

В ответ на вопрос 3 Если вы действительно хотите начать разработку игр, я рекомендую вам прочитать это short article by Jeff Howland.

Смежные вопросы