Grundsätzlich möchten Sie Listen so erstellen, wie Sie sie benötigen. Wenn Sie Geländeobjekte auf einmal neu zeichnen, kann eine Liste mit nur diesen nützlich sein. Aber damit sich das lohnt, braucht man Zehntausende von ihnen und viele Zehntausende von Dingen, die kein Gelände sind. Andernfalls ist es schnell genug, die gesamte Liste zu durchsuchen und ein "Wenn" zum Herausziehen von Geländeobjekten zu verwenden.
Ich habe immer eine Hauptliste benötigt, unabhängig davon, wie viele andere Listen ich hatte. Normalerweise mache ich daraus eine Karte, eine Schlüsseltabelle oder ein Wörterbuch, damit ich willkürlich auf einzelne Elemente zugreifen kann. Aber eine einfache Liste ist viel einfacher. Wenn Sie nicht zufällig auf Spielobjekte zugreifen, benötigen Sie die Karte nicht. Und das gelegentliche Durchsuchen von ein paar Tausend Einträgen nach dem richtigen dauert nicht lange. Also würde ich sagen, was auch immer Sie tun, planen Sie, bei der Master-Liste zu bleiben. Erwägen Sie, eine Karte zu verwenden, wenn sie groß wird. (Wenn Sie jedoch Indizes anstelle von Schlüsseln verwenden können, können Sie sich an Arrays halten und haben etwas Besseres als eine Map. Ich hatte immer große Lücken zwischen den Indexnummern, also musste ich darauf verzichten.)
Ein Wort zu Arrays: Sie sind unglaublich schnell. Aber wenn sie ungefähr 100.000 Elemente haben, geben sie Garbage Collectors Fits. Wenn Sie den Speicherplatz einmal zuweisen und ihn anschließend nicht mehr berühren können, ist dies in Ordnung. Wenn Sie das Array jedoch kontinuierlich erweitern, werden Sie kontinuierlich große Speicherblöcke zuweisen und freigeben, und es besteht die Gefahr, dass Ihr Spiel sekundenlang hängen bleibt und sogar ein Speicherfehler auftritt.
So schnell und effizienter? Sicher. Eine Karte für den wahlfreien Zugriff. Bei sehr großen Listen schlägt eine verknüpfte Liste ein Array, wenn Sie keinen Direktzugriff benötigen. Mehrere Karten / Listen, um die Objekte nach Bedarf auf verschiedene Arten zu organisieren. Sie könnten die Aktualisierung mit mehreren Threads durchführen.
Aber es ist alles viel Arbeit. Dieses einzelne Array ist schnell und einfach. Sie können andere Listen und Dinge nur bei Bedarf hinzufügen, und Sie werden sie wahrscheinlich nicht benötigen. Sei dir nur bewusst, was schief gehen kann, wenn dein Spiel groß wird. Möglicherweise möchten Sie eine Testversion mit 10-mal so vielen Objekten wie in der Realversion haben, um eine Vorstellung davon zu bekommen, wann Sie auf Probleme stoßen. (Tun Sie dies nur , wenn Ihr Spiel ist groß zu bekommen.) (Und versuchen Sie nicht das Multi-Threading , ohne es zu vielen Gedanken. Alles anderes leicht , mit zu beginnen, und Sie können , wie Sie so viel oder so wenig tun , wie Mit Multithreading zahlen Sie einen hohen Preis für den Zugang, die Gebühren für den Aufenthalt sind hoch und es ist schwierig, wieder herauszukommen.)
Mit anderen Worten, mach einfach weiter, was du tust. Ihre größte Grenze ist wahrscheinlich Ihre eigene Zeit, und Sie machen den bestmöglichen Nutzen daraus.