Unity3d. Начало работы, практические советы. Рецензия

Доброго времени суток. Данная статья посвящена мультиплатформенному инструменту Unity3d. В статье рассмотрены оптимальные, по моему мнению, способы работы с движком, даны практические советы по эксплуатации и дополнительные (общие) сведения; рассмотрены перспективы развития Unity3d.

Содержание:

  • Раздел 1. Введение
    • Что такое Unity ?
    • Возможности Unity3d
    • Проблема дополнительных знаний

  • Раздел 2. Начало работы
    • Вспомогательная литература
    • На это стоит обратить внимание
      • NB!
      • Сцены
      • Отладка

    • Структурирование

  • Раздел 3. Практические советы
    • Написание скриптов
    • Видеоуроки
    • Устранение ошибок

  • Раздел 4. Завершение работы
    • Выводы
    • Публикация игры
    • *Оптимизация

  • Раздел 5. Дополнительная информация
    • Теория графики
    • Полезные ссылки
    • Мнение
      • Что хочется увидеть в будущем?


  • Источники информации



Раздел 1. Введение


Что такое Unity3d ?

Unity3d является современным кросс-платформенным движком для создания игр и приложений, разработанный Unity Technologies. С помощью данного движка можно разрабатывать не только приложения для компьютеров, но и для мобильных устройств (например, на базе Android), игровых приставок и других девайсов.
Поговорим немного о характеристиках движка. Во-первых, стоит отметить то, что в среду разработки Unity интегрирован игровой движок, иными словами, вы можете протестировать свою игру не выходя из редактора. Во-вторых, Unity поддерживает импорт огромного количества различных форматов, что позволяет разработчику игры конструировать сами модели в более удобном приложении, а Unity использовать по прямому назначению — разработки продукта. В-третьих, написание сценариев (скриптов) осуществляется на наиболее популярных языках программирования — C# и JavaScript [1].
Таким образом, Unity3d является актуальной платформой, с помощью которой вы можете создавать свои собственные приложения и экспортировать их на различные устройства, будь то мобильный телефон или приставка Nintendo Wii.
Для того чтобы создать свою игру, вам, как минимум, нужно владеть одним из доступных (на Unity) языков программирования: C#, JavaScript или Boo.

 image
 
Будет прекрасно, если вы владеете, например, 3Ds max'ом, это вам сильно поможет при создании игры. Что касается меня, то мне пришлось освоить 3Ds max на базовом уровне, ибо нигде не мог найти нужную мне модель дома [3]. В любом случае вам понадобится установленный 3Ds max на ваш компьютер, если вы собираетесь импортировать готовые 3D модели. Ибо, в большинстве своем, необходимые модели имеют формат проекта, т.е. необходимо будет зарендерить их в соответствующий для Unity3d формат, например, в *.3DS, и только после этого делать импорт в Unity, в противном случае последний выдаст ошибку.

Раздел 2. Начало работы


Вспомогательная литература

Обратимся к литературе, которая поможет нам изучить Unity3d, а именно, к Unity 3.x Game Development Essentials [2]. Книгу в свободном доступе можно найти в гугле, если вы предпочитаете бесплатный контент.
О чем книга? Пожалуй, обо всем, что только нужно для создания полноценной игры. Настоятельно рекомендую приобрести данную книгу и изучить самостоятельно.
Пару слов об игре и содержании книги. Ваш игрок оказывается на необитаемом острове, ему необходимо спастись, для этого он выполняет различные задания и, будем надеяться, спасается. Игру можно пройти за пару минут, однако создание игры занимает далеко не пару минут, даже не пару часов, пожалуй.
Книга содержит очень подробное руководство по созданию игры «с нуля». В ней описано многое, что вам, скорее всего, понадобится для создания вашей игры.

image

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

image

image

На это стоит обратить внимание

NB!

Приведу несколько советов при создании игры в Unity3d.

º Коллайдеры
Что это такое — коллайдер? Коллайдер — это область пространства, при взаимодействии с которой выполняются те или иные скрипты, действия. Чтобы лучше понять что это такое, представьте, что вы подходите к автоматически открывающимся дверям универмага. За пару метров от дверей, срабатывает датчик и двери распахиваются перед вами, но если вы пройдете за три метра, то ничего не произойдет. Как раз та зона, в которой действует датчик движения, отвечающий за открывание дверей, и есть коллайдер. Вы входите в зону — двери открываются, выходите из зоны — и датчик уже никак не будет реагировать на ваше присутствие. Точно так же и в игре.
Так вот, о коллайдерах. Предположим, мы импортировали в наш проект автомобиль и хотим сгенерировать для него коллайдер. Можно сгенерировать автоматически коллайдер для всего автомобиля, но тогда для каждой детали автомобиля — фары, уплотнителя, зеркала, покрышки — будет сгенерирован свой коллайдер.

image

Это абсолютно не оптимально. Безусловно, нам не нужно генерировать столь большое количество коллайдеров, достаточно ограничиться одним!

image

Обратите внимание, что это не тонкость. Стараться сэкономить память нужно везде. У вас есть какое-то место в игре, куда игрок не сможет попасть? Не генерируйте никакие коллайдеры для этого места вообще. У вас есть дверь, которую вы импортировали в проект из 3Ds max'а? Небось, она очень хорошо прорисована (сам сталкивался с тем, что у двери даже шурупы были прорисованы отдельным объектом), значит, создайте один box-коллайдер для всей двери — вы сэкономите много памяти! Поверьте, что вам эта сэкономленная память еще очень и очень пригодится.

º Оптимальная работа со сценами
Поговорим об оптимизации сцен, о самих же сценах будет речь вестись далее.
Представьте следующую ситуацию: у нас есть сцена «home» — когда игрок находится в здании и сцена «street» — когда игрок выходит из здания на улицу. Естественно, из второй сцены мы можем видеть дом, т.е. часть первой сцены, и наоборот (если, конечно, у здания есть окна). В таком случае оптимально следующее построение сцен. В первой сцене все, что касается улицы (т.е. того места, куда мы не можем попасть без перехода на другую сцену) надо максимально упростить. Иными словами, нам нужно оставить только внешний вид вида из окна, а всю начинку — распотрошить. Т.е. все коллайдеры удалить, разрешение и т.п. свести к минимуму. Действительно, зачем процессору напрягаться с обработкой той местности, которую мы не можем посетить? Аналогичным образом поступаем со второй сценой («street»). В данном случае мы можем вообще все удалить из дома и оставить только его «коробку».
Вы хотите создать minimap? Пожалуйста, только избавьтесь от всех коллайдеров и снизьте разрешение, в таком случае ваша игра будет оптимальна.
Именно таким образом работа со сценами становится оптимальной. Еще раз отмечу, что это не тонкости, это серьезные вещи, которые требуют внимания создателя.

Сцены

Готовая игра — это набор сцен, соединенных между собой (точно так же, как и жизнь — это набор дней). Об оптимальном проектировании игры мы сейчас и поговорим.
Прежде чем создать свой проект — подумайте, что он должен в себя включать (какие сцены). Составьте список сцен (на листочке), обдумайте, что каждая сцена будет в себе содержать. Теперь постарайтесь каждую сцену разбить на подсцены, чем больше их будет, тем легче будет вашему ЦП. Конечно, не стоит перебарщивать с количеством сцен. Предположим, что ваш игрок находится в здании и из него никогда не выходит, в здании есть, например, пару этажей, крыша, а на каждом этаже имеется три комнаты. В данном случае, по моему мнению, было бы оптимально «разбить» здание на две сцены — два этажа и крыша. Дробление же каждого этажа на сцены с комнатами — не оптимально. Это просто не нужно, если каждая из комнат слабо загружена. Иными словами, надо грамотно расходовать память процессора, но и забывать о получении удовольствия от игры тоже не стоит.

Отладка

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

Структурирование

При конструировании игры важно помнить о структурировании данных — немаловажном аспекте. Имеется ввиду, что все должно быть на своем месте. Создаете скрипты? — создайте папку для скриптов, там и храните их, с большой вероятностью, у вас будет не один скрипт, разбрасывать их по всему проекту не есть хорошо, сами потом будете мучиться. По своему опыту могу сказать, что вам точно понадобится создать папки со скриптами, звуковыми файлами, с GUI текстурами, материалами, анимациями, быть может, префабами и собственными моделями (импортированные из 3Ds max'а объекты лучше хранить именно в последней папке, дабы не разбрасывать все модели по проекту в хаотичном порядке). Когда вы создаете тот или иной скрипт, помните о том, что название переменных, классов и т.п. должны говорить все сами за себя. Если вы хотите создать скрипт для инвентаря (поднять предмет, использовать предмет), то лучше все скрипты однообразных действий (например, поднятия) начинать с ключевого слова, например: Catch<имя предмета>; Use<имя предмета>, в таком случае вам будет легче ориентироваться в проекте, да и выглядит так намного симпатичнее.

image

Раздел 3. Практические советы


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

Написание скриптов

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

Видеоуроки

Рекомендую следующие youtube каналы для ознакомления:
  1. www.youtube.com/user/4GameFree
  2. www.youtube.com/user/FlightDreamStudio
  3. www.youtube.com/user/3DBuzz


К счастью, программный продукт Unity обновляется постоянно, но, увы, видеоуроки сами это делать не могут. Получается так, что огромное количество видеороликов, актуальных год назад, теряют свою актуальность и становятся, попросту, бесполезными.
1 — здесь вы всегда найдете актуальные видеоуроки, понятное объяснение, детальный разбор скриптов и всех действий. Лучше этого канала пока что ничего не нашел. Если вы не имеете вообще никакого представления о создании игры, то вам однозначно нужно заглянуть на данный канал. 2 — серьезная команда, видеоуроков только, жаль, меньше, чем у 1. 3 — есть полезные вещи, жаль только, что видеоуроки стали почти неактуальными.

Устранение ошибок

Unity3d — такой движок, что если у вас имеются ошибки в написании скриптов, то игра ваша не запустится. Если же нет явных ошибок, то игра запускается, если что-то идет не так, то консоль вам об этом обязательно сообщит.
Это предупреждения, они просто говорят вам о возможных недочетах, недоработках:

image

Это ошибки, если такие имеются, то игра не запустится:

image

image

Раздел 4. Завершение работы


Выводы

Unity3d — очень гибкий движок, предоставляющий большую свободу действий пользователю. Чтобы упростить жизнь разработчику и потребителю, можно предпринять некоторые шаги для оптимизации своего проекта.
Теперь мы, с заложенной базой знаний, можем спокойно приступать к созданию своего ультра-популярного приложения!

Публикация игры

Свою готовую игру можно опубликовать на одном из игровых сервисов, например, на www.kongregate.com

*Оптимизация

Если вы читаете данный подраздел, то либо вам просто интересно, что здесь написано, либо вы не прочитали NB! из раздела 2. Будем надеяться, что вы относитесь к первой категории. В данном подразделе еще раз хочется отметить то, что нужно сразу писать игру оптимальной, а не писать ее хоть как-то, и только затем отлаживать — это гиблый путь и поступать так не стоит. По поводу оптимизации — еще раз обратитесь ко второму разделу.

Раздел 5. Дополнительная информация


Теория графики

Практика без теории бывает не очень уж и интересной, поэтому советую ознакомиться с теорией компьютерной графики. www.intuit.ru/department/graphics/graphalg/lit.html
Протестировать свои теоретические знания можно тут www.intuit.ru/department/graphics/graphalg

Полезные ссылки

  1. www.4game-free.com — сайт ребят, которые делают отличные видеоуроки
  2. www.youtube.com/watch?v=9Af617SEQZQ&list=SPEF925EF9F86651DD&index=1&feature=plpp_video — сам толком не разобрался с каналом, но вроде бы очень полезный
  3. www.hongkiat.com/blog/60-excellent-free-3d-model-websites — здесь можно найти ссылки на 3D модели
  4. www.youtube.com/user/AlexShebanov/videos?flow=grid&view=0 — работа с 3Ds max'ом
  5. www.youtube.com/user/khproton/videos?flow=grid&view=0 — с помощью данного канала постиг азы 3Ds max'а, рекомендую к ознакомлению
  6. www.youtube.com/user/Aevideoss/videos?flow=grid&view=0 — можно найти полезные видео о 3Ds max'е


Мнение

Unity3d действительно мощный движок [4], с помощью которого можно создавать настоящие, работающие игры. Однако, как и у любого программного продукта, у него есть, по моему мнению, свои недостатки.

º 2D графика
Считаю, что это самый главный провал Unity. Полное отсутствие нормальной, адекватной работы с 2D графикой. Имеется ввиду создание 2D-игр. Создать такую игру можно, но придется сильно напрягаться и извращаться. Если разработчики Unity смогут доработать этот недостаток, то, это будет очень и очень хорошо.

º Префабы
Хотелось бы видеть больше префабов, каких-то готовых вещей, объектов, например, домов, предметов элементарного интерьера — столов, стульев. Да, это все есть в магазине Unity[5], но, увы, многие вещи там платны, а бесплатные продукты лишь изредка достойны внимания. Отдельный разговор про 3rd person controller — извините, но это просто неприемлемо:

image

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

Источники информации



[1] habrahabr.ru/post/137926
[2] unitybook.net
[3] Ссылка на видеоуроки по 3Ds max'у, обратитесь к подразделу «Полезные ссылки»
[4] Unity Wiki
[5] unity3d.com/asset-store

Идейный вдохновитель, преподаватель и наставник
— Григорьев Д. А., доцент кафедры Информатики СПбГУ Математико-Механического факультета.
Что касается меня, обучаюсь на втором курсе МАТ-МЕХа, прохожу обучение по предмету Компьютерная графика (изучаем теорию графики и проектирование игр на платформе Unity3d).
Share post

Similar posts

AdBlock has stolen the banner, but banners are not teeth — they will be back

More
Ads

Comments 37

    +3
    Очень классно, что компьютерную графику изучаете на игровом движке. Завидую.
    По поводу недостатков — не все так плохо:
    • 2D. Во-первых, надо учитывать, что это 3D движок, поэтому надо знать хотя бы базовые методики разработки 2D в 3D движках. A 2D у Unity есть в виде плагинов(NGUI, EZGUI). И на них очень легко делать 2D игры. При желании благодаря возможности написания своих window-editorов за месяц можно написать свою 2D систему за 1 draw-call с шахматами и поэтессами. А во-вторых, в довольно ближайшем будущем появится нативные 2D контролы, бету можно посмотреть на ютубе.
    • Нет готовых префабов потому что, блин, они все разные! Тот же самый стол может быть очень разным и выглядеть совсем по разному и совсем не так, как хотели Вы. А unity — все-таки движок и он не обязан пользователям давать готовые модели под их нужды.
    • разрешения, изображения: я пишу на unity только под мобилки, но эта проблема у нас также актуальна. Мы ее решили очень просто благодаря использованию различных атласов, Anchorов к частям экранов и down-scaling-ом. Тут разные подходы есть, но они работают :)


    Я, в свою очередь, еще не перешел на четвертую версию и страдаю отсутствием Mechanim и примитивностью префабов, но разработчики unity обещали это исправить.
      0
      Спасибо за отзыв!
      Согласен, что Unity3d заточен, как не странно, на 3D графику, просто хотелось бы увидеть более простую и очевидную работу с 2D графикой, насчет плагинов — учту и попробую их как-нибудь в деле.
      Насчет префабов. Согласен, что Unity Technologies не обязаны предоставлять готовые объекты (но так этого хочется), ведь это движок; но, так сказать, возникает проблема, что данный продукт должен использоваться в совокупности с другими графическими приложениями, другими словами, отсутствует независимость работы Unity3d от других программных продуктов.
        +1
        Т.е. если мне потребуется сделать игрушку в 3dmax, или отрендерить что-то с фото-качеством в unity3d, то это будут проблемы каждого конкретного специализированного пакета, т.к. они не позволяют мне получить того, что я хочу, но могли бы?
          0
          Речь идет о том, что если человек собирается разработать свою игру, то ему придется хоть как-то, но освоить не только сам движок, но и другие приложения.
            0
            Для решения этой проблемы и был создан Assets Store.
        +1
        Я, в свою очередь, еще не перешел на четвертую версию и страдаю отсутствием Mechanim, но разработчики unity обещали это исправить.

        Mechanim ничего не дает, кроме унифицированного графа перехода состояний между готовыми (подготовленными во внешнем пакете, встроенных анимок нет) анимациями для «humanoid»-ов (т.е. двуногих) с возможностью управления им через код. В 4-ке для мобилок появляется одна большая проблема — юнитеки выпилили ARMv6 как из iOS (было указано в списке изменений), так и из Android (а этого не было описано).

        и примитивностью префабов

        В чем их примитивность? В 4-ке они сделали поддержку вложенности префабов и в итоге все поломали — часто обновление вложенных префабов работает не так, как надо, Наследование бьется при попытке перетаскивания инстанса префаба в сам префаб.
          0
          как раз графа переходов мне и не хватало :) Мы столкнулись с темой переходов в анимациях — писали собственный FSM без визуализации и соответствующими последствиями — лучше было б playmaker купить. а тут уже готовая поддержка из коробки.

          Наследование бьется при попытке перетаскивания инстанса префаба в сам префаб

          Это баг или так запланировано? Что говорят по этому поводу разработчики?
            0
            Мы столкнулись с темой переходов в анимациях — писали собственный FSM без визуализации и соответствующими последствиями

            На мобилках? Блендинг кучи анимок на одном меше? :) Обычно разумнее все подготовить заранее и импортировать в виде fbx-ов.

            Это баг или так запланировано? Что говорят по этому поводу разработчики?

            По ощущениям — баг, потому что та же методика работы в 3.х не давала таких последствий. :( Отчетов разрабам не писал, пока дважды проверяю все, не поломалось ли чего.
              0
              Блендинг кучи анимок на одном меше? :) Обычно разумнее все подготовить заранее и импортировать в виде fbx-ов


              Если бы на одном меше. У нас меш составляется из кучи других мешей, которые в свою очередь могут не быть предзашиты на клиенте. Заранее подготовить нет возможности.
            0
            Примитивность префабов в том, что не работает вложенность. Очень сильно мешает. Если префаб А содержит префаб Б, то изменение в иерархии префаба Б (добавить child'ом шарик), никак не отразиться на А.
            И в 4ке они это так и не починили.
              0
              Оно работает, но не всегда — писал об этом выше. Иногда вложенные префабы обновляют не все поля, либо разрывается связь (выглядит именно так).
          +5
          здесь можно найти ссылки на 3D модели

          работа с 3Ds max'ом

          с помощью данного канала постиг азы 3Ds max'а, рекомендую к ознакомлению

          можно найти полезные видео о 3Ds max'е

          Какое отношение к теме имеет пакет моделирования стоимостью в >=120k рублей? Вообще, unity3d всеядна, из коробки жрет obj, fbx, 3ds — это все можно получить в любых бесплатных пакетах моделирования.

          2D графика. Считаю, что это самый главный провал Unity.

          Ортогональная камера и плоскости из стандартных префабов с подгонкой скейла — уже готовый 2d. Собственная вменяемая система с визуальным редактированием в unity3d IDE пишется за неделю без напряга.

          Хотелось бы видеть больше префабов, каких-то готовых вещей, объектов, например, домов, предметов элементарного интерьера — столов, стульев.

          Так вы хотите в довесок к бесплатному движку получить еще и high quality контент, причем за бесплатно? Отсутствие данной фичи — это что, недостаток платформы?

          Отдельный разговор про 3rd person controller — извините, но это просто неприемлемо

          Что именно? Опять примерный меш, поставляющийся совершенно бесплатно в качестве контента к уроку?

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

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

          Идейный вдохновитель, преподаватель и наставник

          Наставника — оставить на второй год, т.к. «рецензия» вообще ни о чем (бесплатные примеры на сайте покрывают все перечисленные особенности работы, а так же показывают на примере готовых игрушек, как и что можно делать). Понимаю, что в большинстве учебных заведений принято лить воду в записках-отписках, которые нужны только для преподавателей, но зачем такой принцип применять везде… :(
            0
            Конечно же, я не рассчитываю получить high quality контент, мне хотелось бы увидеть самый простой и банальный набор предметов, ничего более. Да и недостатком это, по сути, не является, просто имеется желание увидеть это в будущем. Не будет — не беда! А наставник то чем не угодил? Уверен, что мало у кого в учебном заведении преподают создание игр, суть статьи — предупредить о возможных проблемах при проектировании игры, указать наиболее практичные методы ее создания; думаю, что многие люди даже и не задумывались о таких моментах, как улучшение производительности игры посредством удаления всех «ненужностей», которые недоступны из данной сцены. В любом случае спасибо, будем работать.
            0
            Ещё сильно раздражает что то что там выдаётся как JavaScript, куда больше напоминает C# с командами от JavaScript.
              0
              Вы меня опередили, сам только хотел написать. Да, например, там нету объекта arguments.
                0
                Также нельзя произвольно добавлять объекту свойства, создавать произвольные объекты, и ещё куча всего.
                0
                Начнем с того, что это не JS, а схожий с ним по синтаксису подвид, придуманный юнитеками, который потом транслируется в MSIL — на выходе мы всегда получаем .net-сборки.
                  0
                  Ну я об этом и хотел написать. Это по крайней мере было одной из причин по которой когда-то выбрал Unity3D а не UDK. В общем ничего против таких выкрутасов не имею но лучше бы они сразу уточнили что их JavaScript совсем не JavaScript.
                0
                Кому-то удавалось заставить Unity3d работать с websockets?
                Очень интересует такая возможность.
                  0
                  forum.unity3d.com/threads/110916-websocket-sharp-on-Unity — первая же строчка в гугле.
                    0
                    Интересует возможность работы с мобильными платформами и веб-плеером.
                    Там не все так хорошо
                      0
                      Веб-сокеты требуют доступа к сокетам (внезапно), этот функционал доступен в pro-версиях.
                        0
                        Не знаю как насчёт TCP сокетов но к UDP можно получить доступ и в Free версии.
                          0
                          Только в десктоп версии, в вебе вроде нужна про-шка = настройка безопасности хоста, к которому ведется обращение (по аналогии с флешем, используется тот же кроссдоменный файл).
                            0
                            >>Только в десктоп версии…
                            Советую глянуть сюда:
                            docs.unity3d.com/Documentation/ScriptReference/MonoCompatibility.html
                            Crossdomain policy нужно поднимать когда делаешь БРАУЗЕРНЫЙ билд, для билда десктопного такого не нужно.

                              0
                              А я что написал? Читаем весь тред, а не только последний пост.
                              Не знаю как насчёт TCP сокетов но к UDP можно получить доступ и в Free версии.

                              Только в десктоп версии, в вебе вроде нужна про-шка + настройка безопасности хоста


                              Советую глянуть сюда

                              Как это связано с блокировкой сокетов на уровне лицензии для мобильных платформ и sandbox-а безопасности в WebPlayer?
                                0
                                >>Как это связано с блокировкой сокетов на уровне лицензии для мобильных платформ.
                                ctrl+f => socket => f3 f3 f3
                                Классы для работы с сокетами закрыты только на версии micro, единственное ограничение в вебе — это необходимость дополнительной работы с crossdomain policy.
                                По поводу «ограничения» на использование сокетов на фри версии — выб хоть попробовали чтоли:
                                habrastorage.org/storage2/b83/56d/5cb/b8356d5cb50a4b08fc428671c158234c.png
                                Как видно, четвёрка, фришка, всё работает.
                                код я вставил в метод Start в один из монобех-классов текущего проекта:

                                Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                                s.Connect(«habrahabr.ru», 80);
                                s.ReceiveTimeout = 5000;
                                s.Send(System.Text.Encoding.UTF8.GetBytes(«GET INDEX.PHP»));
                                byte[] b = new byte[1000];
                                s.Receive(b);
                                Debug.Log(System.Text.Encoding.UTF8.GetString(b));

                                для веба пробовать не стал, ибо лень снова разбираться с policy
                                  0
                                  unity3d.com/unity/whats-new/unity-4.0
                                  ctrl+f, socket:
                                  «Android: Enforce that System.Net.Sockets use is only allowed with an Android Pro license.»
                                  Хотите сыграть в рулетку на продакшне и использовать баги неблокировки доступа в определенной сборке unity3d? Даже если есть обходной вариант, нет никакой гарантии, что это не будет пофикшено в будущем.

                                  Ограничения лицензий: unity3d.com/unity/licenses, ctrl+f, socket: доступ есть только в про-версиях и десктопе.
                                    0
                                    >> Как видно, четвёрка, фришка, всё работает.
                                    Проверять что-то в редакторе — верх гениальности, там можно использовать все, что есть в установленном FW на машине (даже не моно из юнити). Собирайте билд под устройство и смотрите, что повалится в лог после запуска на самой железке.
                                      0
                                      >>Собирайте билд под устройство и смотрите, что повалится в лог после запуска на самой железке.
                                      Я говорил только за работу на десктопе, а не на «устройствах». Для этого можно проверять и в редакторе, ограничений немного.
                                      Про то, что сокеты открыты на мобилках в доп. лицензии — каюсь, не знал. Это первый на моём веку класс окружения, что открыт/закрыт в разных версиях одной лицензии.
                                      >> доступ есть только в про-версиях и десктопе.
                                      В вебе тоже есть. Посмотрите в mono compartability, там то уж точно нету различия по лицензиям).
                                      з.ы. Нужно уточнять, что когда говорилось о «Pro» имелись ввиду «Pro mobile», иначе можно подумать, что говорилось о «Unity PRO».
                                        0
                                        Я говорил только за работу на десктопе, а не на «устройствах».

                                        Неужели?
                                        Как это связано с блокировкой сокетов на уровне лицензии для мобильных платформ и sandbox-а безопасности в WebPlayer?

                                        Классы для работы с сокетами закрыты только на версии micro

                                        Данная таблица показывает совместимость по функционалу, т.е. да, сокеты реализованы, но дальше они рубятся активированной лицензией.

                                        Про то, что сокеты открыты на мобилках в доп. лицензии — каюсь, не знал. Это первый на моём веку класс окружения, что открыт/закрыт в разных версиях одной лицензии.

                                        Так было всегда — у них этот пункт (про сокеты) всегда был выделен отдельно. Точно так же был выделен низкоуровневый доступ к GL.xxx и Graphics.xxx с доступом только на про-шках. Самое забавное, что на мобилках эти классы были доступны даже в basic-лицензиях по крайней мере с 3.2. С unity3d 4.x доступ к низкоуровневому рендеру сделали для всех типов лицензий.

                                        з.ы. Нужно уточнять, что когда говорилось о «Pro» имелись ввиду «Pro mobile», иначе можно подумать, что говорилось о «Unity PRO».

                                        Было указано, что для десктопов ограничений нет (сокеты доступны в любом виде + вебплеер с настройками безопасности хоста), все остальные платформы получают доступ к сокетам только в про-версиях (флеш — отдельный разговор), так что все было написано верно.
                          0
                          А можете подсказать, зачем Unity, у которго есть поддержка нормальных сокетов, использовать websockets?
                            0
                            Уже есть игра с websockets.
                            Не хочу заново разрабатывать протокол.
                      +2
                      «надо грамотно расходовать память процессора» — что это?
                        –1
                        Имеется ввиду, что надо соразмерять затраты на обработку игры и те компоненты в игре, которые не используются в данный промежуток времени, попросту не обрабатывать, ну и еще просто адекватно распоряжаться памятью — не давать слишком сильную нагрузку (пример про машину и коллайдеры для каждой детали, т.е. заменить все коллайдеры для каждой детали одним большим).
                          +1
                          Физика (тем более с заранее созданными коллайдерами, без генерации их тысячами в рантайме) практически ничего не ест (в умеренных количествах + статика). Основная нагрузка всегда — это пользовательские скрипты и рендер.
                            0
                            заменить все коллайдеры для каждой детали одним большим

                            Андронным

                        Only users with full accounts can post comments. Log in, please.