Очень редко можно написать физический движок для игры. Обычно используется сторонняя библиотека, либо бесплатная, либо коммерческая. То же самое касается и других аспектов игровых движков. Рендеринг, звук, AI, анимация, GUI, работа в сети и т. Д. В наши дни редко кто-нибудь пишет игровой движок с нуля. Обычно люди покупают их. Если они делают их, они покупают связку промежуточного программного обеспечения для выполнения сложных задач.
Есть много мест, где можно начать изучать программирование игр. Если вы хотите просто «сделать игру», я бы предложил погрузиться в Unity . Unity - это фантастический, очень простой в использовании игровой движок, который можно использовать для создания чего угодно. Он даже предоставляет большинство функций коммерческих двигателей (особенно в следующей версии 3).
Если вы хотите узнать больше об основах игрового программирования, посмотрите PyGame или XNA. Они убирают большую часть скуки, обычно встречающейся в управлении графикой, вводом, звуком и т. Д. Они не будут делать физику для вас (они не движки, а только API), но есть много бесплатных и простых в использовании решений.