I was a great fan of the videogame quake. The game is a 3d videogame. I read about one of the makers was programming 2d games before he started programming 3d games. I think a lot of knowledge of 2d game programming comes usefull when programming 3d games. I have programmed a couple of simple 3d games and found it pretty easy. Before I started programming in 3 dimensions I made a lot of 2d games.
A first person shooter looks and feels a little like the 2d platformer games.