У нас есть большой игровой проект с использованием Unity в школе. Над нами работают 12 человек. Кажется, мой учитель убежден, что это важный инструмент для обучения студентов, так как он заставляет студентов смотреть с высокого уровня на более низкий уровень.
Я могу понять его точку зрения, и мне интересно: действительно ли единство - важный двигатель в компаниях по разработке игр? Много ли компаний используют его, потому что они не могут позволить себе использовать что-то еще? Он говорит, что Unity - большой игрок в создании игр, но я вижу, что он подходит только небольшим компаниям, специализирующимся на независимых играх, которые хотят сделать игру как можно быстрее.
Как вы думаете, Unity имеет такое большое значение в отрасли? Это ставит под угрозу ценность навыков C ++?
Дело не в том, что мне не нравится Unity, просто я ничему с ним не учусь, я предпочитаю делать небольшие шаги с Ogre или SFML.
Кроме того, у нас также есть практические упражнения на С ++, но это всего лишь практика с теорией, ничего особенного.
Ответы:
Unity - совершенно правильное решение в этом контексте. Представьте себе на секунду, что в нем 12 человек, большинство из которых все еще изучают C ++ и пишут на нем большое и сложное игровое приложение. За время, потраченное на отладку в одиночку, вы, вероятно, сможете написать еще одну игру в Unity.
Я не говорю, что знание того, как использовать C ++, не важно, особенно если вы планируете присоединиться к «основной» игровой индустрии. Но, возможно, ваш преподаватель прав в этом случае - используйте этот проект в качестве учебного опыта о том, как думать об архитектуре игры, и получайте от этого удовольствие. В процессе постарайтесь отточить свои навыки C ++ с помощью упражнений или даже зайти так далеко, чтобы писать маленькие игры, используя SFML или какую-то другую базовую среду.
Когда все это будет сделано, вы многому научитесь, возможно, станете лучшим программистом, и ваш следующий проект может быть решен на C ++ с гораздо большей уверенностью.
источник
Популярность Unity растет в отрасли, в основном в небольших компаниях. Тем не менее, это отличная среда обучения. Это важный учебный инструмент, но не особенно распространенный среди основных компаний. Это нормально, что ты не предпочитаешь это.
Позвольте мне отметить кое-что здесь, поскольку я часто вижу путаницу среди студентов, программирующих. «Навыки C ++» не очень полезны в долгосрочной перспективе. То, что вы должны искать, это «навыки программирования» и «навыки дизайна». Если вы понимаете концепции языка программирования и то, как система программного обеспечения собрана вместе, то язык на самом деле не имеет значения. Я не считаю себя удивительным разработчиком, но я могу выбрать новый язык и создать полезный код за день или два, потому что я понимаю основы.
Изучение Unity сделает вас лучше в C ++.
источник
Да, но «позволить себе» - это намного больше, чем просто долларовая стоимость.
Да, набор функций, который Unity Pro предоставляет вам за плату, которую они берут, просто смешен, особенно если учесть тот факт, что это лицензии на места вместо лицензий на звание.
Но вдобавок ко всему, это действительно простой в использовании инструмент. Вы не тратите столько времени на обучение художников и дизайнеров, как использовать художественный конвейер. Легко сказать «просто перетащите свои текстуры и модели, и они хороши.
Вдобавок ко всему, это один из немногих инструментов, который фактически позволяет вам делать 3D в браузере с любой регулярностью. Они поддерживают практически любую шейдерную платформу от фиксированной до DX9 +, а также Mac и Windows. Эта технология сама по себе бесценна, если вы хотите нацелиться на растущий рынок "браузерных игр".
С точки зрения программирования, вы получаете от Unity твердое понимание разработки компонентов (по сравнению с использованием собственного движка C ++, который обычно слишком тяжел для наследования), а также очень быструю и визуальную среду, чтобы попробовать вне игрового кода. Будем надеяться, что с помощью Unity вы узнаете хорошие методы проектирования, которые сможете перенести на будущие движки C ++.
Конечно, хорошо иметь предпочтение одного языка перед другим. Лично я предпочитаю C # над C ++. Но какой язык вы используете, больше всего зависит от требований проекта. Разработчики не могут позволить себе быть фанатами, так как вы не хотите выходить из рынка, потому что вам не нравятся инструменты или язык по той или иной причине.
Кроме того, как только вы действительно выучите второй язык, вы увидите, что он в основном просто подбирает новый синтаксис и парадигмы, и обычно не так уж сложно добавить новые инструменты в ваш набор инструментов. Да, вы должны изучать и понимать C ++, но на высоком уровне вы должны сначала понять хороший дизайн.
источник
Как я вижу, основная проблема не в 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 менее чем за день.
источник
Нет, Unity3D никоим образом не ставит под угрозу навыки C ++. На самом деле, знание C ++ гораздо важнее для программиста игр.
Unity3D - действительно отличный инструмент для разработки игр. Мне это очень нравится, и я бы порекомендовал его практически для любой игры, особенно для небольших команд. Но сам Unity3D написан на C ++; и вы должны знать C ++ (а также кучу других вещей низкого уровня), чтобы действительно понять, как это работает.
Даже если вы используете Unity3D, только навыки C ++ и низкоуровневое понимание принципов и алгоритмов позволят вам использовать его в полной мере. Кстати, это относится и к другим игровым движкам.
И чтобы по-настоящему хорошо поработать, выжать все до последней черты из выбранной вами платформы и собрать как можно больше современных эффектов и алгоритмов, вы не можете использовать ничего, кроме C / C ++. С битами ассемблера, наверное.
источник
Насколько я могу судить, это зависит от вашей целевой платформы, игры AAA и консольные (XBOX, Wii и т. Д.) Игры обычно будут на C ++ для достижения максимальной производительности, однако, если вы пишете браузерную игру, Unity также часто используемый.
Однако, что касается вашего вопроса, я думаю, что это просто связано с тем, что такие инструменты, как Unity, дают вам большую стандартизированную среду для работы, которая в полугодовом проекте может сделать разницу между полуиспеченным прототипом и довольно проработанной игрой.
источник
Я пошел в магистерскую программу по компьютерной графике и игровым технологиям Пенсильванского университета, где мы выполняли все наши проекты на самых низких уровнях, с проектами на C ++, OpenGL, CUDA и т. Д. Наши проекты включали в себя физическую анимацию, разработку анимации персонажей и IK, представляющий различные формы кривых Безье ... вы знаете, действительно базовые вещи, которые используют опыт программирования, линейной алгебры и исчисления.
Затем я скачал Unity и обнаружил, что все, над чем я работал, создавалось в этом бесплатном пакете, который может использовать каждый.
Я был раздражен этим? Правда, немного, но я обнаружил, что такое понимание со школы делает меня намного более опасным, когда я использую такие инструменты, как Unity. В настоящее время я работаю в играх, где мы выпускаем игры из концепта на рынок менее чем за год, и я все еще продолжаю заниматься этим «математическим делом». Мой тебе совет - проходи движения; вы будете абсолютно бесценны, когда войдете в индустрию.
источник
Я могу опоздать с ответом, но это поможет некоторым людям, имеющим это замешательство ..
Изначально я программист на С ++, который раньше ненавидел использовать сторонние движки (например, Unity), так как я не чувствую, что с точки зрения низкоуровневого программирования вовлечен большой процесс обучения.
Попробовав единство, я наткнулся на следующие вещи, которые необходимы для разработчика игр. Здесь я перечисляю не конкретно единство, а перечислю преимущества перехода в перспективу ВЫСОКОГО УРОВНЯ.
Выше приведены некоторые причины выбора двигателя высокого уровня. Но в то же время вам не следует прекращать изучать C ++, поскольку он является наиболее востребованным и полезным языком для идеального разработчика игр.
Сначала разберитесь в визуализации на высоком уровне и сделайте несколько быстрых прототипов с Unity и используйте этот опыт при разработке хорошей игры на c ++.
Скоро я вернусь к с ++, так как я получил хороший опыт на более высоком уровне с Unity :)
Удачи!
источник
C4 Engine - хорошая альтернатива для изучения игрового программирования на C ++
Существует также академическая лицензия http://www.terathon.com/c4engine/licensing.php
источник