Naja, was das Thema eigene Engine angeht, da gab es mal damals einen netten Beitrag im Internet den ich grad nicht wieder finden kann. Du weißt einfach noch gar nicht was eine Engine können muss, was du wirklich benötigst, was du weniger benötigst und wie du den ganzen Kram aufbauen solltest. Jetzt kannst du dir ein Buch zu dem Thema kaufen und den Kram nachbasteln oder baust eben Spiele. Du musst ja nicht Unity benutzen wenn du nicht möchtest. Schreib dir deinen Code halt mit OpenGL oder DirectX selbst wenn du denn unbedingt möchtest. Aber dann fang besser an direkt ein Spiel damit zu entwickeln anstatt erst deine Engine zu schreiben mit welcher du am Ende nicht wirklich arbeiten kannst. Der Trick ist, je mehr Spiele du entwickelst desto mehr Code wird sich finden den du immer wieder schreibst. Vielleicht kopierst du den Code auch jedes mal und passt ihn einfach immer weiter an. Jetzt kannst du anfangen den Code in eine Bibliothek auszulagern und daraus kristallisiert sich automatisch eine kleine Engine.
Ob du deine Sachen jetzt in C#, C++, Python, Java oder was auch immer schreibst bleibt erst mal dir überlassen. Wenn du gern mit C# arbeiten möchtest, mach das. Ich würde dir wie gesagt einfach vorschlagen dass du die Sprache lernst und dann mal guckst welcher Aufwand es ist ein Fenster zu erstellen und ein Dreieck zu rendern, Modelle zu laden, Texturen aufzutragen, Shader einzufügen und so weiter. Wenn dir das Spaß macht kannst du so weiter machen. Wenn du dann aber merkst dass es zu viel Aufwand ist kannst du dir ja was fertiges schnappen. Das was du hier vor hast ist auch mit einer fertigen Engine nicht in einem Jahr umgesetzt. Du musst einfach erst mal ein Gefühl dafür entwickeln wie viel Zeit und Arbeit hinter so Ideen stecken. Das musstest du bei deinen PHP Projekten ja auch. Alles andere kannst du dann entscheiden wenn es so weit ist.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“