Rebuilding Old Tech for Modern Times: Runtime Modding
Hello potential future Pilots!
As some of you know, beyond.frontiers bases in, by todays standards, very old technology. This is intentional and in this article I will show you why and how.
We base the Engine off DirectX7, but added many different modifications so that you can truthfully say it is “DX7+”, its own deviating standard off the original. DX7+ offers Multithreading, an Asset Manager and much faster runtime processing with direct RAM access Technology. This allows us to enjoy the perks of some modern amenities coupled with compatibility all the way down to Core2Duo Series CPUs but also forces us to near perfect Optimization.
Why am I talking all about this? To show you how you can move from this…
to this…
…without any loading time at all. The game only loads once at startup and never again while you’re playing. This is all made through a thing called runtime file loading. While for some it might feel like it might cause lag until it has loaded fully, this couldn’t be further from the truth.
Following is a Video showing the interaction when toughing the gates event horizon:
https://www.indiedb.com/media/iframe/2659143
Considering this immense speed in generating entire Star systems, this includes only two files: x1y1.bfs and x2y1.bfs. Both files are set with different arguments and cause a total reconstruction of a sector followed by a fast travel function. This for example is the current Developer Sector, in a file called x1y1.bfs:
SystemSeed=37589162
SystemName=Main Sector
SystemSecurity=5
OwnerRace=Developers
BackgroundIndex=6
SunSetup
SunTiltX=15
SunTiltY=20
SunScale=150000
SunColorR=255
SunColorG=255
SunColorB=255
PlanetSetup
PlanetTiltX=-15
PlanetTiltY=150
PlanetScale=1900
PlanetType=19
BeltSetup
BeltPosX=-100000
BeltPosY=0
BeltPosZ=100000
BeltResource=0
BeltRange=200000
BeltAmount=4000
GateSetup
SystemX=2
SystemY=1
GatePosX=100000
GatePosY=0
GatePosZ=0
GateRotation=90
GateAimX=-100000
GateAimY=0
GateAimZ=0
StationSetup
StationName=Miner's Respite
StationPosX=10000
StationPosY=0
StationPosZ=20000
StationType=3
StationRotation=0
StationBuy=1
StationSell=1
StationService=0
StationOwner=33
All this creates a full system within milliseconds, usually around 1 or 2ms. Latest benchmarks on test systems state anything from 1ms on m.2 drives to 4ms on conventional HDDs which are slowly phasing out. To avoid bottlenecking and creating waiting times, you as a player already enter the world while its building. The System creation starts on the same thread as the player handling.
Any line without an Argument, like “StationSetup” tells the parser what kind of dataset follows, reads this in one swoop and creates the needed part of the sector. This is currently the busiest sector of the game, and we’re looking forward to push this system to its limits.
We use the same system through Docking and now even when changing ships. I hope this got your interest in the game! Come visit us both in space through the free demo on itch.io and support the development monthly or one time on Ko-Fi.
Hope to see you soon, Dex
Leave a Reply