Project genericvessel - spacecraft3 and multistage2 replacement project

Face

Well-known member
Orbiter Contributor
Addon Developer
Beta Tester
Joined
Mar 18, 2008
Messages
4,390
Reaction score
577
Points
153
Location
Vienna
Hy there,

Following the discussion here, I'd like to announce the genericvessel project.

From the Wiki page:
This project intends to create a generic framework for the Orbiter Space Flight simulator. It should enable users without C++ knowledge (or compilers) to create vessel add-ons that leverage as much as possible of the possibilities the Orbiter SDK offers. In this regards, it is similar to (and compatible with) the legacy frameworks spacecraft3 and multistage2.
The project is hosted on Bitbucket here. The code is going to be GPL'ed and version controlled with Mercurial. Please make use of the Wiki and bug-tracker facilities, if you'd like to contribute specification/documentation or have issues to report.

Thanks to Artlav, the project already has some content to put your hands on, if you feel like testing the approach: http://bitbucket.org/face/genericvessel/get/OSH.zip ( please see /Doc/genericvessel/README.txt ).

regards,
Face
 

Artlav

Aperiodic traveller
Addon Developer
Beta Tester
Joined
Jan 7, 2008
Messages
5,789
Reaction score
778
Points
203
Location
Earth
Website
orbides.org
Preferred Pronouns
she/her
For you who wasn't keeping track of the other thread, the current functional part of the project is the SC3->DLL converter, that i made previously, being transformed into a drop-in replacement for the spacecraft3.dll.

Meaning, that if spacecraft3.dll does no longer work for you or your setup of Orbiter, there will now be a compatible (and in the future expanded) alternative that is up to date. Vinka's work proved invaluable to the community, and we are future-proofing it by doing it again with the code open. :)


Architectural outline of the system is two parts - the INI parser and the Orbiter vessel module.

The vessel module goes into the place of spacecraft3.dll, just placing "Module = oshdll" into the config/spacecraft/spacecraft*.cfg does the trick.
This is the module that would be loaded up when the ini vessel is requested.

The module does not know anything about ini files, it just passes it's vessel name to the second dll - the parser.
The parser locates the ini file and produces a data block to pass back (or blank vessel if no ini found).
The vessel module receives this data block and unfolds into a vessel class according to it.

The advantage is that the in-the-flux Orbiter part is decoupled from relatively-static INI parsing part. Both can be worked on independently, be made in languages to fit the task, etc.

Orbiter vessel part is a simple C++ module that can be updated (or fixed) independently of the more complex parser, by anyone familiar with Orbiter add-on development.
And in most cases to add compatibility to the new Orbiter release, orbitersound or a graphic client all it would take is to recompile the module - easy, since it's open source. :)


On the bad side, so far it is only as good as the later version of SC3->DLL converter was, which still had some bugs and limitations, and it does not yet do anything about multistage2.dll.
Time should cure these issues, however.

---------- Post added at 01:03 ---------- Previous post was at 00:51 ----------

Face, tried to push some changes, got authorization error.
Is that normal?
 

orb

O-F Administrator,
News Reporter
Joined
Oct 30, 2009
Messages
14,020
Reaction score
4
Points
0
Face, tried to push some changes, got authorization error.
Is that normal?
AFAIK, you need to get permission from face first to push changes to his project. Tblaxland for example had set permissions for me to the "Event Timer" project before I could do so.
 

Face

Well-known member
Orbiter Contributor
Addon Developer
Beta Tester
Joined
Mar 18, 2008
Messages
4,390
Reaction score
577
Points
153
Location
Vienna
Face, tried to push some changes, got authorization error.
Is that normal?

Yes, it is normal for the default policy on Bitbucket. But I can add you for push access, no problem.

With DVCS and those "social coding" platforms, the normal work-mode is to simply clone a copy of the project under your account, hack away locally, use the account-copy as kind of personal backup, and send so-called pull-requests.

But since we are only 2 ATM, I see no harm in following the usual SVN-like workflow.

---------- Post added at 22:35 ---------- Previous post was at 22:33 ----------

And done. You should now be able to push with your Bitbucket credentials.
 

Artlav

Aperiodic traveller
Addon Developer
Beta Tester
Joined
Jan 7, 2008
Messages
5,789
Reaction score
778
Points
203
Location
Earth
Website
orbides.org
Preferred Pronouns
she/her
Thanks, it works.
Now it should support scn definitions for spacecraft2 and spacecraft one.
 

Arthur Dent

Absolutely Mental
Donator
Joined
Feb 8, 2008
Messages
336
Reaction score
1
Points
18
Location
Dresden
Website
wasa.pottyland.de
Artlav, will you also make a GenericVessel->DLL converter, like your very handy SC3->DLL Converter?

I find programming via scripting very useful, but I can imagine that having a native DLL can have it's advantages. Especially when it outputs the C++ code, that could be used to learn vessel programming and of course to do some "manual" experimentation.
 

Artlav

Aperiodic traveller
Addon Developer
Beta Tester
Joined
Jan 7, 2008
Messages
5,789
Reaction score
778
Points
203
Location
Earth
Website
orbides.org
Preferred Pronouns
she/her
Artlav, will you also make a GenericVessel->DLL converter, like your very handy SC3->DLL Converter?
Directly to DLL conversion is trivial, as well as probably quite useless now with the drop-in-replacement mode available.

Conversion to C++ can be maintained and extended if sufficient demand is present. I'll see how it goes, then it should be clearer.
 

Face

Well-known member
Orbiter Contributor
Addon Developer
Beta Tester
Joined
Mar 18, 2008
Messages
4,390
Reaction score
577
Points
153
Location
Vienna
I've pushed a refactoring as well as a merge with my load strategy now. Now you can use Artlav's engine with INI declarations embedded in the CFG file for your class. The scenario "Generic Vessels" scenario folder is in again.
 

Kendo

New member
Joined
Oct 16, 2007
Messages
589
Reaction score
1
Points
0
This is very good indeed. As a test, I got the old EagleII mod from 2005 to work (using the EagleIIVIP addon ) Also I put the EagleII.cfg in Vessels and I can now add it using the scenario editor.
I noticed , using your files for ideas, it,s almost as though the ini file becomes the config file and visa versa. Also I only need 1 EagleII, as EagleIIa EagleIIb and EagleIIc can be used from the EagleII cfg / ini.
As spacecraft didn,t show up, I changed it to spacecraft2. ( can I change it to Spacecraft3 )? And the animations work.
Great work, you really are a genius. Kind regards, Ken.
 

MeDiCS

Donator
Donator
Joined
Sep 22, 2008
Messages
602
Reaction score
2
Points
0
Very nice. I once wrote something alike, intended to be a drop-in replacement SC3 and MS2, and I planned to add UMmu support + other misc extensions. It wasn't ready for prime time, but luckly isn't needed anymore.

A few ideas are still roaming my mind right now, such as JSON (or a small Lua module) instead of INI for the declarative part, and support for custom Lua or DLL modules, as there isn't a need for SC3 compatibility anymore. I think I'll write a small test DLL and see how it fares...
 

Donamy

Addon Developer
Addon Developer
Donator
Beta Tester
Joined
Oct 16, 2007
Messages
6,904
Reaction score
196
Points
138
Location
Cape
It seems to slow the animations a bit.
 

Kendo

New member
Joined
Oct 16, 2007
Messages
589
Reaction score
1
Points
0
Artlav, just a couple of things to mention to you......
Tried Kev,s Eagle1999-S3 addon, works great using Spacecraft3. But using your Genericvessel module, I am losing the particlestreams.

Also, there are 2 meshes, Eagle1y (Main body) and Eagle1p (Cockpit).
The original S3 version if fine, and adds and attaches the cockpit automatically, where as the Genericvessel version doesn,t add it. (infact, it doesn,t load the cockpit at all)
So I have a separate vessel file for the cockpit so I can attach it using Attachment manager, I then re-save using the Scenario editor, and then the scenarios load up fine.
All these files are in Config/Vessels. I can now add them using the Scenario editor.
This Genericvessel module is a great idea.
 

Face

Well-known member
Orbiter Contributor
Addon Developer
Beta Tester
Joined
Mar 18, 2008
Messages
4,390
Reaction score
577
Points
153
Location
Vienna
It seems to slow the animations a bit.

Tried Kev,s Eagle1999-S3 addon, works great using Spacecraft3. But using your Genericvessel module, I am losing the particlestreams.

Also, there are 2 meshes, Eagle1y (Main body) and Eagle1p (Cockpit).
The original S3 version if fine, and adds and attaches the cockpit automatically, where as the Genericvessel version doesn,t add it. (infact, it doesn,t load the cockpit at all)

Could you provide links to download the appropriate add-ons? If that's possible, I'll put up tickets to the project in order to investigate the problems. The more reproduction input, the better!
 

Kendo

New member
Joined
Oct 16, 2007
Messages
589
Reaction score
1
Points
0
Thank you for your reply, Face.
Here is the link http://www.orbithangar.com/download.php?ID=2216 This is for Kev,s Eagle1999-S3.
You will need another download, (this download is for a dll version from 04 that doesnt work.) http://www.orbithangar.com/download.php?ID=612
You need it purely for the 2 meshes and textures, it tells you which download in Kev,s instructions. Just put Eagle in the search bar at Orbithangar and you will find it easily.
You don,t need the Moonbase alpha v3 download, thats purely for a scenario
 
Last edited:

Artlav

Aperiodic traveller
Addon Developer
Beta Tester
Joined
Jan 7, 2008
Messages
5,789
Reaction score
778
Points
203
Location
Earth
Website
orbides.org
Preferred Pronouns
she/her
Fixed all Eagle issues (that i can see):

-Added support for payload visuals - Eagle cockpit now visible.
-Fixed COG offset definition - Eagle now appears at the right height off the ground.
-Fixed a typo in genericvessel.c
-Removed legacy compatibility - the way this is going, better to keep the code separate from my other frameworks.

Update here:
http://orbides.1gb.ru/orbf/genericvessel-130301.zip
Note, that the module is now called genericvessel, not oshdll.

Remember, people - detailed reproduction instructions equals quick fix. :)
 

Kendo

New member
Joined
Oct 16, 2007
Messages
589
Reaction score
1
Points
0
Wow Artlav, that was quick, well done. Seems O.K now. Many thanks and kind regards, Ken.
 

Donamy

Addon Developer
Addon Developer
Donator
Beta Tester
Joined
Oct 16, 2007
Messages
6,904
Reaction score
196
Points
138
Location
Cape
Seems there is a problem with jettisoning the payloads. Such as the nose cone and array shrouds, for the Dragon/trunk.ini
 

Artlav

Aperiodic traveller
Addon Developer
Beta Tester
Joined
Jan 7, 2008
Messages
5,789
Reaction score
778
Points
203
Location
Earth
Website
orbides.org
Preferred Pronouns
she/her
Payloads are only supported as visuals for the moment, jettisoning is not implemented yet.
 

Face

Well-known member
Orbiter Contributor
Addon Developer
Beta Tester
Joined
Mar 18, 2008
Messages
4,390
Reaction score
577
Points
153
Location
Vienna
Seems there is a problem with jettisoning the payloads. Such as the nose cone and array shrouds, for the Dragon/trunk.ini

What add-on are you talking about? Where can I download it to take a look?
 

DaveS

Addon Developer
Addon Developer
Donator
Beta Tester
Joined
Feb 4, 2008
Messages
9,429
Reaction score
680
Points
203
What add-on are you talking about? Where can I download it to take a look?
I think he's talking about these:
[ame="http://www.orbithangar.com/searchid.php?ID=5775"]Dragon Update[/ame]
[ame="http://www.orbithangar.com/searchid.php?ID=5871"]Dragon Update 2[/ame]
[ame="http://www.orbithangar.com/searchid.php?ID=6020"]Heat Rejection Subsystem Grapple Fixture(HRSGF)[/ame]

Install them in that order.
 
Top