added initial work for the flight sim documentation

This commit is contained in:
2025-04-06 12:44:55 +01:00
parent ed7a0f2a51
commit af48a2c184
8 changed files with 495 additions and 0 deletions

244
Flightsimarch.draw.io Normal file
View File

@@ -0,0 +1,244 @@
<mxfile host="app.diagrams.net" agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36" version="26.1.2">
<diagram name="Page-1" id="__5JCvxA0D70qX0Vuzql">
<mxGraphModel dx="1194" dy="612" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="4l1B-kHWoHOF4SqSswqb-2" value="" style="rounded=0;whiteSpace=wrap;html=1;shadow=1;" vertex="1" parent="1">
<mxGeometry x="130" y="210" width="140" height="300" as="geometry" />
</mxCell>
<mxCell id="4l1B-kHWoHOF4SqSswqb-17" value="" style="rounded=0;whiteSpace=wrap;html=1;shadow=1;" vertex="1" parent="1">
<mxGeometry x="140" y="395" width="120" height="105" as="geometry" />
</mxCell>
<mxCell id="4l1B-kHWoHOF4SqSswqb-1" value="Xplane flight slim&lt;div&gt;60 mb binary&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;shadow=1;" vertex="1" parent="1">
<mxGeometry x="140" y="240" width="120" height="220" as="geometry" />
</mxCell>
<mxCell id="4l1B-kHWoHOF4SqSswqb-3" value="Custom kernel" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="140" y="210" width="90" height="30" as="geometry" />
</mxCell>
<mxCell id="4l1B-kHWoHOF4SqSswqb-4" value="Flight sim UDP Apis" style="rounded=0;whiteSpace=wrap;html=1;shadow=1;" vertex="1" parent="1">
<mxGeometry x="140" y="432.5" width="120" height="30" as="geometry" />
</mxCell>
<mxCell id="4l1B-kHWoHOF4SqSswqb-5" value="" style="rounded=0;whiteSpace=wrap;html=1;shadow=1;" vertex="1" parent="1">
<mxGeometry x="340" y="10" width="190" height="160" as="geometry" />
</mxCell>
<mxCell id="4l1B-kHWoHOF4SqSswqb-6" value="Network of scenery files" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="340" y="10" width="190" height="30" as="geometry" />
</mxCell>
<mxCell id="4l1B-kHWoHOF4SqSswqb-8" value="dxb" style="rounded=0;whiteSpace=wrap;html=1;shadow=1;" vertex="1" parent="1">
<mxGeometry x="360" y="50" width="60" height="20" as="geometry" />
</mxCell>
<mxCell id="4l1B-kHWoHOF4SqSswqb-9" value="lax" style="rounded=0;whiteSpace=wrap;html=1;shadow=1;" vertex="1" parent="1">
<mxGeometry x="440" y="50" width="60" height="20" as="geometry" />
</mxCell>
<mxCell id="4l1B-kHWoHOF4SqSswqb-10" value="" style="endArrow=none;dashed=1;html=1;dashPattern=1 3;strokeWidth=2;rounded=0;exitX=1;exitY=0.75;exitDx=0;exitDy=0;entryX=0;entryY=0.75;entryDx=0;entryDy=0;" edge="1" parent="1" source="4l1B-kHWoHOF4SqSswqb-8" target="4l1B-kHWoHOF4SqSswqb-9">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="390" y="330" as="sourcePoint" />
<mxPoint x="440" y="280" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="4l1B-kHWoHOF4SqSswqb-12" value="" style="endArrow=none;dashed=1;html=1;dashPattern=1 3;strokeWidth=2;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="469.5" y="110" as="sourcePoint" />
<mxPoint x="469.5" y="70" as="targetPoint" />
<Array as="points">
<mxPoint x="469.5" y="90" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="4l1B-kHWoHOF4SqSswqb-13" value="N" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="440" y="110" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="4l1B-kHWoHOF4SqSswqb-14" value="" style="endArrow=classic;html=1;rounded=0;exitX=0;exitY=0.431;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.75;entryY=0;entryDx=0;entryDy=0;shadow=1;" edge="1" parent="1" source="4l1B-kHWoHOF4SqSswqb-5" target="4l1B-kHWoHOF4SqSswqb-1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="320" y="120" as="sourcePoint" />
<mxPoint x="440" y="280" as="targetPoint" />
<Array as="points">
<mxPoint x="230" y="80" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="4l1B-kHWoHOF4SqSswqb-15" value="Query required scenery files&amp;nbsp;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="240" y="120" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="4l1B-kHWoHOF4SqSswqb-16" value="Load necessary scenery files" style="rounded=0;whiteSpace=wrap;html=1;shadow=1;" vertex="1" parent="1">
<mxGeometry x="140" y="240" width="120" height="30" as="geometry" />
</mxCell>
<mxCell id="4l1B-kHWoHOF4SqSswqb-18" value="Streaming API" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="170" y="465" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="4l1B-kHWoHOF4SqSswqb-22" value="" style="rounded=0;whiteSpace=wrap;html=1;shadow=1;" vertex="1" parent="1">
<mxGeometry x="330" y="570" width="210" height="210" as="geometry" />
</mxCell>
<mxCell id="4l1B-kHWoHOF4SqSswqb-23" value="User machine" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="405" y="580" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="4l1B-kHWoHOF4SqSswqb-24" value="" style="rounded=0;whiteSpace=wrap;html=1;shadow=1;" vertex="1" parent="1">
<mxGeometry x="340" y="620" width="190" height="150" as="geometry" />
</mxCell>
<mxCell id="4l1B-kHWoHOF4SqSswqb-25" value="Browser" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="340" y="620" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="4l1B-kHWoHOF4SqSswqb-26" value="Playing Xplane 11" style="rounded=0;whiteSpace=wrap;html=1;shadow=1;" vertex="1" parent="1">
<mxGeometry x="350" y="660" width="170" height="80" as="geometry" />
</mxCell>
<mxCell id="4l1B-kHWoHOF4SqSswqb-28" value="" style="endArrow=classic;startArrow=classic;html=1;rounded=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitX=0.006;exitY=0.588;exitDx=0;exitDy=0;exitPerimeter=0;shadow=1;" edge="1" parent="1" source="4l1B-kHWoHOF4SqSswqb-26" target="4l1B-kHWoHOF4SqSswqb-17">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="420" y="610" as="sourcePoint" />
<mxPoint x="470" y="560" as="targetPoint" />
<Array as="points">
<mxPoint x="200" y="710" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="4l1B-kHWoHOF4SqSswqb-29" value="Sending video input&lt;div&gt;and&amp;nbsp;&lt;/div&gt;&lt;div&gt;receiving keyboard and mouse input&lt;/div&gt;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;rotation=-90;" vertex="1" parent="1">
<mxGeometry x="90" y="690" width="130" height="30" as="geometry" />
</mxCell>
<mxCell id="4l1B-kHWoHOF4SqSswqb-31" value="" style="rounded=0;whiteSpace=wrap;html=1;shadow=1;" vertex="1" parent="1">
<mxGeometry x="482" y="860" width="228" height="250" as="geometry" />
</mxCell>
<mxCell id="4l1B-kHWoHOF4SqSswqb-32" value="Fight instructor / stat machine&amp;nbsp;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="511" y="870" width="170" height="30" as="geometry" />
</mxCell>
<mxCell id="4l1B-kHWoHOF4SqSswqb-33" value="" style="endArrow=classic;startArrow=classic;html=1;rounded=0;entryX=1;entryY=0.25;entryDx=0;entryDy=0;" edge="1" parent="1" target="4l1B-kHWoHOF4SqSswqb-4">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="200" y="540" as="sourcePoint" />
<mxPoint x="460" y="490" as="targetPoint" />
<Array as="points">
<mxPoint x="320" y="540" />
<mxPoint x="320" y="440" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="4l1B-kHWoHOF4SqSswqb-34" value="" style="endArrow=none;dashed=1;html=1;dashPattern=1 3;strokeWidth=2;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="1" source="4l1B-kHWoHOF4SqSswqb-2">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="410" y="790" as="sourcePoint" />
<mxPoint x="360" y="360" as="targetPoint" />
<Array as="points" />
</mxGeometry>
</mxCell>
<mxCell id="4l1B-kHWoHOF4SqSswqb-35" value="&lt;h1 style=&quot;margin-top: 0px;&quot;&gt;N&lt;/h1&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;" style="text;html=1;whiteSpace=wrap;overflow=hidden;rounded=0;shadow=1;" vertex="1" parent="1">
<mxGeometry x="376" y="341.25" width="28" height="37.5" as="geometry" />
</mxCell>
<mxCell id="4l1B-kHWoHOF4SqSswqb-36" value="" style="endArrow=none;dashed=1;html=1;dashPattern=1 3;strokeWidth=2;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="520" y="699.5" as="sourcePoint" />
<mxPoint x="630" y="700" as="targetPoint" />
<Array as="points" />
</mxGeometry>
</mxCell>
<mxCell id="4l1B-kHWoHOF4SqSswqb-37" value="&lt;h1 style=&quot;margin-top: 0px;&quot;&gt;N&lt;/h1&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;" style="text;html=1;whiteSpace=wrap;overflow=hidden;rounded=0;shadow=1;" vertex="1" parent="1">
<mxGeometry x="640" y="681.25" width="28" height="37.5" as="geometry" />
</mxCell>
<mxCell id="4l1B-kHWoHOF4SqSswqb-38" value="" style="rounded=0;whiteSpace=wrap;html=1;shadow=1;" vertex="1" parent="1">
<mxGeometry x="494" y="920" width="206" height="170" as="geometry" />
</mxCell>
<mxCell id="4l1B-kHWoHOF4SqSswqb-40" value="Browser" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="500" y="920" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="4l1B-kHWoHOF4SqSswqb-43" value="" style="rounded=0;whiteSpace=wrap;html=1;shadow=1;" vertex="1" parent="1">
<mxGeometry x="500" y="950" width="192" height="60" as="geometry" />
</mxCell>
<mxCell id="4l1B-kHWoHOF4SqSswqb-39" value="User machine" style="rounded=0;whiteSpace=wrap;html=1;shadow=1;" vertex="1" parent="1">
<mxGeometry x="505.5" y="975" width="49" height="30" as="geometry" />
</mxCell>
<mxCell id="4l1B-kHWoHOF4SqSswqb-42" value="N" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;shadow=1;" vertex="1" parent="1">
<mxGeometry x="652" y="975" width="40" height="30" as="geometry" />
</mxCell>
<mxCell id="4l1B-kHWoHOF4SqSswqb-46" value="Group of machines&amp;nbsp;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;shadow=1;" vertex="1" parent="1">
<mxGeometry x="520" y="950" width="148" height="20" as="geometry" />
</mxCell>
<mxCell id="4l1B-kHWoHOF4SqSswqb-49" value="" style="endArrow=classic;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;shadow=1;" edge="1" parent="1" source="4l1B-kHWoHOF4SqSswqb-39">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="410" y="960" as="sourcePoint" />
<mxPoint x="600" y="700" as="targetPoint" />
<Array as="points">
<mxPoint x="410" y="990" />
<mxPoint x="410" y="800" />
<mxPoint x="600" y="800" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="4l1B-kHWoHOF4SqSswqb-50" value="" style="endArrow=none;dashed=1;html=1;dashPattern=1 3;strokeWidth=2;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="4l1B-kHWoHOF4SqSswqb-39" target="4l1B-kHWoHOF4SqSswqb-42">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="410" y="790" as="sourcePoint" />
<mxPoint x="460" y="740" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="4l1B-kHWoHOF4SqSswqb-52" value="" style="endArrow=classic;html=1;rounded=0;shadow=1;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="200" y="710" as="sourcePoint" />
<mxPoint x="410" y="890" as="targetPoint" />
<Array as="points">
<mxPoint x="200" y="890" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="4l1B-kHWoHOF4SqSswqb-53" value="Flight statistics&lt;div&gt;and control flight scenario&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;shadow=1;" vertex="1" parent="1">
<mxGeometry x="514" y="1030" width="160" height="50" as="geometry" />
</mxCell>
<mxCell id="4l1B-kHWoHOF4SqSswqb-54" value="" style="endArrow=classic;startArrow=classic;html=1;rounded=0;exitX=0.456;exitY=0.1;exitDx=0;exitDy=0;entryX=0.453;entryY=0.95;entryDx=0;entryDy=0;entryPerimeter=0;exitPerimeter=0;shadow=1;" edge="1" parent="1" source="4l1B-kHWoHOF4SqSswqb-53" target="4l1B-kHWoHOF4SqSswqb-43">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="430" y="860" as="sourcePoint" />
<mxPoint x="480" y="810" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="4l1B-kHWoHOF4SqSswqb-56" value="" style="rounded=0;whiteSpace=wrap;html=1;shadow=1;" vertex="1" parent="1">
<mxGeometry x="505.5" y="220" width="304.5" height="260" as="geometry" />
</mxCell>
<mxCell id="4l1B-kHWoHOF4SqSswqb-57" value="Game session server and allocation server" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="572.75" y="230" width="170" height="30" as="geometry" />
</mxCell>
<mxCell id="4l1B-kHWoHOF4SqSswqb-58" value="" style="rounded=0;whiteSpace=wrap;html=1;shadow=1;" vertex="1" parent="1">
<mxGeometry x="530" y="378.75" width="260" height="60" as="geometry" />
</mxCell>
<mxCell id="4l1B-kHWoHOF4SqSswqb-59" value="Group of machines&amp;nbsp;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;shadow=1;" vertex="1" parent="1">
<mxGeometry x="642" y="378.75" width="148" height="20" as="geometry" />
</mxCell>
<mxCell id="4l1B-kHWoHOF4SqSswqb-61" value="" style="endArrow=none;dashed=1;html=1;dashPattern=1 3;strokeWidth=2;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="615.5" y="410" as="sourcePoint" />
<mxPoint x="674" y="410" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="4l1B-kHWoHOF4SqSswqb-60" value="User machine" style="rounded=0;whiteSpace=wrap;html=1;shadow=1;" vertex="1" parent="1">
<mxGeometry x="554.5" y="395" width="49" height="30" as="geometry" />
</mxCell>
<mxCell id="4l1B-kHWoHOF4SqSswqb-63" value="N" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;shadow=1;" vertex="1" parent="1">
<mxGeometry x="674" y="395" width="40" height="30" as="geometry" />
</mxCell>
<mxCell id="4l1B-kHWoHOF4SqSswqb-64" value="Xplane game network allocator" style="rounded=0;whiteSpace=wrap;html=1;shadow=1;" vertex="1" parent="1">
<mxGeometry x="530" y="300" width="150" height="60" as="geometry" />
</mxCell>
<mxCell id="4l1B-kHWoHOF4SqSswqb-66" value="" style="endArrow=classic;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;shadow=1;" edge="1" parent="1" source="4l1B-kHWoHOF4SqSswqb-42">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="681.056" y="950" as="sourcePoint" />
<mxPoint x="720" y="440" as="targetPoint" />
<Array as="points">
<mxPoint x="720" y="990" />
<mxPoint x="720" y="658.98" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="4l1B-kHWoHOF4SqSswqb-67" value="" style="endArrow=classic;startArrow=classic;html=1;rounded=0;exitX=0.285;exitY=0.054;exitDx=0;exitDy=0;exitPerimeter=0;shadow=1;" edge="1" parent="1" source="4l1B-kHWoHOF4SqSswqb-58" target="4l1B-kHWoHOF4SqSswqb-64">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="520" y="530" as="sourcePoint" />
<mxPoint x="570" y="480" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="4l1B-kHWoHOF4SqSswqb-68" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.983;entryY=0.4;entryDx=0;entryDy=0;entryPerimeter=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;shadow=1;" edge="1" parent="1" source="4l1B-kHWoHOF4SqSswqb-64" target="4l1B-kHWoHOF4SqSswqb-1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="520" y="380" as="sourcePoint" />
<mxPoint x="570" y="330" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="4l1B-kHWoHOF4SqSswqb-69" value="Pass in meta-data to load scenery files based on flight route loaded" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="330" y="270" width="120" height="30" as="geometry" />
</mxCell>
<mxCell id="4l1B-kHWoHOF4SqSswqb-70" value="Flight statistics&amp;nbsp;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="330" y="470" width="60" height="30" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

BIN
Flightsimarch.drawio.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 131 KiB

57
flight-proposal.org Normal file
View File

@@ -0,0 +1,57 @@
#+OPTIONS: toc:nil
* Xplane WebRTC
[[./xprc.drawio.png]]
The Xplane WebRTC project takes inspiration from Google Stadia
for a streaming based solution for playing video games. But our
plan is to build one specifically for flight simulators. We target
Xplane 11 for being cross platform and completely offline dependent
on sceneries with reasonable documentation on usage of the SDK to use the game.
The novelty of the project being all aspects of the project will be completely open source.
There are already major segments of the project complete and have been tested which will
be mentioned in the appropriate section for the necessary details. I am also investing
in my PhD to familiarize myself to work with slim down kernels on HPC scenarios
(This will help me extend the Xplane to run on a distributed scenario). This
project is fun long term work and has no heavy deadlines but rather the art of
optimizing the current paradigm of how we use heavy workload applications.
The following above is a really high level abstraction description of the
projects and barely covers the depth of what the project intends to push forward.
The big question is what parts have been rebuilt for the project and how they
contribute to the end goal of the project. The first property of the project is
that it should be able to run on a p2p network. P2PRC is a p2p orchestrator designed
to run applications in a p2p network using Containers initially. There are plans to
extend it to run on Uni-kernels and based on my PhD extend it to run on a Multi-kernel
paradigm as well. This will be our custom alternative to Kubernetes which will be used to
distribute and run on workloads on p2p effectively. This would make our entire run on
Anyone's machine which can reside behind NAT.
We also intend to make an open source solution to distribute a slim down version of X Plane
so that nodes can quickly Spawn Xplane instantly with only the required scenery needed.
This will be in contrast to running the full scenery of the game which is around 55 GB.
Something novel that could be worked on here is a novel approach to only send the scenery
of the flight path when distributing the game. This will mean building parsers for the
Xplane scenery files and then finding techniques to only get a correct set of scenery
files needed in other machines. The techniques are expected to open source but since the
scenery files are proprietary they are expected to be public.
The streaming part of the project is expected to use the browser standard WebRTC sockets
with the corresponding sockets. This is because there is already massive development
of the chromium browser with GPU encoders and decoders for faster performance.
We have already built a prototype which has been tested and seems to work as intended.
The PhD will be one of a long term novel approach which will support Multi-kernels with
TAG based architecture support for running C++ programs more securely. This might mean
most parts of the PhD might not be used. The Multi-kernel approach is definitely an
interesting area to experiment on to figure out how the project would use such an
approach and this open lot of areas of future research and hopefully better
performant flight simulators with better purposed algorithm to offload tasks to
devices such as FPGAs or potato machines in abstraction layer similar to speaking nodes in an network.
* Architecture
This chapter dives into the high architecture design of the
project and each module is communicated in detail on the following
section below.
#+attr_latex: :height 500px
#+CAPTION: High level architecture of the entire project
[[./Flightsimarch.drawio.png]]

54
flight-proposal.org~ Normal file
View File

@@ -0,0 +1,54 @@
#+OPTIONS: toc:nil
* Xplane WebRTC
[[./xprc.drawio.png]]
The Xplane WebRTC project takes inspiration from Google Stadia
for a streaming based solution for playing video games. But our
plan is to build one specifically for flight simulators. We target
Xplane 11 for being cross platform and completely offline dependent
on sceneries with reasonable documentation on usage of the SDK to use the game.
The novelty of the project being all aspects of the project will be completely open source.
There are already major segments of the project complete and have been tested which will
be mentioned in the appropriate section for the necessary details. I am also investing
in my PhD to familiarize myself to work with slim down kernels on HPC scenarios
(This will help me extend the Xplane to run on a distributed scenario). This
project is fun long term work and has no heavy deadlines but rather the art of
optimizing the current paradigm of how we use heavy workload applications.
The following above is a really high level abstraction description of the
projects and barely covers the depth of what the project intends to push forward.
The big question is what parts have been rebuilt for the project and how they
contribute to the end goal of the project. The first property of the project is
that it should be able to run on a p2p network. P2PRC is a p2p orchestrator designed
to run applications in a p2p network using Containers initially. There are plans to
extend it to run on Uni-kernels and based on my PhD extend it to run on a Multi-kernel
paradigm as well. This will be our custom alternative to Kubernetes which will be used to
distribute and run on workloads on p2p effectively. This would make our entire run on
Anyone's machine which can reside behind NAT.
We also intend to make an open source solution to distribute a slim down version of X Plane
so that nodes can quickly Spawn Xplane instantly with only the required scenery needed.
This will be in contrast to running the full scenery of the game which is around 55 GB.
Something novel that could be worked on here is a novel approach to only send the scenery
of the flight path when distributing the game. This will mean building parsers for the
Xplane scenery files and then finding techniques to only get a correct set of scenery
files needed in other machines. The techniques are expected to open source but since the
scenery files are proprietary they are expected to be public.
The streaming part of the project is expected to use the browser standard WebRTC sockets
with the corresponding sockets. This is because there is already massive development
of the chromium browser with GPU encoders and decoders for faster performance.
We have already built a prototype which has been tested and seems to work as intended.
The PhD will be one of a long term novel approach which will support Multi-kernels with
TAG based architecture support for running C++ programs more securely. This might mean
most parts of the PhD might not be used. The Multi-kernel approach is definitely an
interesting area to experiment on to figure out how the project would use such an
approach and this open lot of areas of future research and hopefully better
performant flight simulators with better purposed algorithm to offload tasks to
devices such as FPGAs or potato machines in abstraction layer similar to speaking nodes in an network.
* Architecture
#+attr_latex: :height 500px
#+CAPTION: High level architecture of the entire project
[[./Flightsimarch.drawio.png]]

BIN
flight-proposal.pdf Normal file

Binary file not shown.

88
flight-proposal.tex Normal file
View File

@@ -0,0 +1,88 @@
% Created 2025-04-06 Sun 12:44
% Intended LaTeX compiler: pdflatex
\documentclass[11pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{graphicx}
\usepackage{longtable}
\usepackage{wrapfig}
\usepackage{rotating}
\usepackage[normalem]{ulem}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{capt-of}
\usepackage{hyperref}
\author{Akilan}
\date{\today}
\title{}
\hypersetup{
pdfauthor={Akilan},
pdftitle={},
pdfkeywords={},
pdfsubject={},
pdfcreator={Emacs 30.1 (Org mode 9.7.11)},
pdflang={English}}
\begin{document}
\section{Xplane WebRTC}
\label{sec:orgb89245a}
\begin{center}
\includegraphics[width=.9\linewidth]{./xprc.drawio.png}
\end{center}
The Xplane WebRTC project takes inspiration from Google Stadia
for a streaming based solution for playing video games. But our
plan is to build one specifically for flight simulators. We target
Xplane 11 for being cross platform and completely offline dependent
on sceneries with reasonable documentation on usage of the SDK to use the game.
The novelty of the project being all aspects of the project will be completely open source.
There are already major segments of the project complete and have been tested which will
be mentioned in the appropriate section for the necessary details. I am also investing
in my PhD to familiarize myself to work with slim down kernels on HPC scenarios
(This will help me extend the Xplane to run on a distributed scenario). This
project is fun long term work and has no heavy deadlines but rather the art of
optimizing the current paradigm of how we use heavy workload applications.
The following above is a really high level abstraction description of the
projects and barely covers the depth of what the project intends to push forward.
The big question is what parts have been rebuilt for the project and how they
contribute to the end goal of the project. The first property of the project is
that it should be able to run on a p2p network. P2PRC is a p2p orchestrator designed
to run applications in a p2p network using Containers initially. There are plans to
extend it to run on Uni-kernels and based on my PhD extend it to run on a Multi-kernel
paradigm as well. This will be our custom alternative to Kubernetes which will be used to
distribute and run on workloads on p2p effectively. This would make our entire run on
Anyone's machine which can reside behind NAT.
We also intend to make an open source solution to distribute a slim down version of X Plane
so that nodes can quickly Spawn Xplane instantly with only the required scenery needed.
This will be in contrast to running the full scenery of the game which is around 55 GB.
Something novel that could be worked on here is a novel approach to only send the scenery
of the flight path when distributing the game. This will mean building parsers for the
Xplane scenery files and then finding techniques to only get a correct set of scenery
files needed in other machines. The techniques are expected to open source but since the
scenery files are proprietary they are expected to be public.
The streaming part of the project is expected to use the browser standard WebRTC sockets
with the corresponding sockets. This is because there is already massive development
of the chromium browser with GPU encoders and decoders for faster performance.
We have already built a prototype which has been tested and seems to work as intended.
The PhD will be one of a long term novel approach which will support Multi-kernels with
TAG based architecture support for running C++ programs more securely. This might mean
most parts of the PhD might not be used. The Multi-kernel approach is definitely an
interesting area to experiment on to figure out how the project would use such an
approach and this open lot of areas of future research and hopefully better
performant flight simulators with better purposed algorithm to offload tasks to
devices such as FPGAs or potato machines in abstraction layer similar to speaking nodes in an network.
\section{Architecture}
\label{sec:orgcd900b9}
This chapter dives into the high architecture design of the
project and each module is communicated in detail on the following
section below.
\begin{figure}[htbp]
\centering
\includegraphics[height=500px]{./Flightsimarch.drawio.png}
\caption{High level architecture of the entire project}
\end{figure}
\end{document}

52
xprc.drawio Normal file

File diff suppressed because one or more lines are too long

BIN
xprc.drawio.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 MiB