Unity3D, скільки коду ви пишете? [зачинено]


16

Мені цікаво знати робочий процес під час створення гри в Unity3D?

Чи він генерує для вас багато коду?

Я розумію, що ви описуєте гру в Unity і робите сценарії на задньому кінці, щоб виконувати логіку. Начебто ви використовуєте Unity для опису ляльок, а ви використовуєте мову сценаріїв як майстра ляльок.


Подібне запитання: gamedev.stackexchange.com/questions/2659/…
Тетрад

2
Ви можете опублікувати це питання в UnityAnswers . Ви отримаєте набагато кращі відповіді, тому що вона орієнтована більше на єдність
Джо Персона

Відповіді:


18

Unity3D складається з ігрового двигуна плюс (досить рудиментарний) 3D-редактор. Він надає сітки, текстури, шейдери, місцевість, камери, анімацію, системи частинок, аудіозображення та інші види об’єктів, які корисні у відеоіграх. Вона включає PHYSX (фірмовий двигун фізики, що належить Nvidia), і Mono (реалізація з відкритим кодом для загальної мови виконання, так само .NET).

Скільки цього ви використовуєте, залежить від вас. Ви можете представляти всі ваші структури даних як об’єкти Unity, будувати свій світ у редакторі Unity, включати фізику та нехай події проходять свій курс, як мінімум сценаріїв. Крім того, ви можете вимкнути двигун фізики, побудувати свій світ алгоритмічно і чітко запрограмувати всю поведінку та фізику об'єктів.

Ви можете вибрати програму поведінки повністю на Mono (використовуючи одну з мов C #, JavaScript або Boo), або можете написати її іншою мовою та зв’язати її зі своїм проектом Unity. (Фактична інтеграція з ігровими об'єктами повинна бути через Mono, але це може бути досить тонким шаром, якщо вам подобається.)

Робочий процес майже такий же, як і для будь-якого ігрового двигуна. Художники роблять моделі та текстури та анімації, аудіо спеціалісти видають звуки, програмісти записують шейдери та поведінку.

Спільнота програмістів Єдності дуже корисна, як на сайтах answer.unity3d.com , так і на forum.unity3d.com . (А може, тут, на Stack Exchange?)

Найкращий спосіб це дізнатися - спробувати : основна версія безкоштовна, і ви отримаєте 30-денний пробний період для версії "Pro".


6

Unity3D - це більше обгортка / бібліотека, ніж ігровий движок "перетягування". Він не генерує код, а також не постачається зі сценаріями "поза поличкою".

Наприклад, Unreal має камеру від першої особи за замовчуванням, контролер символів, виявлення зіткнень та AI.

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

Unity3D не генерує жодного коду для вашої гри, строго (він генерує код для запуску вашої гри, щоб бути точнішим, але жодного для вашого геймплея)

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

Ви створюєте гру за допомогою сценаріїв; ви пишете сценарії поведінки, проектуєте рівень в Unity3D і присвоюєте їм поведінку суб'єктам (або ігровим об'єктам). Це дуже гнучко, але все ж вимагає зусиль, щоб написати гру. Я порівняв би його з Flash for 3D.


1
Це твердження невірне: "У Unreal є камера за замовчуванням від першої особи, контролер символів, виявлення зіткнень та AI. У вас немає нічого такого в Unity3D"
jcurrie33

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

1
Можливо, краще сказати, що інші ігрові двигуни мають більш щільно зв'язані підсистеми, ніж Unity3D. Коли ви запускаєте новий проект Unity3D і не імпортуєте жодного з активів, ви отримуєте порожній аркуш. Щось, що я вважаю хорошою справою. Можливо, це трохи перекосило мій погляд на те, чому я думаю, що немає підсистем за замовчуванням. Є, тільки що вони не підходять для проектів, які я маю робити. І це одна з хороших речей про Unity3D. Легко залишити за замовчуванням і кодувати свій власний, якщо ви цього схильні.
Екстракун

3

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

Ви маєте більшу частину коду самостійно. Я пережив це у двох різних проектах.


2

Аналогія зі спалахом цілком слушна, але я не дуже розумію вашу аналогію з ляльками.

Гарні речі про єдність:

  • крос-платформа: Це дуже великий плюс, я б сказав, більша причина.
  • Якісний двигун та реалізація, я маю на увазі використання ігрових об’єктів Unity тощо.
  • Зробити просту гру з нуля дуже просто, тому це плюс для створення прототипів.

Погані речі:

  • Неможливо зв’язатись із C ++ або C, тому ваш проект може працювати лише в Unity. З C # можна стверджувати, що він буде працювати на XNA, але C ++ було б непогано. З цим зауваженням я маю на увазі, що це не той інструмент, яким користуються б ветерани-професіонали чи автодидакти, оскільки у вас немає повного контролю над вашою заявкою, але це не означає, що є речі, які ви не можете зробити з Unity. З іншого боку, команда з чудовою ідеєю та талановитими художниками може робити приголомшливі речі, не потребуючи досвідчених програмістів.
  • Це зовсім нове, тому очевидно ніхто не знає, куди цей інструмент приведе.

Те, що мені не подобається в Unity, - це те, що він відчуває, що робиться вся важка робота, тому програмісти набагато менш цінні. З іншого боку, це чудово для того, щоб швидко навчити людей швидко будувати речі.

Отже, підсумовуючи: Unity (або такий інструмент, як Unity) - це більше для художників, які не можуть звернутися до великих програмістів, але все ще вміють робити невеликі сценарії гри. КУРС Ви можете зробити повнофункціональну гру, додати реалістичну ІА, робити mmo нетто-код і що ні, але великі компанії не використовуватимуть Unity.

Моделі програмування дозволяють запропонувати рішення, яке відповідає 3/4 інструментів розробки, щоб воно підходило до тих "незалежних" виробників ігор. Він цінує один конкретний інструмент, і він також цінує художників, але не програмістів (крім, звичайно, команд, що працюють у єдності).

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

Маючи на увазі особистий проект, я б не користувався Unity, тому що мені не подобається C # або Boo (Панда хороша з python, так навіщо мені турбуватися з комерційним програмним забезпеченням?), І тому, що якщо я показую свій проект, і це робиться з єдності, це буде набагато менш вражаючим.


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

1

Єдність вимагає від вас сценарію, але без усіх котлів. У типовій грі OpenGL вам потрібно буде ініціалізувати матриці та камери, як божевільні. В Unity ви створюєте сценарій, щоб розповісти про поведінку чогось, а потім приєднуєте його до об'єкта, щоб змусити його вести себе.


1

Якщо генеруючи для вас багато коду, ви б включили заздалегідь вбудовані функції, які можна використовувати для полегшення вашого життя щодо виявлення зіткнень та обчислень обертання (бібліотека), то так, це потребує багато кодування із зображення та дає ви оптимізували під рукою версії та готові до запуску. Переважно функції, які знадобляться спеціально для розробки ігор у всіх складах.

Це може здатися зайвим, але, на моєму досвіді, коли Unity3D не зайнятий крахом чи будівництвом, це полегшує моє життя, дозволяючи мені змінювати все, що я хочу, і залишаю математику, засновану на Кватерніоні, людям, які мають ступінь магістра з математики і досі мені достатньо довіряти, щоб я міг змінити все, що я хочу.

Він нічого не напише для вас, скоріше допоможе вам у тому, як він вважає найкращим, і дозволить вам написати що завгодно.

Одним словом, гнучка

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.