Zum Beispiel:
- Angenommen, es gibt 10 Räume auf der Welt.
- Nehmen wir an, die Welt wird von 10 Wesenheiten bewohnt.
- Und jede Entität hat ihre eigene "tägliche Routine", in der sie bestimmte Aktionen im Raum ausführt und auch zwischen den Räumen navigiert.
Was ist angesichts der Tatsache, dass sich der Spieler immer nur in einem Raum befinden kann, eine gute Möglichkeit, die Aktionen zu verfolgen, die die anderen Entitäten in anderen Räumen außerhalb des Bildschirms ausführen?
- Am einfachsten ist es, jede der 10 Einheiten in jedem Frame zu überprüfen, ihre Position / ihren Zustand zu überprüfen und zu bestimmen, ob sich die Einheit zu einem bestimmten Zeitpunkt in dem Raum befinden soll, in dem sich der Spieler befindet. (Dies fühlt sich jedoch sehr ressourcenintensiv an, insbesondere wenn die Raum- / Entitätsmenge erhöht wird.)
Eine andere Möglichkeit besteht darin, die seit dem Beginn des Spiels verstrichene Zeit zu verfolgen. Anschließend prüft jede der Einheiten, ob sich ihr Muster mit dem Raum, in dem sich der Spieler befindet, überschneidet, und vergleicht dies mit der Zeit, in der sich der Spieler befindet Entity soll sich zu diesem bestimmten Zeitpunkt im selben Raum befinden. Entities, deren Muster sich nicht mit dem aktuellen Raum überschneiden, in dem sich der Spieler befindet, tun nichts, bis der Spieler einen Raum betritt, in dem sich ihr Muster überschneidet, und berechnen erst zu diesem Zeitpunkt, ob oder nicht sie sollten rendern. (Wenn sie jedoch mit dem Raum interagieren, müssen sie immer den Zustand der Räume überprüfen, die ihre Route kreuzen, um ihren Standort zu diesem Zeitpunkt zu bestimmen, was nicht so toll ist.)
Die dritte Möglichkeit, auf die ich gekommen bin, besteht darin, zunächst nur die Routen zu betrachten, die den Standort des Spielers kreuzen (wie zuvor beschrieben). Zweitens muss beim Betreten eines Raums überprüft werden, ob sich der Spieler in diesem Raum befindet Zustand des Raumes und wie lange wird es dauern, bis der nächste Raum erreicht ist. Zum Beispiel betritt ein Hausmeister-NPC den Raum, überprüft den Zustand des Raums, stellt fest, dass ein Teil des Raums vom Spieler verschüttet wurde, berechnet, wie lange es dauern wird, das aufzuräumen und wie lange der Weg usw. dauert Es ist Zeit, den nächsten Raum zu betreten. Wir prüfen nur, ob der Spieler im Raum ist. Die genaue Position des NPC für Rendering-Zwecke wird nur berechnet, wenn der Spieler den Raum betritt.
Nach einer Weile des Brainstormings bin ich zur dritten Option gekommen, aber ich habe mich gefragt, ob es vielleicht einen bekannten oder besseren Weg gibt, um mit solchen Dingen umzugehen.