I haven't posted much about rockets, or space flight simulation in general in a while, so I thought I would at least give a brief update.
So where are all these rockets?! Good question!
I've built flight models in JSBSim for about 10 different rockets, simple 3d models for 5, and released 0. Why? Am I just a tease, am I still working on anything, or is it just really hard? First of all, I do apologize, I have a slight case of perfectionism. Second, yes I am absolutely working on rockets and space flight simulation in general and have short term and long term plans. Lastly... yes... it is incredibly hard.
Navigation, Guidance and Control.There is a major issue that I have been struggling with from the beginning, which is the automated guidance system as well as manual control during ascent. My conclusion has always been, since the guidance system needs to target a final orbit in order to maneuver, it needs to have a guidance and flight computer which calculates and plans the ascent trajectory and calculates the current and final orbital parameters. Since the original J246 example included in the JSBSim CSV repository had only three equations, for semi-major axis, apoapsis and periapsis, I needed to learn orbital mechanics and build a complete flight computer, which has been an ongoing project for more than a year now, and is finally nearing fruition.
Outerra Interface.Another thing that has prevented me from releasing rockets in Outerra is that the JavaScript methods I needed to build functional rockets simply didn't exist. The exciting news is... since working closely with the developers, many of those methods have been added and released in the latest updates! This means I now have the tools needed to build a rocket worth releasing.
3d Models.The last problem with releasing rockets in Outerra has always been the 3d modelling. I simply don't have time to build the flight models and guidance system as well as make detailed 3d models worthy of OT. So until an experienced 3d artist comes along with both the time and dedication for space flight to work with me, rockets will have to be relatively simple.
What Are My Objectives?My final goal is to build a set of tools and resources and example with which other developers can build rockets and spacecraft. This includes orbital mechanics equations, a knowledge base for building JSBSim flight models including extensive documentation, and a plugin which provides back-end and front-end features for procedural parts, assemblies and flight models, as was always the original intent of this thread. I am always open to feedback and suggestions, and will release more information as my plans move forward and solidify.
Orbital Mechanics.Before, I was working on a JavaScript function library which would include all of the equations to calculate the Keplerian Orbital Elements, and other orbital parameters for the guidance and flight computer, which will make it possible to perform maneuvers such as prograde/retrograde burns, plane changes and transfer orbits. Instead of continuing in JavaScript, I've taught myself C++ ported all of my code over, and done a complete audit of the equations to make sure everything is accurate. I found a number of issues where certain functions wouldn't work in certain cases, such as parabolic and hyperbolic orbits, among other use cases. Those are being corrected, and I'm now splitting up the functions into two parts, 1. General Orbital Dynamics Equations, and 2. Cartesian Coordinates to Keplerian Orbital Elements Equations. The product of this effort will either produce a plugin for Outerra, or be integrated directly in JSBSim, but I haven't decided which of those directions to take yet. Whatever the case, these equations will be universal for all rockets and spacecraft. It is a given that these functions will only take into account the two-body equations of motion, but multi-body equations would be the next step once N-body physics can be supported.
Legacy Launch Vehicles.A number of real world launch vehicles will be released as examples. Upon a number of requests lately, I'll update the Jupiter 246 launch vehicle and release that first.
Procedural Parts and Assemblies.Procedural rockets and spacecraft will require a C++ plugin/add-on, with both back-end and front-end features. This is my long term objective, and applies to both legacy and novel launch vehicles which would be assembled of multiple separate parts. Some progress has already been made, but the focus has been on orbital mechanics, which I felt were the first priority. I have documented the long term plan for procedural parts, assemblies, and flight models, including all of the technical requirements, which I may share an except of at some point in the future for feedback and suggestions. There has also been some brainstorming for a possible user interface and specific end-user features.
Now, to answer your questions HiFlyer. I have never really considered writing a developer diary, I guess a lot of what I have done since joining Outerra has been a learning experience, and I don't really consider myself a developer in that sense at all. I hope this post serves to answer some of your questions about the "AeroKinetics mod". Maybe if I am ever able to work on Outerra full time that is something I would consider.
To collaborate, or not to collaborate, that is the question!As for collaborating, it is always better that people collaborate instead of working alone. The biggest sins of collaborative projects are unquestionably; 1. time, 2. focus and 3. completion. I'm working with a number of people on various projects, and am guilty of all three of those sins. I do find that truly dedicated people will be far more efficient and effective working together if they can hold it together the duration of the project, but without making money, it is pure passion which moves those projects forward. Personally, I think my goal is to turn this into a full time job eventually, so my long term goal is to find a way to make Outerra projects financially equitable in order to make that a reality. If that isn't possible, such as has transpired with DCS and other communities, than the most dedicated artists and developers will probably turn elsewhere to collaborate other than Outerra. I say that because for those kind of people, it is more than a part time hobby, and for that to work they must also be able to make a living in order to work on it full time. Hobbyists can afford to mod part time, but they will never be able to reach the level of someone who is fully engaged, and they cannot be fully engaged without being able to put food on the table. So yes, in the long run, I would like to collaborate with others on projects to build paid content for Outerra and work on it full time.
As for your other questions, which may be slightly off topic, but I'll answer them here nonetheless.
Am I planning to release the F-22 and Other Aircraft?The F-22 suffers the same fate as many other things I have dabbled in, without a good 3d model or artist to collaborate, there isn't much I can do. I found an extremely simple and free 3d model, and implemented the F-22 flight model included with the JSBSim CSV repo to experiment with thrust vectoring. Without a decent 3d model, that is probably where it will end, as with the F-35, UH-60 and many others. My focus is flight modelling and programming, so I really need people to collaborate with on the art side.
What's Up With the Apache?On the Apache project, it would be better to answer that in detail on the thread, but in short I'm finishing an audit of all my code in general, just as with orbital mechanics, which will be used for all of the projects I work on and made available for others to use. There were a lot of changes made in the latest Outerra releases, and I felt that all of my code was out of date, becoming extremely cluttered and it was hard to keep each aircraft I was working on updated with the latest code because only scripts local to the package folder can be used, so there can not be scripts common to all aircraft. I've discussed this with the developers, and there are two solutions which could resolve this while not causing extensive compatibility issues with version updates.
Do Runways Light Mean Bad Performance?The runway lights have been found to have some performance impact with upwards of a few hundred light sources, but the number is less of an issue, and the greatest factor is how much area the light source illuminates on the ground, causing the engine to compute shadows and illumination. So, for instance a single light source that covers a circle with a diameter of 1000 meters would have far greater of an impact than a few hundred lights each only illuminating a small area. The same goes for light on vehicles and aircraft, the greater the area illuminated, the greater the impact on performance.
So that is the past, current, and future state of my efforts, hope that fills in some of the unanswered questions.
Best regards,
Uriah
Here is a screenshot of the C++ FGOribtalDynamics application I've been working on with some test inputs and outputs.