Это зависит от того, насколько вы сильны с математикой и концепциями программирования 3D-игр .
2D вы можете получить, используя только понятия x, y положений и скоростей (а также складывая и вычитая их - в основном векторы) и столкновение 2D-блоков.
В 3D вам нужно беспокоиться о математике: матрицах проекций, матрицах просмотра, frusta ..
Кроме того, вам приходится взаимодействовать с гораздо более богатым набором функций из используемого вами API рисования (в силу того факта, что вы работаете в 3D, поэтому вам нужно изучить гораздо больше функций, связанных с 3D ).
Microsoft XNA имеет отличную поддержку для запуска в 2D и упрощает рендеринг с помощью SpriteBatch . Как только вы начинаете заниматься 3D, вам автоматически приходится изучать VertexBuffer или Model , а затем приходит ModelBones и все остальное, что с ним связано.
Лучше всего начинать 2D только потому, что концепции, которые вам нужно понять, меньше (2D спрайты? Легкая прогулка!). После того, как у вас есть некоторый опыт под вашим поясом, тогда вы должны хорошо делать 3D.