Лучшее из двух миров: браузерная и настольная игра? - PullRequest
8 голосов
/ 15 июня 2010

Рассматривая платформу для игры, я выбрал мультиплатформенность (Win / Lin / Mac), но не могу определиться с выбором между браузером и десктопом. Так как я не слишком далеко в разработке, и теперь у меня возникли мысли, я хотел бы услышать ваше мнение!


Браузерные игры с использованием Java-апплетов:

  • проникновение на рынок является достаточно высоким (для версии 6, я полагаю, что-то около 60%?)
  • с использованием JOGL , 3D производительность / качество достойные; конечно, достаточно хорош для рендеринга дрянной 3D графики, которую я делаю
  • есть (маленькая?) Возможность портирования чего-либо на Android
  • отлично подходит для аудитории геймеров, которые часто переключают компьютеры; можно сесть за любой компьютер , загрузить веб-страницу и воспроизвести ее
  • также отлично подходит для казуальных игроков или менее знающих геймеров, которые вполне довольны игрой в браузер, но не хотят устанавливать на свой компьютер больше вещей
  • написано на языке высокого уровня , с которым я более знаком, чем C ++, - но в то же время я хотел бы улучшить свои навыки с C ++, так как это, вероятно, куда я направляюсь в игровая индустрия, когда я выхожу из школы ...
  • проще обновить процесс: перезагрузить страницу.

Настольные игры с использованием хороших старых C ++ и OpenGL

  • 100% проникновение на рынок , при условии полной кроссплатформенности; однако это число уменьшается, если учесть, сколько людей пройдут за загрузкой и установкой исполняемого файла по сравнению с простым просмотром веб-страницы и нажатием «да» для предупреждения безопасности.
  • больше проблемы с поддержкой кроссплатформенности; но опять же, для целей обучения я бы принял вызов и знания, которые я получил бы
  • лучше производительность вокруг
  • true в полноэкранном режиме , тогда как браузерные игры часто испытывают трудности с плавной полноэкранной графикой (особенно в Linux, по моему опыту)
  • может использовать преимущества таких платформ распространения, как Steam
  • с большей вероятностью будет считаться "настоящей" игрой , тогда как браузерные и Java-игры часто отбрасываются за то, что они не являются реальными играми и поэтому не играются "хардкорными геймерами"
  • установщик может быть большим; не нужно так много беспокоиться о раз загрузки

Есть ли способ получить лучшее из обоих миров? Я люблю Java-апплеты, но мне также очень нравятся причины для написания настольной игры. Я не хочу постоянно переносить все между проектом апплета Java и проектом C ++; это будет вдвое больше работы!

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

Какие у меня варианты? Есть ли другие примеры, кроме Unity, игр с браузерной и настольной версиями? Я что-то пропустил в списках pro / con выше?

Ответы [ 10 ]

7 голосов
/ 15 июня 2010

Я бы посоветовал сначала написать игру.

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

Сначала напишите игру для одной платформы (будь тоэта платформа "Windows native с DirectX" или "Java-апплет" или даже "чистый AJAX в браузере").Если вы можете сделать это, тогда вы можете начать думать о том, как перенести его на другие платформы.Но попытка сделать все - это верный способ в конечном итоге ничего не достичь.

Или, говоря иначе:

Я выбрал мультиплатформенность (Win / Lin /Mac)

так что вы действительно решили ничего .Выберите платформу для разработки.Тогда сделайте игру.Затем заставьте его работать на других платформах.

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

И если вы не планируете продать 20 миллионов копий игры и жить с ней, ваша «аудитория» не сможетне так ли важно, не так ли?Что важно, так это выпустить игру, чтобы заинтересованные могли ее попробовать.

Но одноплатформенная игра намного лучше, чем незавершенная кроссплатформенная ничего .

Игра, требующая от меня установки Unity, намного лучше, чем что-то, что требует дополнительных 3 лет на разработку, потому что вы настаивали на изобретении колеса.

5 голосов
/ 15 июня 2010

Да, вы можете иметь лучшее из обоих миров.

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

Ключевые технологии:

  • JNLP
  • JOGL для графики, которая также имеет несколько хороших демонстраций
  • Я не очень знаком с этим, но я думаю jMonkeyEngine выглядит очень многообещающе, если вы хотите больше полнофункционального игрового движка

Если и используется, то старая игра, которую я написал под названием Tyrant , поддерживала запуск как апплета, так и автономного загруженного файла .jar, весь исходный код открыт, если вы хотите на него посмотреть. При этом использовался простой AWT, а не 3D-графика.

И, наконец, еще один пример преобразования апплета в приложение с довольно небольшим количеством кода.

5 голосов
/ 15 июня 2010

Если вы действительно хотите такого рода проникновения, тогда я предлагаю HTML 5 + javascript в зависимости от необходимой вам производительности.

4 голосов
/ 15 июня 2010

Прежде всего, вы начинаете с неправильного вопроса.Ваше решение о технологии должно основываться на концепции игры.Кажется, вы уверены в идее написать игру - так что спросите себя, каковы требования к игре.Это приведет вас к вашей технологии.Если он не понимает, «что» вы хотите сделать.

Для ваших «за» и «против»: не сосредотачивайтесь на вещах, которые вам никогда не понадобятся или которые вы не сможете использовать.Думать о платформе steam не интересно для хобби-разработчика.Кроме того, Android не интересен, если вы действительно не хотите поставлять свое приложение для Android.Этот профессионал на самом деле никогда не будет профессионалом.

Подводя итог: пусть это решение будет зависеть от вашей идеи, а не от самой технологии.Если у вас есть четкое представление о том, что вы хотите сделать, вы получите ответ.

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

2 голосов
/ 15 июня 2010

Возможно, вы захотите взглянуть на собственный клиент Google , который позволяет писать ваше приложение на C или C ++ (или на любом другом, который на самом деле компилируется в нативный код).Новая функция, входящая в SDK, - это поддержка LLVM, которая (надеюсь) позволит программному обеспечению NaCl ориентироваться на любую платформу, на которой работает браузер Google Chrome (или любой браузер, с которым работает плагин NaCl - в настоящее время поддерживаются x86 и ARM, IIRC).

1 голос
/ 15 июня 2010

Да.Вы можете сделать что-то, что будет работать в обоих.По сути, заставьте вашу программу работать внутри JPanel.Апплет может отображать JPanel, а настольная версия - это просто окно с вашим JPanel.

Вы также можете иметь полный графический интерфейс Swing (или любой другой), который апплет запускает в новом окне, когданажмите маленькую кнопку «Пуск», которая будет у вас в апплете.

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

1 голос
/ 15 июня 2010

Вы упомянули Android в своем вопросе - думали ли вы о разработке игры исключительно для Android?

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

0 голосов
/ 15 января 2011

Я не уверен, что отказываться от использования плагина, потому что лично вам не нравится, это разумный выбор.Эта опция позволяет вам написать приложение, которое можно установить как приложение для настольного компьютера, или плагин для браузера (без особой работы), и вы все равно можете написать его на C ++ / GL.Вы сказали, что не думаете, что ваши пользователи будут устанавливать плагины ... почему бы и нет?Если они установят приложение, то почему бы не подключить плагин, который в основном сводится к одному и тому же?

Вы также можете взглянуть на Flash, который собирает некоторые 3D-функции и может запускаться в браузере или в качестве AIR dektopприложение.Но тогда пользователям понадобится плагин Flash, которого у вас, вероятно, нет.

0 голосов
/ 15 июня 2010

Хотя WebSense по понятным причинам не позволяет мне переходить непосредственно на сайт, первое, что приходит на ум при чтении этого вопроса, - это игра типа Wurm Online .Он написан на Java с JOGL, реализует потоковую передачу контента и локальные кэши и, похоже, затронул многие вопросы, которые вас интересуют. Это Java-приложение для настольного компьютера, а не «по-настоящему в браузере», но я думаю, вы могли быТем не менее, мы многое узнаем из своей реализации.

Игра в браузере всегда находится в опасности, когда окно закрыто или обновлено, что приводит к тому, что она внезапно теряет состояние, если все не сохраняется на стороне сервера.Это означает, что у вас либо есть очень простые игры, которые могут поддерживать синхронизацию с использованием модели «звонок / ответ» (например, бесчисленное количество текстовых игр «Войны мобов» на Facebook), либо вы рискуете непреднамеренно столкнуться с F5, катапультирующим кого-либо обратно в его последнюю »сохраненная игра. "

0 голосов
/ 15 июня 2010

Я не думаю, что вы действительно можете сравнить два:

На мой взгляд:

  • Апплеты, флеш и другие браузерные игры - это, как правило, маленькие «игрушечные» игры, написанные бесплатно или дополненные рекламой. Например, посетите веб-сайт Addicting Games .
  • Игры на C ++, скорее всего, будут тяжеловесными написанными в студии играми, основанными на специальных физических движках, графических движках и т. Д. (Особенно это касается игр, распространяемых в Steam, я бы подумал). Кривая обучения, вероятно, будет намного круче, поскольку C ++ по своей природе является более сложным языком, чем Java / Flash.

Если вы не знакомы с C ++, я бы посоветовал вам перейти на Java с JOGL. Таким образом, вы можете масштабировать кривую обучения Open GL, прежде чем приступить к работе с C ++.

EDIT

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

...