Мы делаем наш школьный проект с Unity3d, так как они использовали Shiva в прошлом году (что мне кажется ужасным), и я хотел узнать вашу точку зрения на этот инструмент.
Плюсы:
- мультиплатформенность, я даже слышал, что Google собирается реализовать это в Chrome
- все что вам нужно здесь
- языки сценариев делают его хорошим выбором для людей, которые не являются гуру программирования
Минусы:
- мультиплеер?
- собственность, вы полностью зависимы от единства и его предела и не можете его расширить
- это меньше "создание игры с нуля"
- C ++ был бы крутой вещью
Я действительно думаю, что этот вид инструмента интересен, но стоит ли его использовать в школе для проекта, в котором участвуют более 3 программистов? Что мы действительно изучаем в терминах программирования, используя такой инструмент (я в порядке с python и js, но я ненавижу C #)? Вместо этого мы могли бы использовать Ogre, даже если бы мы изучали прямой х, начиная с января ...
Ответы:
Основным «профи» Uinty3D является то, что он быстро сходит с ума. Я говорю не о производительности, а о скорости разработки. У вас есть:
Кроме того, Unity3d действительно хорош на нескольких платформах. Конечно, вы не можете создать, скажем, игру Windows .exe, а затем волшебно заставить ее «просто работать» на iPhone; но Unity довольно близко подходит к этому. То, что требуется, это «настроить» больше, чем «портировать».
Конечно, в некоторых случаях Unity3D не идеален. Сетевой многопользовательский режим, интегрированный в Unity, подходит для одноранговой игры в локальной сети, но все, что требует центрального сервера, в значительной степени требует написания всего сетевого кода с нуля. Система графического интерфейса Unity довольно причудливая и медленная, поэтому создание сложных внутриигровых графических интерфейсов является проблемой. Тем не менее, все другие игровые графические системы, которые я видел, тоже болезненны, так что в целом система Unity не так уж и плоха.
И, конечно, Unity3D немного менее гибок, чем «игровые движки», такие как OGRE, которые предлагают только библиотеку / исходный код. Его производительность не совсем превосходна, и, поскольку у вас есть только песочница для сценариев, вы не можете использовать некоторые умные низкоуровневые хаки для ее улучшения. Например, если встроенный рендерер дерева Unity по какой-то причине не удовлетворяет вас, вы не можете написать свой собственный (ну, вы могли бы, но он работал бы через сценарии и, скорее всего, был бы слишком медленным и слишком хлопотным). ). Тем не менее, с Unity можно делать практически все, если вы не против потерять производительность.
Самым большим «мошенничеством» в Unity3D является управление исходным кодом. Как уже упоминалось, собственный сервер активов Unity стоит довольно копейки. И это отстой, действительно, очень тяжело. У него даже нет ветвления. Хотя Unity3D теоретически поддерживает сторонние системы SCM, их использование также сопряжено с опасностью. Я видел, что настройки импорта «магическим образом» меняются после SVN-коммита, или параметры всех объектов исчезают после использования Perforce. Все это можно обойти, но в любом случае Unity3D + Source control = боль.
Итак, чтобы на самом деле ответить на ваш вопрос. Я считаю, что Unity3D - один из лучших, если не самый лучший, игровой движок для «маленькой» игры. Особенно в стадии прототипа.
Тем не менее, если мы говорим об образовательном проекте, я рекомендую против этого. Чтобы узнать, как работают игры, лучше написать игру на как можно более низком уровне. Игровые движки - отличный инструмент; но чтобы использовать его для максимальной выгоды, необходимо понимать, как они работают и почему они работают таким образом. И лучший способ научиться этому - написать собственный игровой движок, даже если в итоге он окажется дрянным.
источник
Я начну с комментирования вашего списка:
Сценарии - это не просто преимущество для непрограммистов. Быть (хорошим) программистом - это не просто знание языка, это умение разбирать проблемы и мыслить особым образом. Языки сценариев могут позволить программисту использовать эти навыки критического мышления высшего порядка для получения более мощных и интересных результатов за меньшее время, чем ему или ей, возможно, потребуется для получения эквивалентных результатов, а также беспокоиться о деталях более низкого уровня, чем некоторые языки (C ++) приходит в голову) сила в картину.
Многопользовательская поддержка (или ее отсутствие) является проблемой, так или иначе, только если она нужна вашему проекту.
Я не вижу, как "собственность" является мошенничеством. Если это школьный проект, вы, вероятно, не захотите тратить время на хакерство по поводу источника используемой вами платформы или чего-либо еще. Кроме того, DirectX тоже проприетарный.
Нет ничего плохого в использовании высокоуровневых фреймворков или инструментов, таких как Unity. «Создание игры с нуля» - это не достижение - что именно вы считаете «с нуля»? Вы по-прежнему будете использовать чужой графический API. Чья-то другая среда выполнения (даже C требует библиотеку времени выполнения). «Создание игры» - это то, что вызывает уважение, а не «создание игры без использования каких-либо полезных инструментов».
C ++, будучи «классной» вещью, немного субъективен. Этот язык очень часто используется профессионалами отрасли, но, вероятно, не по тем причинам, о которых вы думаете. Как язык, он начинает показывать свой возраст и может быть чрезвычайно громоздким по сравнению с более современными вариантами. В любом случае языки - это всего лишь инструменты, и хороший программист должен уметь выбирать новые с относительной легкостью.
Большим преимуществом использования Unity для вашего школьного проекта является то, что это высокоуровневая инфраструктура с большой инфраструктурной работой, уже готовой для вас - это позволит вам сосредоточиться на своей игре, а не на создании основы. Предположительно, у вас есть относительно ограниченное окно для создания этой игры, так что чем больше вы сможете использовать существующие инструменты, тем больше у вас будет времени на создание логики или ресурсов, специфичных для вашей игры, и заставит вашу игру выглядеть и чувствовать более полная - есть кривая обучения для Unity, но в итоге вы получаете гораздо больше в вашем распоряжении гораздо быстрее.
Недостатком является то, что вы потенциально тратите время на изучение конкретного инструмента, который включает в себя знания, которые могут не передаваться, особенно если вы решаете, что рабочий процесс и среда Unity не для вас, и вы никогда не захотите использовать его снова , Кроме того, Unity не имеет наиболее очевидного 2D- процесса - он очень сосредоточен на 3D-играх, которые, как правило, связаны с чрезмерными затратами в художественных активах. Но я думаю, что для школьного проекта, который вы описываете, Unity - довольно хороший выбор.
источник
Одной из основных проблем с Unity является контроль версий. Если вы не работаете в команде, это не будет иметь большого значения (возможно), но, скорее всего, это не так.
Вы можете использовать Unity Asset Server, но для этого требуется 1) Unity Pro (1500 долларов США) и 2) Лицензия на сервер активов для каждого рабочего места (500 долларов США). Я предполагаю, что вы можете получить какую-то образовательную скидку, но это не бесплатно.
Кроме того, вы можете использовать что-то вроде SVN с Unity. Для правильной поддержки вам все еще нужен Unity Pro.
Вы не можете просто проверить непрофессиональную версию Unity в SVN и ожидать, что она будет работать безупречно. Их механизм привязки GUID к активам и т. Д. Не совсем безопасен для SCM.
Многопользовательская функциональность довольно приличная, хотя, если честно, я не поставлял игру с ней. Теоретически вы просто прикрепляете сетевые представления к вещам и сообщаете им, что вы хотите сериализовать для правильной настройки репликации. Оттуда работает пользовательский интерфейс для подключения к другим узлам и настройки. Хотя в основном это одноранговая сеть. Возможно, вам удастся выполнить клиент-серверное программирование, запустив единое целое в безголовом режиме, но я с этим не сталкивался. Но просто заставить человека А бегать по экрану человека Б довольно легко и быстро.
Также C # является положительным, насколько я понимаю. LINQ супер выразителен. Он имеет надлежащую обработку исключений и сборку мусора. Он имеет гораздо более современные парадигмы, такие как делегаты, лямбды, интерфейсы и лучшую общую поддержку, чем C ++. ( Правка : это, очевидно, противоречиво. Я хочу сказать, что C # вряд ли плохой язык. Я не хочу вдаваться в долгие дебаты о плюсах и минусах языка по сравнению с C ++.)
Однако самым большим плюсом использования Unity является, вероятно, художественный конвейер. Вы можете взять в папку файл PSD или Max (при условии, что у вас установлен 3ds max), и он будет импортирован.
источник
for ( auto x : xs )
.Обновление: теперь Unity предоставляет все эти функции даже в бесплатной версии, поэтому не обращайте внимания на ответ ниже.
Что стоит отметить - если вы используете бесплатную версию Unity3D, вы не сможете использовать несколько эффектов, включая шейдеры пост-обработки (например, bloom) и, что гораздо важнее, динамические тени. Это, очевидно, не окажет большого влияния на рабочий процесс проекта, но они накладывают ограничения на то, что можно достичь бесплатно с помощью движка.
источник
Ответ Nevermind охватывает вещи довольно тщательно, но просто для того, чтобы обратить внимание на сторону управления исходным кодом, на самом деле, это не так страшно, как только вы научитесь следить за кучкой ошибок:
Если вы хотите получить более подробную информацию по этим вопросам, я недавно опубликовал статью об использовании git с Unity на основе своего опыта в некоторых довольно крупных проектах Unity: http://goo.gl/ivJVR
источник
Фактически. Мультиплеер поддерживается. Это просто вопрос выбора сервера, на котором вы хотите запустить свою игру.
Самый популярный на рынке сейчас - «Сервер SmartFox», они предлагают несколько разных пакетов, все из которых являются бесплатными (в некоторой степени). Это бесплатно, только если вы планируете иметь определенное количество игроков, так как каждый пакет позволяет определенное количество игроков "бесплатно".
Если вы решили обновить, цена довольно крутая для инди-разработчика. Итак ... В конечном итоге, если на вашем сервере много игроков, вам придется платить за свою игру, а не загружать ее на такие сайты, как Download.com, в качестве бесплатной полной игры. Для некоторых это может и не быть проблемой, но большинство из нас не может позволить себе $ 2500 из своего кармана для сервера.
Например - SmartFox pro позволяет бесплатно 20 игроков. Если вы хотите обновить его, это будет стоить вам 500 евро, что немного больше в США, около 600-700, и это позволяет на 100 подключений.
Следующее обновление для максимального количества игроков 500, и это 1000 евро, но ... Вы не должны платить 1000, вы платите разницу.
Таким образом, вам придется заплатить всего на 500 евро больше, чем целых 1000. Последнее обновление поддерживает неограниченное количество подключений, за 2000 евро. Это почти 3000 долларов США.
Таким образом, если вы обновляете 500 подключений, вы платите 1000 евро, если вы обновляете 100 подключений, вы платите 1500 евро и, конечно же, 2000 евро, чтобы перейти на бесплатное обновление.
Кроме того, этот сервер очень прост в настройке с Unity, и есть множество обучающих видео о том, как сделать это именно на Youtube.
источник