Elite Dangerous plans for 2024

If I remember correctly, in the early KS days it was some backers who came up with labelling ED as an MMO - which FDev eventually adopted.

The FDev stated reason as to why we don’t have single player (offline single player was announced part-way through the KickStarter and dropped less than one month before release (yes, I’m still disappointed with that 😁)) is that players are required for the BGS - the Galaxy “would be unacceptably limited and static compared to the dynamic, ever unfolding experience we are delivering" if the game was a fully offline experience.

But I think the point being made by @terasz is that without thousands of other players the game will not be profitable and therefore facing the chopping block, not that they are required to enjoy playing the game. If you dismiss someone else’s comments with variations on “well it doesn’t bother me” then it strikes me as a failure to address the bigger picture.
How many Commanders understand or do BGS or PP on a daily basis ? The majority just play the game and the effects of BGS are as far as they are concerned just RNG ?
Does my BGS work affect your game ? Only in numbers hence my NPC point.
Elite was always 3 games PC , PS and Xbox and never would they meet. Consoles are now a totally separate game to PC . So in my opinion not an MMO.
I never dismissed anyone's PoV I gave mine but with the proviso of "In my opinion ". And opinions are very subjective but everyone is entitled and should be allowed to air them .
 
If I remember correctly, in the early KS days it was some backers who came up with labelling ED as an MMO - which FDev eventually adopted.
Feels like that mainly happened because there live-service games were just getting popular and there wasn't a good frame of reference. Live-service games are what you get when you don't fully commit to the MMO paradigm (of that era) and that's exactly what Elite ended up as.
 
How many Commanders understand or do BGS or PP on a daily basis ? The majority just play the game and the effects of BGS are as far as they are concerned just RNG ?
Does my BGS work affect your game ? Only in numbers hence my NPC point.
Elite was always 3 games PC , PS and Xbox and never would they meet. Consoles are now a totally separate game to PC . So in my opinion not an MMO.
I never dismissed anyone's PoV I gave mine but with the proviso of "In my opinion ". And opinions are very subjective but everyone is entitled and should be allowed to air them .
The BGS affects everyone’s game even if you never interact with another player directly - as said by David Braben, the Galaxy would be “unacceptably limited and static” without other players influencing your game. I’d be perfectly happy with a solo offline game where the BGS was changed in a random manner, but that ship has long sailed.

If you don’t consider Elite to be an MMO then fair enough - there are plenty of opposing opinions though 😁

And my final sentence in the post was regarding terasz’s post and not aimed at you; my apologies for not making that more explicit 👍
Feels like that mainly happened because there live-service games were just getting popular and there wasn't a good frame of reference. Live-service games are what you get when you don't fully commit to the MMO paradigm (of that era) and that's exactly what Elite ended up as.
I’m hazy on the memories but it seemed to me like some backers wanted to get the MMO tag slapped on Elite because it would make the game visible to the MMO player base. I never bothered about it because I was going to be getting an awesome offline modern Elite 😅
 
The BGS affects everyone’s game even if you never interact with another player directly - as said by David Braben, the Galaxy would be “unacceptably limited and static” without other players influencing your game. I’d be perfectly happy with a solo offline game where the BGS was changed in a random manner, but that ship has long sailed.

If you don’t consider Elite to be an MMO then fair enough - there are plenty of opposing opinions though 😁

And my final sentence in the post was regarding terasz’s post and not aimed at you; my apologies for not making that more explicit 👍

I’m hazy on the memories but it seemed to me like some backers wanted to get the MMO tag slapped on Elite because it would make the game visible to the MMO player base. I never bothered about it because I was going to be getting an awesome offline modern Elite 😅
Reading that... could Elite have been an offline solo game with such a big galaxy hosted in our computers?
 
Reading that... could Elite have been an offline solo game with such a big galaxy hosted in our computers?
Easily.
- The Stellar Forge side of things - responsible for most of the actual perceived scale - is already stored and run entirely locally because anything else would be far too slow.
- The data required for the systems and stations of inhabited space is (on the scale of the ED install) tiny. Might be as many as tens of megabytes.
- Your own exploration data isn't large (collective exploration data is probably running into terabytes by now, but you don't need that - the "first discovery" concept would no longer be meaningful)
- everything else is essentially the same size whether there's one system or 400 billion.


The challenge is that while the BGS is apparently random in effect, the game does still depend on that randomness and (to a lesser extent) the variation over time it causes. "Elite Dangerous but every system and faction is in None state" would be a lot less interesting and some entire game mechanics (CZs, for example) would be unusable; "Elite Dangerous but that Thargoid attack / war over some minor Odyssey settlement / public holiday / trade good price lasts forever" would be workable if a bit weird - but would require a completely different mechanism to create it, which Frontier presumably didn't feel they had time to do before release.
 
The challenge is that while the BGS is apparently random in effect, the game does still depend on that randomness and (to a lesser extent) the variation over time it causes. "Elite Dangerous but every system and faction is in None state" would be a lot less interesting and some entire game mechanics (CZs, for example) would be unusable; "Elite Dangerous but that Thargoid attack / war over some minor Odyssey settlement / public holiday / trade good price lasts forever" would be workable if a bit weird - but would require a completely different mechanism to create it, which Frontier presumably didn't feel they had time to do before release.
There are single player games that do "BGS" reasonably well while not being primarily games about the strategy of manipulating BGS. Based on the thargoid war stuff I'm not sure they could've made an interesting BGS that runs itself, but a solo BGS would have a lot less constraints on it and having player actions matter more (and give feedback faster) as an individual CMDR would probably feel better.

Multiplayer always adds at least an order of magnitude of complexity to a game and if taking it away would be too difficult at this point you could just add simulated bot inputs to the singleplayer game to get the desired systemic randomness without having to redo the whole thing.
 
As a side note:
[...]
- Your own exploration data isn't large (collective exploration data is probably running into terabytes by now, but you don't need that - the "first discovery" concept would no longer be meaningful)
Not nearly into terabytes, no. A complete dump of the crowdsourced data is around 80 GB compressed with gzip now, multiply that by 2.5 to get the estimated total if that were available. (Around 40% of what's discovered ends up uploaded.) Now, if memory serves, the compression inflates to around 3. That'd give a full 600 GB of uncompressed text, which is still pretty huge, but still well below 2 TB. Bear in mind that roughly half of everything so far was discovered in the first three years. If the current rate (last official numbers were a year ago though) were steady, which it isn't, then it would take 14 years for the total data to reach one terabyte.

Of course, this is just a slightly interesting thought experiment, as like you said, an offline version of the game would have no use for all this data. A database of first discovery / mapping / etc tags could be distributed automatically though, and that database would be far smaller.
 
I've always considered the game an MMO and the BGS is the one of the main expressions of that; it's what the MMO aspect performs. That said, they could certainly have replaced massive player interaction with some other source of seed data.

Hell, random.org, a few scripted sieves, a sanity check here and there, and you might have a marginally functional adapter:
001.jpg

Random atmospheric noise goes in one end, and boom...a BGS that looks less like a roomba hitting a PMF dog turd and smearing it across the bubble than what we've got now comes out the other.
 
Easily.
- The Stellar Forge side of things - responsible for most of the actual perceived scale - is already stored and run entirely locally because anything else would be far too slow.
- The data required for the systems and stations of inhabited space is (on the scale of the ED install) tiny. Might be as many as tens of megabytes.
- Your own exploration data isn't large (collective exploration data is probably running into terabytes by now, but you don't need that - the "first discovery" concept would no longer be meaningful)
- everything else is essentially the same size whether there's one system or 400 billion.


The challenge is that while the BGS is apparently random in effect, the game does still depend on that randomness and (to a lesser extent) the variation over time it causes. "Elite Dangerous but every system and faction is in None state" would be a lot less interesting and some entire game mechanics (CZs, for example) would be unusable; "Elite Dangerous but that Thargoid attack / war over some minor Odyssey settlement / public holiday / trade good price lasts forever" would be workable if a bit weird - but would require a completely different mechanism to create it, which Frontier presumably didn't feel they had time to do before release.
My own suspicion was that the online nature of the game was tied into pretty much everything and having an offline local server type thing with all the associated code would have allowed rascals to figure out stuff quickly and adversely affect the online game. If that sounds wrong then I’m happy to have the old notion dispelled 😁

I still hope that we’ll get something like offline whenever/if the live game is sunset, it would be a shame to lose the game to digital history. I’m still playing the original game today, nearly 40 years later (albeit a modded 128k version) and though I doubt I’ll be around in another 40 years to play ED, I would wish future gamers to be able to play this wonderful game in a similar manner (as long as the bugs get fixed! 😅).
 
Who knows, maybe with a post-live re-release, we would could have everything that has happened during the live run compiled into a 15 minute single-player campaign. ;) (Yes - wildly unfair, but irresistable :p)
 
Not nearly into terabytes, no. A complete dump of the crowdsourced data is around 80 GB compressed with gzip now
Yes, but that's the wrong thing to be comparing to - that's a set of data derived from the stellar forge algorithms, so the in-game size is zero (since Stellar Forge was accounted on a different line), and if the same body is visited by a million CMDRs it still only counts once. Most of the data in it may well be from CMDRs wandering around the bubble.

What I'm thinking could run to a terabyte is the database of which individual bodies every commander has scanned/mapped/footfalled/etc. (plus Codex and Exobio stuff, but that's going to be a lot smaller) which is needed to show that info on the system map.

As a minimum that needs the 64-bit body ID, the CMDR ID which might only be 32-bit, and a bunch of boolean flags which might well be another 32-bit. So that's at least 8 bytes stored forever for every planet a player interacts with - and it's possible that there are good reasons not to use the most efficient layout for space because a less efficient layout might be quicker to search. At the very least those columns will need indexes!
26 million players (since the live and legacy databases are now separate) requires a gigabyte for every five bodies interacted with in any exploration capacity by any CMDR.

So ... is the mean number of bodies interacted with by a CMDR greater or less than about 5000? FSS-or-nav beacon of a few hundred systems will get you there, the most prolific explorers on EDSM have forty times that just on primary stars and will be skewing the mean massively upwards by more than "Epic giveaway account, never used" will be dragging it down. It's a vague enough question that I couldn't confidently say yes or no.

If Frontier were to say "not quite a terabyte yet" I would believe that, but it's going to be that order of magnitude.
 
Not nearly into terabytes, no. A complete dump of the crowdsourced data is around 80 GB compressed with gzip now, multiply that by 2.5 to get the estimated total if that were available. (Around 40% of what's discovered ends up uploaded.) Now, if memory serves, the compression inflates to around 3. That'd give a full 600 GB of uncompressed text, which is still pretty huge, but still well below 2 TB. Bear in mind that roughly half of everything so far was discovered in the first three years. If the current rate (last official numbers were a year ago though) were steady, which it isn't, then it would take 14 years for the total data to reach one terabyte.
What I'm thinking could run to a terabyte is the database of which individual bodies every commander has scanned/mapped/footfalled/etc. (plus Codex and Exobio stuff, but that's going to be a lot smaller) which is needed to show that info on the system map.
If you're talking about the spansh or similar dumps then that's completely irrelevant - the JSON format is massively ineffective even at storing system data and if you have the algorithm then what you need for exploration data is just storing the id64 + ids of the discoverer(s) which optimally could just be an array of 32bit ints, but is probably in reality something like a json dict (because of the different types of first discovery and the possibility of a multicrew first discovery).

For legacy (maybe odyssey too) they actually store if a planet has bio/geo signs server side too which takes extra space, but only once per planet.

There's a lot of clever tricks you could use to optimize the space here too (like avoiding storing the full ID64s by using some sort of stuctured grid/octree approach like they do for boxels), but ultimately storage even in the terabytes, with database overheads and even with proper backups would be cheaper than optimizing for a smaller storage footprint here. So I wouldn't assume it's anything more fancy than some DB tables with foreign keys.

For a single commander though, a list of ID64s of systems and bodies discovered stored in binary like the visitedstarscache thing would be tiny even for tens of thousands of systems.

Nothing in the discovery things increases exponentially though - you don't need to store data for unexplored systems or stuff players haven't explored and the rate at which new systems are discovered is linear and doesn't increase that much with an influx of new players who are likely to mostly hang out around the bubble or by now well trodden paths around it anyway.

I assume the real storage issue is the journal files, which get huge even for a single commander (and contain the larger version of exploration data from events for that commander), but those aren't kept forever on FDevs servers.

26 million players (since the live and legacy databases are now separate) requires a gigabyte for every five bodies interacted with in any exploration capacity by any CMDR.
This makes no sense unless you're storing everything in some sort of matrix (which would be mostly zeroes and compress down heavily).
 
This makes no sense unless you're storing everything in some sort of matrix (which would be mostly zeroes and compress down heavily).
I'm assuming a basic database table structure here, and about as small as it's practical to make it and still have some ability to retrieve arbitrary data points from it in constant time:
Col 1 = 64 bit body ID
Col 2 = 32 bit CMDR ID
Col 3 = 32 bit bitmask of various statuses (might actually be several shorter boolean columns, doesn't make much difference to the size)

So if 26 million players each interact with a mean of five bodies each (the same five or a different five, it doesn't matter) then the table needs 130 million rows.

Each row takes eight bytes, which is just over a billion bytes, which can round off to a gigabyte easily enough.

doesn't increase that much with an influx of new players who are likely to mostly hang out around the bubble or by now well trodden paths around it anyway.
Ah - this is where we're getting vastly different estimates: it's not enough to store the first discoveries alone - the game remembers every system I've ever visited and which bodies I scanned/mapped/etc. whether I was there first or not, and I can retrieve that information effectively instantly (along with who did first discover them, where applicable) from the system map.

If the game only stored first discoveries and you could open any system map and view the data so long as someone had discovered the system, then sure, the dataset could be a lot smaller.
 
The last time I saw anything regarding the exploration database was just a wee while ago:

"Exploration data is by far our biggest data set and is currently sitting at around 67 million lines, so needed to be upgraded to maintain a reasonable level of performance" - Zac Antonaci, Head of Community Management, October 2015

It looks like the actual post didn’t survive the forum migration or my forum-fu is weak 😅
 
Mainly the key is that the game doesn't need to solve those equations because the answers are irrelevant.

If you're on ship A in supercruise, and a party of CMDRs is running around ship B also in supercruise ten Ls away, then exactly where those CMDRs are on board the ship is entirely irrelevant to you - you can't see them or interact with them in any way where their position is irrelevant. From the point of view of the CMDRs on ship B, they're all sharing a common reference frame for their interactions with each other, so that reference frame being in motion with respect to the star system is also irrelevant.
Understood on that. Essentially from the perspective of ship A the players positions on ship B are as good as locked with ship B.

You can store the coordinates as a nested set [1] (illustrative, not necessarily what Frontier does)
- planet is at these system coordinates
- instance is at these planetary coordinates
- ship is at these instance coordinates
- player is at these ship coordinates

Operations within a coordinate system are straightforward (and generally all on the same scale). If the game can support CMDRs on a planet surface, or ships flying around an instance, it can support CMDRs on a ship. Most of the actual interactions take place between objects defined in the same coordinate system - a player inside a ship can't shoot one on a planet surface - which makes things simpler too.

Operations between coordinate systems are mostly straightforward too - you just "add" [2] the difference between the coordinate systems after doing the calculations for each object in its own coordinate system. You can lose precision at this stage if the difference between the coordinate systems is large ... but if you do, it doesn't matter, because the distance between the two objects should be so much larger than the lost precision that it's still "good enough" for whatever calculation you wanted to do. Most inter-coordinate translations are going to be done for display purposes, where the final imprecision is going to be thousandths of a pixel if that.
I understand that on the basis that we are still talking about external reference points as an observer. The game currently does this as I believe you can see a team beacon of a player whilst on approach to a planet in supercruise, whether they are in a ship, SRV or onfoot.

Essentially the hard parts of the problem had to be solved to do things like a Coriolis station with a ship landing at it and a pilot looking out the ship's window, all orbiting a planet - which worked fine well before 1.0! - and everything else should just be implementations of that.
Ok, so this is where I'm still not entirely clear on the matter. Given this example, I can see that there's a lot going on, but nowhere as much as my example. In one of the prior explanations you said:

You can lose precision at this stage if the difference between the coordinate systems is large ... but if you do, it doesn't matter, because the distance between the two objects should be so much larger than the lost precision that it's still "good enough" for whatever calculation you wanted to do.
From the perspective of player A in supercruise, I see what you explain as being true, no problem. The question I still have is that for the four free roaming players on Ship B, would not the amount of precision lost when calculating their coordinate positions, which would be a statistical zero in most instances when compared to the motion of a ship moving at 55c whilst trying to escape an interdiction, be enough to eject them out of the ship and 7ls behind the ship?

What I'm hearing is that this nested approach somehow leads to a scenario where the coordinate changes of the free roaming avatars are essentially walled off compared to the coordinate changes of the ship moving at 55c, hence you stating that they are irrelevant. Am I understanding that correctly?

Which then begs the question; given the real time synchrony required for everything to happen, how is that achieved? Is it calculated via stacked interrupts or something of that nature?

It's this part that I'm trying to understand; how is accomplished so easily when I hear the "It should be no problem" response. Though forgive me, I'm hardheaded when I want to understand something, and I understand I'm talking about math/coding way out of my league, apart from having what I think is a conceptual understanding (maybe lol) of the problems involved.

[1] If you try to do everything in a unified worldspace coordinate system, then yes, you'd get huge problems with imprecision on the scale of an ED system. Even just moving or rotating a ship might start to fail once you get too far from the star.
Being that there are instances of asteroid rings around stars being so great that the edges all line up due to (64bit?) rounding errors, would that provide a clue to the way Frontier display the system? And if so, would it resemble something like the above?
 
Last edited:
From the perspective of player A in supercruise, I see what you explain as being true, no problem. The question I still have is that for the four free roaming players on Ship B, would not the amount of precision lost when calculating their coordinate positions, which would be a statistical zero in most instances when compared to the motion of a ship moving at 55c whilst trying to escape an interdiction, be enough to eject them out of the ship and 7ls behind the ship?

What I'm hearing is that this nested approach somehow leads to a scenario where the coordinate changes of the free roaming avatars are essentially walled off compared to the coordinate changes of the ship moving at 55c, hence you stating that they are irrelevant. Am I understanding that correctly?

Which then begs the question; given the real time synchrony required for everything to happen, how is that achieved? Is it calculated via stacked interrupts or something of that nature?

It's this part that I'm trying to understand; how is accomplished so easily when I hear the "It should be no problem" response. Though forgive me, I'm hardheaded when I want to understand something, and I understand I'm talking about math/coding way out of my league, apart from having what I think is a conceptual understanding (maybe lol) of the problems involved.

Let’s see if I can explain…

As I understand such things, for the players in ship B, the game will always calculate their movements through their ship relative to ship B, not ship A, so they will never find themselves outside the ship. The movements of both ships will be a separate calculation.

From the perspective of the player in ship A, it is possible that they might see the players in ship B “clip out” of their ship due to network desync, but
a) it would be a momentary illusion​
b) we’re talking Supercruise distances, so the ship isn’t likely to be rendered thanks to being too far away​
c) the differences in scale between ship and human avatar will largely ensure that the visual glitch will be missed, even if the ship was rendered​
Bottom line is, any “problems” are likely to be visual glitches, and the only time you’re likely to see them is if you’re close enough to see the interior of the ship. Any competent development team would also put conditions in their engine on relative speeds as well, in order to keep both processing overhead and network load smaller.

It’s why stations in Supercruise aren’t rendered, even at distances where they should be, and are in real space. Under normal gameplay, you might be able to identify major structures for a few frames. Rendering them would require extra resources that would only come into play in a very rare edge case, so why not keep things simple?

This is also why players on a station concourse can move freely through it, despite the fact that said concourse is affixed to the interior of a spinning cylinder, and yet are visible to a ship freely floating inside that cylinder through the concourse windows, and vice versa.
 
Given this example, I can see that there's a lot going on, but nowhere as much as my example
It sounds less, but it involves a similar number of distinct reference frames
- the player (and therefore the viewpoint for display) are on board the ship, which is rotating and moving within ...
- the station interior, which is rotating relative to ...
- the station instance, which is moving and rotating around ...
- the planet, which is moving through the star system

So if the player looks from their ship through the mailslot, their orientation relative to the background starfield - and therefore which bit of it they can see and which way up it is - is a combination of four separate reference frames.

Your example has the motions be at higher speed and less predictable, but I'll try to explain below why that doesn't matter.

What I'm hearing is that this nested approach somehow leads to a scenario where the coordinate changes of the free roaming avatars are essentially walled off compared to the coordinate changes of the ship moving at 55c, hence you stating that they are irrelevant. Am I understanding that correctly?
Yes.

You're walking about the deck of the ship, at ship coordinates 0,0,2 and you move to coordinates 0,1,3
The ship meanwhile moves from system coordinates [three extremely big numbers] to coordinates [three extremely big numbers]

Your final position (relative to the system) is then the "sum" of those two coordinates.


What a game developer could do instead (but very definitely shouldn't!) is say that you and the ship are both at slightly different [extremely big numbers], then when you try to move within the ship that gives you a very slightly different velocity to the ship, and so your final coordinates are [extremely big numbers] and the ship's final coordinates are [extremely big numbers] ... and at that point, yes, the calculation errors introduced by imprecision probably lead to you taking a single step and being catapulted several hundred kilometres outside the ship.

Which then begs the question; given the real time synchrony required for everything to happen, how is that achieved? Is it calculated via stacked interrupts or something of that nature?
I have no idea how Frontier does it, so can only say how I'd do it, of course ... but it shouldn't be all that difficult in principle. The game doesn't need to run in continuous time - it just needs to simulate quantised steps at least as fast as the display hardware can show them.

So a basic program flow could be like this
- determine objects relevant to the current instance, and what frame of reference "owns" those objects
- run their individual routines [1] to calculate their move for the next 1/60th second, relative to their owning frame of reference. Because the time step is so small, you can do this in series one after the other and the errors that introduces with collision detection or "I wouldn't have done that if I'd known you were going to do that first" should be so small as to be undetectable.
- usually there won't be any, but there might be a need to hand-off an object between two different frames of reference, so if so, calculate its current coordinates in that reference, add it to that reference and delete it from the old one. (Say, when a player ship moves from "system space" to "planet space" in supercruise)
- determine the position and current frame of reference of the camera
- calculate every object's position relative to the camera frame of reference
- run the display routines to show the picture
- back to the top for another run

(There are plenty of refinements possible here and Frontier probably has done at least some of them)

The key from this is that it doesn't really matter how fast or unpredictably something is moving - it's the same "was here, is now here" calculation at every 1/60 second step whether something is moving at 1m/s on a predictable ballistic trajectory, or at 55c being controlled by a player trying to break an interdiction, it's still just adding two numbers together in response to input conditions. If the player turns a completely different way in the next frame ... well, the game adds on those different numbers and carries on.

[1] For an NPC, determined by their AI. For a planet or asteroid, probably determined by an extremely simple "AI" which tells it to rotate and move on its orbit. For a player, determined by active controller inputs. For objects "owned" by another computer - e.g. another player - determined by an interpolation routine that receives updates from that other computer and tries to smooth out and guess trajectories (so, rubberbanding if it gets it wrong - but rubberbanding only within the current reference frame for that object). The instance itself might well have an "AI" which tells it to orbit the nearby planet.

For the network inputs, you might have a separate thread just listening for those, and adding them when they're received to the data set for each object. Then the next movement+display calculation done with that object has those network inputs ready and can make use of them. There's some incredible complexity in getting this to work properly and avoid obvious visual artefacts (which is well outside my expertise on the details!) but that's true even if everything is taking place in a single frame of reference at relatively low speeds.
 
Back
Top Bottom