Які переваги Unity3D є вибором для гри? [зачинено]


64

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

Плюси:

  • мульти платформи, я навіть чув, що Google збирається реалізувати це в Chrome
  • все, що вам потрібно, тут
  • Мови сценаріїв - це хороший вибір для людей, які не програмують гуру

Мінуси:

  • багатокористувацький?
  • власницький, ви повністю залежать від єдності та її межі і не можете її розширити
  • менше "робити гру з нуля"
  • C ++ була б класною справою

Я дійсно думаю, що цей інструмент цікавий, але чи варто його використовувати в школі для проекту, в якому беруть участь понад 3 особи з програмування? Що ми насправді дізнаємось в плані програмування з використання цього інструменту (я добре з python та js, але ненавиджу C #)? Ми могли б замість цього використовувати Ogre, навіть якби ми вивчали прямий х з початку січня ...


Ще один Con, вам потрібно ознайомитись з 3D-моделюванням / дизайном, але ще один погляд на сайт, і це, мабуть, не так. Як можливі 2D ігри
Johnny Quest

1
@Johnny Quest Просто не дуже, для чого це було призначено, може зробити його незручним у використанні.
Спокуси

7
"C ++ була б крутою справою" - серйозно, що? Писати на C ++ зараз «круто»? Особисто я ненавиджу мову (все набравши текст, Python до кінця: p), але це, безумовно, чудова мовна особливість та бібліотека.
Качка комуніста

1
Єдність - це дивовижний двигун, але ... Потрібно пам’ятати про декілька мінусів: 1) Єдність, як правило, є дещо запорошеною пам’яттю. Це займає більше пам’яті, ніж ви думаєте, що слід; ймовірно, через кешування таких речей, як текстури. Це може спричинити проблеми налагодження і навіть помилки OOM на мобільних пристроях. 2) Проблеми з продуктивністю можуть бути важкими для пошуку, адреси та виправлення, оскільки ви маєте справу з чорною скринькою (без вихідного коду). Уважно огляньте свої шейдери і подивіться, як ви керуєте сценою.
молочниця

2
@milkplus: тому я вважаю, що єдність - це не те, з чим повинен вчитися студент. приклад: я добре вчити студента програмуванню, спочатку навчати їх пітону, але в той чи інший момент ви повинні навчити їх тому, як працює рівень рівня, навіть про основи. Люди повинні використовувати інструмент, коли знають усе, що робить цей інструмент. Якщо ні, це лихо, яке чекає, що трапиться. Ви не завжди можете виправдати цитату Кнута чимось складним, як єдність.
jokoon

Відповіді:


66

Основний "профі" Uinty3D - це те, що він швидко божевільний. Я не говорю тут про продуктивність, а про швидкість розвитку. Ти маєш:

  • Уніфікований конвеєр активів. Зовсім не потрібно витрачати час на підсистему ресурсів, жодна помилка підпрограм імпорту для запису та виправлення: просто опустіть файл у папку, і він працює.
  • Інтегрований редактор рівнів. Не потрібно витрачати час на інструменти рівня: просто переходьте до справи.
  • Чудова підтримка налаштування та налагодження: всі ваші змінні геймплея відображаються правильно під час гри, і їх можна змінювати і на льоту - і все це без написання жодного рядка коду. Призупиніть гру в будь-який час або покрокуйте один за одним код.
  • Досить обширна бібліотека готових компонентів. Візуалізація, звук, фізика, елементи керування - вже написано багато кодового коду.
  • Моно як хост сценарію. Хоча можна сперечатися про переваги мови C # як мови, бібліотека базового класу Mono пропонує безліч функцій. Колекції, введення / виведення, багатопотоковість та шалено виразний LINQ значно прискорюють розвиток.

Також Unity3d справді хороший на декількох платформах. Звичайно, ви не можете створити, скажімо, гру Windows .exe, а потім магічним чином «просто працювати» на iPhone; але Єдність наближається до цього. Що потрібно - це "налаштування" більше, ніж "перенесення".

Звичайно, в деяких випадках Unity3D не є ідеальним. Мережевий мультиплеєр, інтегрований в Unity, добре для деякої однорангової гри в локальній мережі, але все, що потребує центрального сервера, вимагає написати весь код мережі з нуля. Система графічного інтерфейсу Unity є досить вигадливою і повільною, тому створення складних інтерфейсів у грі - це біль. Однак усі інші системи графічних інтерфейсів гри, які я бачив, теж болючі, тому одна з них Unity не така вже й погана.

І, звичайно, Unity3D трохи менш гнучка, ніж "ігрові двигуни", такі як OGRE, які пропонують лише бібліотеку / вихідний код. Його продуктивність не є найвищою, і оскільки у вас є лише сценарій пісочниці, ви не можете використовувати деякі хитрі хакі низького рівня для її покращення. Наприклад, якщо вбудований рендерінг Unity з якихось причин не задовольняє вас, ви не можете написати свій власний (ну, могли б, але це буде працювати через сценарії, і, швидше за все, буде занадто повільним і занадто великим клопотом ). Тим не менш, з Unity можна робити практично все, доки ти не проти втратити трохи продуктивності.

Однак, найбільшим «проти» Unity3D є контроль над джерелами. Як уже було сказано, власний сервер активів Unity коштує досить копійки. І це смокче, справді, дуже важко. Він навіть не має розгалуження. Хоча Unity3D теоретично підтримує сторонні системи SCM, їх використання теж є небезпечним. Я бачив, як налаштування імпорту "магічно" змінюються після здійснення SVN, або параметри всіх об'єктів зникають після використання Perforce. Все це можна вирішити, але все одно, Unity3D + контроль джерела = біль.

Отже, насправді відповісти на ваше запитання. Я вважаю , що Unity3D є одним з кращих, якщо не краще, вибору ігрового движка для «маленьких» ігор. Особливо в стадії прототипу.

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


3
я цитую "Уніфікований конвеєр ресурсів. Не потрібно витрачати час на підсистему ресурсів, взагалі не вводяться помилки підпрограми імпорту, щоб написати та виправити: просто опустіть файл у папку, і він працює".
nkint

7
і "Найбільший" кон "Unity3D - це контроль над джерелами".
nkint

2
і "Це сказав, якщо ми говоримо про освітній проект, я" рекомендую проти ".
nkint

Про вашу проблему "ген дерева". Я думаю, що в цілому C # ви можете написати рід C ++ дерева, помістити його в .dll і розглянути його як керований c ++. Таким чином, ви можете теоретично отримати доступ до власних "виправлень двигуна" в єдність.
daemonfire300

Я визнаю, що система Unity GUI 2.0 - це не що інше, як "візуалізація прямої тексту з текстовою" -системою, але вона дуже легко розширюється. Подивіться на @AffinityUI або інші проекти Unity UI, які мають дуже малу вагу, з відкритим кодом та роблять систему UI вартістю.
daemonfire300

28

Почну з коментування вашого списку:

  • Сценарій - це не просто користь для непрограмістів. Бути (хорошим) програмістом - це більше, ніж просто знати мову, це знати, як деконструювати проблеми та мислити певним чином. Мови скриптування можуть дозволити програмісту використовувати ці навички критичного мислення вищого порядку, щоб отримати більш потужні, цікавіші результати за менший час, ніж йому або їй, можливо, знадобиться отримати еквівалентні результати, а також турбуватися про деталі нижчого рівня, ніж деякі мови (C ++ спадає на думку) сила в картину.

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

  • Я не бачу, наскільки "власницький" конф. Якщо це шкільний проект, ви, мабуть, не хочете витрачати час на злому джерела використовуваної рамки чи будь-чого іншого. Крім того, DirectX також є власником.

  • Немає нічого поганого у використанні рамок вищого рівня або таких інструментів, як Unity. "Зробити гру з нуля" - це не досягнення - що саме ви вважаєте "з нуля"? Ви все ще будете використовувати чужий графічний API. Чужий час виконання (навіть для C потрібна бібліотека часу виконання). "Створення гри" - це те, що заслуговує на повагу, а не "створення гри без використання будь-яких корисних інструментів".

  • Це "класна" річ C ++ - трохи суб'єктивна. Мова дуже часто використовується професіоналами галузі, але, мабуть, не з тих причин, які ви могли б подумати. Як мова, вона починає показувати свій вік і може бути надзвичайно громіздкою порівняно з більш сучасними варіантами. У будь-якому випадку мови - це лише інструменти, і хороший програміст повинен мати можливість підібрати нові з відносною легкістю.

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

Недоліком є ​​те, що ви потенційно витрачаєте час на вивчення конкретного інструменту, який передбачає знання, які можуть бути непередаваними, особливо якщо ви вирішите, що робочий процес та навколишнє середовище Unity просто не для вас, і ви ніколи не хочете використовувати його знову . Крім того, у Unity немає найочевиднішого 2D робочого процесу - він дуже орієнтований на тривимірні ігри, на які весь капітал в арт-активах, як правило, залучається. Але я думаю, що для шкільного проекту, як ти описуєш, Єдність - це досить вдалий вибір.


13
Я цитую "Створення гри" - це те, що заслуговує на повагу, а не "створення гри без використання будь-яких корисних інструментів".
nkint

2
"Немає нічого поганого в тому, щоб використовувати рамки вищого рівня або такі інструменти, як Unity." Зробити гру з нуля "- це не досягнення - що саме ви вважаєте" з нуля "? Тут немає нічого поганого, але це стосується Майте на увазі, що люди, які створюють нові технології, йдуть на максимально низькому рівні, наприклад Uncharted 2 навіть використовував інтерфейс API для графічної модифікації будинку.
concept3d

1
Будь-який розробник, який бажає опинитися на абсолютній передовій комп'ютерної графіки, повинен зосередитися на найнижчому рівні та створити власний двигун своєю грою; але це приблизно 1% від усіх розробників ігор, здається. Якщо компанія розробляла гру настільки ж досконалою, як Uncharted 1, на час виходу Uncharted 3 вони могли, швидше за все, використовувати деякі існуючі рамки (не обов'язково Unity). Питання: чи створюєте Ви Uncharted 4?
Katana314

9

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

Ви можете використовувати сервер Unity Asset Server, але для цього потрібно 1) Unity Pro (1500 доларів) та 2) ліцензія на сервер Asset Server (500 доларів). Я припускаю, що ви можете отримати якусь знижку на освіту, але це не безкоштовно.

Крім того, ви можете використовувати щось на зразок SVN з Unity. Щоб правильно його підтримати, вам все ще потрібен Unity Pro.

Ви не можете просто перевірити непрофесійну версію Unity в SVN і очікувати, що вона буде працювати бездоганно. Їх механізм прив’язки GUID до активів тощо не є точно безпечним для SCM.


Багатокористувацька функціональність досить пристойна, хоча, якщо чесно, я не поставляв з нею гру. Теоретично ви просто приєднуєте представлення мереж до речей і повідомляєте, що ви хочете серіалізувати, щоб правильно налаштувати реплікацію. Звідси є деяка робота інтерфейсу, щоб підключитися до інших однолітків та налаштувати. Це, в основному, одноліткові. Можливо, ви зможете зробити програмування клієнт / сервер, що працює в єдності в безголовому режимі, але я з цим не заплутався. Але просто зробити людину A для того, щоб бігати по екрану людини B, це зробити досить просто і швидко.

Також на мене C # є позитивним . LINQ - супер виразний. Він має належну обробку винятків та вивезення сміття. Він має набагато більш сучасні парадигми, такі як делегати, лямбда, інтерфейси та кращу загальну підтримку, ніж C ++. ( Редагувати : це, очевидно, суперечливо. Думаю, що C # навряд чи погана мова. Я не хочу вступати в довгі дискусії про плюси і мінуси мови проти C ++.)

Однак, найбільший позитив використання Unity - це, мабуть, мистецтво. Ви можете взяти файл PSD або Max (якщо припустимо, що у вас встановлено 3ds max) у папці, і він буде імпортований.


3
@DeadMG, так, насправді дуже добре. Так, я знаю про підсилення, метапрограмування шаблонів тощо. Але я вважаю, що C # є більш сучасною мовою.
Тетрад

3
@DeadMG Думаю, що C # надзвичайно гладкий для багатьох випадків використання, коли C ++ залишає бажати кращого. Не те, що C ++ не може цього робити.
Нейт

3
Єдине, що я можу не погодитись у його списку, - це «краща загальна підтримка, ніж C ++».
Kylotan

1
@Kylotan "for (vector <vector <int>> :: iterator iterator = scores.begin (); iterator! = Scores.end (); iterator ++) {" VS "foreach (var scoreset in score)" .. .уже, я з C #.
Katana314

3
@ Katana314 Звичайно , в C ++ 11: for ( auto x : xs ).
Ерік

6

Оновлення: Unity тепер надає всі ці функції навіть у безкоштовній версії, тому, будь ласка, ігноруйте відповідь нижче.


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


1
Це більше не є точним і його слід оновлювати чи видаляти.
MichaelHouse

@ Byte56 Дякую Надалі ви зможете самостійно оновлювати старі публікації, не залишаючи коментарів.
Майкл Юнкін

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

3

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

  • По-перше, так, сервер Asset є дорогим і досить жахливим для всіх, крім базового використання. Основна вигода полягає в тому, що вона інтегрується в Unity, і хоча це цінно для простоти у використанні і коштує для більш простих проектів, для будь-яких великих розмірів (які, як правило, це проекти з бюджетом на AS), це просто недостатньо гнучко.
  • Переходячи до зовнішнього контролю версій, важливо усвідомити, що до Meta Files потрібно оброблятись, як і будь-який інший актив, і завжди додаватись / оновлюватися в контролі версій. Якщо цього не зробити, швидше за все, це трапилося в сценарії Nevermind, коли налаштування зникають.
  • Нарешті, працюючи з будь-якою системою управління версіями в Unity (включаючи Asset Server), командна комунікація стає важливою при роботі з двійковими активами, щоб уникнути того, щоб перешкоджати роботі один одного.

Якщо ви хочете отримати детальнішу інформацію про ці моменти, я недавно опублікував інформацію про використання git з Unity на основі мого досвіду в деяких досить великих проектах Unity: http://goo.gl/ivJVR


Добре, вау, вибачте некропост. Я щойно помітив, що про це запитували (і відповіли) у 2011 році! Я доповнив це тим, що на цьому тижні він вискакував у новинному листі про stackexchange gamedev .
FlintZA

Немає такого поняття, як "некро" на SE. Справа в суті, мій коментар. : P
Cypher

2

Насправді. Мультиплеєр підтримується. Просто питання вибору сервера, на якому ви хочете запустити свою гру.

Найпопулярнішим на ринку зараз є "SmartFox Server". Вони пропонують кілька різних пакетів, усі вони безкоштовні (певною мірою). Це безкоштовно, лише якщо ви плануєте мати певну кількість гравців, оскільки кожен пакет дозволяє певній кількості гравців "безкоштовно".

Якщо ви вирішили оновити, ціна для інді-розробника ціна доволі крута. Отже ... Зрештою, якщо у вас на сервері багато гравців, вам доведеться стягувати плату за свою гру, а не завантажувати її на такі сайти, як Download.com як безкоштовна повноцінна гра. Для деяких це може не бути проблемою, але більшість з нас не можуть собі дозволити 2500 доларів з кишені на сервері.

Наприклад - SmartFox pro дозволяє безкоштовно отримати 20 гравців. Якщо ви хочете оновити, це коштуватиме вам 500 євро, що в США трохи більше, приблизно 600-700, і це дозволяє 100 підключень.

Наступне оновлення призначене для максимальної кількості гравців в 500, і це 1000 євро, але ... Вам не доведеться платити 1000, ви платите різницю.

Тож вам доведеться заплатити лише на 500 євро більше, ніж цілих 1000. Останні оновлення підтримують необмежену кількість підключень, за 2000 євро. Це майже 3000 доларів США.

Отже, якщо ви модернізуєте з 500 підключень, ви заплатите 1000 євро, якщо оновите зі 100 підключень, ви заплатите 1,5000 євро, і, звичайно, 2000 євро, щоб оновити безкоштовно.

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


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