Мне интересно узнать рабочий процесс при создании игры в Unity3D?
Это генерирует много кода для вас?
Насколько я понимаю, вы описываете игру в Unity и выполняете сценарии на бэк-энде для выполнения логики. Вроде как вы используете Unity для описания кукол, и вы используете язык сценариев в качестве мастера кукол.
Ответы:
Unity3D состоит из игрового движка и (довольно элементарного) 3D-редактора. Он предоставляет сетки, текстуры, шейдеры, ландшафт, камеры, анимацию, системы частиц, аудиосэмплы и другие виды объектов, которые полезны в видеоиграх. Он включает в себя PHYSX (собственный физический движок, принадлежащий Nvidia), и Mono (реализация с открытым исходным кодом Common Language Runtime, также известная как .NET).
Как много из этого вы используете, зависит от вас. Вы можете представить все свои структуры данных в виде объектов Unity, построить свой мир в редакторе Unity, включить физику и позволить событиям развиваться с минимальным использованием сценариев. Кроме того, вы можете отключить физический движок, построить свой мир алгоритмически и явно программировать все поведение и физику объектов.
Вы можете полностью программировать поведение на Mono (используя один из языков C #, JavaScript или Boo) или написать его на другом языке и связать его с вашим проектом Unity. (Фактическая интеграция с игровыми объектами должна быть через Mono, но это может быть довольно тонкий слой, если хотите.)
Рабочий процесс такой же, как и в любом игровом движке. Художники делают модели, текстуры и анимацию, специалисты по звуку делают звуки, программисты пишут шейдеры и поведение.
Сообщество программистов Unity очень полезно, как по адресу answers.unity3d.com, так и forum.unity3d.com . (А может, здесь, на бирже стека?)
Лучший способ узнать это - попробовать : базовая версия бесплатна, и вы получаете 30-дневный пробный период для версии «Pro».
источник
Unity3D - это скорее оболочка / библиотека, чем игровой движок «перетаскивания». Он не генерирует код и не поставляется с готовыми сценариями.
Например, Unreal по умолчанию имеет камеру от первого лица, контроллер персонажей, обнаружение столкновений и AI.
У вас ничего такого нет в Unity3D. Unity3D - это игровой цикл, система сущностей на основе компонентов, обширная математическая библиотека, средства для загрузки мультимедиа, обработки мешей, камеры, графического интерфейса непосредственного режима, шейдеров, конвейера рендеринга и других низкоуровневых функций. Плюс хороший редактор. Вам просто нужно беспокоиться о функциональности высокого уровня. Например, вам все равно придется кодировать собственную камеру от первого лица (если вы не используете камеру по умолчанию). Однако вам не нужно заниматься вычислением векторов просмотра и тому подобного.
Unity3D не генерирует никакого кода для вашей игры, строго (он генерирует код для запуска вашей игры, чтобы быть более точным, но не для вашего игрового процесса)
Вы должны будете использовать API, чтобы определить свою игру. Вы можете посмотреть на примеры, которые поставляются с Unity3D и повторно используют этот код; Есть несколько предопределенных сценариев, но обычно вам нужно настроить их в соответствии с вашими потребностями.
Вы создаете игру с помощью сценариев; вы пишете сценарии поведения, проектируете уровень в Unity3D и назначаете эти поведения сущностям (или игровым объектам). Он очень гибкий, но все же требует усилий для написания игры. Я бы сравнил это с Flash для 3D.
источник
Поверхность Unity3D выглядит так, как будто она очень проста, и почти все готово, но все это не так. Если вы игнорируете использование уже существующих сценариев (которые существуют для каждого движка, что плохо для Unity) и плагинов, которые вы описываете как сверхмощные, то, что они определенно не являются, Unity - это просто программный интерфейс с редактором.
У вас есть большая часть кода самостоятельно. Я испытал это в 2 разных проектах.
источник
Аналогия со вспышкой вполне верна, но я не совсем понимаю вашу аналогию с марионетками.
Хорошие вещи о единстве:
Плохие вещи
В Unity мне не нравится то, что кажется, что вся тяжелая работа выполнена, поэтому программисты гораздо менее ценны. С другой стороны, он отлично подходит для быстрого обучения людей тому, как быстро строить вещи.
Итак, в заключение: Unity (или такой инструмент, как Unity) больше подходит для художников, которые не могут обратиться к великим программистам, но все же могут знать, что нужно немного написать сценарий игры. Конечно, вы можете сделать полнофункциональную игру, добавить реалистичный IA, сделать сетевой код mmo, а что нет, но крупные компании не будут использовать Unity.
Модели программирования позволяют предложить решение, подходящее для 3/4 инструментов разработки, чтобы оно подходило для этих «независимых» разработчиков игр. Он ценит один конкретный инструмент, а также художников, а не программистов (за исключением, конечно, из команды Unity).
Unity - хороший путь для непрограммистов, но они должны понимать, что видеоигры происходят из строк кода, и что вы не можете делать все просто с помощью потрясающего инструмента. В какой-то момент требуется знать кое-что о низкоуровневом программировании.
Имея в виду личный проект, я бы не стал использовать Unity, потому что мне не нравятся C # или Boo (Panda хороша с python, так зачем беспокоиться о коммерческом программном обеспечении?), И потому что, если я покажу свой проект, и он будет сделан с Единство, это будет гораздо менее впечатляющим.
источник
Единство требует от вас сценария, но без всех шаблонов. В типичной игре OpenGL вам нужно будет инициализировать матрицы и камеры как сумасшедшие. В Unity вы создаете скрипт, который сообщает поведение чего-либо, а затем присоединяете его к объекту, чтобы заставить его вести себя.
источник
Если сгенерировав много кода для вас, вы бы включили встроенные функции, которые вы можете использовать, чтобы упростить свою жизнь, связанную с обнаружением столкновений и вычислениями поворота (Библиотека), тогда да, это отнимает много кода и дает Вы оптимизировали версии под рукой и готовы к работе. В основном функции, которые вам понадобятся специально для разработки игр во всех сборках.
Это может показаться излишним, но по моему опыту, когда Unity3D не занят разрушением или сборкой, это облегчает мою жизнь, позволяя мне изменять все, что я хочу, и оставлять математику на основе кватерниона людям, имеющим степень магистра по математике. и все еще доверяй мне достаточно, чтобы заставить меня изменить то, что я хочу.
Он ничего не напишет для вас, скорее поможет вам так, как он считает лучшим, и позволит вам писать все, что вы захотите.
Одним словом, гибкий
источник