# Xplane Streaming project with Combination of my PhD 

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. 



## The short term plan: 
- [ ] To do a full review of all the work currently complete. 
- [ ] To sync with Decenode to test the monetized version of the p2p network. 
- [ ] To set up clusters for testing Xplane 11.
- [ ] To set up nice documentation for setting up the Xplane 11 project. 
- [ ] To allow players to play around with the Xplane 11 game as Beta testers. 
- [ ] Plans for constant updates for the project broadcasted to the community. 
- [x] To sync with developers interested in the project and track how much potential contribution is possible from an external community. 
- [ ] Start planning ways to incentivize developers interested in working on the project. 
