vvvvvvvv wrote: ↑Mon, 14. Jul 25, 16:05
You're revisiting months old thread.
For me it dates just a single argument back. Nothing else has changed, so everything in question is still valid.
vvvvvvvv wrote: ↑Mon, 14. Jul 25, 16:05
Well I do see the difference, and scenarios were provided before. Tracking ships via IDS.
OK, Tracking ships via IDS it is. Now, how do you receive the specific ship's ID and what do you use this tracking for?
E.g. in user story I have linked above, a pirate has made itself notable to the player when it attacked and destroyed his resources. Its ship's ID has become more than some random number. Before this event has occured, it held no real difference from dozens upon dozens of the same random pirates. So if it has appeared out of thin air at the moment just before the engagement, the player would not know the difference. What's more, after some time the player wasn't able to find this pirate. As such, if this notorious pirate has dissolved into a pirate threat statistics after a while, he would also be oblivious to that.
So, between these two events this ship was notable and its ID held some meaning. Before and after it was just some unusable information -- was it not?
vvvvvvvv wrote: ↑Mon, 14. Jul 25, 16:05
I'm gonna invoke ED as many times as needed, because it is a perfect illustration of a wrong way to do it. All ships in this game are fake. As in you arrive at distant carrier in the middle of nothing, and t here are freight ships buzzing arounds none of them delivering a thing to the ship.
It can be used as a story of how not to implement stuff relevant here, but its world is semi-static in general. You push some numbers around with your actions, but that only reflects on event accessibility in systems, and only at the extremes of those numbers. In between, there's little (if any) difference. As such, I fail to see how invoking this example can help us in anything but illustrate difference between fully living world and a (semi)static one. Since we're discussing different implementations of fully living world, this example does not seem to hold value. Aforementioned Falcon 4/BMS is much better illustration since it is a relevant example with living world, not a static cone.
vvvvvvvv wrote: ↑Mon, 14. Jul 25, 16:05what I like and what I do not like
You have explicitly explained what is it you like. I'm not questioning that, I'm asking about why do you like it this way and why would you dislike it another way.
vvvvvvvv wrote: ↑Mon, 14. Jul 25, 16:05
Shadow_rainbow wrote: ↑Sun, 13. Jul 25, 23:15
The game becomes slow because it starts overcomputing. You don't need a profiler or a source code to see that.
No, you absolutely need both.
Saying "Oh it is so OBVIOUS" is a common programmer error. People ASSUME they know what the cause is and waste time. That's the reason why "premature optimization is root of all evil".
Operate with expectation of your assumptions of performance being wrong by default. Only trust tools.
Premature optimization is a must for any project. Otherwise, you end up with a project designed from bottom to top in almost evolutionary way (which is exactly what you want to avoid). You
calculate computational complexity of all branches of your code, you set them up in threads to sync in a fashion that minimizes wait time (being fully aware of input device/OS-induced or other delays), you have certain plans and expectations on how the project will operate way before you write the first line of code. Some projects (real time ones, mostly) are impossible without this approach. Non-real time ones - like OS, general software, games, etc - can be done with down-to-top approach, but this is a straight up mistake in engineering it as a system.
And no, if available computing power does not allow for the computing program to compute in its allowed time space, it means it overcomputes -- something, somewhere. This does not specify where the does the overload occur -- in one of many system queues, in memory bandwidth or wherever else it can get stuck -- but simply states the calculation required is not on scale with computational power available. What you know is when it happens to an ingame world, this is a problem.
What you need system tools to analyze the code for, exactly, is understanding just that -- where and why does this problem occur. But using those is a job for a person trained in a system analysis and certainly not a simple user. Besides, I do not believe X4 code base is open-source, so only Egosoft employees must have access to the key part of the equation.
What's even worse, knowing the point where it all starts to clog up, does not mean you have a solution. Unless you're doing parallel RnD and building your project from the ground up. Which is bound to create much more problems down the road -- to the point of complete redesign large parts of the whole project (top-down, preferably).
Besides, even if you have your choke point -- what do you do? Overclock your memory? Replace your whole rig? But this won't solve the problem in principle -- it will still slow down, just in a bit more time/a bit larger engagement. See Eyeklops' post above to understand the problem is not in computing hardware.
vvvvvvvv wrote: ↑Mon, 14. Jul 25, 16:05
Shadow_rainbow wrote: ↑Sun, 13. Jul 25, 23:15
But what you're talking about is already visibly hurting simulation quality. I've seen graviton turret lob a red ball at me through K's hull just a few hours back. And if
That's not simulation quality that's someone forgetting to toggle collision flag when ship moves from OOS to IS. A bug and not performance optimization. Only affects Ks sometimes, appeared around 7.50.
I remember seeing stuff successfully shooting through corners not only with K's turrets some times before. So it does not appear to be this specific bug.
vvvvvvvv wrote: ↑Mon, 14. Jul 25, 16:05
A ten years old computer should be able to handle roughly ten thousand graviton balls, by the way. On a single core. You need the right collision algorithm. Sweep and prune works.
As for tens of thousands bullets, at least in aircraft sims they generally aren't computed directly. Instead, they are checked for object intersections via trajectory analysis -- so you can have about as many as you like. It's what happens when these hit something that can stall the game engine to a halt.
And yes, computing power today is day and night compared to what what existed in Descent Free Space times. BTW you can stall its engine too (which some enthusiast-made modern campaigns for it can do even on modern hardware), but never with Volition-produced missions. Knowing engine limitations and working around those is just as essential as making the engine work in the first place.