Unity3D, сколько кода ты пишешь? [закрыто]


16

Мне интересно узнать рабочий процесс при создании игры в Unity3D?

Это генерирует много кода для вас?

Насколько я понимаю, вы описываете игру в Unity и выполняете сценарии на бэк-энде для выполнения логики. Вроде как вы используете Unity для описания кукол, и вы используете язык сценариев в качестве мастера кукол.



2
Вы можете разместить этот вопрос на UnityAnswers . Вы получите намного лучшие ответы, потому что это больше сосредоточено на единстве
Джо Человек

Ответы:


18

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».


6

Unity3D - это скорее оболочка / библиотека, чем игровой движок «перетаскивания». Он не генерирует код и не поставляется с готовыми сценариями.

Например, Unreal по умолчанию имеет камеру от первого лица, контроллер персонажей, обнаружение столкновений и AI.

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

Unity3D не генерирует никакого кода для вашей игры, строго (он генерирует код для запуска вашей игры, чтобы быть более точным, но не для вашего игрового процесса)

Вы должны будете использовать API, чтобы определить свою игру. Вы можете посмотреть на примеры, которые поставляются с Unity3D и повторно используют этот код; Есть несколько предопределенных сценариев, но обычно вам нужно настроить их в соответствии с вашими потребностями.

Вы создаете игру с помощью сценариев; вы пишете сценарии поведения, проектируете уровень в Unity3D и назначаете эти поведения сущностям (или игровым объектам). Он очень гибкий, но все же требует усилий для написания игры. Я бы сравнил это с Flash для 3D.


1
Это утверждение неверно: «У Unreal по умолчанию есть камера от первого лица, контроллер персонажей, обнаружение столкновений и AI. У вас ничего такого нет в Unity3D»
jcurrie33

8
На самом деле, Unity включает в себя компоненты для всех этих встроенных функций и многие другие в качестве загружаемых плагинов. Вы должны настроить и кодировать, чтобы получить определенную функциональность, но вы можете приблизиться к полнофункциональной комбинации этих компонентов. Это не совсем так, как в Unreal, потому что вы не начинаете с функциональной пушки, но я лично считаю, что в Unity легче вообще запустить игру (не FPS). Хотя во многом это семантика - вам действительно нужно программировать, чтобы что-то происходило.
jcurrie33

1
Возможно, лучше сказать, что другие игровые движки имеют более тесно связанные подсистемы, чем Unity3D. Когда вы запускаете новый проект Unity3D и не импортируете ни один из ресурсов, вы получаете чистый лист. То, что я считаю хорошей вещью. Возможно, это немного исказило мой взгляд на то, почему я считаю, что подсистем по умолчанию нет. Они просто не подходят для проектов, которые я должен сделать. И это одна из хороших вещей в Unity3D. Легко не использовать стандартные и кодировать свои собственные, если вы этого хотите.
Extrakun

3

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

У вас есть большая часть кода самостоятельно. Я испытал это в 2 разных проектах.


2

Аналогия со вспышкой вполне верна, но я не совсем понимаю вашу аналогию с марионетками.

Хорошие вещи о единстве:

  • кросс-платформенный: это очень большой плюс, я бы сказал, большая причина.
  • Качественный движок и реализация, я имею ввиду использование игровых объектов Unity и т. Д.
  • Очень просто сделать простую игру с нуля, так что это плюс для создания прототипов.

Плохие вещи

  • Невозможно связать с C ++ или C, поэтому ваш проект может работать только на Unity. С C # можно утверждать, что он будет работать на XNA, но C ++ был бы хорош. Под этим замечанием я подразумеваю, что это не тот инструмент, который могли бы использовать ветераны-профессионалы или автодидакты, поскольку у вас нет полного контроля над приложением, но это не значит, что вы не можете ничего сделать с Unity. С другой стороны, команда с отличной идеей и талантливыми артистами может делать потрясающие вещи, не нуждаясь в опытных программистах.
  • Это довольно новый, так что, очевидно, никто не знает, куда приведет этот инструмент.

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

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

Модели программирования позволяют предложить решение, подходящее для 3/4 инструментов разработки, чтобы оно подходило для этих «независимых» разработчиков игр. Он ценит один конкретный инструмент, а также художников, а не программистов (за исключением, конечно, из команды Unity).

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

Имея в виду личный проект, я бы не стал использовать Unity, потому что мне не нравятся C # или Boo (Panda хороша с python, так зачем беспокоиться о коммерческом программном обеспечении?), И потому что, если я покажу свой проект, и он будет сделан с Единство, это будет гораздо менее впечатляющим.


1
Комментируя себя: есть также профессиональные плагины, которые позволяют программировать на C ++, так что теоретически это также движок C ++ ...
jokoon

1

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


1

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

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

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

Одним словом, гибкий

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.