Learn a programming language first. C and C++ are used for the Cube engine games. Then decide on what engine you want. You can go with a commercial engine, open source engine (Cube 2 engine for example) or make one yourself. You will also need textures and models for your guns, characters and maps.
Mod edit: Annoying typo. <3
Mod edit: <3
Mod edit: Annoying typo. <3
Mod edit: <3