Каковы плюсы / минусы использования 3d движка для 2d игр? [закрыто]

16

Какие плюсы и минусы должен знать начинающий, выбирая между движком 2d игры (например, Slick2D / Flixel / FlashPunk) и движком 3d (например, Unity) для разработки 2d игры?

Я только начинаю в разработке инди-игр, хотя в прошлом я немного увлекался Game Maker, Flash и XNA. Я слышал много позитивного о Unity, и его кроссплатформенность делает его привлекательным, но, как я понимаю, это ядро ​​3d движка.

Существуют ли веские причины для работы с 3D-движком, например, Unity, для строго 2-мерной игры? Или это просто добавит ненужную сложность в мой начальный опыт обучения?

mrohlf
источник
Вы спрашиваете в контексте чисто 2D-игры о чем-то вроде Unity (например, спрайты и 2D-перемещение) или 3D-игре с 2D-геймплеем (например, с 3D-активами, но перемещающимися только в одной плоскости)?
хаосТехник
У меня есть друзья, которые работали с Unity над созданием 2D-игры под названием Coypu Space Rumble . Начальная 2D часть была, по-видимому, довольно утомительной, я попрошу больше предвидений, почему.
Джонатан Коннелл
Связанный: gamedev.stackexchange.com/questions/9557/...
Тетрадь
Определить «3D движок»? Мы говорим о чем-то, что охватывает игровой процесс, или о чем-то, что визуализируется в 3D?
Никол Болас
@chaosTechnician - Первый: чисто двухмерные спрайты, двухмерное движение, практически без реальной оси z (просто простой z-индекс для определения порядка рендеринга спрайта)
mrohlf

Ответы:

15

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

Теперь о некоторых плюсах и минусах (некоторые из них будут связаны именно с Unity, некоторые более общие)

Cons

  1. 3d движки обычно создаются вокруг игровых объектов, являющихся 3d моделями (полигоны и текстуры). Хотя, безусловно, возможно сделать плоскую плоскость и наложить на нее текстуру, вы активно работаете против двигателя, когда делаете это.

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

  3. Добавлена ​​сложность. Как упоминалось в ответе Джоша Петри, 3d намного сложнее, чем 2d, в основном в области математики и управления сценами. Перемещать объекты и работать с трехмерным пространством сложно, и если это одна из ваших первых игр, то будет намного сложнее. Хорошая новость: Unity абстрагирует некоторые из этих проблем, хотя есть некоторые вещи, с которыми вам все еще придется справиться (и большая часть абстракции, тем не менее, предназначена для 3d-моделей, а не для 2D-спрайтов)

  4. Большинство библиотек, которые поставляются с Unity или которые вы можете получить за них, предназначены для трехмерных объектов. Это включает в себя такие вещи, как освещение, поиск путей, физика и т. Д. Тем временем box2d будет легко работать с Flash, XNA или чем-то (ну, может быть).

Pros

  1. 3D ускорение. Видеокарты намного лучше справляются с большим количеством объектов в сцене, чем центральный процессор, и с Unity вы можете действительно легко получить это преимущество. Это позволяет отображать тысячи спрайтов на экране, легко включать эффекты частиц или добавлять что-то забавное, например шейдеры, для поддержки интересных эффектов, таких как искривление пространства и времени. В Unity встроены многие из этих эффектов, что делает его действительно простым. Обратите внимание, что многие движки 2d используют OpenGL или DirectX за кулисами, и во многих случаях также могут быть аппаратно ускорены.

  2. Поддержка моделей. Помните ту вещь, которая раньше была проблемой? Да, это тоже может быть выгодно. В зависимости от игры может быть полезно включить вращающиеся сферы или что-то классное, например, 3D-объект на заднем плане. У вас также может быть игра, созданная из 3d, но просто перенесенная в двухмерную перспективу, которая может дать вам возможность вращать геометрию мира без необходимости делать тонны дополнительной графики, чтобы справиться с ней.

  3. Учимся 3d. Посмотрим правде в глаза, многие игры написаны в 3d, и если вы научитесь использовать Unity, вы сможете применить многие из этих навыков к следующей игре, которая может потребовать 3d. Кроме того, многие художники, выходящие из школы, в настоящее время обучаются 3D-моделированию, поэтому «легче» найти 3D-художника, чем традиционного 2-мерного художника (независимо от того, считают ли художники хорошими ....)

Вывод

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

thedaian
источник
+1. Очень подробный и применимый ответ. У меня такое чувство, что ты уже занимался этим раньше.
хаосТехник
Спасибо, именно то, что я искал! Я думаю, что я продолжу сосредотачиваться на 2d движках, так как большинство из тех, что я видел, были построены на OpenGL или DirectX, и 3d моделирование сейчас немного выходит за рамки моих возможностей. Я хотел бы изучить Unity в какой-то момент, но, вероятно, мне будет лучше заняться этим после того, как у меня будет 2d игра под моим поясом.
Mrohlf
Кроме того, 3D-движки позволяют вам действительно легко рисовать спрайты с произвольным вращением и альфа-версией; легче, чем если бы у вас был чистый 2D движок. Вот почему многие современные 2D движки действительно 3D под капотом; Вы также можете написать собственные шейдеры!
ashes999
7

Один большой недостаток - дополнительная сложность: 3D-движки не всегда имеют такой же уровень первоклассной поддержки 2D-графики, как выделенные 2D-движки. Это означает, что для создания и управления 2D-сценой требуется либо много дополнительной работы, и / или вам все еще приходится сталкиваться со сложностью 3D-математики и конвейера преобразования. Особенно, если вы не совсем знакомы с основами теории трехмерной графики, вы можете потеряться и запутаться, когда ваши изображения не отображаются, а если вы неосторожны, вы можете наткнуться на «решение», которое делает ваш изображения появляются, но не обязательно правильные (и, следовательно, будут кусать вас позже).

Но помимо человеческого аспекта, пока 3D-движок имеет инструменты, необходимые для создания 2D-игры, его неплохая идея. Они гораздо более распространены в наши дни и имеют тенденцию к более агрессивному развитию, так что это плюс. Кроме того, вероятно, еще есть несколько 2D-ориентированных движков или фреймворков, которые не используют D3D или OpenGL за кулисами, и, следовательно, могут не получить преимуществ от современных графических процессоров.

В этом связанном вопросе вы можете увидеть много дискуссий о том, что может сделать 3D более сложным (вам придется иметь дело только с подмножеством, в котором вы будете использовать 3D-движок только для 2D-игры).

Сообщество
источник
2

Pro: Производители видеокарт тратят больше усилий на оптимизацию своих 3D-драйверов. Вы не застряли в 2D для специальных эффектов или ударов. Вам не нужно имитировать слишком много под себя. Переключение точек обзора не требует полного пересмотра всего вашего искусства. Я буду утверждать, что 3D масштабируется лучше визуально.

Против: Конвейеры активов, вероятно, придется адаптировать к вашему движку. Некоторые операции, которые просты в 2D, более сложны в 3D. Библиотеки, вероятно, будут иметь дополнительные функции, которые вы никогда не будете использовать.

Патрик Хьюз
источник
0

Просто изучите Unity, если можете. Unity ДЕЙСТВИТЕЛЬНО хорошо работает с Blender 3D, который является открытым и бесплатным. Существует множество хороших онлайн-уроков по моделированию и анимации 2D в Blender с использованием плоскостей. Также есть множество моделей, которые вы можете скачать онлайн, как правило, бесплатно или дешево, которые вы можете использовать в качестве отправной точки.

Это, конечно, предполагает, что вы не умеете создавать собственный игровой движок. Моя любимая 2D-игра на данный момент - Super Meat Boy, которая была разработана во Flash, а программирование было выполнено на заказ ... создание игрового движка, соответствующего конкретным потребностям игр. Это лучший способ подойти к такому проекту, потому что он дает вам большую свободу. Тем не менее, чтобы пройти этот путь, требуется много работы.

Aesadai
источник
На самом деле, теперь, когда UNITY добавил поддержку 2D, это стало еще более простым
делом
1
Я все еще говорю, что Unity отстой для 2D-игр. Для 2d игр это НЕ профессиональное качество для меня, просто сравните с надежным 2D движком, таким как Cocos2D-swift. Это ежу понятно.
Джонни