Automated Flight Program - Early Beta Testing
I just pushed out a new beta version of SimpleRockets 2 that includes the new Automated Flight Programming System, currently nicknamed Vizzy. It's available on the Public Beta Testing branch on Steam. I'm keeping the beta restricted to Steam for now so that I can respond more quickly to player feedback.
There is still a lot of work left to do, but I wanted to get a beta out so you could experiment with it and give us feedback as early as possible before the official release.
So far, I'm happy with how things are turning out. There are several basic building blocks that can be combined in endless combinations to create very complicated programs. In just a few minutes, I was able to create a program that does the step-by-step directions from the Flight Tutorial to achieve orbit. I've uploaded it here. Here's a screenshot of the first few instructions:

The user interface is very similar to Scratch, Snap!, and Turtles. So, if you are familiar with those, you'll be right at home with these building blocks. You can easily combine the blocks together to build complicated statements. For example, if you want to set your Slider 1 input equal to the sin of your craft's AGL times 0.25, you can do that. I don't know why you'd want to do that, but it's totally possible:

Here are the building blocks currently available:
To create a flight program, just open the menu in the designer and click Edit Program. This will create a flight program on your primary command pod. If you want to add a flight program to a different part, just select it and open Part Properties and in the Tinker Panel there is now a button to add a flight program.

The program editor works very similar to the rocket designer. You can pull new building blocks out from the flyout panel on the left. Connect instructions together to form your program. Expressions can be dragged into the open slots on instructions or even other expressions. Note that each program must start with the On Start event, so make sure to connect your instructions below one of those.
When you are done editing your program, open the menu and click Save to Craft. This will store the program in your command pod (or whatever part you are using). You can also save your program to file if you want to use the same program on another rocket. Lastly, you can import an existing program into your current program if you want to leverage some code you've already created elsewhere.

Some of the next things I have planned to work on next are of course more instructions and properties. Also, I'd really like to add custom instructions and custom expressions. If things go well, we could potentially get the official release of this update out before Christmas, but of course, that depends on the feedback we get from all of you.
Vizzy is the nickname we've been using for this Automated Flight Program, but we are considering changing its name. Does anyone else have any suggestions on what you think it should be called?
There is still a lot of work left to do, but I wanted to get a beta out so you could experiment with it and give us feedback as early as possible before the official release.
So far, I'm happy with how things are turning out. There are several basic building blocks that can be combined in endless combinations to create very complicated programs. In just a few minutes, I was able to create a program that does the step-by-step directions from the Flight Tutorial to achieve orbit. I've uploaded it here. Here's a screenshot of the first few instructions:

The user interface is very similar to Scratch, Snap!, and Turtles. So, if you are familiar with those, you'll be right at home with these building blocks. You can easily combine the blocks together to build complicated statements. For example, if you want to set your Slider 1 input equal to the sin of your craft's AGL times 0.25, you can do that. I don't know why you'd want to do that, but it's totally possible:

Here are the building blocks currently available:
- Craft Instructions
- Activate Stage
- Set Input - Roll, Pitch, Yaw, Throttle, Slider 1, Slider 2, Translate Up/Forward/Right
- Set Heading - Heading angle or Pitch angle to angle in degree
- Set Target (ie - Set Target to Luna)
- Enable/Disable Activation Group
- Lock Nav Sphere - Prograde, Retrograde, Current, BurnNode, Target, None
- Set Time Mode - Slow Motion, Normal, Fast Foward, Time Warp 1-10
- Activate Stage
- Craft Properties
- Altitude - ASL and AGL
- Orbit - Apoapsis, Time to Apoapsis, Periapsis, Time to Periapsis, Eccentricity, Inclination
- Atmosphere - Air Density, Air Pressure, Speed of Sound, Temperature
- Performance - Engine Thrust, Max Engine Thrust, Mass, TWR, Current Isp, Stage Delta-V, Stage Burn Time
- Velocity - Surface, Orbit, Angular, Lateral, Vertical, Mach Number, Acceleration, Gravity
- Input - Roll, Pitch, Yaw, Throttle, Slider 1, Slider 2, Translate Up/Forward/Right
- Misc - Grounded, Solar Radiation
- Activation Group State
- Altitude - ASL and AGL
- Control flow instructions
- While, Repeat, Wait X Seconds, Wait Until, If, Else If, Else, Display Message
- Binary Operators
- Add, Subtract, Multiply, Divide, Exponent
- Bool operators
- And, Or, Not, Equal, Less Than, Greater Than
- Math Functions
- Random, min, max, Abs, Floor, Ceiling, Sqrt, Sin, Cos, Tan, Asin, Acos, Atan, Ln, Log
- Events
- On Start - Called when the craft enters the flight scene
- Receive Message - Called when the flight program receives a message
- Broadcast Message - Executes all matching Receive Message events in the same flight program
- Broadcast Message to Craft - Executes all matching Receive Message events in any flight program in the entire craft.
- On Start - Called when the craft enters the flight scene
- Variables
- Support for custom variables
- Set Variable
- Change Variable by amount
- Support for custom variables
To create a flight program, just open the menu in the designer and click Edit Program. This will create a flight program on your primary command pod. If you want to add a flight program to a different part, just select it and open Part Properties and in the Tinker Panel there is now a button to add a flight program.

The program editor works very similar to the rocket designer. You can pull new building blocks out from the flyout panel on the left. Connect instructions together to form your program. Expressions can be dragged into the open slots on instructions or even other expressions. Note that each program must start with the On Start event, so make sure to connect your instructions below one of those.
When you are done editing your program, open the menu and click Save to Craft. This will store the program in your command pod (or whatever part you are using). You can also save your program to file if you want to use the same program on another rocket. Lastly, you can import an existing program into your current program if you want to leverage some code you've already created elsewhere.

Some of the next things I have planned to work on next are of course more instructions and properties. Also, I'd really like to add custom instructions and custom expressions. If things go well, we could potentially get the official release of this update out before Christmas, but of course, that depends on the feedback we get from all of you.
Vizzy is the nickname we've been using for this Automated Flight Program, but we are considering changing its name. Does anyone else have any suggestions on what you think it should be called?