kostuek wrote:Actually, infinite just means there is no edge. You can further distinct between "closed infinite" and "open infinite" universe. Closed infinite means you will end at your start position at some point if you keep going. In an open infinite universe you can keep going forever and will never see your start position again.
Now, a true open universe is of course impossible on a finite machine like a PC. I guess you can simulate one, even I don't know why you would bother. At the end of the day, you can even generate a finite universe. Just make sure it's big enough, so no one can reach the edge in his lifetime.
Or as I put it nearly three years ago now during one of the other times
we've talked about the "edge" question:
Flatfingers wrote:Rather than "infinite," it might be a little more precise to say that the universe of a LT game, like our own, is infinite-but-bounded (or maybe "infinitely expandable").
That is, the universe of every LT game has a circumference where, at any snapshot moment in time, it stops. But if you go to one location on that edge, new regions are generated around that location, in effect making every LT universe functionally infinite.
The LOD feature doesn't really determine the "infinite" part -- I'd describe it as a necessary mechanic for maintaining performance as a game universe grows ever larger. It probably does affect the "simulation of history" feature, though, since it allows the coarse simulation used to create the history of newly-generated regions.
Meaning: If an edge-expanding trigger object (such as the player's ship) never approaches the edge of a procedurally-generatable universe, then the universe of that game never expands, and the question of edge connectivity is moot (other than let some people complain that "Josh spent time developing code that will never be executed"... for this one player of LT).
BFett wrote:2. The seed for the universe determines the system locations, so this occurs at universe generation the moment the player clicks "generate universe". So, I'd answer your question with 'Yes' and the second part is still "2 systems away when a player controlled ship approaches the edge". (I'm having a little trouble understanding what you are asking for so I'm sorry if I'm not answering the question)
I'm sorry I haven't been able to do a better job of explaining.
I'd just add that, if I understand Josh's intent correctly, then yes, a large universe is generated from a seed value when you start a new game of LT, but that universe has an edge: at any specific moment in time, there are a finite number of star systems, and their connectivity is probably defined by default as a kind of 2D planar circle. The star systems on the circumference of that circle would be "edge systems," and the player would start the game in a star system somewhere roughly near the middle of the entire connectivity map.
Then as the player sees a star system some number of jumps away from one of the edge systems, new systems would be generated that connect to the edge systems somewhere in the general vicinity of the direction the player seems to be traveling (making new system generation dependent on some kind of light predictive algorithm).
The question I was asking (badly) was, how few jumps away from one of those edge systems should a player ship be able to get before the new-system-generation code gets called?
You seem to be thinking 0. Cornflakes disagrees (
) and thinks the number of hops should be larger. But the question's still open: how much larger?
Dinosawer wrote:in the end, the size of the universe will be, logically, determined by your CPU. No matter how light the LOD AI calculations are, at some point it's gotta be too much to handle. So maybe, for lighter systems or something, you could borrow a technique that is often used in physics, namely periodic boundary conditions.
The idea behind it is that you can simulate a small part of a roughly homogenous something (such as the universe, or a fluid) by pretending the entire universe is a repeated pattern of the block you're simulating. Interactions are then calculated "over the edge" too, so you don't notice there's a boundary in your simulation, while still limiting the space you actually have to simulate.
That's one way.
Another way might be to use the trick I proposed for simulating the positions of planets (and asteroid field centers) if they could move, in order to avoid having to move them when no one's watching. Namely, when you're not there, record their positions to a file along with a timestamp, and stop moving them. Then when you go back there, read in their information and calculate their current position based on the saved timestamp, the current time, and the appropriate position calculation.
A version of this might also be used for simulating high-level star system effects without actually calculating activity for those systems. When there's no player-related ship close enough, LT would identify the salient data about a system, save that data to disk with a timestamp, and stop simulating it entirely
. Systems that connect to the saved system would be responsible for simulating at a high level what it would have provided (this is a bit of a handwave, but bear with me). The distant system would then be entirely static because it's all been paged out of RAM. It would thus have no direct effect on performance (only an indirect effect via the systems that connect to it using a little local data to simulate what that now-static system would have provided).
Then, later on, when a ship controlled by the player's faction gets close enough to the saved system (whatever that distance is), you read its information from disk along with the timestamp, then calculate what that system should look like after the passage of time between when it was saved and now. (This recovery process is what would be happening as you're "flying through a wormhole" between systems.) It then once again starts to have an active impact on the systems around it, even though it's still being simulated at a low LOD since you're not looking directly at it yet.
All speculation, of course. No one should be surprised if Josh already worked out this logic before the Dark Days and it's far more elegant than what I described here.