First Draft Description for Scenery Design Tool

scruffyduck

Administrator
Staff member
FSDevConf team
Resource contributor
#1
Draft Design Document for SDSX

Draft 0.2


I have re-written this. For the time being it is attached as an rtf documents
 
Last edited:
#2
As mentioned in the other thread:

1) Client/Server support.
2) Possible to transform 3D files (like TweakMDL, but it would be automatically applied when the model is updated). This is also pretty easy to do (a transform simply takes a 3d model as input and generate a new 3D model as output - allowing them to be "chained" in a tree.

If this is added, I am certainly in on this project.

Also consider:
.NET 3.0 - it is just a few extra libraries so why not use it if it makes sense. From experience with the similar application I made I can tell you that you might have performance issues on GDI+ so I would not rule out WPF (Crossbow should allow WPF map with standard WinForm GUI elements around it, but I have not looked at it)

Microsoft Smart Client Factory - provides an extension to VS enabling relatively easy structuring of the GUI in modules using full MVP patterns. Also provides modular load, event brokering and all that "out of the box". It does have a bit of a learning curve, but that is the price of doing it right)

I should be able to find the time to implement the client/server part, but I really would want to use WCF (.NET 3.0). WebServices are just too pathetic and I won't spend my time on them anymore. :)
No worries, it is quite simple to make a version that supports both client/server and standalone - at least as long as MSCF is used as it will do most of the work for us.

I can also look into the 3D model transform once we have a memory representation of the model. I can't imagine it is so far of what I have now that I can't refactor my current modules.

Just found this screenshot showing what I have now: http://www.fsdeveloper.com/forum/attachment.php?attachmentid=1078&d=1147122754
 
Last edited:

nickw

Administrator
Staff member
#3
Guys, can I suggest using the WIKI for the design spec?

(I would like to see that MDL file placement includes the actual "top down" shape of the object as a minimum)
 
Last edited:
#4
Guys, can I suggest using the WIKI for the design spec?
Probably we need both - the Wiki to track it and the forum to discuss it. If people just add to it we would get the worst feature creep known to man. :)

(I would like to see that MDL file placement includes the actual "top down" shape of the object as a minimum)
Absolutely - You simply can't use it without this feature. I have been toying around with enabling 3D view as well, but that would certainly require WPF, and probably it should be hardware accelerated as well (so Vista) before it works. But the 2D outline gets you pretty far.
 

scruffyduck

Administrator
Staff member
FSDevConf team
Resource contributor
#5
Lars:

Thanks - I have looked at the dotNET 3 betas but not made any use of them yet - I see that the runtimes can be used with XP - I suspect quite a lot of users will stay with XP for a while so I would want the solution to work on that platform as well as Vista - is there going to be a loss of function for XP users?

As for 3D models I am interested myself - you may have seen my Library Object Viewer which uses directX to display objects in 3D. In thinking about the drawing platform (in my planning for my own version of this program before we got to this place) and whether to use DirectX even for 2D rather than GDI+. Still that is to some extent implementation detail and not the design brief :) In any case if we can separate the drawing interface from everything else - say as a custom control - then it could be easier to plug in a new one in the future.


Nick:

Yes I was thinking the Wiki might be a place for the project (now I have to figure out how to use it :)) - I had thought about it, but I agree with Lars that we need to control the design documents closely otherwise we will end up with a mess. I would certainly expect the program to at least show objects in top down view accurate to footprint - I think at this stage that is probably a good design/performance trade off.
 
Last edited:
#6
I have seen a 3D MDL viewer, and it was probably yours :)

WFF and WCF (workflow and communication) are not tied to Vista in significent way (Microsoft just hold back on shipping it to sell Vista as the "native system" for it). WPF should have hardware acceleration under Vista, but I have not researched the performance of it. If it can pull 2D view under XP, the 3D view could just be an added bonus under Vista :)

I did use DirectX for my CityBuilder project where I drew standard city houses simply by drawing lines. As you are aware, it is low level, tedios and timeconsuming programs (why should I care the device is lost, deal with it Windows). Still it is doable if someone likes that kind of stuff, I would not touch it though.
 

nickw

Administrator
Staff member
#7
Yes, both is the way to do it. So someone / some people should be responsible for updating it once agreed by all.
 

scruffyduck

Administrator
Staff member
FSDevConf team
Resource contributor
#8
Thanks Lars - I am going to take a closer look at WinFX.

Yep DirectX can be a pain - I never lost a device - it lost itself :D The new XNA framework is supposed to make it easier but at the moment it is still beta with not much support for 3D objects. It's pretty much another SDK and set of managed libraries designed to wrap DirectX.

Thanks Nick - Well I am happy to volunteer to 'hold' the documents if that will help.
 

arno

Administrator
Staff member
FSDevConf team
Resource contributor
#9
Hi,

Just a few quick comments from my side. I have to think about some of the more detailed parts a bit more :).

@Jon, yes I think the functionality to create a scenery library should be a tool included in this one as well. Just as a MDL Tweaker like functionality. Although I am not sure how much we can tweak in the new MDL format (it is quite different, I am already trying to decode it).

@Lars, your tool has some interesting things indeed. Personally I don't see the purpose of Server/Client stuff yet, but I have no problem if this is added either. One thing we should remember is that this tool will not only be for the pro's of scenery design. It should also be easy enough to use by a users who only wants to add a few taxispots or an apron to his favorite airport. The current AFCAD has a lot users that only do that. So maybe we need a Simple/Advanced mode or something like that?

I am quite new to the .NET platform, so some of the technical discussions I should learn a bit more about, before I can give proper comments. But I think it is important to be able to make a 3D preview of MDL objects. In my MDL Tweaker tool I have done this in OpenGL, although we can do it with DirectX as well I guess (I am not really looking forward to learn DirectX, as I use OpenGL already at work).

And about the Wiki, please don't use it yet. We are currently looking at switching to better software for the Wiki system. It makes more sense to start once we have a real FsDeveloper.com wiki running. This one has been just kept alive to keep the SceneryDesign.org data accesible.
 
#10
Hi,

Just a few quick comments from my side. I have to think about some of the more detailed parts a bit more :).

@Jon, yes I think the functionality to create a scenery library should be a tool included in this one as well. Just as a MDL Tweaker like functionality. Although I am not sure how much we can tweak in the new MDL format (it is quite different, I am already trying to decode it).

@Lars, your tool has some interesting things indeed. Personally I don't see the purpose of Server/Client stuff yet, but I have no problem if this is added either. One thing we should remember is that this tool will not only be for the pro's of scenery design. It should also be easy enough to use by a users who only wants to add a few taxispots or an apron to his favorite airport. The current AFCAD has a lot users that only do that. So maybe we need a Simple/Advanced mode or something like that?
For me server/client is definitely a showstopper - I would not spend 10 second on a tool without as it would not be able to replace what I have already done. :)
All "confusion" it will add to the average user is an option to open a project from a server, so this should not be a problem with this specific feature, but long term there might indeed be obtions we need to hide.
I am quite new to the .NET platform, so some of the technical discussions I should learn a bit more about, before I can give proper comments. But I think it is important to be able to make a 3D preview of MDL objects. In my MDL Tweaker tool I have done this in OpenGL, although we can do it with DirectX as well I guess (I am not really looking forward to learn DirectX, as I use OpenGL already at work).
3D preview would be good (I could definitely use it to adjust the autoLoD properties). Personally I would not even consider anything but Windows Presentation Foundation for 3D, but if someone goes for something else, I won't complain (too loud) as long as I do not have to get anywhere near that code. But please notice the 3D I was considering was a 3D view of the entire scenery, not individual models. :)
 
Last edited:

scruffyduck

Administrator
Staff member
FSDevConf team
Resource contributor
#11
Jim Keir has made LWMViewer2 a 3D tool - my experience is that performance in rendering the 3D scene is not good. I admit that my system is not the best but 3D is going to be performance expensive compared to 2D.
 

scruffyduck

Administrator
Staff member
FSDevConf team
Resource contributor
#13
Hi Lars

I would appreciate to understand a bit more about what you mean by client/server. My simple thought is that this is a stand alone program so, like Arno, I am not sure where it fits

thanks!

Arno

I agree very much with the idea of a simple/advanced mode program. I will add something in the design spec about the target audience - forgot to do that...
 
#14
Hi Lars

I would appreciate to understand a bit more about what you mean by client/server. My simple thought is that this is a stand alone program so, like Arno, I am not sure where it fits
I must say it is a bit hard for me to explain as I see it as so obvious I have problems knowing what it is I need to focus on when explaining it. :)

A client/server setup allows you to run a central server from where the project is opened. Several people can open the same project. So when you add a building, the three other guys will automatically get it. When you move a runway, the three other guys will automatically see it. When you generate the Flight Simulator package - it will always contain the right files with no need to do any additional file management.

Sorry, I know I suck at explaining this - I know you are saying "so what". I wish I could really explain the benefit of this.

At least I can do a quick QA on the questions I imagine you might have:
Q: Isn't this a lot of work
A : If you design your software fundamentally wrong, then yes - something like this is a lot of work as is ANYTHING when you have the architecture wrong. It is quite easy to do with the software designed correctly - and it is even easy to design it correctly :)
Add to this that I'm offering to do this work :)

Q: Will this not make the software more comple for people not needing it
A: We are talking a maximum of two extra commands: One to open a project from the server, and possible one to create a project (we might keep that out of the GUI though, and let it be configured on the server - On my current version, all it takes is creating a directory for the files on the server)

Q: Will it not make the software harder to setup
A: No. It will run standalone just fine without any setting or anything. The server would be an additional setup action obviously.

Q: Will it not run awfully slow
A: No. The data will be cached on the client, so besides the initial download cost there is no extra cost associated with this. I am currently hosting a 40MB+ scenery of my 6000/768 ADSL line without any problem.

Q: Will it be secure
A: There is always a risk, as with any server. Designed correctly using default WCF security, it is less of a risk than running for example IIS though.

In short, I see reasons to do this, and no single reason not to. And as mentioned, this is a 100% showstopper feature for me, and I would REALLY hate having to do yet another scenery tool, when the features could so easily be integrated into one tool.

I agree very much with the idea of a simple/advanced mode program. I will add something in the design spec about the target audience - forgot to do that...
Instead of having simple/advanced, what about making it task based. The problem is the program will be used for different things (adjusting what we now know as AFCAD, possible approaches, nav id, 3d buildings, landclass, etc). What I am trying to say is that the simple mode AFCAD controls might confuse the guy trying to adjust the landclass more than "advanced landclass options" would.
 
#15
Jim Keir has made LWMViewer2 a 3D tool - my experience is that performance in rendering the 3D scene is not good. I admit that my system is not the best but 3D is going to be performance expensive compared to 2D.
Obviously it would require more resources - there is more data. It is just an idea to an optional feature we could add later.
 

scruffyduck

Administrator
Staff member
FSDevConf team
Resource contributor
#16
Hi Lars

Many thanks that explained it perfectly and I agree that this should be part of the program. It can run in stand alone mode for those that want it and also connect via the server for team working :) I have added this to the draft design description.

Good point on the simple/advanced. I would like to think that through in a bit more detail. There are a number of programs out there which can hide advanced commands - they make me cross cos I always want to know everything a program can do :D But it may work for some people. I guess it could be implemented by turning off menus and so on. Intuitively I like the idea of making things task based. I like object orientation where everything can be packaged etc. Seems to me that a task based approach would meet the same objectives - could also mean that we can have separate work packages for each area that can be worked on independently and plugged in as they become available.
 
Last edited:

arno

Administrator
Staff member
FSDevConf team
Resource contributor
#17
Lars, thanks for the server/client explanations. Sounds interesting. At the moment we are using CVS in the team I am a member of to share our sources. I have made all my tools so that they can use relative paths, so we can work together quite easily.

Personally, I don't see the need for a full 3D preview of your scenery. We already have FS to give us that. I think such a preview is mainly useful when creating generic buildings or viewing which 3D objects are available to place.

My point about the basic/advanced mode was more meant as an indication that we need to be aware of the different knowledge and needs of users. If that is possible without having two modes, I certainly prefer that. We should just keep in mind that the tool should not be too complex at first looks, as that will scare away many new designers.
 
#18
Lars, thanks for the server/client explanations. Sounds interesting. At the moment we are using CVS in the team I am a member of to share our sources. I have made all my tools so that they can use relative paths, so we can work together quite easily.
I know CVS and we do (unfortunately) also use it at work. CVS can indeed do the job, but I would not consider it an "ultimate scenerydesign tool" if it relies on it - it would for example be problematic that you can not exchange the data model on the serverside without affecting the clients, nor can you add any future serverside features (workflows performed with checkin etc). No need to perform any lockins when you can easily encapsulate it with a decent SOA (arghh, buzz word).
Personally, I don't see the need for a full 3D preview of your scenery. We already have FS to give us that. I think such a preview is mainly useful when creating generic buildings or viewing which 3D objects are available to place.
Who talked about useful. :)
 

scruffyduck

Administrator
Staff member
FSDevConf team
Resource contributor
#20
I think we are agreed that the first priority is to have a good 2D top down GUI perhaps with the ability to display generic buildings and objects in 3D :)
 
Top