FSXHost?

Started by Corrupthawk, October 10, 2006, 04:02:38 PM

Previous topic - Next topic

Russell Gilbert

Quote from: -sam- on October 13, 2006, 03:49:53 AMWhen flying Vatsim you get all the different planes people are flying as Low Poly automatically downloaded from their server (at least I think it works like that).

Actually I think all those low-poly aircraft models are installed with Squawkbox, but that doesn't really matter.  Good timing on this question, because I just discovered that FSX has changed the way unknown aircraft are handled.

In FS2002/4, if your friend was flying a plane you didn't have, then you'd see him in whatever plane you were flying at the time.  So if you were in a Cessna, he'd appear to be in a Cessna also, even if he was really flying a 747.  This is all different in FSX, because when my new client program tries to create a fake plane for your friend, FSX rejects it completely if it doesn't recognize the aircraft type.

What I'm thinking about doing is creating a feature similar to the one that's in FSHost.  Although not many people probably know about it, there's a feature in FSHost that lets you "map" one plane to another.  This was created when FS2004 came out, so that if someone was flying a plane that was added in FS2004, and someone else was using FS2002, they'd at least get something similar.  If you look in the "planes.txt" file in your FSHost directory, you'll see that it contains a mapping from one plane to another, such as this:

# FS2002 default planes not in FS2004:

Cessna Skylane 182R RG = Cessna Skylane 182S
F4U-1A Corsair = Beech Baron 58
Sopwith Camel = Curtiss Jenny Military

# FS2004 default planes not in FS2002:

Boeing 737-400 Paint3 = Boeing 737-400
Boeing 777-300 Paint3 = Boeing 777-300 Paint1
Curtiss Jenny = Sopwith Camel
de Havilland Comet Grosvenor House = Beech Baron 58

This is on the server side though, so it affects anyone that connects to that server.  Now that we'll have a new client program, it means that each individual user can customize what they want to see when a certain aircraft isn't recognized.  So I'm thinking that the user that's connecting to a session with this new client program can edit a similar mapping file on his machine to basically say, "whenever someone's flying the Whatzit 9000, show him in the Wright Flyer instead."  And also a default for any other unknown aircraft, so he could say, "and if any other aircraft show up that I don't know about, just always show them in the Piper Cub".

So what I'm thinking is that if you had some low-poly models on your machine, you could do the same and map anything you wanted, even the default aircraft in FS2002, FS2004, and FSX, to low-poly replacements, and then it would just affect what you saw in your sim.

Is that what you were looking for?

Also, I'm happy to hear other ideas for how to solve this problem, if anyone has any.

Thanks,
Russell

westcoastatc

Repository of sorts might be an option.

Where all FSX clients check the FSHost Server for this list if it's there it gets downloaded and updated in the sim (prior to connecting?). This might also be an opportunity to wherehouse all the models where a given client doesn't have the gizmo700-B if a low-res is available on the server it can grab it. The mapping download would be painless as it's a small file but it would then allow for a standardized list for all clients joining and even if we couldn't or wouldn't want to do a low res repository for aircraft one could be made available as a seperate download. As a safety precaution when a mapping file is downloaded we might rename the original so it can be reverted instead of overwriting.

Just my thoughts on a solution for that.

Sitting here thinking I'm wondering about the local connection for FSX. If we're creating the session locally would we be eliminating connection issues for FS9 and '02 players (read: limits of DX9)  if sims connected locally to the new client then connected up to FSHost as an FSX client? Russell you made mention earlier of porting FSX back to FS9 protocols for ease and I'm sure you considered this.  I'm probably not as confident in DirectPlay as I should or would like to be. Thoughts? (Read: "shut-up and go home" IS an acceptable answer to this question.)

Take care;

Erik

Russell Gilbert

Hi Erik,

Interesting ideas about having a repository, and downloading the latest list to the client.  I can see possibilities there.

You asked about the session being created locally.  A better way of thinking about this might be to say that in FSX, there is  no session.  FS2002 and FS2004 both used DirectPlay to connect to an existing session, and once connected, they were in p2p mode with all the other players, so everyone sent their own data to everyone else directly.  With FSX they still have that model, both when connecting direct from one FSX to another and when connecting to a GameSpy session, but they've locked all of us multiplayer developers out of it completely by not allowing us to use any of the multiplayer data, and not releasing any multiplayer documentation.  So what we're doing now is using this new thing they've created called SimConnect, which allows our client-side program to talk directly to the guts of FSX, to tell it to do things or to read info about what it's doing.  So I opted to keep FSHost basically the same as it was and just make a client program that essentially was a converter, reading data from FSX and sending it into the FS2004 session as though it were another FS2004 player using DirectPlay, and conversely reading the packets from the other FS2002/4 players and creating AI planes in FSX (in single-player mode) via SimConnect.

The other option would have been to do the opposite, and make a client program (or programs) to work with all three sims.  For FSX it would talk SimConnect, and for FS2002/4 it would create a local DirectPlay session for them to connect to.  And in all three cases, it would talk to FSHost through some new protocol that I invented, which had nothing to do with DirectPlay.  The only problem with that approach is that although it would get rid of DirectPlay on the FSHost server, it wouldn't really help the '02 and '04 players because they'd still be using DirectPlay, just locally instead of across the internet, but I can tell you from my experience with SBRelay (which also creates a local DirectPlay session) that you have just as many problems with DirectPlay even if it's just local.  Plus they'd have to start using a new client program, which they don't currently have to do.  It might open up some interesting possibilities with switching from a p2p session to a client-server session though, similar to Vatsim/IVAO/FPI.

But as I mentioned before, sessions with only FSX and/or FS2002 will have slow update times so they hopefully won't suffer from the super-fast updates that FS2004 sends.

Ok, I'm not sure I've actually answered your quesiton now :) but you can tell me if you have more questions.

Russell

westcoastatc

RG

My underlying thought is "scale". Using the P2P model M$ has given us for '02 and FS9 has always had limitations and frustrations that pilots face when joining busy and robust games. A 16 player limitation, they just had no idea. It has always been a desire of mine, as you know, to move away from the limitations and ease the frustrations of players where M$ fell short on "scale". Maybe FSX will do that if connected through it's networking layer, maybe it won't but that's my curiousity about scale. Players like to be where it's busy and fun and getting to that magical point has been about ease of deployment of aps and connectivity for all players. There's only so much we can do given the options now layed out for developers with FSX but I always wonder from a "pilots / racer / players" perspective what is optimal to keep those players coming back so the draw remains for others. What you've built and done with FSHost has always been terrific and what it actually does besides the "connection" portal is nothing short of amazing. I hope you know this "ONLY" relates to the networking layer in the P2P model which we've all painfully felt in our own ways over the years. If the option to get away from the P2P connectivity all together with FSX is available I'd say most communities would understand that '02 and FS9 would no longer be supported.

I support and most importantly respect your decisions, always.

Erik

Corrupthawk

Well, I tried to make a post earlier in the day about this, but I believe the forums went down for a little while or maybe it was my connection.  Anyhow, Would it be possible for FSHost to somehow notice that if an aircraft even has the numbers (let's just say) 737 in the aircraft name, no matter if it's the Captain Sims Legendary, or a Flight 1 product; just so it catches the numbers 737 in the name would it not be able to transform any of those aircraft into using the default 737? 

The repository sounds like a good idea, but if someone comes in after you have connected, would you then have to be sent back to the repository to download a low-poly model of that aircraft; or would you download ALL of the low-poly models in a compressed file when you first join the server?
EliteFlyers -- We've got YOU covered coast to coast!!

-sam-

Interresting ideas !!

I like the idea of a Repository !
But where I still see a problem.. are the low-poly planes itself.
Either you (we) model the planes ourselfes.. or we have to search a suitable
(Low Poly, acceptable looking) plane and get the permission to use it.
I could imagine that maybe "project ai", Mike Stone, freeware section of alphasim would be interresting.
I think we cannot expect from the users to search all the planes by themselfes
and check/edit the aircraft configs to match the mapping in the planes.txt file.

Regardless this problem
I have two ideas how the whole thing could work.
In any case something like a seperat projekt must be started that collects, tests, edits the planes (configs if necessary)
and updates the planes.txt file(s).

1. A central Repository that stores all the plane "maps". An FSHost server would check
this central source from time to time to offer these updates it´s users.
But how does the user get the new/updated low poly aircraft ? 3 Ideas
Those planes are downloaded automatically by your client.
The user has to download each plane individually and install it. (The user also needs to inform himself about updates)
The updates happen in bigger steps, where the user needs to download a "pack"
of new low poly aircrafts.

2. There is also a central source.
But instead of directly updating a server. The server admin
is responsible to do this. In this Central Source there are different
planes.txt files available for example "general_aviation_01_planes.txt" or
PMDG_planes.txt" an so on. For each of these files there would be a
pack of low poly aircraft available. So for example someone has a FSHost
Server running to simulate military operations. The server admin would download
the military01_planes.txt and tells his users (via forum or server message)
to download file "military_MP_Pack_01.zip" from "central source" (some website).
He must also inform his users wich planes are supported with the specific pack. Like this users don´t need to download
everything (wich could be quite a lot after a while).. But only the "packs" supported by his favourite server.
Of course it would be possible to install several *_planes.txt files next to each other to support
warbirds, military, GA.. an so on.. all on just one server. This would of course require
the Users to download and install all the neccesary packs. I could also imagine there
is a special file like "User_planes.txt" that can be edited by the server admin (or users) to support
various planes that are not yet included in.. the project. Of cource he would than be responsible
to offer the correct low-poly planes himselfes. Maybe that file includes a simple value (variable) that can be set to 0 or 1
to set the prority to user or project plane.txt files. (In case he wants to replace a specific aircraft on his server
with a plane allready included in a pack file). That would be a great solution for our Simviation Airshows.
Than there would be a file.. let´s call it default_planes.txt that
contains
1. A mapping to the standard Cessna in case a user doesn´ t has any pack installed at all.
2. A mapping to one of the low poly planes in case a user has the pack installed.... but someone is flying
a plane the is not supported in a specific pack. Like this User "A" could still see User "B" in  fighter plane
instead of the default cessna when User "B" is flying the brand new fighter XY not yet supported by the pack.

This is just an idea of me how this could work. If you decide to do something similar in the future
I´m willing to help !! I´m a 3D Designer myself. I could model the one or other plane. But probabely
not all. So I could also help you contacting the people to get the rights for several low poly planes and so on.
I also could imagine that one of the big download sites could host the packs. I could ask at Simviation
who allready host some bigger projects.. like the freeware SRTM for the whole world.

Sorry for this large amounts of text  ;D

best regards,

sam



westcoastatc

RG

You're officially allowed to spank me ... I installed FSX this afternoon and now the blind man sees. What multiplayer in FSX ... now what you were talking about makes complete sense. I had heard from sources that FSX had multiplayer and assumed it was like FS9 or '02 and I guess my mind wouldn't jump track and understand.

Sorry I was so thick headed.

::goes and hides back under rock::

Erik

johannesmueller

Personally, I would "vote" for an "as simple as possible" Multiplayer FSX-Add-on that would allow FSX players to join FSHost sessions. I already have a list of people with FSX who can no longer join the server sessions (unless they revert to their FS9 systems, which some are doing  ;D ;D ).

All the other functions sound really great, and as soon as the basics are working there will be enough time to work out the feature-lists and work on whatever parts are possible. Heck, I'm certain we could even get some people together to help with the coding, if that was ok from your side, Russell. Once they can fly there will be enough time to do all of that :)

Cheers
John

Russell Gilbert

Erik,

No problem -- I still think your comments about scale are definitely valid.  My feeling about the DirectPlay problems is that in large sessions the amount of data being sent around becomes so huge that eventually DP makes a mistake and the session comes crashing down.  My hope is that as more people eventually move to FSX, we could see FSX-only sessions where all of the data flow is controlled by this new client program, so we'd finally be rid of the super-high data rates.  Changing everyone in the session from 20 location updates per second (in FS2004) to 4 location updates per second (in the new client program for FSX) would mean an overall data rate that was 5 times lower.  Does that mean we could have 5 times as many players before DirectPlay crashes?  We'll have to find out.  ;)  The FSX client will for the most part look like another FS2004 player, but one of the things I want to do is to have FSHost be able to detect that it's an FSX client connecting, so that FSHost admins can have FSX-only sessions if they want to.

Quote from: CorrupthawkWould it be possible for FSHost to somehow notice that if an aircraft even has the numbers (let's just say) 737 in the aircraft name, no matter if it's the Captain Sims Legendary, or a Flight 1 product; just so it catches the numbers 737 in the name would it not be able to transform any of those aircraft into using the default 737? 

The repository sounds like a good idea, but if someone comes in after you have connected, would you then have to be sent back to the repository to download a low-poly model of that aircraft; or would you download ALL of the low-poly models in a compressed file when you first join the server?

Corrupthawk,

Yes, absolutely, I think the aircraft mapping feature should be able to map exact matches as well as partial.  I'm not sure I want to build an entire regular expresion parser for strings like "text*text[abc]text*" but things like "contains 737" should be no problem.  :)  There will also be an option to say what aircraft should be used if nothing else works, such as a Cessna.

As for the repository, I think it would have to be just a list of aircraft for mapping.  I don't see (at the moment) a way to download the low-poly models and make that all work.

Quote from: -sam-I like the idea of a Repository ! But where I still see a problem.. are the low-poly planes itself.
Either you (we) model the planes ourselfes.. or we have to search a suitable (Low Poly, acceptable looking) plane and get the permission to use it.

Sam,

I agree, there are several problems, and it's all quite complicated.  I don't have access to any low-poly planes, so if they were to be installed with the new client program, they'd have to come from someone willing to donate them.  Without them, the mapping feature would at least allow FSX players to see similar planes for FS2002/4 players that were flying default aircraft.  I'll most likely create a mapping file when the program is first released, to cover the differences I know about.  For example, I've noticed that not all of the aircraft names are exactly the same in FSX.  So even though it has a 737, it doesn't have exactly the same one so it rejects it.  That would be an easy fix in the mapping file.  And as Corrupthawk said, it could map any other unknown "737" plane to the one in FSX.  But the rest of the features for low-poly models are still interesting, just harder. :)  I'm willing to work with anyone that wants to tackle the problem.

Thanks,
Russell

Russell Gilbert

Just as a quick update, I'm still making good progress on the client program.  It's able to connect to FSHost sessions now, and see all the other players.  It can also connect via SimConnect to FSX on the same machine, and create all the fake "AI" planes in FSX and keep them moving at high framerates.  The movement is quite smoothe now, so I'm very happy with that.  I have most of the basics working for the AI planes such as connecting, disconnecting, plane changes, etc.

One thing I've discovered is that there will be a maximum of 11 characters for player names now, so if you have a longer one, better start thinking of a new one. :)

Also, FSX still only shows remote planes if they're within 10 nm, just as it did in FS2004.  That's not something I can do anything about, but usually 10 nm is pretty good.

I've also discovered that I do have the ability to turn on smoke trails for the AI planes, so if two FSX players are in the session together, they should hopefully be able to see each other's smoke.  Getting that to work is still on the low priority list at the moment, along with things like making the flaps, gear, lights, doors, and propellers all show correctly.  But I was curious to see if it was even possible, and it is.

I haven't experimented with failures in FSX but that's an interesting idea for later as well.  Unfortunately the way they wrote it in FS2002/4, it was impossible to have FSHost generate failures for the players in the session.  It would only work with a one-on-one connection.  But with the new client program, more things are possible.

I've still got several things left to do, not least of which is sending the local FSX player's location data out to the other players so they can see you.  Right now I can see everyone else but they can't see me.  Good for testing anyway, when I'm slewing around looking at them from all angles. ;)  As soon as I get all the basics working, I'll post a beta version for you guys to start hammering on.  I'll keep you posted.

Russell

Bob_8712E

#25
As someone else said.....
Once again, Russell  "bails out"  another Microsoft's  FS version  ....  great Job Russell
My big concern is that I have not heard from anyone that has gotten FSX to work well even on a P4 3.2ghz ??
I would be interested to know if it really works as mine doesn't and I have warned all my FSHost players to try the demo before they buy and what problems to look for.
njhops.com/notams.htm

DS20LA

Keep up the good work Russell, we look forward to the beta(s) !!

Over at WSP, we've made it a very visible point to start throwing you ca$h tips (no dancing necessary) ;). Your efforts are much appreciated.


-Robert

Bob

Diito,

Great job Russell,  ;)






-sam-

Sounds great.. especially that flaps, doors and smokesystems will probabely work :)

One question.
If you get disconnected from the session for some reason
will you have to close the Sim or do you just have to reconnect
with your client program ? (A simviation member asked me that question yesterday)

Keep up the good work,

best regrads,

sam

Russell Gilbert

Quote from: DS20LA on October 18, 2006, 09:14:01 PMOver at WSP, we've made it a very visible point to start throwing you ca$h tips (no dancing necessary) ;).

Hey, I can dance if necessary!  ;D

I really appreciate the donations from you guys lately!  I woke up the other day thinking I needed to upgrade the hardware in this machine because of FSX and various other programs I'm using for testing at the same time -- by the end of the day, I had donations from three guys in your group, and it was a big help!

Russell