This FAQ will be updated over time to reflect the current status of Avionic.dev.

What is Avionic.dev?

Avionic.dev is a game where you write software that controls the flight of rockets.

What is a "programming game"?

It's quite a niche type of game where you complete goals and objective by writing code. I think programming games are cool because they give players a lot of flexibility for creativity, problem solving, and they can be educational!

Why are you making this?

It's quite a niche 'game' which I started making for my own enjoyment. I am hugely excited by the current rate of progression of space technologies, and I am also an avid programmer. There must be at least a handful of people like me, who enjoy programming and space tech, so I decided to start putting out some of my work in public. I have a lot of plans for how I want the project to turn out (see the roadmap below), but no real plans on whether it will become more than a hobby yet. I am excited to set up a beta program and see what the community does with it!

Roadmap

I also am excited by the prospect of it serving as an educational tool - even though "system control software" is quite specific, it also can be very simple and with a few lines of code you can get some impressive results. I am keen to use Avionic.dev myself to begin learning some new programming languages (Crystal, Rust), and also to learn more about how spacecraft are controlled and manoeuvred.

Do I need to know code to play?

Initially yes. Avionic will support a lot of programming languages though, so if you're interested in learning a specific language then you can learn while playing!

In the future I plan to implement a full tutorial system in multiple programming languages - this will be a fun way to learn coding, as well as teaching about systems control methods too!

I also plan to explore some "visual programming languages" - think flowcharts - as another way to allow non-programmers to play.

What programming languages do you support?

You can check out the languages that we support on this page:

Programming Language Support

How does it work?

You start by writing some code in your choice of language which reads some telemetry from its "input" stream, and writes system controls to its "output" stream.

Your code is then run alongside some simulation software on our servers. The simulation sends telemetry to your code, and the system commands (e.g. "Set Raptor 1 to 80% throttle") are read back and applied to the next step of the simulation.

But how does it work technically?