Если для 3d игр, то могу порекомендовать движок
Unity3D. Для создания простой игры не нужно особых знаний, писать можно на C# или вариациях с синтаксисом JavaScript и Python (Boo). Есть собственный редактор, позволяющий «рисовать» уровни и тут же их тестировать в игре. Также на сайте куча документации и примеры для разных типов игр. Есть возможность скомпилировать игру под Windows и Mac OS. Есть также платная версия редактора, имеющая чуть больше возможностей и компиляцию в iOS и Android.
Для 2d игр можно использовать
XNA (его можно использовать и для написания 3d игр, но несколько сложнее). Это не готовый движок, а фреймворк, поэтому тут уже придется много работать с кодом. Также есть куча документации и примеров. Фреймворк имеет отличную производительность, я лично экспериментировал с миллионами взаимодействующими объектами в кадре без особого падения производительности. Хотя тут уже зависит от того, как вы сами оптимизируете свой код. Для написания используется C#, есть своя IDE в комлекте, основанная на Visual Studio. Могу порекомендовать также физический движок
Farseer, имеющий отличную совместимость с XNA.
Из общего: нужны знания в математике, в особенности в геометрии. Много придется работать с физикой, особенно если решите написать свой физический движок. Хотя даже для простого движения персонажа это пригодится.