Каковы преимущества / недостатки Unity3D как выбора для создания игр? [закрыто]

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

Плюсы:

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

Минусы:

  • мультиплеер?
  • , вы полностью зависите от единства и его предела и не можете его продлить.
  • он меньше «делает игру с нуля»
  • C ++ был бы классной штукой

Я действительно считаю, что этот инструмент интересен, но стоит ли его использовать в школе для проекта, который включает в себя более трех человек программирования? Что мы действительно изучаем в программировании с помощью такого инструмента (я в порядке с python и js, но я ненавижу C #)? Мы могли бы использовать Ogre вместо этого, даже если бы мы учились прямому х начиная с января ...

65 голосов | спросил jokoon 4 FebruaryEurope/MoscowbFri, 04 Feb 2011 19:43:07 +0300000000pmFri, 04 Feb 2011 19:43:07 +030011 2011, 19:43:07

6 ответов


65

Основным «про» Uinty3D является то, что он сумасшедший быстро. Я не говорю о производительности здесь, а о скорости разработки. У вас есть:

  • Консоли унифицированных активов. Не нужно тратить время на подсистему ресурсов вообще, никаких ошибок для процедур записи и исправления: просто отпустите файл в папку и он работает.
  • Встроенный редактор уровней. Не нужно тратить время на инструменты уровня: просто приступайте к делу.
  • Большая поддержка и поддержка отладки: все ваши игровые переменные отображаются правильно, когда вы играете, и их также можно менять на лету - и все это без написания одной строки кода. Приостановите игру в любое время или выполните одно действие за один раз за один раз.
  • Довольно сложная библиотека готовых компонентов. Рендеринг, звук, физика, элементы управления - уже написано много «шаблонных» кодов.
  • Моно как хост сценария. Хотя можно утверждать о достоинствах C # как языка, библиотека базового класса Mono предлагает множество функций. Коллекции, ввод-вывод, многопоточность и безумно выразительный LINQ значительно ускоряют развитие.

Кроме того, Unity3d действительно хорош на нескольких платформах. Конечно, вы не можете создать, скажем, Windows .exe-игру, а затем волшебным образом «просто работать» на iPhone; но Unity довольно близко к этому. Требуется «настройка» больше, чем «портирование».

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

И, конечно же, Unity3D немного менее гибкий, чем «игровые движки», такие как OGRE, которые предлагают только библиотеку /исходный код. Его производительность не совсем первоклассна, и поскольку у вас есть только песочница для сценариев, вы не можете использовать некоторые умные хакеры низкого уровня, чтобы улучшить ее. Например, если встроенный инструмент рендеринга Unity не удовлетворяет вас по какой-либо причине, вы не можете написать свой собственный (ну, можно, но он будет работать через скрипты и, скорее всего, будет слишком медленным и слишком сложным ). Тем не менее, все возможно с Unity, если вы не возражаете потерять немного производительности.

Самый большой «кон» Unity3D, однако, является источником контроля. Как уже упоминалось, собственный Asset Server Unity стоит довольно дорого. И это отстой, действительно, очень тяжело. У него даже нет ветвлений. Хотя Unity3D теоретически поддерживает сторонние SCM-системы, использование их также связано с опасностью. Я видел, как параметры импорта «волшебным образом» меняются после фиксации SVN, или все параметры объектов исчезают после использования Perforce. Все это можно обойти, но в любом случае Unity3D + Source control = pain.

Итак, чтобы ответить на ваш вопрос. Я считаю, что Unity3D является одним из лучших, если не лучшим, выбором игрового движка для «маленькой» игры. Особенно в прототипе.

Тем не менее, если мы говорим об образовательном проекте, я рекомендую это. Чтобы узнать, как работают игры, лучше написать один на максимально низком уровне. Игровые движки - отличный инструмент; но чтобы использовать его для максимальной выгоды, необходимо понять, как они работают, и why они работают таким образом. И лучший способ узнать это - написать свой собственный игровой движок - даже если он окажется дерьмовым в конце.

ответил Nevermind 5 FebruaryEurope/MoscowbSat, 05 Feb 2011 00:54:11 +0300000000amSat, 05 Feb 2011 00:54:11 +030011 2011, 00:54:11
27

Я начну с комментирования вашего списка:

  • Сценарии - это не просто преимущество для не-программистов. Быть (хорошим) программистом - это не просто знание языка, но и знание того, как деконструировать проблемы и мыслить определенным образом. Языки сценариев могут позволить программисту использовать эти навыки критического мышления более высокого порядка, чтобы производить более мощные, более интересные результаты за меньшее время, чем ему или ей, возможно, потребуется произвести эквивалентные результаты, а также беспокоиться о деталях нижнего уровня, что некоторые языки (C ++ приходит на ум) вставляют в картину.

  • Поддержка многопользовательской поддержки (или ее отсутствие) - это только одна из проблем, если ваш проект нуждается в ней.

  • Я не вижу, как «проприетарный» - это con. Если это школьный проект, вы, вероятно, не захотите тратить время на хакерство на источник используемой вами структуры или что-то еще. Кроме того, DirectX также является собственностью.

  • Нет абсолютно ничего плохого в использовании высокоуровневых фреймворков или инструментов вроде Unity. «Создание игры с нуля» - это не достижение - что именно вы считаете «с нуля»? Вы по-прежнему будете использовать графический API другого пользователя. Чью-либо часть времени выполнения (даже для C требуется библиотека времени выполнения). «Создание игры» - это то, что заслуживает уважения, а не «создание игры без использования каких-либо полезных инструментов».

  • C ++ - «классная» вещь, немного субъективна. Этот язык часто используется профессионалами в отрасли, но, вероятно, не по причинам, которые вы думаете. Как язык, он начинает показывать свой возраст и может быть чрезвычайно громоздким по сравнению с более современными вариантами. В любом случае, языки - это просто инструменты, и хороший программист должен с легкостью воспринимать новые.

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

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

ответил Josh Petrie 4 FebruaryEurope/MoscowbFri, 04 Feb 2011 20:15:08 +0300000000pmFri, 04 Feb 2011 20:15:08 +030011 2011, 20:15:08
9

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

Вы можете использовать Unity Asset Server, но для этого требуется 1) Unity Pro (1500 долларов США) и 2) лицензия на сервер Asset Server (500 долларов США). Я предполагаю, что вы можете получить какую-то образовательную скидку, но она не бесплатна.

В качестве альтернативы вы можете использовать что-то вроде SVN с Unity. Для правильной поддержки вам по-прежнему нужен Unity Pro.

Вы не можете просто проверить не-pro версию Unity в SVN и ожидать, что она будет работать безупречно. Их механизм привязки GUID к активам и т. Д. Не является точно SCM-безопасным.


Многопользовательская функциональность довольно приличная, хотя, честно говоря, я не отправил ей игру. В теории вы просто присоединяете сетевые представления к вещам и рассказываете, что вы хотите сериализовать, чтобы правильно настроить репликацию. Оттуда это некоторые работы пользовательского интерфейса для подключения к другим аналогам и настройки. Тем не менее, это в основном одноранговый. Возможно, вы сможете выполнять программирование клиент /сервер, работая единым в режиме безглавых, но я не испортил его. Но просто заставить человека A бегать по экрану человека B довольно легко и быстро сделать.

Также C # является положительным , насколько мне известно. LINQ является супер-экспрессивным. Он имеет правильную обработку исключений и сбор мусора. Он имеет гораздо более современные парадигмы, такие как делегаты, lambdas, интерфейсы и более общую общую поддержку, чем C ++. ( Изменить ): это, очевидно, противоречиво. Я считаю, что C # вряд ли является языком bad . Я не хочу вдаваться в долгую дискуссию о плюсах и минусах язык против C ++.)

Самый большой позитив в использовании Unity, вероятно, является арт-конвейером. Вы можете взять файл PSD или Max (при условии, что у вас установлен 3ds max) в папке, и он импортируется.

ответил Tetrad 4 FebruaryEurope/MoscowbFri, 04 Feb 2011 20:44:10 +0300000000pmFri, 04 Feb 2011 20:44:10 +030011 2011, 20:44:10
6

Обновление: Unity теперь предоставляет все эти функции даже в бесплатной версии, поэтому, пожалуйста, проигнорируйте ответ ниже.


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

ответил Michael Younkin 5 FebruaryEurope/MoscowbSat, 05 Feb 2011 07:11:43 +0300000000amSat, 05 Feb 2011 07:11:43 +030011 2011, 07:11:43
3

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

  • Во-первых, да Asset Server стоит дорого и довольно ужасно для всех, кроме основного использования. Это главное преимущество интегрируется в Unity, и хотя это полезно для удобства использования и стоит того, что для более простых проектов, для чего-либо большего (обычно это проекты с бюджетом для AS), он просто недостаточно гибкий.
  • Переходя к внешнему контролю версий, важно понимать, что Meta Files нужно рассматривать как любой другой актив и всегда добавляться /обновляться в управлении версиями. Невозможно сделать это, вероятно, то, что произошло в сценарии настроек Nevermind, исчезающих.
  • Наконец, работая с любой системой управления версиями в Unity (включая Asset Server), командная связь становится существенной при работе с бинарными активами, чтобы не топать в работе друг друга.

Если вы хотите получить более подробную информацию об этих моментах, я недавно опубликовал сообщение об использовании git с Unity на основе моего опыта в некоторых довольно крупных проектах Unity: http://goo.gl/ivJVR

ответил FlintZA 1 J000000Monday13 2013, 13:15:30
2

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

Горячей на рынке сейчас является «SmartFox Server», они предлагают несколько разных пакетов, все из которых бесплатны (в некоторой степени). Это только бесплатно, если вы планируете иметь определенное количество игроков, так как каждый пакет позволяет определенному количеству игроков «бесплатно».

Если вы решили обновиться, цена будет довольно крутой для инди-разработчика. Итак ... В конечном счете, если на вашем сервере у вас много игроков, вам придется взимать плату за игру, а не загружать ее на сайты, такие как Download.com, в качестве бесплатной полной игры. Возможно, это не проблема для некоторых, но большинство из нас не может позволить себе получить 2500 долларов за карман для сервера.

Для примера - SmartFox pro позволяет 20 игрокам бесплатно. Если вы хотите модернизировать, это обойдется вам в 500 евро, что немного больше в США, около 600-700, и это позволяет использовать 100 соединений.

Следующее обновление рассчитано на максимальное количество игроков в 500, и это 1000 евро, но ... Вам не нужно платить 1000, вы платите разницу.

Таким образом, вам придется заплатить всего 500 евро, а не всего 1000. Последние обновления поддерживают неограниченное количество подключений за 2000 евро. Это почти 3000 долларов США.

Итак, если вы обновляетесь с 500 подключений, вы платите 1000 евро, если вы обновляете 100 подключений, вы платите 1500 евро, и, конечно же, 2000 евро, чтобы обновить их бесплатно.

Кроме того, этот сервер очень прост в настройке с Unity, и есть множество обучающих видеороликов о том, как это сделать именно на Youtube.

ответил 6 FebruaryEurope/MoscowbSun, 06 Feb 2011 09:25:55 +0300000000amSun, 06 Feb 2011 09:25:55 +030011 2011, 09:25:55

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132