Я предпочитаю C / C ++, а не Unity и другие инструменты: такой большой упадок для разработчика игр? [закрыто]

35

У нас есть большой игровой проект с использованием Unity в школе. Над нами работают 12 человек. Кажется, мой учитель убежден, что это важный инструмент для обучения студентов, так как он заставляет студентов смотреть с высокого уровня на более низкий уровень.

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

Как вы думаете, Unity имеет такое большое значение в отрасли? Это ставит под угрозу ценность навыков C ++?

Дело не в том, что мне не нравится Unity, просто я ничему с ним не учусь, я предпочитаю делать небольшие шаги с Ogre или SFML.

Кроме того, у нас также есть практические упражнения на С ++, но это всего лишь практика с теорией, ничего особенного.

jokoon
источник
9
Смысл C ++ и ООП заключается в повторном использовании объекта. Единство является ярким примером этого и кросс-платформенной переносимости. Они предлагают все инструменты, необходимые для запуска игры на XBox, iPhone или Wii. Вы серьезно говорите мне, что лучше переписать все это на C ++ с нуля?
Стивен Фурлани
2
Абсолютно нет, это не то, что я хочу сказать. Я просто говорю, что мне не нравятся языки сборки мусора, с которыми он поставляется, а также тот факт, что вы не можете изменить код, поскольку он проприетарный: вы не можете настроить его так же, как вы можете настроить другой существующий движок , Ваша точка зрения верна, но если я последую за вами, компании также могут повторно использовать свой предыдущий движок вместо того, чтобы просто перейти на Unity. С Unity вы придерживаетесь чего-то, что вы не можете изменить, и это всегда является для меня самым большим недостатком, когда я думаю о таких инструментах: у проприетарного движка такой проблемы нет.
Jokoon
2
Ну, вы можете изменить Unity, если вы получите исходную лицензию (которая стоит дорого, как и большинство других профессиональных исходных лицензий). Он также обновляется довольно часто, поэтому он не является действительно статичным с точки зрения набора функций.
Тетрад
Это в основном вопрос «какую технологию использовать». Также это больше ориентировано на обсуждение / мнение. К сожалению, я не могу голосовать, чтобы закрыть во второй раз ...
Буммзак

Ответы:

34

Unity - совершенно правильное решение в этом контексте. Представьте себе на секунду, что в нем 12 человек, большинство из которых все еще изучают C ++ и пишут на нем большое и сложное игровое приложение. За время, потраченное на отладку в одиночку, вы, вероятно, сможете написать еще одну игру в Unity.

Я не говорю, что знание того, как использовать C ++, не важно, особенно если вы планируете присоединиться к «основной» игровой индустрии. Но, возможно, ваш преподаватель прав в этом случае - используйте этот проект в качестве учебного опыта о том, как думать об архитектуре игры, и получайте от этого удовольствие. В процессе постарайтесь отточить свои навыки C ++ с помощью упражнений или даже зайти так далеко, чтобы писать маленькие игры, используя SFML или какую-то другую базовую среду.

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

Джеймс
источник
2
Интересно, что есть школы, которые преподают исключительно C ++ и ожидают, что учащиеся создадут весь игровой движок и игру с нуля, несмотря на то, что все еще находятся в процессе изучения C ++. Конечно, практическое применение навыка - это то, как вы его изучаете (не лекционные занятия и не небольшие домашние задания, а более крупные проекты, рассчитанные на семестр или год), поэтому в школах работают программисты высшего уровня. Программисты, которые способны очень быстро подбирать такие инструменты, как Unity или любой другой движок. Лучше заставлять студентов изучать сложные вещи, так как простые вещи не будут проблемой впоследствии.
Шон Миддледич
Не вся разработка игр - это программирование, и использование Unity не обязательно «избегает сложных вещей». Это просто подчеркивает другой трудный материал, чем реализация с нуля. Дали дизайн скорее, чем программирование. Если бы игра была реализована с нуля, я бы ожидал гораздо более примитивного «искусства программиста», а не персонажей или сюжета.
wrosecrans
43

Популярность Unity растет в отрасли, в основном в небольших компаниях. Тем не менее, это отличная среда обучения. Это важный учебный инструмент, но не особенно распространенный среди основных компаний. Это нормально, что ты не предпочитаешь это.

Позвольте мне отметить кое-что здесь, поскольку я часто вижу путаницу среди студентов, программирующих. «Навыки C ++» не очень полезны в долгосрочной перспективе. То, что вы должны искать, это «навыки программирования» и «навыки дизайна». Если вы понимаете концепции языка программирования и то, как система программного обеспечения собрана вместе, то язык на самом деле не имеет значения. Я не считаю себя удивительным разработчиком, но я могу выбрать новый язык и создать полезный код за день или два, потому что я понимаю основы.

Изучение Unity сделает вас лучше в C ++.

Грегори Эйвери-Вейр
источник
Gameforge и BigPoint - ведущие мировые компании, использующие Unity :)
daemonfire300
1
+1 за очень хороший ответ. Изучение игрового движка очень важно для школ, потому что в 99% случаев вы не будете делать его с нуля. Возможность погружаться в существующий движок и распознавать его части, распознавать поток данных, и все это очень важные вещи. Как упоминалось выше, язык не имеет значения, несмотря на то, что он является C / C ++ в 99% случаев, но способность понимать движок или, в более общем случае, просто чей-то код, является бесценным навыком в любой области программирования ... особенно критическое по времени слово с высокой нагрузкой, это видеоигры :)
Джеймс
1
Я вроде не согласен с этим ответом. Для меня есть различия между сценаристами и программистами. Разработчики Unity - программисты, пользователи Unity - сценаристы. Результат тот же, они делают игры, но в долгосрочной перспективе использование Unity может стать проблемой. Игровая индустрия богата и теперь позволяет использовать такие инструменты, как Unity, но для меня это потому, что компьютеры работают быстрее. так что вы можете бросить много кода, это работает: Unity явно создан для скорости разработки, что нравится рынку из-за долларов, но я не думаю, что это реальный плюс.
Jokoon
14
Jokoon: В чем разница между сценариями и программированием? Опытный пользователь Unity пишет шейдеры, управляет порядком рендеринга и пишет код AI. «Сценарии» Unity скомпилированы, и при желании их можно расширить с помощью низкоуровневого кодирования честной богини. И хорошее кодирование Unity следует тем же принципам, что и хорошее кодирование не-Unity. Там нет волшебной разницы между двумя парадигмами.
Грегори Эйвери-Вейр
9

Много ли компаний используют его, потому что они не могут позволить себе использовать что-то еще?

Да, но «позволить себе» - это намного больше, чем просто долларовая стоимость.

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

Но вдобавок ко всему, это действительно простой в использовании инструмент. Вы не тратите столько времени на обучение художников и дизайнеров, как использовать художественный конвейер. Легко сказать «просто перетащите свои текстуры и модели, и они хороши.

Вдобавок ко всему, это один из немногих инструментов, который фактически позволяет вам делать 3D в браузере с любой регулярностью. Они поддерживают практически любую шейдерную платформу от фиксированной до DX9 +, а также Mac и Windows. Эта технология сама по себе бесценна, если вы хотите нацелиться на растущий рынок "браузерных игр".

С точки зрения программирования, вы получаете от Unity твердое понимание разработки компонентов (по сравнению с использованием собственного движка C ++, который обычно слишком тяжел для наследования), а также очень быструю и визуальную среду, чтобы попробовать вне игрового кода. Будем надеяться, что с помощью Unity вы узнаете хорошие методы проектирования, которые сможете перенести на будущие движки C ++.

Конечно, хорошо иметь предпочтение одного языка перед другим. Лично я предпочитаю C # над C ++. Но какой язык вы используете, больше всего зависит от требований проекта. Разработчики не могут позволить себе быть фанатами, так как вы не хотите выходить из рынка, потому что вам не нравятся инструменты или язык по той или иной причине.

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

тетрада
источник
уточнение: Вы имеете в виду, что лицензия Unity Pro того стоит по сравнению с простой старой Unity? Ваш комментарий был немного неясен для меня.
Кайл C
7
Я не использовал бесплатную версию, просто лицензия за $ 1500 / место дешевле, чем у других коммерческих лицензий на двигатели.
Тетрад
На данный момент нет проблем с использованием бесплатной версии, есть только незначительные ограничения.
XandruCea
9

Как я вижу, основная проблема не в C ++ или Unity3D, а в том , нужно ли вам решение высокого уровня или решение низкого уровня .

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

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

  • Используйте Unity3D, если время разработки должно быть быстрым и / или ваша игра не требует высокой производительности или не имеет высокого уровня графической / вычислительной производительности. Если вы хотите сконцентрироваться на игровом процессе, и стандартные инструменты, которые предоставляет Unity3D, в порядке, вы можете рассмотреть возможность использования Unity3D.

  • C ++ с другими библиотеками. Если у вас больше времени на разработку, игра требует больших вычислительных / графических возможностей или использует какую-то технологию, которую Unity3D не может внедрить.

Хорошая вещь о Unity3D состоит в том, что он все еще использует языки сценариев, которые отражают развитие реального мира (C # или JavaScript). Изученные вами концепции ООП и разработки программного обеспечения (синглтоны, фасад, конечные автоматы, декораторы, композиция) можно применять в Unity3D. Это помогает позаботиться о таких процессах обрезки печенья, как управление ресурсами, граф сцены, загрузка моделей, рендеринг, сохранение сцен и т. Д. Еще лучше, если вам нужна функциональность, которую Unity3D не предоставляет, вы можете сделать это. DLL кодирование.

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

Итак, как я уже сказал, это не совсем C ++ против Unity3D. Это больше «C ++ плюс библиотеки / SDK или катите свой собственный движок» против Unity3D. Это зависит от ваших целей и задач. Для высококлассных игр или игр, где вам нужен контроль над конвейерным рендерингом или вводом, вы можете использовать C ++ плюс движок, который позволяет вам запутаться. Если нет, я выберу Unity3D в качестве выбора по умолчанию для 3D-игр.

Тем не менее, знания в Unity3d не находятся под капотом, но это хорошее место для начала изучения всего процесса разработки игр. Например, вам, вероятно, понадобится учеба в семестр, чтобы написать рендер и загрузить модель в OpenGL, а также базовый сценограф и ввод. Вы получите это в Unity3D менее чем за день.

Extrakun
источник
или работать с Ogre3d!
Jokoon
Последний раз я работал с Ogre3D давно; Я думаю, что для запуска игры требуется больше работы, чем для Unity3D, и это хорошая середина, чтобы взглянуть на то, как работают вещи под капотом.
Extrakun
+1 на этот. Вы не можете предпочесть C / C ++ и Unity как таковые, потому что это штука с яблоками и апельсинами. Однако вы можете предпочесть идею работы на более низком уровне разработки, предоставляемом C / C ++, или разработку более высокого уровня, которую позволяет Unit.
Тим Холт
8

Нет, Unity3D никоим образом не ставит под угрозу навыки C ++. На самом деле, знание C ++ гораздо важнее для программиста игр.

Unity3D - действительно отличный инструмент для разработки игр. Мне это очень нравится, и я бы порекомендовал его практически для любой игры, особенно для небольших команд. Но сам Unity3D написан на C ++; и вы должны знать C ++ (а также кучу других вещей низкого уровня), чтобы действительно понять, как это работает.

Даже если вы используете Unity3D, только навыки C ++ и низкоуровневое понимание принципов и алгоритмов позволят вам использовать его в полной мере. Кстати, это относится и к другим игровым движкам.

И чтобы по-настоящему хорошо поработать, выжать все до последней черты из выбранной вами платформы и собрать как можно больше современных эффектов и алгоритмов, вы не можете использовать ничего, кроме C / C ++. С битами ассемблера, наверное.

Не берите в голову
источник
Это ответ, которого я ждал +1:]
Notabene
3

Насколько я могу судить, это зависит от вашей целевой платформы, игры AAA и консольные (XBOX, Wii и т. Д.) Игры обычно будут на C ++ для достижения максимальной производительности, однако, если вы пишете браузерную игру, Unity также часто используемый.

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

Эльва
источник
3

Я пошел в магистерскую программу по компьютерной графике и игровым технологиям Пенсильванского университета, где мы выполняли все наши проекты на самых низких уровнях, с проектами на C ++, OpenGL, CUDA и т. Д. Наши проекты включали в себя физическую анимацию, разработку анимации персонажей и IK, представляющий различные формы кривых Безье ... вы знаете, действительно базовые вещи, которые используют опыт программирования, линейной алгебры и исчисления.

Затем я скачал Unity и обнаружил, что все, над чем я работал, создавалось в этом бесплатном пакете, который может использовать каждый.

Я был раздражен этим? Правда, немного, но я обнаружил, что такое понимание со школы делает меня намного более опасным, когда я использую такие инструменты, как Unity. В настоящее время я работаю в играх, где мы выпускаем игры из концепта на рынок менее чем за год, и я все еще продолжаю заниматься этим «математическим делом». Мой тебе совет - проходи движения; вы будете абсолютно бесценны, когда войдете в индустрию.

mseltzer
источник
Вы можете (теоретически) получить значок из этого. :)
Циклоп
Здесь нет некрозов, потому что вопросы не стареют и «умирают», как на форумах. :) Поздние ответы всегда в порядке.
Doppelgreener
0

Я могу опоздать с ответом, но это поможет некоторым людям, имеющим это замешательство ..

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

Попробовав единство, я наткнулся на следующие вещи, которые необходимы для разработчика игр. Здесь я перечисляю не конкретно единство, а перечислю преимущества перехода в перспективу ВЫСОКОГО УРОВНЯ.

  1. Понимание того, как проектировать на высоком уровне, важнее, чем заботиться об оптимизации на низком уровне.
  2. Системы с архитектурой Entity (компонентной архитектурой) помогут узнать, как именно эта архитектура будет полезна.
  3. Вы будете знать новейшие технологии (по крайней мере, терминологию), и вы будете по крайней мере в курсе индустрии графики. Это главная причина, по которой я решил попробовать единство!
  4. Пропуск времени, потраченного на разные инструменты импорта ресурсов (конечно, я все еще буду любить писать свои собственные 3D импортеры на с ++, так как в свободное время будет веселее)

Выше приведены некоторые причины выбора двигателя высокого уровня. Но в то же время вам не следует прекращать изучать C ++, поскольку он является наиболее востребованным и полезным языком для идеального разработчика игр.

Сначала разберитесь в визуализации на высоком уровне и сделайте несколько быстрых прототипов с Unity и используйте этот опыт при разработке хорошей игры на c ++.

Скоро я вернусь к с ++, так как я получил хороший опыт на более высоком уровне с Unity :)

Удачи!

Ayyappa
источник