Limitation
Pablo asked me to check out this thread:
Greg and I had a discussion on this subject about two years ago, but I thought I would get in a lick. I always hoped Greg would start using dll's for his work.
I wrote one .ini file. I could not really get it to function properly for my launch vertical, land horizontal vessel. I could not set the orientation of the atmospheric engines so that they operated off the hover thrusters yet were parallel to the mains. To "fix" that issue, and knowing that I needed more fuctionality for vessels that needed to rotate heading orientation (pilot view forward being +y vs. +z) I needed a module. With some help from Trevor Johns, I put together a free compiler. I then sat down, not knowing a thing about C++, and puzzled through the sample code for the shuttle PB. It took a few hours to figure out what did what. I documented as I learned. I had my ship after that. I could then use some simple algebra to create all kinds of neat stuff. After I finally started catching on to the notation used in the API, tons of functions that an INI user cannot even dream of using were right at my fingertips. The API was written by a hard-core academic for folks formally trained in C++, so it looks like black magic. In reality, if you ask a layman that is "in the know" (do not even
think about asking a "real programmer" a question about programming) you find that all of it is retardedly simple. If it wasn't for terrible misleading explainations all poised in garbled programming lingo, all the knowledge I have of programming could have been garnered in about a month. Fact is, with a decent c++ ship template and knowledge of orbiter .ini files, you can create the equivelant of an .ini based ship as easily an an .ini, and you will immediately have more functions to play with. Once you see how a statement is made in C++ (hey, it's fill in the blanks functions and middle school algebra) you can immediately start "rolling your own".
Example: An attachment point.
INI:
[PARENT_ATTACH_0]
NAME="Pilotattach"
POS=(0,-0.08,7.736)
DIR=(0,1,0)
ROT=(1,0,0)
LOOSE=1
RANGE=20
in C++ for a DLL:
Pilotattach = CreateAttachment (false, _V(0,-.08,7.736), _V(0,1,0), _V(0,1,0), "PI", false);
In a DLL, you can then use the variable Pilotattach you have created to do LOTS of things. You can make a statement that says to eject the pilot when the pitch, bank, and altitude are within certain ranges after a certain type of damage or failure happens or automatically before a crash. You can do anything you like...there are just hundreds of functions in the API. Vinka's DLL was written so that people without access to a compiler could create ships more complex than the config system wiould allow. Now you can get a compiler for free.
In the function "CreateAttachment" above you can create an attachment in a ship just like in an INI. In a dll, you have nine other functions that directly deal with creating, identifying, using, redefining, counting, assigning and deleting attachments.
Anyone that gets into writing .dll's as a non-programmer that would like for me to help them translate the API so that they can figure out a function, as well as giving them a working example of the code as it is actually used (what the API lacks as an instruction manual, which it was not intended to be) need only drop me an e-mail. I have helped many total noobs rig their first ship, most of whom eventually lost interest in developing. Helping someone like Greg would be a great pleasure.