The Star Citizen Thread V10

Status
Thread Closed: Not open for further replies.
So when SC gets released in 2020 2021 2022 2023 2024 2025 (rand() % 5 + 1) years into the future, the CryEngine 3 Lumberyard engine still be viable because of object streaming?

Surely object streaming will mean a reduction in fidelity?
 
Now now, we cannot have soap until the following systems are online:

  • Melee system (being worked on)
  • Bounty hunting (being worked on)
  • Law enforcement system (tier 1 implemention active)
  • Incarceration system
  • Soap interaction system
  • Shower system
  • Prison gang system
  • Prison fight system
  • Fetal position crying in a corner mocap
When all those are applied we can have full fidelity drop-the-soap action with shower combat action and post shower dramatic scenes.
And, of course, none of that will be possible without SSOCS, or without whatever's going to replace SSOCS as the next buzzword-heavy fantasy technology that will be guaranteed to solve all of SC's limitations, until it doesn't.
 
Well, the new buzzword-heavy fantasy technology is already here: fibers!

Specifically:
The solution we have chosen is utilizing Fibers. A Fiber is an execution state where we can control exactly when and where we want to execute it (parallel loading or game simulation). While Fibers can be very tricky to use, they provided exactly the control we needed. With Fibers, we could move the logic for resource loading between concurrent loading threads and game simulation threads, depending if the component type supported parallel loading or not. And with that, it was possible to step-by-step adjust more and more code to run in parallel while ensuring that everyone uses (and thus tests) the already parallelized code. Those changes were partially rolled out with Alpha 3.2, where they reduced the stuttering caused by loading entity resources at runtime, like spawning ships.
Now, this isn't fantasy, as such — fibres are a real concept. So real, in fact, that it has already been tried and tested and proven to be wholly inadequate for all conceivable applications since every other solution is infinitely better, to the point where people who actually knew what they were doing abandoned the whole thing over a decade ago:
Nishanov said:
Fibers (sometimes called stackful coroutines or user mode cooperatively scheduled threads) and stackless coroutines (compiler synthesized state machines) represent two distinct programming facilities with vast performance and functionality differences.

This paper highlights efficiency, scalability and usability problems of fibers and reaches the conclusion that they are not an appropriate solution for writing scalable concurrent software

[…]

We have accumulated more than a quarter century of experience with fibers across variety of programming languages and platforms. In the 90s fibers and N : M scheduling looked promising, now, with improvements in hardware, operating system kernel and painful experience of trying to make the fibers work has resulted in a recommendation: DO NOT USE FIBERS! Use threads instead and/or write your code using asynchronous APIs with hand-crafted state machines.

[…]

Current recommendation [in Windows] is to avoid using fibers and UMS. This advice from 2005 remains unchanged:
instead of spending your time rewriting your app to use fibers (and it IS a rewrite), instead it's better to rearchitect your app to use a "minimal context" model -instead of maintaining the state of your server on the stack, maintain it in a small data structure, and have that structure drive a small one-thread-per-cpu state machine.

[…]

[In Solaris] After exploring N:M programming model for 7 years, Sun Microsystem abandoned it in favor of simpler 1:1 threading.

[…]

[In Linux] Similarly, after exploring N:M model for a bit, Linux kernel adopted 1:1 threading since kernel 2.6

[…]

[in POSIX] After providing facilities for user-mode stack switching (ucontext_t) for 8 years, POSIX deprecates and removes it.

[…]

Facebook has deployed fibers internally for 5 years and now “... looking to migrate away from it as soon as we are confident of the direction [stackless] Coroutines will go in in the standard. We already try to dissuade non-experts from using them as much as possible, but in the absence of anything better they occasionally do.”.

[…]

The only programming language among top 10 most popular languages according to TIOBE index [TiobeIndex] that provides fibers is Go. Go programming language uses fibers successfully, but incurs a very high cost (~160ns) whenever it has to interoperate with C libraries, due to the need to swap in normal stack [GoOverhead]. That is not acceptable for C++ where the ability to seamlessly and efficiently interoperate with existing code is very important.

[…]

Conclusion: While fibers may have looked like an attractive approach to write scalable concurrent code in the 90s, the experience of using fibers, the advances in operating systems, hardware and compiler technology (stackless coroutines), made them no longer a recommended facility.
CI¬G — always on the cutting edge of obsolescence and abandoned decades-old tech, and always without a clue that everyone else has moved on from this supposedly “new” thing.

This post has been stolen wholesale from nasty ebil goons.
 
Last edited:
CI¬G — always on the cutting edge of thing of obsolescence and abandoned decades-old tech without a clue that everyone else has moved on from this supposedly “new” thing.
Genuine Roberts is already busy coding in the garage of his mansion inventing preemptive multitasking. Just you wait and see!
 
Well I think my computer saved me. This was the second time I've tried to play SC during free fly. First time, the game ended up being "house arrest simulator" as all I could do was get out of bed. The icon to open the door wouldn't work. This week, I tried to download the game twice and in both cases, I received error messages so I gave up again. I guess I will check back when the game is completed...whenever that is.
 
I'm sure everyone is crafting their thoughts on not including fibers in C++.

Anyways:

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0866r0.pdf

Microsoft has submitted P1364R0: Fibers under the magnifying glass.[1] Unfortunately that glass is not entirely clean. Not only is that paper misleading by implication, but it contains several outright misstatements. Since P1364 questions whether fiber technology belongs in the C++ Standard at all,1 it is important to be aware of these unfortunate errors.
 
…and when even the attempted objection confirms the fundamental issues and inapplicability, you know the idea is in trouble. :D

Also, to Archer some more:
Tokamak said:
The example use-case (deferring initialisation of unneeded components of a spawning spaceship until required) is trivially solved with regular threads, but after reading more of the article I think they have much greater ambitions.

The use of fibers is emblematic of the way they have developed the engine 'on the go'. Whenever they implement a new feature, it is implemented on a per parent-object basis. This was okay when there were only a few ships and one location, so the copy/pasting was relatively minimal and trouble free. As they kept adding new content, it made implementing features a huge burden and forced them to come up with 'Object 2.0' (which provides a framework to 'macro' in features as needed). The side effect is that there is no real separation of concerns, and everything is poorly encapsulated. It has also led to a combinatorial object explosion, with everything simultaneously doing its own thing... poorly.

Untangling the big ball of 💩 would necessitate a rebuild of the engine and game assets, which isn't going to happen. They have realised that a lot of the game/object data is 'sparse', and only a small amount of it needs to be running at one time. It seems like the solution is to split up the game into logical chunks by sticking each parent-object inside its own fiber. So you end up with ship fibers, landing zone fibers, point of interest fibers, planet_surface[x, y] fibers... with the idea that you'd just freeze and unfreeze each fiber wholesale, rather then having to manage the individual components inside the chunk of poopoo.

I can see this becoming the basis for server meshing. They could extend the fiber functionality to allow fibers to be transferred between servers. So as a server reaches 100% utilisation, they could spin up a new server, transfer half of the active fibers, then transfer the relevant players over. While none of this is exactly seamless, you could see how someone might come to the conclusion that fibers are a solution to the pile CIG has created.

CIG has made a ginormous batch spaghetti, so why not split up the spaghetti into individual containers of spaghetti, stick them in the freezer, and then thaw as needed. That way everybody gets a plate of spaghetti when they want it and when you no longer want spaghetti, you can pop it back in the freezer for the next person. It also means you can cook more spaghetti to freeze without worrying the old spaghetti. This is a very good and sane plan and we can foresee no problems with juggling a million containers of frozen spaghetti.
 
Last edited:
Every couple of months or so I drop in on Star Citizen to see if anything has changed. CGI's approach to development seems in many ways to be the opposite of FDev. FDev says nothing but keeps making incremental improvements to the game. CGI runs off at the mouth expounding on how great they are doing and the game remains buggier than a quarter-billion dollar bag full of cockroaches. Zoom the view in while in the cockpit and it will not zoom back out. Get out of the chair to reset the view and the QT HUD disappears. Get landing clearance at Port Olisar, maneuver to the indicated landing pad only to receive a warning "Blocking Landing PAD!". Try to set a course and cannot get an icon in the HUD. Set course to another destination, then set the original destination and whoopee! the icon appears but Quantum drive will not engage.

FUBAR 🤮
 
Every couple of months or so I drop in on Star Citizen to see if anything has changed. CGI's approach to development seems in many ways to be the opposite of FDev. FDev says nothing but keeps making incremental improvements to the game. CGI runs off at the mouth expounding on how great they are doing and the game remains buggier than a quarter-billion dollar bag full of cockroaches. Zoom the view in while in the cockpit and it will not zoom back out. Get out of the chair to reset the view and the QT HUD disappears. Get landing clearance at Port Olisar, maneuver to the indicated landing pad only to receive a warning "Blocking Landing PAD!". Try to set a course and cannot get an icon in the HUD. Set course to another destination, then set the original destination and whoopee! the icon appears but Quantum drive will not engage.

FUBAR 🤮
All of those are mentioned in the patch notes conveniently placed right there in the launcher... so you can be aware of those particular annoyances before even launching the game the project... strangely enough ;)
 
Last edited:
Status
Thread Closed: Not open for further replies.
Top Bottom