Инструмент всегда выбирается от задачи.
Первым делом нужно строго сформулировать для себя задачу. Чего ты хочешь добиться?
Сделать игру? Это не задача. Заработать денег на игре? Это не задача.
Задачу надо детально формулировать. Например: сделать игру по уже имеющемуся ТЗ в конкретные сроки и с затратами не выше заданного бюджета.
Исходя из задачи выбирается
инструмент.
Разные инструменты предъявляют разные требования к профессионализму разработчика, бюджету и времени разработки. Разные инструменты влекут разные риски для процесса разработки.
Выбор инструмента заключается в сведении проф. навыков, бюджета, времени и рисков в одном месте.
Unity позволяет вести быструю разработку при минимальной квалификации, но влечет риски быстрого изменения системных требований и непредвиденных сопутствующих расходов в местном "магазинчике радостей". Плюс, в определенный момент потребуется заплатить немалые деньги за лицензию.
Чистый C# требует профессионализма и большого времени на разработку. Профессионализм требуется сразу довольно высокий. Человек должен не только языком владеть, но и быть в состоянии выбрать подходящие сторонние библиотеки для помощи.
Чистый C++ требует экспертного уровня профессионализма и, буквально, огромного времени на разработку. Незначительного уменьшения времени на разработку можно добиться покупкой сторонних инструментов за довольно большие деньги. Более того, экспертный уровень требуется не только в знании C++, но и в знании сопутствующих разработке игры областей. Математику, звук, графику, сеть и каждую из целевых платформ требуется тоже знать на экспертном уровне. Иначе выбор чистого C++ будет проигрывать выбору чистого C#.
Современный C# после сборки по своей производительности ничем не отличается от результатов сборки C++, а разработку на C++ вести значительно сложнее.
Более того, использование чистого инструмента всегда требует от пользователя экспертного уровня знания архитектуры ПО.