Board index FlightGear Development New features

Simultaenous Dual-Controls Support Plugin

Discussion and requests for new features. Please note that FlightGear developers are volunteers and may or may not be able to consider these requests.

Simultaenous Dual-Controls Support Plugin

Postby negativewashout » Thu Jun 10, 2010 11:47 pm

Looking to develop an open-source cross-platform cross-sim dual controls support plugin primarily for flight instruction and just sharing an airplane on recreational flights, but also for two-crew airliner flying. I discovered there was interest in a co-pilot plugin on x-plane.org, and I'd like to bring the discussion here and (if this sort of thing is considered contributing) share the pseudocode I have so far which illustrates the ideas.

SUMMARY: Full simulatenous dual control support for host and guest. Flight model runs on both PC's with periodic updates to ensure everyone is "on the same page". Each person has a controloverride, if the otehr party will not let go when you holler "my airplane". The "master" flight model can be passed back and forth from host to guest(s).

And one of my favorites... push installing the plane. This allows, for example, you to show me your new plane you just finished and take me for a ride and let me take the stick for a few minutes and maybe try a landing after your first touch-and-go-demonstration. Obviously that won't be feasible on all simulators, platforms, and planes... but it's nice functionality. I wouldn't have to download, unzip, read, browse, etc... whatever the procedure is for the sim/platform in question.

I'm BRAND new to FG again since investigating briefly back in 2002 for a little bit (in the last year I discovered X-Plane, its Mars feature, and Plane-Maker and am very interested in the same support for FG, I'll browse and search the forums and get caught up before I pester too much with questions.

I'lll attach the work-in-progress code I have so far, it's not quite complete, but illustrates the ideas. I imagine some or maybe even MUCH of this functionality is already built into FG or has been worked on by someone. And if this is off topic here, please steer me in the right direction?

Thanks,
---Greg / NegativeWashout
negativewashout@gmail.com

PS. YOUTUBE button? Way cool. Rather than misuse it as a first test here, I'll just share the URL!
http://www.youtube.com/user/negativewashout

*
Code: Select all
/*****************************************************************************

Dual controls plugin
6-9-10
negativewashout@gmail.com

written with an eye for being cross-simulator and cross-platform,
including X-Plane, FlightGear, Flight Simulator X where possible.

C++-like pseudocode

*****************************************************************************/
class PilotControlPostion
{
public:
        float getElevatorCommand();
        float getAileronCommand();
        float getElevatorCommand();
        float getThrottleCommand();
        float getSpoilerCommand();
        bool getMyAirplaneButton();
        bytearray getMetadata();// optional byte array/string data
private:
        float timestamp; //exactly when the reading was taken
        float elevator; //range -1.0 (down) to +1.0 (up)
        float aileron; //range -1.0 (left) to +1.0 (right)
        float rudder; //range -1.0 (left) to +1.0 (right)
        float throttle; //range 0.0 (idle/cut) to +1.0 (full)
        float spoiler; //range 0.0 (clean) to +1.0 (full)
        bool myairplanebutton; // 1 = pressed
        bytearray metadata; first 2 bytes hold length else two zeros;
}

class PlaneData
{
/*****************************************************************************
Mostly for future expansion. Used to hold data and geometry of the plane, textures and panel from
a requested push-installation by the client to the host. Clearly some planes this would be easy
on, some complicated and time consuming and/or impossible.

For the complex ones, simplified geometry and low-res or no/default textures are possible solutions.

If the flight model is a problem running on the guest with the simplified plane, a user-enabled
override could allow the flight model to run on the host only – even when the guest is the Pilot
Flying (PF).
****************************************************************************/
public:
        bool installPlane();
        bool uninstallPlane();
        bool verifyInstallation();
private:
        string description;
        bytearray acf_file; //first 4 bytes hold length else zeros;
        bytearray paint1; //first 4 bytes hold length else zeros;
        bytearray paint2; //first 4 bytes hold length else zeros;
        bytearay metadata; //first 4 bytes hold length else zeros;
}

class FlightModel
{
public:
        //extensive methods and functions here, only a very few used for illustrative purposes
        bool setLocalFlightModel(FlightModel); sets member variables from another obj
        bool saveLocalFlightModel(); // sets member variables locally from current sim's flight model
        bool loadLocalFlightModel(); // sets the current running flight model locally from variables
       
private:
        //extensive members clearly needed here, only a very few used for illustrative purposes
        double longitude;
        double latitude;
        double altitude;
        int planet; // 0=Earth, 1=Mars, 2=Earth's Moon, 3=Sun, 4=the Death Star, etc.
        float gravity; Earth = 1.0, Mars is about 0.38, the moon ~0.16. The Death Star LOOKED like 1G...
        float pitch;
        float bank;
        float yaw;
        float angular_velocity_pitch;
        float angular_velocity_roll;
        float angular_velocity_yaw;
        float true_airspeed;
        float windvelocity;
        float winddirection;
        double outsideairtemperature;
        double outsideairpressure;     
}

class Network
{
/**** oversimplified for now, leaving this open ****/
public:
        bool TransmitCommand(bytearray); //returns 0 if OK, 1 if error
        bytearray getCommandString(); //returns command string or err msg
       
private:
        bytearray commandstring; // byte 0-1=length; byte 2=command token, bytes 3+ command string
}

class CommandParser
{
public:
        int getCommand(bytearray commandstring); // returns command token
        int getCommandLength(bytearray commandstring); // returns length of command string array
        bytearray getCommand(bytearray commandstring); // returns the command string (bytes 3-end)
private:
        bytearray commandstring; //byte 0-1=length; byte 2=command token, bytes 3+ command string
        int commandlength; //length of command string (not including 3 byte overhead)
        int command; //command token
}

bool ControlInputSmoother(&PilotControlPostion)
{
/*
 Reserved for future expansion; algorithms to deal with inaccuracies and network
        lag/delays. Simple predictable algorithms could be tested alongside creative AI ideas. Each
        PilotControlPosition object has a timestamp embedded in it for use in analysis/interpolation.
*/
}


PilotControlPostion getLocalControlPos()
{
        //reads local controls
}

PilotControlPostion CombineControlPositons(PilotControlPostion, PilotControlPostion)
{
/* combines two controls, taking into account remoteControlInputEffectiveness,
        localControlInputEffectiveness, myairplanebutton statuses, localControlsEngaged,
        remoteControlsEngaged
*/
}

bytearray getLocalCommand()
{
        //returns local command string for flaps, gear, non-flying commands, etc.
}

FlightModel processFlightModelBFrame(bytearray remotecommand)
{
/*******************************************************************************************
        Embedded in the remotecommand string will be FlightModel delta information; just the
changes since the last flight model transmission, plus a keyframe number. In the event of
packet loss, there would be a missing B-Frame, making it impossible to extrapolate the current
FlightModel.
        If a B-Frame comes in and missing B-Frames are detected, transmit the last good frame# and
ignore B-frames built subsequently until a new transmission is received built on the last good
B-frame. The local simulation will continue to run its current flight model until a valid
update can be received.
        If B-Frame loss problematic, Flightmodel delta information could be modified to reference
multiple previous frames, requiring a retransmission only if both/all referenced frames are
unreferenceable. I'd say we implement both options and experiement with performance in various
configurations.
        Flight models will always continue to run and update on each local simulator on their own;
the FlightModel object update is to ensure all machines are running the same flight model.

*******************************************************************************************/
}

main()
{
        //many initialization steps omitted here for simplification
       
        //command tokens
        const int NOOP = 0;
        const int CONTROLPOSUPDATE = 1;
        const int SETFLAPS = 2;
        const int SETGEAR = 3;
        const int ELEVATORTRMUP = 4;
        const int ELEVATORTRIMDOWN = 5;
        const int AILERONTRIMLEFT = 6;
        const int AILERONTRIMRIGHT = 7;
        const int AILERONTRIMLEFT = 8;
        const int AILERONTRIMRIGHT = 9;
        const int MOUSEACTION = 10; //incl left, mid, right click, double-click, X,Y
                                        //possible method of enabling access to other aircraft controls
        const int VIEWCOMMAND = 11; //if enabled, allows the remote pilot to set local view
        const int PAUSE = 12;
        const int CLOCKSYNC = 13; // needed for control input timestamps and flight model timing
        const int LOCALCONTROLSENGAGE = 14; //additional override support
        const int LOCALCONTROLSDISENGAGE = 15; //additional override support
        const int FLIGHTMODELUPDATE = 16; //key frame or flightmodel delta

        //misc constants
        const float CONTROLPOSMAX = 1.0 (maximum allowable absolute position)
        const int NUMBEROFCONTROLS = 2 (unused currently; could be set higher for future expansion)

        //variable initialization
        float localControlInputEffectiveness = 1.00; //our controls are initially 100% effective
        float remoteControlInputEffectiveness = 0.85; //85% effective for illustrative & testing purposes
        int flightmodelowner = 0; //0=local or seat # to support multiple inputs
        float controlposfrequency = 10.0; //initially ten times per second
        float flightmodelfrequency = 5.0; initially five times per second
        int flightmodelkeyframemaxinterval = 50; // max interval between flight model key frames
        int flightmodelBframecount = 0; // iterator from zero through flightmodelkeyframemaxinterval
        bool localControlsEngaged = 1;
        bool remoteControlsEngaged = 1;

        //object initialization
        Network networkobj = new Network(); //oversimplified for now
        PilotControlPosition localControlInput = new PilotControlPosition();
        PilotControlPosition remoteControlInput = new PilotControlPosition();
        PilotControlPosition combinedControlInput = new PilotControlPosition();
        CommandParser commandparserobj = new CommandParser();   
        FlightModel LocalFlightModel = new FlightModel();
        FlightModel remoteFlightModel = new FlightModel();
        FlightModel recentFlightModelBFrameCommands[flightmodelkeyframemaxinterval] =
                new FlightModel(); //array

        bool exit=0; //flag to exit main loop
        //main loop
        while(exit==0)
        {
                //Get remote command and process
                bytearray remotecommand = networkobj.getCommand();
                int remotecommandtoken = commandparserobj.getCommand(remotecommand);

                if(remotecommandtoken == CONTROLPOSUPDATE)
                {
                        bytearray remotecommandstring =
                                commandparserobj.GetCommandString(remotecommand);
                        UpdateControlPosition(remotecommandstring)
                }
                if(remotecommandtoken == SETFLAPS)
                {
                        //set flaps accordingly
                }               
                if(remotecommandtoken == SETGEAR)
                {
                        //set gear accordingly
                }
                if(remotecommandtoken == FLIGHTMODELUPDATE)
                {
                        if(flightmodelowner != 0)
                        {
                                //process update, be it a FlightModel object key frame or B-frame
                        }
                }


                if((1.0/controlposfrequency) seconds has passed, take another local controls reading)
                {
                        localControlInput = getLocalControlPos()
                        if(changed since last reading)
                        {
                                bool err = 0; // initialization
                                combinedControlInput = CombineControlPositons(
                                        localControlInput, remoteControlInput,
 localControlInputEffectiveness, remoteControlInputEffectiveness);                               
        err = ControlInputSmoother(&combinedControlInput);
                                bytearray controlposupdatescommand; //initialize

                                //(prepare controlposupdatecommand);
                                err = TransmitCommand(controlposupdatescommand);
                        }                       
                }

                if((1.0/ flightmodelfrequency seconds has passed, transmit another local flight model)
                {
                        if(flightmodelowner==0) // if we own it
                        {
                                flightmodelBframecount++;
                                if(flightmodelBframecount > flightmodelkeyframemaxinterval)
                                {
                                        //transmit a full flight model
 flightmodelBframecount = 0;
                                }
                                else
                                {
                                        //transmit flight model delta
                                }
                               
                        }
                }               
               
                //Get local command and process/transmit
                bytearray localcommand = getLocalCommand();
                int localcommandtoken = commandparserobj.getCommand(remotecommand);
               
                if(localcommandtoken)
                {
                        bool err = TransmitCommand(localcommand)
                }
               
        }
}
negativewashout
 
Posts: 4
Joined: Sat Jun 05, 2010 4:39 am

And the winner is ...

Postby Hooray » Thu Jun 10, 2010 11:55 pm

Looking to develop an open-source cross-platform cross-sim dual controls support plugin primarily for flight instruction and just sharing an airplane on recreational flights, but also for two-crew airliner flying. I discovered there was interest in a co-pilot plugin on x-plane.org, and I'd like to bring the discussion here and (if this sort of thing is considered contributing) share the pseudocode I have so far which illustrates the ideas.


And the FlightGear community proudly presents: http://wiki.flightgear.org/index.php/Dual_control

In other words: Welcome to the open source world, where there is all the unlimited power and flexibility that you can imagine ;-)
Please don't send support requests by PM, instead post your questions on the forum so that all users can contribute and benefit
Thanks & all the best,
Hooray
Help write next month's newsletter !
pui2canvas | MapStructure | Canvas Development | Programming resources
Hooray
 
Posts: 12099
Joined: Tue Mar 25, 2008 8:40 am

Re: And the winner is ...

Postby negativewashout » Fri Jun 11, 2010 1:52 am

NICE. Who wants to fly with me? I'll be the student. Let's fly a Cessna 172, I haven't flown one simulated or real in awhile and never in Flight Gear. I'm a total n00b. In fact I JUST downloaded and installed the stock Win FG on a WinXP Pro Box (Quad core 3.0Ghz, 4gb RAM). I have an IT background, but I'll listen and follow your instructions. I'll download both the C172's from that wiki page.

EDIT: Kudos to this gentleman - viewtopic.php?f=24&t=7142&start=0&st=0&sk=t&sd=a&hilit=saitek+yoke - for fixing a bug that almost had me shelve FlightGear for a bit. I was getting dizzy and quite pissed trying to figure out where to stop the constant, unstoppable left view scrolling. And when I finally did, and the starter would not stay engaged (had the same problem on an old car a number of years back)... Pause would not work, neither joy nor elevator trim worked. I climbed just above stall speed and descended at 82 knots before I ended task. It was a BAD first impression.


No GUI for assigning joy buttons/axes?



This should seriously be incorporated into the current live download given the popularity of Saitek's setup...

---Greg

Hooray wrote:
Looking to develop an open-source cross-platform cross-sim dual controls support plugin primarily for flight instruction and just sharing an airplane on recreational flights, but also for two-crew airliner flying. I discovered there was interest in a co-pilot plugin on x-plane.org, and I'd like to bring the discussion here and (if this sort of thing is considered contributing) share the pseudocode I have so far which illustrates the ideas.


And the FlightGear community proudly presents: http://wiki.flightgear.org/index.php/Dual_control

In other words: Welcome to the open source world, where there is all the unlimited power and flexibility that you can imagine ;-)
negativewashout
 
Posts: 4
Joined: Sat Jun 05, 2010 4:39 am

Re: Simultaenous Dual-Controls Support Plugin

Postby simbabeat » Fri Jun 11, 2010 3:13 am

Hey Greg I know I have talked to you on the x-plane.org and I would love to help you with this. Why don't we meet up some time on the MP network and figure out your view problems first?
User avatar
simbabeat
 
Posts: 3408
Joined: Sat Sep 12, 2009 12:19 am

Re: Simultaenous Dual-Controls Support Plugin

Postby negativewashout » Fri Jun 11, 2010 7:58 am

Yes Simbabeat, been good to chat with you on "The Org" as people there simply call it. Just PM or email me what you'd like me to do.

View problem solved - the Windows distribution (at least) just needs to include the patched XML file (see previous post) or whatever the update procedure is around here. No big deal.

Do you have a URL for the MP Network you speak of? I'm ready to fly dual as long as I can do it with outbound connections.

simbabeat wrote:Hey Greg I know I have talked to you on the x-plane.org and I would love to help you with this. Why don't we meet up some time on the MP network and figure out your view problems first?
negativewashout
 
Posts: 4
Joined: Sat Jun 05, 2010 4:39 am

Re: Simultaenous Dual-Controls Support Plugin

Postby Hooray » Fri Jun 11, 2010 4:11 pm

negativewashout wrote:Do you have a URL for the MP Network you speak of?


All instructions are to be found here: http://wiki.flightgear.org/index.php/Multiplayer
Please don't send support requests by PM, instead post your questions on the forum so that all users can contribute and benefit
Thanks & all the best,
Hooray
Help write next month's newsletter !
pui2canvas | MapStructure | Canvas Development | Programming resources
Hooray
 
Posts: 12099
Joined: Tue Mar 25, 2008 8:40 am

Re: Simultaenous Dual-Controls Support Plugin

Postby Hooray » Fri Jun 11, 2010 5:05 pm

negativewashout wrote:SUMMARY: Full simulatenous dual control support for host and guest. Flight model runs on both PC's with periodic updates to ensure everyone is "on the same page". Each person has a controloverride, if the otehr party will not let go when you holler "my airplane". The "master" flight model can be passed back and forth from host to guest(s).


I have now taken a closer look at your concept and proposal, and I think it's pretty interesting.

While FlightGear already provides support for some of the things that you are interested in (i.e. multi-user/pilot aircraft), there are plans (or at least ideas) to improve its support for the type of use that you are interested in, you may want to check out the wiki, specifically:


So some of your ideas match plans for FlightGear future developments, and maybe it is helpful for your own development plans to check out these links, or even add your own suggestions to the wiki.

If you are still interested in working on your project and making it work with FlightGear, you will probably want to get in touch with other FlightGear developers, there is some work going on to improve the multiplayer system, namely by making it DIS or HLA compatible. But most FlightGear developers use the mailing list primarily: http://www.flightgear.org/mail.html

As can be seen by the DualControl addon, many things in FlightGear are already possible even without explicit design for them in the core code - just by using the built-in property tree and its support for scripting using "Nasal".
Please don't send support requests by PM, instead post your questions on the forum so that all users can contribute and benefit
Thanks & all the best,
Hooray
Help write next month's newsletter !
pui2canvas | MapStructure | Canvas Development | Programming resources
Hooray
 
Posts: 12099
Joined: Tue Mar 25, 2008 8:40 am

Re: Simultaenous Dual-Controls Support Plugin

Postby negativewashout » Fri Jun 11, 2010 5:49 pm

Yep, got it working. I should point out there IS no View -> Chat option to bring up a chat box in the current Win release I downloaded, but I can see the others' chats briefly.

What does everyone use for VoIP? I don't really plan to text-chat and FLY lol....

I've also installed the dual controls C172P - ready to fly with anyone who has it installed that can show me how it works.

Hooray wrote:All instructions are to be found here: http://wiki.flightgear.org/index.php/Multiplayer
negativewashout
 
Posts: 4
Joined: Sat Jun 05, 2010 4:39 am

Re: Simultaenous Dual-Controls Support Plugin

Postby Hooray » Fri Jun 11, 2010 6:08 pm

negativewashout wrote:I should point out there IS no View -> Chat option to bring up a chat box in the current Win release I downloaded, but I can see the others' chats briefly.

Just check the other menus (Network/Chat), it's probably been renamed and the documentation has not been updated yet - you are invited to fix the wiki article ;-)

I've also installed the dual controls C172P - ready to fly with anyone who has it installed that can show me how it works.

Check this forum for planning multiplayer events with fellow users: viewforum.php?f=10

Or use the IRC chat channel to get in touch with other people on multiplayer.
Please don't send support requests by PM, instead post your questions on the forum so that all users can contribute and benefit
Thanks & all the best,
Hooray
Help write next month's newsletter !
pui2canvas | MapStructure | Canvas Development | Programming resources
Hooray
 
Posts: 12099
Joined: Tue Mar 25, 2008 8:40 am

Re: Simultaenous Dual-Controls Support Plugin

Postby WooT » Fri Jun 11, 2010 6:20 pm

What does everyone use for VoIP? I don't really plan to text-chat and FLY lol....


You could try fgcom : http://wiki.flightgear.org/index.php/FGCOM

The "master" flight model can be passed back and forth from host to guest(s).


This one would be a really nice feature !
I hope the current state of multiplayer in FG can benefit from your contribution !
WooT
 
Posts: 92
Joined: Tue Mar 17, 2009 4:09 pm

Re: Simultaenous Dual-Controls Support Plugin

Postby Gijs » Fri Jun 11, 2010 6:54 pm

negativewashout wrote:I should point out there IS no View -> Chat option to bring up a chat box in the current Win release I downloaded, but I can see the others' chats briefly.

If you opened the main article about the Chat, you would have seen that it was moved as of version 1.9.
But, you're right that it should be added to the multiplayer howto as well. I'll edit it right away. Thanks!
Airports: EHAM, EHLE, KSFO
Aircraft: 747-400
User avatar
Gijs
Moderator
 
Posts: 9362
Joined: Tue Jul 03, 2007 2:55 pm
Location: Delft, the Netherlands
Callsign: PH-GYS
Version: Git
OS: Windows 10

Re: Simultaenous Dual-Controls Support Plugin

Postby Hooray » Fri Jun 11, 2010 7:40 pm

I am trying to provide some more information now:

SUMMARY: Full simulatenous dual control support for host and guest. Flight model runs on both PC's with periodic updates to ensure everyone is "on the same page". Each person has a controloverride, if the otehr party will not let go when you holler "my airplane". The "master" flight model can be passed back and forth from host to guest(s).


This works somewhat differently at the moment in FG, basically there is one client serving as the "master", while the other one is the "slave" (or guest). This setup is made possible by aircraft package which were modified accordingly.
So that the FDM data is synchronized using the MP protocol. You may want to get in touch with AndersG, who is the developer and maintainer of the DualControl addon. He can probably provide lots of additional insight.


And one of my favorites... push installing the plane. This allows, for example, you to show me your new plane you just finished and take me for a ride and let me take the stick for a few minutes and maybe try a landing after your first touch-and-go-demonstration. Obviously that won't be feasible on all simulators, platforms, and planes... but it's nice functionality. I wouldn't have to download, unzip, read, browse, etc... whatever the procedure is for the sim/platform in question.

This is another suggestion or feature request that has been repeatedly brought up here for FlightGear, too. Many users would like to have a way to (optionally) download certain aircraft automatically. You may want to search the forum (download aircraft) or take a look at http://wiki.flightgear.org/index.php/Si ... Deployment for additional details.


I'm BRAND new to FG again since investigating briefly back in 2002 for a little bit (in the last year I discovered X-Plane, its Mars feature, and Plane-Maker and am very interested in the same support for FG, I'll browse and search the forums and get caught up before I pester too much with questions.


Development related discussions take primarily place on the FlightGear developers mailing list, it is being archived and can be searched using mail-archive.com: http://www.mail-archive.com/flightgear- ... eforge.net

Posting requires subscribing or your messages will need to be approved before showing up.

I'lll attach the work-in-progress code I have so far, it's not quite complete, but illustrates the ideas. I imagine some or maybe even MUCH of this functionality is already built into FG or has been worked on by someone. And if this is off topic here, please steer me in the right direction?


It really depends on what your goals are and how far you want to go.

If you want to get feedback from fellow FlightGear users about your ideas, this is the right place. If you are looking for people to suggest new features, this is also the right place.
It is even the right place for finding people to test your work.

But the majority of FlightGear developers do indeed use the mailing list, and only rarely check back with the forums. FlightGear development itself is now being handled using gitorious. So, for getting feedback from fellow FlightGear developers, the mailing lists are the best place: http://www.flightgear.org/mail.html

Overall, it seems that FlightGear would seem like an ideal platform for implementing your project.
Most certainly for prototyping purposes. This applies in particular, because FG already has many of the required features in place, or at least the infrastructure is there to create new features easily, so it would not require too much work on your side.

So if you are eager to flesh out your design and illustrate your concept, using FlightGear is probably the best candidate for doing so quickly, simply due to its open nature and the fact that it does not need to be largely modified.

And most of us here can provide a helping hand if needed.

Many of the things that would be needed can already be done with the current FlightGear infrastructure (property tree, scripting, XML, multiplayer), even though some workarounds may be necessary (make sure to take a look at the developers section on the wiki for details about components like the property tree, networking and scripting).

The DualControl addon for example does not make use of any specific C++ extensions.
On the other hand, FlightGear also has its issues and the multiplayer protocol in particular while being very simple and robust has long been known for being pretty verbose and inefficient, there are plans to improve it: http://fgms.sourceforge.net/protocol.php

Taking a look at the previously posted links, it's easy to see that there is some obvious room for improvement, such as stopping to unconditionally transmit all properties for each client.

These plans to improve the protocol are fairly old however, and so far no one has really started this task, even though everybody here (and on the developers mailing list) will agree that improving the multiplayer protocol would be a good thing (just do a forum search).

But these features would require modifications to the multiplayer protocol itself, which in turn requires changes to the server code ("fgms, hosted at sourceforge: http://fgms.sourceforge.net/) and the multiplayer client code in FlightGear:

http://gitorious.com/fg/flightgear/blob ... tiplay.hxx
http://gitorious.com/fg/flightgear/blob ... tiplay.cxx
http://gitorious.com/fg/flightgear/tree ... ultiPlayer

While building the fgms multiplayer server from source is really simple to do on a Linux system (see http://wiki.flightgear.org/index.php/Ho ... yer_server ), building FlightGear itself and all its dependencies can be a pretty frustrating experience for newcomers, especially on a non nix system such as Windows. For people building on Windows, project files are available at: http://geoffair.net/fg/index.htm

But it can still be a pretty painful process.

And all this is really only relevant if you are familiar with C++ and network programming or at least highly motivated to become familiar with C++ and socket/UDP programming ;-)

http://wiki.flightgear.org/index.php/Pr ... _Resources

Take your time and do some research (forums, mailing list, wiki) and see what you want to do, if you should then still be motivated to start hacking FG, please do let me know if you need help doing anything in particular with FG.
Please don't send support requests by PM, instead post your questions on the forum so that all users can contribute and benefit
Thanks & all the best,
Hooray
Help write next month's newsletter !
pui2canvas | MapStructure | Canvas Development | Programming resources
Hooray
 
Posts: 12099
Joined: Tue Mar 25, 2008 8:40 am


Return to New features

Who is online

Users browsing this forum: No registered users and 0 guests