Вопрос

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

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

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

1) Как отобразить сообщение "загрузка ..." с индикатором выполнения во время загрузки изображений, звука и т.д. игры.(С помощью java-апплета)

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

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

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

Это было полезно?

Решение

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

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

  3. Самая большая проблема, с которой вы, вероятно, столкнетесь, - это анимация и ЭДТ.Я спросил о это ранее.

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

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

В последнее время в мире апплетов многое изменилось.С тех пор как 1.6 обновление 10 он намного более конкурентоспособен с Flash-версией - размер загрузки меньше (обычно менее 4 Мб), время запуска сокращено, а новый внешний вид масштабирования был представлен.

Другие советы

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

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

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

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

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

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

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

http://nehe.gamedev.net/

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

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

удачи!

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

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

Flash отлично подходит, если вы настроены на создание онлайн-игры, Java плюс оболочки Jogl open-gl также являются отличным вариантом.

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

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

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

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

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

Отвечая на вопрос 3.Если вы действительно хотите начать разрабатывать игры, я рекомендую вам прочитать это короткая статья Джеффа Хауленда.

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

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

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

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

Для начала прицелитесь немного ниже....

класс opencourseware на теория игр и дизайн.Он также поставляется с список для чтения.

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

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

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

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

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

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

Игровой дев это отличный ресурс для общего программирования игр

И ...

Я бесстыдно украду ссылку из ответа yx:

Посуда для открытых курсов Массачусетского технологического института:Теория игр и проектирование механизмов

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top