Zu erst einmal solltest du, Beren, es ignorieren, wenn jemand sagt, du würdest das alleine nicht hinbekommen. Es ist sehr anspruchsvoll, es ist zeitraubend, aber vor allem: es ist machbar! Nur weil vielleicht tausende mit einem solchen Projekt begonnen haben und es nicht geschafft haben, heißt das nicht, dass du es nicht schaffst. Ich selbst habe es mehrfach versucht und anfangs den Fehler gemacht meine Ziele zu hoch zu stecken und verlor dann den Willen. Bei meinem letzten Versuch ein Spiel samt Engine zu entwickeln habe ich es so gemacht und erst mal nur das entwickelt, was ich unbedingt benötige, ohne Schnickschnack, und habe das als Basisversion veröffentlicht. Nun veröffentliche ich im Abstand einiger Wochen Updates für das Spiel und mit jedem Update reift das Spiel und die Engine! Auf diese Weise kommt man schnell an sein Ziel und verliert die Motivation nicht auf lange Sicht! Der aktuelle Stand meines Spiel ist auch noch recht "crappy", aber die nächste Version bringt schon viel Neues und Gutes. Soviel zum Vorgeplänkel!
Zu einem eigentlichen "Problem": Wenn du ein Dungeon Crawler machst, würde ich ein Modell verwenden, wie es bei Half-Life angewandt wurde. Die Welt setzt sich zusammen aus einer nicht-leeren Menge von Teil-Levels, die über Zugänge miteinander verbunden sind. Z.B. zwei Häuseretagen, die über den Fahrstuhl verbunden sind, zwei Lagerhallen, die mit einem Lüftungssystem verknüpft sind, zwei Outdoor-Gebiete, die über einen Tunnel verknotet sind, usw. Auf diese Weise kannst du die Welt schon einmal unterteilen. Bei diesen Knotenpunkten ist es hilfreich, wenn an einer Stelle der Benutzer nicht beide Gebiete voll einsehen kann. Diese Stellen kannst du nutzen, um den nächsten Teil der Welt zu laden. So wurde es in Half-Life gemacht und so würde ich es auch persönlich an deiner Stelle machen.
Du kannst das Ganze natürlich noch optimieren, indem beginnst den nächsten Teil-Level zu laden, wenn sich der Spieler ihm nähert. Hast du z.B. einen großen Dungeon mit vielen Gängen, kannst du, wenn der Spieler einen Gang entlang geht, den Teil hinter ihm langsam aus dem Speicher löschen und den Teil vor ihm stückweise laden. Auf diese Weise kannst du ohne Ladezeiten große Levels realisieren.
Generell zu empfehlen sind Raumunterteilungsmechanismen, wie Quad-Tree, Octree, BSP und wie sie alle heißen. Damit kannst du effizient deinen Raum unterteilen, was Pfadsuche für NPCs, Kollisionserkennung, Speichermanagement, etc. sehr effizient gestaltet. Die Verfahren an dieser Stelle zu erklären wäre zu aufwändig, aber du findest davon sehr viel Material. Ich persönlich empfehle allgemein gerne Quad-Trees für 2D-basierte Karten. Ist sehr leicht umzusetzen und kann große Gewinne liefern.