Hi there,

That seems like a huge (i mean... HUGE) job. Did you ever make something big?

My first advice would be to ask yourself the following question: What makes my FPS stand out?

From what i can tell about your post, you just want to write a big FPS that can compete with the commercial ones. But that's impossible unless you have a really good game-concept. A concept that is original and keeps you motivated for a long time. It also might encourage other programmers to help you with the project.

You are talking about writing an engine. If you want to make games, I'd advice you to make games and not engines. Ofcourse you could make an engine first, but that must be your main goal then. If your main goal is a game, just pick a good engine and carry on.

An engine for a full-blown commercial FPS involves:
> A rendering API (DirectX or OpenGL?)
> Render engine architecture: Forward or deferred rendering?
> Support for one or more kinds of (preferrably animated) models.
> Skeletal animation and Inverse kinematics
> Shaders / Materials
> Supporting different image/texture formats
> A scene graph with some kind of space partitioning system
> A fileformat to load/save entire levels
> 3D Collision detection and picking
> A sound engine with a bunch of features (volume, pitch, 3d sound etc)
> An input module (Keyboard, Mouse, Joystick gamepad, key-bindings etc)
> A networking module (peer to peer and/or server-client based)
> A bunch of math routines and classes
> and the list goes on...

I don't want to discourage you, but I just want to make sure that you realize what a huge task this is. Writing such an engine would at least take a year but probably two or more. I've been writing engine(s) for almost 3 years and I've learned alot about graphics and programming, but I still don't have a finished project.

One more tip: As a game developer you will eventually hear the "wouldn't it be cool if..." voice in your head. You shouldn't listen to it while you are working on your project. It's best to make plans/designs and stick with them, instead of changing your whole codebase every week. I still have a hard time not to, and I spend loads of precious time making changes to my code while this isn't neccesary. To keep things under control, you should make a list of things you will DEFINITELY NOT add to your game. The longer this list is, the better.

That said, I wish you best of luck with this project. I hope you can come up with a nice concept and some good design plans. From my experience, these are essential and will help you to get this done. Keep us posted!