Zanim zacznę muszę coś skomentować. Wow to formatowanie.
Piszę już gry od kilku lat i moja rada jest taka:
Odpuść sobie C++ na początek. Mówie kompletnie poważnie. Nie musisz się wtedy martwić niskopoziomowymi sprawami w stylu zarządzanie pamięcią i zabawa ze wskaźnikami.
Jeżeli chcesz tworzyć gry i skupić się na nich to Java i C# będą twoimi przyjaciółmi, później możesz wrócić do C++.
Języki, które wymieniłem są świetne pod gamedev. Mają garbage collector, są obiektowe z góry i o wiele łatwiej się w nich odnajdziesz. Powstały świetne biblioteki i silniki, które opierają się o nie.
Java ma libGDX - jedyny słusznywybór jeżeli chcesz tworzyć gry w Javie i nie chcesz być ograniczony przez odgórne ideologie jak zazwyczaj to bywa w silnikach. Coś tobie nie pasuje? Robisz to po swojemu. Aktywnie rozwijany i optymalizowany (nawet posiada własne klasy list, aby zoptymalizować działanie garbage collectora). Możesz pisać gry 2D i 3D (api 3D mocno się rozwija). Wsparcie wielu bibliotek (ba nawet niektóre biblioteki są specjalnie modyfikowane w celu kompatybliności - box2d, ashley, bullet itd.) Na to wychodzi, że niebawem silniki będą bazowane o tą bibliotekę (już kilka projektów jest na horyzoncie). Wspiera wszystkie popularne platformy (windows, linux, mac, ios, android, html5)
C# ma MonoGame i Unity - mnóstwo gier jest tworzonych w Unity (chociaż moim faworytem jest Unreal Engine 4), monogame jest spadkobiercą umarłego XNA (większość gier niezależnych na xbox marketplace i windowsa była tworzona właśnie w tym).
Jeżeli chodzi o matematykę i fizykę. Nie martw się. Wszystkiego nauczysz się w swoim czasie (ucz się na bieżąco w szkole, ja akurat popełniłem błąd i miałem problemy). Możesz, niektóre tematy samemu powoli ogarniać, ale zawsze masz świetny zbiór bibliotek (box2d - fizyka 2d korzysta z tego Angry Birds czy też nadchodzący Move Or Die, Bullet - fizyka 3D), które mogą przyśpieszyć proces twoich prac. Biblioteki growe udostępniają świetny zbiór funkcji jeżeli chodzi o matematkę (detekcja kolizji), a jeżeli jesteś ambitniejszy to w Internecie jest dużo tutoriali. Ale pamiętaj, warto w tym czasie swoim tempem rozwijać wiedzę na temat technologi, której używasz.
Gdy już będziesz bardziej pewny siebie to możesz zajrzeć co słychać u C++ i zacząć zabawę "bliżej metalu".
Gdy będziesz miał aspirację na pisanie silników graficznych to C++ jest idealny, ponieważ jego niskopoziomowość pozwoli tobie na dużą swobodę.
Za C++ stoi świetny silnik Unreal Engine 4 (który wprowadza dużo ułatwień do niego - np. garbage collector)