AeroMogul Update #7 (2023/02/17)
Added 2023-02-17 17:25:07 +0000 UTCGreetings everyone,
A friendly reminder for FBS Contributors, voting will end mid-day Saturday, Eastern Unites States time. (Approximately 24 hours from this post.) If you haven't voted already, please do so: https://www.ventdev.com/forums/showthread.php?tid=4401
Work has continued over the last month on AeroMogul despite the GearCity FBS reaching its milestone. Since the previous update, I focused on the logic engine and server system (a.k.a. Beardgine3).
Initial work on networking shows no performance issues passing around 3MB of data between the client and server via LAN. I'll need to do more tests over the internet and with multiple clients, but the client/server design won't be an issue for self-hosted single-player or small LAN-party setups. Soon, I will run the server on a commercial grade web-host. And I'll also need to find a typical American "high-speed" residential connection with open ports to test on. I believe any networking performance issues will pop up during these two tests.
The logic engine poses a major architectural challenge to what I have planned for the game. I've replaced all the placeholder functionality shown in the client pictures with the logic engine. That means aircraft, airport, engine, and manufacturer company data containers and placeholder data. I've also thrown in the route data containers needed for the game. I'm now working on world data, which is the crux of the game's innovation. Sadly, I can't go into details about what I am doing in this respect because 1) It's very early in its design, 2) There is enough competition in this space that I don't want the details of what it is and how it works to come out before the game is ready to release. I don't want to lose my competitive advantage.

Suffice it to say, if it works, the game will handle passenger traffic and demand in a more realistic and dynamic way than I have ever seen in Airline sims. Or any business game. A lot of world data is the key to formulas to do that. However, this is an extremely complex problem to process quickly on consumer hardware. To give you an idea, GearCity's largest map has 274 cities with about 22 data points (6028 total). We only use 9 of those when calculating sales (2466 total). Aeromogul population data alone has over 1,000,000 data points. That's one of 20 planned data sets.
Currently, I'm trying to implement it in a (relatively) simpler and much more portable manner. That means Beardgine3 could work on anything from a weak Raspberry Pi to 192-core super servers. If that fails, I will have to venture into GPGPU programming. My first choice for this would be OpenCL, but unfortunately, Apple's NIH syndrome resulted in them removing OpenCL support (and they even invented OpenCL!), which means I would have to use compute shaders. My first choice would be OpenGL compute shaders. But once again, Apple ruins it for everyone else. So I would have to use Vulkan compute shaders. They're more complex and verbose. And technically not supported on Apple products, but they can work via a shim until Apple decides to break that anyway. It's probably easier to drop Apple support.
If what I am doing now doesn't work, and GPGPU is too complex or doesn't work fast enough, I'll go about simplifying the system. Even a simplified version of what I have planned will still be leaps and bounds ahead of anything else made or on the horizon.
Beardgine3 currently makes heavy use of multithreading. A 4-core CPU is likely our minimum requirement, with 8, 12, or even 16 recommended. The recommended amount may come down if we use GPGPU, but the GPU requirements go up significantly, and we're limited to specific GPUs.
So that's that. I'm working on the base of the world data now. Then I will implement a very basic passenger demand system to see if the program can process that much data. If it can, I'll slap in a basic AI to make routes, calculate those route sales, and start cramming more data onto the system. At some point, I'll make a testing client to stress-test the number of connections the game can handle by having the client simulate a human player. If that's all good, then the basic functionality can be ported to the client UI, at which point we have a very rudimentary game for everyone to test out.
Work on these things will be delayed slightly as GearCity FBS Milestone #1 takes precedence. I begin working on that Monday. While I work on that, I will have limited time for AeroMogul. I expect only a month's delay, but it could take a little longer since it seems the community funded many discounted bounties this go around.