Terrain Master, Take 2: the FlightGear World Server!
by Chris Calef · 05/07/2013 (2:23 pm) · 65 comments

Sunset in the hills west of Eugene - rendered in FlightGear and Unity3D.
A number of people expressed interest in a recent little side project of mine, wherein I implemented a paging terrain system in T3D, and filled it with real world DEM data from the Willamette Valley in Oregon.
This blog isn't really about that.
This blog is about the journey that began last November with that project... and finally ended up back here in T3D, five weary and haggard months later, with a project that, even in its current state of v0.001 (barely even working) is already one of the coolest things I've ever done.
The weird part started innocently enough. In a moment of relaxation, I did a google search for an open source flight simulator. Back a couple of lifetimes ago IRL, I used to fly an ultralight airplane, and meanwhile had also become interested in a partly flight-sim based game called World War II Online.
One thing led to another, as they tend to do, and before long I was taking a peek around to see what had happened in the world of open source flight sims in the past decade or so. What I immediately stumbled right into was:
www.FlightGear.org

Now this is all well and good. Nothing wrong with a little casual entertainment - even if it does involve much merriment from your non-gamer wife, re: the sudden fascination with your new "joystick". Such is the price we pay...
However, besides being an incredibly detailed flight simulator, with accurate engine behaviors, hundreds of supported aircraft, and even multiple whole flight dynamics systems to choose from... I soon discovered that FlightGear also includes a complete, game ready representation of the entire exposed landmass of the Earth (give or take the polar regions). Along with day/night cycles, moon cycles, a starfield, and local weather simulation complete with a whole library of 3D cloud models, all automatically synched up to accurate realtime weather data by region.

Yes, that is a heavy storm front out over the ocean.
At this point you may well be wondering where exactly I'm going with all of this. Certainly FlightGear sounds like an interesting project, but what does it have to do with Torque?
Very well, if you must know... please allow me to lay my cards on the table. After which you can decide whether to stay with me through the rest of this blog, or run away screaming.
Summary: I have written a modified version of FlightGear to function as a "World Server", for the purpose of serving terrain data and skybox images in realtime to a separate client application, written in Unity or Torque.

The wizard character from Unity's Advanced Multiplayer Kit, in South Eugene looking NE.
Now, in case I've completely lost you with the above proclamation ("You have written WHAT? For the love of God, WHY??") ... please allow me to explain myself.
As mentioned in the above referenced blog, I have a long-term interest in creating a post apocalyptic MMO game based in real world terrain.
Most games have no interest or need to include the entire planet in their assets, of course, but I had this clever idea... "wouldn't it be interesting if my players could run scenarios in their own home landscapes?"
Once one allows oneself to even think along these lines, the potential applications start to multiply exponentially.
However, the 800 pound fly in the ointment, of course, is the fact that the planet we live on happens to be extremely large.
While data exists on the internet to both replicate and surpass all of the work done so far by the FlightGear team - to assimilate the height data, provide some kind of reasonable textures for all land area, and fill in a base level of at least aircraft-relevant objects like radio towers, skyscrapers and of course airports - the undeniable fact remains that this, in and of itself, represents a massive amount of work. As in, many human years.
And if there's one thing I've learned in the past four or five years of smashing my own poor indie existence up against the craggy rocks of Software Time, it would have to be this:
Never, ever, ever start *anything*, unless you have first made absolutely sure there is not an easier way.

Standing in the Coburgs, before local terrain textures worked.
But once I started looking around in the FlightGear world, and seeing the incredible volume and quality of effort expended thus far to make it happen, the thought slowly began to form in my mind that this project had to be relevant in some way to my end goals. I simply could not see it and then just walk away and start over.
The exact mechanism remained, and still remains, open for debate. It is a given that most games do not require the end user to start two separate 3D applications just to make the game run, and this setup would not be my first choice.
However, there are many other ways that FlightGear's accomplishments could theoretically be leveraged, beyond the way I am doing it here in v0.001. It could well be that an ultimate solution would involve chopping out whole sections of FlightGear or its underlying utility code, and incorporating them directly into a first person game engine, so that the game itself could read FlightGear's stored data instead of having to talk to a separate instance.
Of course, that in itself represents a seriously non-trivial amount of programmer time - and we are pretty much out of budget around here for extra months of programmer time.
So, yes, it is awkward, and probably undesirable for a finished game, but regardless of any future ambitions we may have, in the current implementation of this project, we must run two major apps side by side to get the results we need. That is where it stands, and for now we must take it or leave it.
Let's look at another pretty airplane picture while we get used to that.

Isn't that better?
Now that we have that little dose of reality out of the way, let's look at the myriad number of silver linings that I discovered along my path of least resistance:
- The world server is completely application-agnostic. The same world server build can talk to any client application that is capable of opening a socket and following the rules, it does not have to be recompiled to work with a different client.
- The world server need not be limited to operating on the same machine. In certain (cough, mobile) environments it might make sense to stream skybox images and terrain data over a network, to allow major data storage and image rendering to be done in the cloud.
- The world server is still a perfectly operational copy of FlightGear, which could become highly relevant for any first person games that have ambitions of including a flight sim among their vehicle options.
- While it may seem weird for a game, in a serious simulation app it is not all that bizarre for multiple windows to open up.
- FlightGear is licensed under the GPL, but by operating a completely separate application over a socket, the client software is free to operate under whatever license it wants.
Gotcha with that last one, didn't I? I kind of forgot to mention it earlier, but yes, FlightGear is GPL. For my purposes, that does not actually scare me that much, but for others, it could obviously be a critical factor.

In the Coburg Hills, looking southeast, before terrain textures worked. The lighting problem between different skybox sides is fixed now as well.
How It Works
To avoid rambling on interminably here and instead start wrapping this thing up, I'm going to have to leave out most of the technical details. To put it in the most basic terms, the client application opens up a socket to FlightGear and sends the current player position in latitude/longitude, as well as some other data, such as the heightmap and texture resolution of our local terrains, and the path to which image and data files should be written.
FlightGear then samples its own terrain data and returns a set of nine terrain height files, nine terrain texture index files, and five skybox images. The client app then loads these into the game world, and voila, we have an FPS portal into the FlightGear world.
Of course, it wouldn't be version 0.001 if it didn't have a host of problems. It's currently slow and clunky, and there are whole subsystems not even implemented yet (like handling FlightGear objects in the game engine and vice versa.)
The most important part for me, however, is that I now have a solid foundation, a starting point, for all of my future megalomaniac plans of world domination.
HINT: Imagine a shared online real-world-based sandbox environment, like Second Life crossed with Google Earth, but in a first person game environment. And then imagine it is open source, and users can host their own servers or add their own "multiverse" layers to an existing server, and ultimately create their own mini-games, simulations, art projects or anything else they want to share, with everyone or just with their own friends.

Well, that escalated quickly, didn't it? I apologize for the roller coaster ride here, but there is really no way to explain this whole project without getting into my ultimate end goals. And while it may seem rash to spill such long term plans in a public forum like this, that's one reason I'm starting here in my beloved Torque Community instead of blasting it out to the whole world yet. In the end, though, you really can't create an open source project in secret, can you?
I'm looking for feedback of all sorts at this point, including:
- Does this project interest you?
- Would you use this technology in a game or other virtual reality project, with a separate standalone World Server application?
- Would you use this technology if it could be designed without the extra application opening up, or with it happening less obviously?
- Would you participate in the multiverse sandbox environment described above, and if so would you pay a fee for special privileges like being able to create your own "layers"?
- If this was an open source project, would you join it and contribute code and resources to improve it?
- Finally, and perhaps most importantly, would you consider contributing to an indiegogo campaign or in some other way be willing to help finance the effort to make any or all of these things happen?
Oh yeah, before I forget... as a reward for making it all the way to the end of this blog, how about a LINK? Yes, it's true, the project is already past the point of pure vaporware and into the zone where I have an actual download. Be warned, however - it is limited to the area around Eugene at the moment, it is slow, it is full of programmer art and stock GUIs from the Unity Advanced Multiplayer Kit, and it is stocked with only the ultra-low resolution default FlightGear terrain, which at 90m is obviously far too low for a first person game. This is all fixable, given more time to throw at it.
Finally... sorry Torque users, but the first version that works well enough to share is the Unity3D version. However, here are a couple of screenshots to prove that it is almost working in Torque. I could have kept going and fixed everything, but I thought I should test the waters here to see if anyone is even interested before spending many more hours on the Torque version.


Anyway, about those links! There are actually two files to download: a fairly large (450M) file which contains the FlightGear end of things, and then a much smaller (40M) Unity client for Windows.
The FlightGear side is here:
www.brokeassgames.com/MMOKit/FGWorldServer.zip
Sorry for the hoops to jump through, but the install process at this point is a little awkward. You need to make a shortcut to /bin/fgfs.exe after you unzip that file, and then give it the following command line arguments:
--fg-root="..minimal_fgdata" --aircraft=UFO --lat=44.02 --lon=-123.082 --altitude=800.0 --heading=0.0 --disable-splash-screen
Once you have that working, it should bring up a square flightgear window, 800x800 pixels in size. You may want to press F10 to get rid of the menu before proceeding. If you are doing this at night, Oregon time, then you will want to go to Environment->Time Settings first, and set the time to something with daylight.
Next, you will need to unzip the Unity side:
www.brokeassgames.com/MMOKit/MMOKitClient.windows.zip
This should be fairly straightforward, just run the MMOKitClient.exe. In order to use the demo, please make a new account with a valid email, and click through the required character-generation screen (the skills etc. don't actually do anything but you have to allocate them all in order to proceed). If all goes well you should end up with a character standing on a hill in South Eugene. Terrain and skybox refreshes should happen automatically but you can hit the 'p' key to force them.
Good luck! There is much that could go wrong (again, v0.001) but if by chance it all works and you get in, please let me know!
If you have less stomach for bleeding edges, feel free to wait a while until some of the bugs are worked out.
------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------
EDIT: (5/31) Speaking of bugs getting worked out, there is a new download available on this project! I'm going to leave the above downloads as they are, for archive/comparison purposes, but the new version of the unity project is here:
www.brokeassgames.com/MMOKit/MMOKitClient.02.windows.zip
You can use the same flightgear download as above, but you'll need to drop three files into it to update it to the new version. You can find them here:
www.brokeassgames.com/MMOKit/FGWorldServer.patch.zip
Inside that are two directories, "bin" and "minimal_fgdata". Inside the bin directory is a new fgfs.exe, which you'll want to put in your FlightGearWorldServer/bin directory, and in the minimal_fgdata are two xml files, which you'll want to drop into your FlightGearWorldServer/minimal_fgdata directory.
There are two major changes made by this update, one for skybox image creation and the other for terrain loading.
For skyboxes, previously I was forced to move the camera five times in flightgear and take five pictures, which was very, very slow. Now I've figured out how to set up five simultaneous camera views in flightgear and render them to one very wide window and then I chop apart the single huge screenshot into five pieces, all in one operation. MUCH faster. Still not realtime or anything, you will notice the lag, but it's not as horrendous as it was.
For terrain, in the interests of space efficiency I was previously having flightgear look up and replace the same nine terrain storage files as the player moved around... but with the terrain lookup also being terribly slow, I decided to trade some space for speed and cache the data instead, under tile latitude/longitude coordinates. Now when you move around over terrain you've already seen, it should reload fairly quickly, and only drag on the edges of your known universe.
More news upcoming, but that will be in another blog...
#42
05/10/2013 (6:37 pm)
Ok, Going through event viewer right now. Just to verify that it was a crash to desktop
#43
What windows version are you running?
05/10/2013 (9:18 pm)
Hmm, that's weird... I've only tried this on one other computer besides mine, but I do have one friend who downloaded and ran it and it worked. Maybe look for your flightgear log file? I don't have my windows box turned on atm but it was in a weird place - windows user folder/ AppData/Roaming/flightgear.org if I remember correctly.What windows version are you running?
#44
Also, Ben, I don't know what your internet speed or available hard drive situation is, but the 450M flightgear download is actually a chopped down version of a larger file, which is here:
www.brokeassgames.com/MMOKit/FGWorldServer.more_textures.zip
That in itself is chopped down from the larger flightgear data directory, which is many gigs. The 450M version is working fine for me, but it could be that somehow some of the missing images are causing a crash on your system. For anyone on the art side who really wants to dig into this project, and who has good fast internet and a lot of empty drive space, I recommend you just bite the bullet and download the entire fgdata project from flightgear.
Here's the main download portal, some clicking around will uncover all kinds of goodies there:
www.flightgear.org/download/
Oh, btw Agent, you may be interested in this:
"FlightGear has a seamless, continuous oblate ellipsoid world available for you to explore."
05/11/2013 (11:20 am)
Other things to try: for anyone interested in this project, it wouldn't hurt a bit to go ahead and download the current release build from FlightGear.org, and just try it out. You can fly the UFO if you don't want to deal with trying to fly a real airplane, but if you want to fly a plane I recommend starting with the Dragonfly, it's an ultralight and quite easy as planes go. You'll have to do some research to even figure out how to fire up the engine, but hey that's the fun part right?Also, Ben, I don't know what your internet speed or available hard drive situation is, but the 450M flightgear download is actually a chopped down version of a larger file, which is here:
www.brokeassgames.com/MMOKit/FGWorldServer.more_textures.zip
That in itself is chopped down from the larger flightgear data directory, which is many gigs. The 450M version is working fine for me, but it could be that somehow some of the missing images are causing a crash on your system. For anyone on the art side who really wants to dig into this project, and who has good fast internet and a lot of empty drive space, I recommend you just bite the bullet and download the entire fgdata project from flightgear.
Here's the main download portal, some clicking around will uncover all kinds of goodies there:
www.flightgear.org/download/
Oh, btw Agent, you may be interested in this:
"FlightGear has a seamless, continuous oblate ellipsoid world available for you to explore."
#45
I am running Windows seven 64 bit
As for the flight gear data I can do that. I have a spare 750 GB hard drive in my system that is barely even used.
I have already downloaded the flight gear program.
I do not know my internet speed. Hold on.
05/11/2013 (1:34 pm)
Hey Chris,I am running Windows seven 64 bit
As for the flight gear data I can do that. I have a spare 750 GB hard drive in my system that is barely even used.
I have already downloaded the flight gear program.
I do not know my internet speed. Hold on.
#46
I don't need to know your internet speed, just making sure you're not on dialup before I start throwing gigs of data at you. ;-)
05/11/2013 (2:01 pm)
So, can you run the stock flightgear program, but my modified World Server version crashes for you? (Just clarifying where we are at.)I don't need to know your internet speed, just making sure you're not on dialup before I start throwing gigs of data at you. ;-)
#47
As for the Stock Flight Gear Program.
It does not crash on start up.
05/11/2013 (2:06 pm)
I am not on dial up.As for the Stock Flight Gear Program.
It does not crash on start up.
#48
You can try deleting the .prefs files in that directory as well, that sometimes helps. If you find the log file go ahead and email it to me, if you don't mind, maybe I can figure out what's going on.
You also might want to delete the xml and cache files in that flightgear.org directory.
05/11/2013 (5:34 pm)
Hm, did you check for that log file? It should be in (your windows user directory)/AppData/Roaming/flightgear.org/fgfs.logYou can try deleting the .prefs files in that directory as well, that sometimes helps. If you find the log file go ahead and email it to me, if you don't mind, maybe I can figure out what's going on.
You also might want to delete the xml and cache files in that flightgear.org directory.
#50
05/12/2013 (4:19 pm)
Cool, yeah I still have to do a little more reading to see what's actually all in the system
#51
If you have any spaces in your path leading to fgfs.exe, then you need to put quotes around the fg-root parameter, ie
--fg-root="C:/My Path With Spaces/FlightGearWorldServer/minimal_fgdata" etc.
EDIT: yup, that apparently fixed it, so in case anyone is waiting in the wings to let somebody else try it first... we have our first survivor!
05/12/2013 (4:23 pm)
Okay, I think I have solved Ben's problem... for anyone else trying to get this to work, let me specify:If you have any spaces in your path leading to fgfs.exe, then you need to put quotes around the fg-root parameter, ie
--fg-root="C:/My Path With Spaces/FlightGearWorldServer/minimal_fgdata" etc.
EDIT: yup, that apparently fixed it, so in case anyone is waiting in the wings to let somebody else try it first... we have our first survivor!
#52
05/14/2013 (4:06 am)
keep going on the Torque Version Chris, this has really taken off (pun intended) ;)
#53
05/14/2013 (10:20 am)
Hehe, thanks DS! Expect more info within the next two weeks... had to switch from coding to plaintext engineering in the form of a grant application, to see if we can get the next few months of development on this thing funded! Wish me luck.
#54
05/14/2013 (12:21 pm)
That sounds awesome Chris, I only have a week left of school, so after that I'll have plenty of time to help work on projects. I'm just imagining all the possibilities now, as you've seen in my only blog post that I've been wanting this for some time now.
#55
Check the bottom of the blog for new file downloads and a description.
05/31/2013 (2:38 pm)
SO... in case anyone is still following this blog, there have been many exciting developments which I don't want to jinx by sharing them with you at this point, but there have also been updates to the project which I am sharing right now!Check the bottom of the blog for new file downloads and a description.
#56
I now understand a little more about how you plan on implementing flight gear data and I was thinking of what you said about "chopping out the code" and putting in T3D, which I originally thought was what you were already working on and seemingly to me the single best idea for the project. I would think that wou be the best overall especially visually... But I understand about the coding hours part which is a drag. Anyway, pretty much I wanna partner up and join your efforts cause I also want this like you wouldnt believe and would do anything in my power to move it forward. I dont know what else to say!
06/01/2013 (2:27 am)
I now have completed the game design certification course at sacramento city college, which the last class being level design. We had to learn basis java script and used unity to develop levels. Coding is hard. Although I had trouble I powered through and got an A! I now know that I want to stay in the land of game art. Chris, now that that madness is over, I'd like s'more. I plan on lookin for for out here in the bay area, but i would love to do all or as much of the art for this project as humanly possible. As I've mentioned before, this is exactly what I have been wanting to work on pretty much since joining garage games in 2008. I fully know the possibilities of what a sandbox planet could deliver, especially if "dimensions" were possible to give developers their own version of earth.I now understand a little more about how you plan on implementing flight gear data and I was thinking of what you said about "chopping out the code" and putting in T3D, which I originally thought was what you were already working on and seemingly to me the single best idea for the project. I would think that wou be the best overall especially visually... But I understand about the coding hours part which is a drag. Anyway, pretty much I wanna partner up and join your efforts cause I also want this like you wouldnt believe and would do anything in my power to move it forward. I dont know what else to say!
#57
And yeah, coding is definitely not for everybody. I often think it's not a good thing for sane or well adjusted folks in general. :-P
----------------------------------------------------------------------
But since you're so on board with the program, and others seemed interested here as well, I guess maybe it wouldn't hurt to spill the beans a little, and confess to what I've been up to for the past few weeks.
(Watch out, another *monster comment* on the way!)
Long story short, a couple of days ago I applied for some actual _funding_, to keep me working on this for more than a few days at a time. (If you could all please cross your fingers and hold your breath for a while... that'd be great!)
But first, the backstory...
Immediately after I got this prototype working, I became involved in an extended conversation with an _extremely_ helpful developer from the FlightGear community, by the screen name of "Hooray". This person and I took a hard look at my project from the perspective of a certain funding organization which supports research and development on new internet/information transfer and distribution technologies.
At the same time, I got filled in a little on the different protocols and standards that currently exist in the simulation industry for accomplishing goals very similar to mine.
To boil it down: I went in the opposite direction from chopping out the code and putting it in T3D. Instead, I am focusing on making FlightGear a better Image Generator.
Because, as it turns out, that's the closest industry standard way to describe what I'm doing here. I didn't know anything about this stuff before a month or two ago, but it turns out the flight simulator industry (as in, real jumbo jet trainers with full surround screens and force feedback controls, etc) has been dealing with this problem for years, except in their case they are dealing with separate processes on different machines. They'll have one machine rendering the view out the window of the plane, and then other machines running the cockpit controls and flight simulation aspects.
In most cases, the communication protocols used for these setups have been hand rolled proprietary solutions, but sooner or later Boeing decided to throw some human hours into making up a standard. They called it the Common Image Generator Interface (CIGI). It offers "host" processes (which is what they call the cockpit/flight simulator which consumes the images) a standard protocol by which they can communicate with the Image Generator, which in my case would be FlightGear. In addition to specifying camera view details, the host also has access to a variety of world-modification controls, for controlling such simulation parameters as current local weather, wave height, time of day, etc.
Besides CIGI, there are also a couple of other standardized protocols in the industry, one called HLA (High Level Architecture) and the other called DIS (Distributed Interactive Simulation), which are both oriented toward more or less equal communications between parallel simulations, rather than the specific image server / image consumer relationship described by CIGI. HLA is going to come up later but let's forget about it for now.
(continued to next comment...)
06/01/2013 (11:25 am)
Right on, Agent! Congrats on graduating with an A, good job man!!And yeah, coding is definitely not for everybody. I often think it's not a good thing for sane or well adjusted folks in general. :-P
----------------------------------------------------------------------
But since you're so on board with the program, and others seemed interested here as well, I guess maybe it wouldn't hurt to spill the beans a little, and confess to what I've been up to for the past few weeks.
(Watch out, another *monster comment* on the way!)
Long story short, a couple of days ago I applied for some actual _funding_, to keep me working on this for more than a few days at a time. (If you could all please cross your fingers and hold your breath for a while... that'd be great!)
But first, the backstory...
Immediately after I got this prototype working, I became involved in an extended conversation with an _extremely_ helpful developer from the FlightGear community, by the screen name of "Hooray". This person and I took a hard look at my project from the perspective of a certain funding organization which supports research and development on new internet/information transfer and distribution technologies.
At the same time, I got filled in a little on the different protocols and standards that currently exist in the simulation industry for accomplishing goals very similar to mine.
To boil it down: I went in the opposite direction from chopping out the code and putting it in T3D. Instead, I am focusing on making FlightGear a better Image Generator.
Because, as it turns out, that's the closest industry standard way to describe what I'm doing here. I didn't know anything about this stuff before a month or two ago, but it turns out the flight simulator industry (as in, real jumbo jet trainers with full surround screens and force feedback controls, etc) has been dealing with this problem for years, except in their case they are dealing with separate processes on different machines. They'll have one machine rendering the view out the window of the plane, and then other machines running the cockpit controls and flight simulation aspects.
In most cases, the communication protocols used for these setups have been hand rolled proprietary solutions, but sooner or later Boeing decided to throw some human hours into making up a standard. They called it the Common Image Generator Interface (CIGI). It offers "host" processes (which is what they call the cockpit/flight simulator which consumes the images) a standard protocol by which they can communicate with the Image Generator, which in my case would be FlightGear. In addition to specifying camera view details, the host also has access to a variety of world-modification controls, for controlling such simulation parameters as current local weather, wave height, time of day, etc.
Besides CIGI, there are also a couple of other standardized protocols in the industry, one called HLA (High Level Architecture) and the other called DIS (Distributed Interactive Simulation), which are both oriented toward more or less equal communications between parallel simulations, rather than the specific image server / image consumer relationship described by CIGI. HLA is going to come up later but let's forget about it for now.
(continued to next comment...)
#58
Instead, let's talk about why I'm willing to take this fork in the road and commit myself to a multi-process model, instead of just building everything into one executable.
Basically, it comes down to two giant things. First: the primary and immediate _disadvantage_ of this method - cluttering up the end user's screen with multiple windows - appears very likely to not be a problem. It appears feasible to just tell FlightGear not to open a main window at all, and render images to buffers instead of the screen. The console window is definitely going to be easy to get rid of, but the main window itself should not be too far behind. At this point, the end user will never have to know a thing about FlightGear's existence.
So, with that out of the way, let's look at the second of the two giant things: the primary and immediate _advantage_ of doing the work in FlightGear is: our work is usable to anybody running any app anywhere, instead of being useful only in Torque. Or Unity, if we went that route. Basically, every hour of coding on a specific application of this technology is an hour spent replicating work somebody else has already done in FlightGear, and an hour which will have to be replicated again and again for every other app which might want to do the same thing.
On the other hand, every hour spent working on the underlying technology and the means of distributing the results is an hour that keeps multiplying itself every time another client application joins the project!
In addition, by running as close to FlightGear as possible, we get to take advantage of their pre-existing array of tools and utilities, not to mention joining forces with their healthy and active community.
Sharing the common standards for flightgear scenery, even though we will likely end up hosting our own servers in order to implement the many layers aspect described above, will allow us to continue to receive the benefits of the ongoing work they are doing on their own world model, as well as allowing us and any other future users of this system to easily submit our changes back up to the FlightGear community.
Finally, one last nail in the coffin is the fact of the continuously expanding number of cores on a standard CPU these days. Spreading tasks across more processes, rather than cramming them into one process, seems to be the name of the game these days.
On top of that, as mentioned above, modularity also makes it trivial to expand this application onto different machines (eg having an image server in the cloud).
All in all, I think we're going the right way with this. Here is some of the actual technical description I used in my application, to explain things in a little more precise detail... and then I'm going to shut the heck up and go outside and get some sun!
(continued to next comment...)
06/01/2013 (11:26 am)
Instead, let's talk about why I'm willing to take this fork in the road and commit myself to a multi-process model, instead of just building everything into one executable.
Basically, it comes down to two giant things. First: the primary and immediate _disadvantage_ of this method - cluttering up the end user's screen with multiple windows - appears very likely to not be a problem. It appears feasible to just tell FlightGear not to open a main window at all, and render images to buffers instead of the screen. The console window is definitely going to be easy to get rid of, but the main window itself should not be too far behind. At this point, the end user will never have to know a thing about FlightGear's existence.
So, with that out of the way, let's look at the second of the two giant things: the primary and immediate _advantage_ of doing the work in FlightGear is: our work is usable to anybody running any app anywhere, instead of being useful only in Torque. Or Unity, if we went that route. Basically, every hour of coding on a specific application of this technology is an hour spent replicating work somebody else has already done in FlightGear, and an hour which will have to be replicated again and again for every other app which might want to do the same thing.
On the other hand, every hour spent working on the underlying technology and the means of distributing the results is an hour that keeps multiplying itself every time another client application joins the project!
In addition, by running as close to FlightGear as possible, we get to take advantage of their pre-existing array of tools and utilities, not to mention joining forces with their healthy and active community.
Sharing the common standards for flightgear scenery, even though we will likely end up hosting our own servers in order to implement the many layers aspect described above, will allow us to continue to receive the benefits of the ongoing work they are doing on their own world model, as well as allowing us and any other future users of this system to easily submit our changes back up to the FlightGear community.
Finally, one last nail in the coffin is the fact of the continuously expanding number of cores on a standard CPU these days. Spreading tasks across more processes, rather than cramming them into one process, seems to be the name of the game these days.
On top of that, as mentioned above, modularity also makes it trivial to expand this application onto different machines (eg having an image server in the cloud).
All in all, I think we're going the right way with this. Here is some of the actual technical description I used in my application, to explain things in a little more precise detail... and then I'm going to shut the heck up and go outside and get some sun!
(continued to next comment...)
#59
Abstract - explain the whole project:
Modify the Open Source flight simulator FlightGear by giving it Image Generator (IG) capabilities, with which to provide images and other world data to a variety of other applications. The FlightGear community maintains a complete Earth model with terrain textures and placement of buildings/objects derived from publicly available geographic data, and weather/skydome simulation based on METAR data and other resources. New vector and raster data can be imported into FlightGear using the TerraGear tool set, and work is already underway within the FG community to support runtime import of OpenStreetMap (OSM) data and other geographic information sources. We propose to use industry standard communication protocols - probably CIGI (Common Image Generator Interface), also possibly involving HLA (High Level Architecture), or some combination of these two standards - to leverage the world visualization capabilities of FlightGear, independent of its function as a flight simulator. If feasible, we hope to add as much of this support as possible to the underlying level of the OpenSceneGraph graphics toolkit, on which FlightGear is based, in order to make our work useful to a wider audience, but we will fall back on support for FlightGear directly if the additional complication of this approach outweighs the benefits. If time allows, we also intend to provide at least one barebones sample client application, using Unity3D or Torque3D, to demonstrate a potential client use case.
Describe your target community:
Students, researchers, scientists, game and simulation app developers, video producers and animators, and others. Anyone who could benefit from a streaming 3D visualization of geographic data.
Compare your own project with existing projects, what's new and original?
This project takes data that is usually associated with GIS applications and makes it available to a wide variety of other applications, through the medium of an open source flight simulator. Google Maps and a myriad of powerful GIS applications already provide users with a top down map view of geographic data, and the tools to modify it. Google Earth adds complete satellite photo texture coverage, and a 3D view with a free camera interface, but not in an open source, open protocol environment. This project aims to provide a 3D visualization of geographic data - including optional time of day and weather as well as other information, such as placement of buildings, forests or other objects, and local terrain heights and textures - using an industry standard communication protocol that encourages the consumption of this data by diverse client applications. We will accomplish this using a completely open source tool chain (OpenSceneGraph, FlightGear, CIGI and/or HLA) and publish our results under an open source license, providing a zero cost, OSS alternative to the multiple proprietary, and generally very expensive, Image Generator solutions already available.
06/01/2013 (11:27 am)
Abstract - explain the whole project:
Modify the Open Source flight simulator FlightGear by giving it Image Generator (IG) capabilities, with which to provide images and other world data to a variety of other applications. The FlightGear community maintains a complete Earth model with terrain textures and placement of buildings/objects derived from publicly available geographic data, and weather/skydome simulation based on METAR data and other resources. New vector and raster data can be imported into FlightGear using the TerraGear tool set, and work is already underway within the FG community to support runtime import of OpenStreetMap (OSM) data and other geographic information sources. We propose to use industry standard communication protocols - probably CIGI (Common Image Generator Interface), also possibly involving HLA (High Level Architecture), or some combination of these two standards - to leverage the world visualization capabilities of FlightGear, independent of its function as a flight simulator. If feasible, we hope to add as much of this support as possible to the underlying level of the OpenSceneGraph graphics toolkit, on which FlightGear is based, in order to make our work useful to a wider audience, but we will fall back on support for FlightGear directly if the additional complication of this approach outweighs the benefits. If time allows, we also intend to provide at least one barebones sample client application, using Unity3D or Torque3D, to demonstrate a potential client use case.
Describe your target community:
Students, researchers, scientists, game and simulation app developers, video producers and animators, and others. Anyone who could benefit from a streaming 3D visualization of geographic data.
Compare your own project with existing projects, what's new and original?
This project takes data that is usually associated with GIS applications and makes it available to a wide variety of other applications, through the medium of an open source flight simulator. Google Maps and a myriad of powerful GIS applications already provide users with a top down map view of geographic data, and the tools to modify it. Google Earth adds complete satellite photo texture coverage, and a 3D view with a free camera interface, but not in an open source, open protocol environment. This project aims to provide a 3D visualization of geographic data - including optional time of day and weather as well as other information, such as placement of buildings, forests or other objects, and local terrain heights and textures - using an industry standard communication protocol that encourages the consumption of this data by diverse client applications. We will accomplish this using a completely open source tool chain (OpenSceneGraph, FlightGear, CIGI and/or HLA) and publish our results under an open source license, providing a zero cost, OSS alternative to the multiple proprietary, and generally very expensive, Image Generator solutions already available.
#60
06/10/2013 (7:55 pm)
Hey Chris, I was wondering if I could get in contact with you. My email is agentdeluxe@gmail. Thanks! 
Benjamin Stanley
This time the application just Crashes to desktop.
Going to try and run it in compatibility mode.