On 09/15/09 03:25, James Turner wrote: >> I suspect penaltyForNav is broken, probably by me - so that's where I >> shall look next.
> This is 'fixed' now Thanks. > - except it's not. > penaltyForNav is basically broken - we all know it's broken > conceptually, but it's also broken in practice, because it doesn't > even do what it claims Agreed. It makes no sense. > (and never has, that I can see) Agreed. It has been broken for many years, probably since Day One. > - bias to > directional transmitters based on aircraft *heading*. The problem is > it's biasing based on *bearing* from the aircraft to the transmitter. Neither of those things is realistic. In real life, the reversible ILS transmitter is controlled by a switch in the ATC tower, switched to match the choice of active runway, which in turn is normally based on the _wind_ ... not on the position or heading of any particular aircraft. > The fix is sort of a work-around (but also a correctness improvement); Improved but still highly unrealistic. It is only a very rough placeholder, pending a decent solution. Constructive suggestion: Seriously, unless/until we can do a reasonable job of switching the reversible ILS, it would be better to not switch it at all. In particular, it would be better to just settle on one end or the other and stick with it for the duration of the simulation. I would initialize it randomly during startup, and leave it alone thereafter. This would create a 50/50 chance of having to shoot a the ILS with a tailwind and then execute the circle-to-land procedure ... which is good practice anyway. If you make the switch visible in the property tree, on a per-navaid basis, anybody who really cares can go in there and throw the switch the way he likes. Having navradio.cxx throw the switch in mid-flight, based on completely bogus criteria, is really, really, really not appropriate. ======================== What's worse is that all of the above is only the tip of the iceberg. The iceberg as a whole is what I call "nontrivial external situations". Here is another example of what I'm talking about: Suppose there is a multiplayer situation where there are N aircraft, each of which has one DME and two ILS receivers, all tuned to the same station. If we expect each nav radio to synthesize its own IDENT signals, there are then 5N different IDENT signals, all unsynchronized. This is unrealistic, because in real life there is only IDENT signal, synchronized across all three transmitters (LOC, GS, and DME) ... so the received audio will be perceived as synchronized across all 5N receivers. Similarly all N aircraft should receive the same audio, synchronized, from any ATIS transmitters. Similarly, to return to the topic that started this thread, all N aircraft should see ATC make the same choice as to which end of a reversible ILS is in use. Similarly, ATC should turn on the runway lights and approach lights for the runway in use, at night and during marginal weather. The lights for other runways should be turned off. All N aircraft should see the same set of lights. Similarly all N aircraft should see the same "AI traffic". As far as I can tell, the simplest and best way to implement this is to have, at least conceptually, N+1 agents, i.e. N+1 processes: one for each of the N aircraft, doing the usual FGFS aircraft related functions, plus one representing what's going on outside the aircraft, including weather, ATC decisions, IDENT signals, AI traffic, et cetera. Call this the "external" process. I'm not sure about the implementation details. In an MP situation, the external process could be implemented on the MP server. Or all N aircraft in a given MP session could get together and elect one of the aircraft to implement the external functions and serve them to the other N-1 aircraft. Or all N aircraft could do all of the external calculations, redundantly, provided they synchronize all of the relevant data so that all copies of the calculation get identical, synchronized answers. (Identical is easy; synchronized maybe not so easy.) === I realize that doing a good job of implementing the external process is not easy. In the meantime, though, we should try to put in the hooks to make such a process possible in the future. That is, low-level routines such as navradio.cxx should not be making high-level decisions, such as ATC decisions about which runway is in use. ------------------------------------------------------------------------------ Come build with us! The BlackBerry® Developer Conference in SF, CA is the only developer event you need to attend this year. Jumpstart your developing skills, take BlackBerry mobile applications to market and stay ahead of the curve. Join us from November 9-12, 2009. Register now! http://p.sf.net/sfu/devconf _______________________________________________ Flightgear-devel mailing list Flightgear-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/flightgear-devel