Depende de lo fuerte que seas con las matemáticas y los conceptos de programación de juegos en 3D .
Se puede obtener 2D usando solo conceptos de posiciones y velocidades x, y (y sumando y restando, básicamente vectores) y colisión de cajas 2D.
En 3D, debe preocuparse por muchas más matemáticas: matrices de proyección, matrices de visualización, frusta ..
Además, debe interactuar con un conjunto de funciones mucho más rico de la API de dibujo que está utilizando (solo por el hecho de que está haciendo 3D, por lo que debe aprender muchas más funciones que se ocupan de 3D )
Microsoft XNA tiene un excelente soporte para comenzar en 2D, y facilita el renderizado con SpriteBatch . Tan pronto como te aventures en 3D, automáticamente tienes que aprender VertexBuffer o Model , y luego viene ModelBones y todo lo demás que lo acompaña.
Es mejor que comiences en 2D solo porque los conceptos que necesitas comprender son menos (¿sprites en 2D? ¡Un juego de niños!). Después de tener algo de experiencia en su haber, entonces debería estar bien haciendo 3D.