Lass mich deine Frage mal in einen anderen Kontext rücken:
Ich möchte gerne als Hobby Torten backen. Das möchte ich aber am besten ohne eine bestehende Küche oder Küchenwerkzeuge und -geräte tun.
Das heißt dann, dass du erstmal eine Küche, inklusive Werkzeugen und -geräte bauen musst. Da darfst du dann auch den Ofen, Mixer und alles weitere selbst bauen.
Denn das ist es, was eine Engine eigentlich ist, sie ist ein Werkzeug bzw. eine Werkstatt, um Spiele darauf zu entwickeln. Eine Engine zu entwickeln hat an sich nichts mit Spieleentwicklung zu tun. Da geht es um Geometrie, Shader, Grafik-APIs, Physik, und generell sehr viel abstrakte Mathematik und Logik. Wenn du dich jetzt entscheidest, eine eigene 3D-Engine zu entwickeln - und das brauchst du nunmal, um ein eigenes 3D-Spiel damit zu entwicklen, dann brauchst du dir über das Spiel noch gar keine Gedanken machen, denn bis deine 3D-Engine mal in einem brauchbaren Stadium ist, wirst du schon lange mit dem Studium fertig sein.
In größeren Studios gibt es in der Regel eine klare Trennung zwischen den Engine-Entwicklern und den Spiele-Entwicklern. Eine moderne Engine kann ein ganzes Entwicklerteam beschäftigen, ohne, dass die sich wirklich mit dem Spiel beschäftigen. Die bekommen maximal Vorgaben von den Spiele-Entwicklern, welche Funktionen sie in der Engine benötigen.
Ohne Engine zu arbeiten ist für einen Anfänger komplett unrealistisch. Selbst eine Engine auf Minecraft-Niveau wäre nicht einfach und würde ohne Vorwissen länger als ein paar Semester dauern.
Ein 2D-Spiel ohne Engine wäre noch eher realistisch, aber auch hier wirst du feststellen, dass du wenig am Spiel entwickeln wirst, sondern dich mehr mit Grundfunktionen beschäftigen wirst.
Die Redewendung "Das Rad neu erfinden" gibt es nicht ohne Grund, aber genau das heißt es, ein Spiel ohne Engine bzw. mit eigener Engine zu schreiben.
Eine eigene Engine zu entwickeln macht nur dann Sinn, wenn man sich sicher ist, dass die eigene Engine definitiv besser geeignet sein wird als jede andere verfügbare Engine. Denn Unreal, Unity und Godot sind ziemlich ausgereift, und viele Experten haben viele Jahre daran gearbeitet. Ein einzelner Anfänger kommt da einfach nicht dran ran.
Eine Engine zu entwickeln, die in jeglicher Hinsicht schlechter ist als die möglichen Alternativen ist nicht sinnvoll - vor allem, wenn du ja eigentlich ein Spiel entwickeln willst, denn davon wird dich die Entwicklung der Engine erstmal abhalten.
Selbst, wenn man sich mehr für die Engine interessiert als für das Spiel selbst, dann sollte man sich trotzdem mal ausführlich mit bestehenden Engines auseinandersetzen um zu verstehen, wie die funktionieren.
Sonst sind wir auch wieder beim Tortenbäcker, der gerade sein Küche baut, aber eigentlich gar nicht weiß, wie eine Küche oder das Backen überhaupt funktionieren, weil er sich entschieden hat, zuerst eine Küche zu bauen, bevor er auch nur einmal im Leben etwas gebacken hat.
Tu dir einen Gefallen, und benutz einfach eine Engine wie Godot. Godot ist uneingeschränkt kostenlos, für 2D- und 3D-Spiele geeignet, unterstützt verschiedene Plattformen, und du programmierst trotzdem dein Spiel selbst. Denn eine Engine ist ja nunmal kein Spielzeug, in dem man sich kurz ein Spiel zusammenklickt. Sie liefert lediglich ein Fundament, auf dem du aufbaust.
In Godot kann man entweder mit GDscript arbeiten, was Python-ähnlich und einsteigerfreundlich ist, oder aber mit C#. Es gibt auch weitere, inoffiziell unterstützte Sprachen, aber GDscript und C# sind wie gesagt die offiziellen. Generell ist C# bei der Spieleentwicklung relativ weit verbreitet, eben weil es einerseits relativ performant ist, aber trotzdem etwas einfacher zu handhaben ist als C++.
Wichtiger als das Erlernen einer Programmiersprache ist es, das Programmieren an sich zu lernen. Die meisten Programmiersprachen sind im Kern sehr ähnlich, und weichen meist nur in Details voneinander ab, oder stellen die gleichen Konzepte etwas anders dar. Wenn man also das Programmieren an sich verstanden hat und man z.B. C# gut kann, dann muss man nur noch schauen, welche Dinge C++ jetzt anders macht, und umgekehrt. Beide haben Variablen, Klassen, Blöcke, Schleifen, Bedingungen usw., und es ist wichtiger, zu verstehen, wie man die benutzt, als die genaue Syntax je nach Sprache.