• TP - Original User Manual


    *** The TileProxy Project ***

    *** EIGTH BETA RELEASE (V8.1) - 30cm Version (November 16 2008) ***

    Pack the real world into your GPU.

    An interface between online map tile servers and FSX / FS9


    This is a the Beta 8.1 release of Tileproxy and the fastest Tileproxy release by far. This minor
    update fixes some installer issues and brings the broken color_hack back into operation.

    The technology used in the kernel driver has been improved significantly to bring you a crisp
    and  razor sharp flying experience for most general aviation purposes. In FSX, the outermost
    scenery ring is now loaded from a BGL file and not through Tileproxy which reduces the number
    of individual tiles that make up the scenery by at least one half. Even jets and turboprops
    will work nicely if you fly at cruising altitude.

    Note that compatibility with Google Inc.'s map servers had to be removed at the explicit
    request of Mike Hearn who is with Google Earth and Maps engineering department.
    This is unfortunate, but complying to this request was probably the wisest choice to make.

    Please check this manual to understand what this software does and how it has to be
    configured to run. This program is not fully configured "out of the box" to keeping the
    project out of legal troubles. Configuration of this program may require some basic
    understanding of the web (how to use search engines, how to form URLs) - or try get some
    help from friends and forum members.



    Flight Simulator Compatibility Chart

     
    Simulator Version    Compatibility     Detail Description of issues:       
    FSX SP1, SP2 and Acceleration
    in DirectX 9 mode    Best    Everything should work       
    FSX SP2 and Acceleration
    in DirectX 10 mode    Good    No moving map supported currently.       
    FSX RTM version
    (the DVD version)    Poor    Lots of black / water squares may appear close to the aircraft. Working on that.       
    FS 2004 (Century of Flight)    Medium    A few isolated black squares may appear.
    No moving map supported currently.
    Only hard land/water boundaries.
    Only 4.75m /pixel tiles.       
    FS 2002 (Std. and Professional)    Poor    Graphics rendering is interrupted for tile I/O, leading to lots of stutters.
    Like FS 2004 otherwise.    




    CPU Performance Chart with Tileproxy

    For a truly satisfying experience you want something like 500 tiles per second in flight with
    FSX. This is just a rough estimate based on my limited testing experience - your numbers
    may vary. In FS 2004 the tiles per second typically matches your frame rate - so get your
    framerate up (50-100 FPS) and your performance should be OK.

     
    CPU Type    Performance Rating    Peak Tiles per second to expect in mid Flight       
    Pentium IV, Pentium D, Intel Celeron and Celeron D, Athlon XP or MP    Poor    Below 200       
    Athlon 64 and Athlon 64 X2    Average    Between 200 and 400       
    Core Duo, Core 2 Duo    Good    Between 300 and 600       
    Intel Core 2 Extreme
    Intel Core Quad Q6600 or faster, AMD Phenom    Perfect    Between 600 and 1000       
    Dual Intel Xeon (8 cores)    Crazy    Honestly I don’t know    




    Changes compared to Seventh Beta Release

    Overall this release should give you a better experience than any previous Tileproxy version.

    Added a FSX compatible LOD8 scenery layer to Tileproxy that contains NASA's "Blue Marble"
    image at 500 meters per pixel source resolution. If this layer is placed at higher priority
    in the scenery library than Tileproxy's other scenery layers, it will cause FSX to load the
    outermost detail scenery ring from the BGL which is much faster. Tileproxy can then focus on
    loading the high resolution data. The speedup should be significant.

    Blocked compatibility/interoperability with Google Inc.'s map servers. This change was made
    after an explicit request of Mike Hearn who works at Google's Earth/Maps engineering department.
    I guess had not much choice other than to comply. Google is not evil, but they have more lawyers.
    And I get a free T shirt in return.


    A warning regarding the Beta status:

    The BETA status means this project may not yet run perfectly or properly under all possible
    circumstances and environments and it has yet to be tested on many different hardware and
    software installations. Please do not run this program if you are not quite computer savvy and
    if you haven't backed up your work and documents recently. This program installs itself quite
    deeply into the system (requiring a kernel mode driver) to perform its magic. At the current
    state of development, stability can not be fully guaranteed.



    Introduction

    Welcome to a new beta release of The Tile Proxy Project, as first mentioned and discussed
    on the avsim.com forums in some of the most viewed threads. Most of software is released
    under GNU General Public License version 2 with one notable exception (see the License
    section for details).

    This may be the most important software release for VFR enthusiasts for FSX and FS2004
    this year. Some people call it their favorite FSX add-on. This program is a real-time interface
    between Flight Simulator X and the Internet. It will download photo-terrain textures from online
    map services by acting as a proxy server and file format converter. This tool turns your
    Flight Simulator into an interactive 3D map browser unlike anything you have experienced
    before. It may be somewhat similar to the Google Flight Simulator which has recently been
    added as a kind of "Easter Egg" to the Google Earth client application.

    The leading online map services use JavaScript based browser APIs to display the terrain
    in your browser in a top-down view. Some even offer a 3D browser either as ActiveX control or
    as a standalone application. They may even offer a "flight mode", but without offering any
    realism or flight dynamics. TileProxy goes a step - a significant step - further and accesses
    the online terrain data from with Flight Simulator X as you fly. Your VFR flying experience will
    never get any better than this. Flight realism coupled with superb terrain graphics, what more
    would you ask for?

    This tool is therefore aimed at "bush flyers" and VFR enthusiasts who like to explore and
    enjoy scenic areas from the air. You might be shocked by the amount of detail that you will
    get.  Enjoy this software!



    Technical Features and Limitations

    Dynamically loaded terrain textures are supported with up to 1 foot (30cm) / pixel which is
    equivalent to 4096x4096 pixels textures on squares of about one kilometer side length. This
    looks very realistic and crisp flying as low as 2000 feet (650m). See the System
    Recommendations section to see if this is supported by your graphics card. A fast Internet
    connection is required. Flight Simulator 2004 is limited to 4.75 meters/pixel by design.

    Seasons are not currently supported as most map services preferably acquire their imagery
    mostly randomly during either spring, summer or autumn. Some areas may even have been
    captured during winter time. There is no choice as of the season provided in a given area and
    there may be hard boundaries between different areas (respectively seasons).

    Similarly, night textures are not supported. FSX simply fades the daylight textures into dark
    and there will be no city lights yet (such would have to be defined through light maps).

    The online service may use a patchwork of different satellite passes and sometimes even
    entirely different technology (aerial photography vs. satellite images). So there may be clearly
    discernible colour, contrast and quality differences between different ground areas, particularly
    when viewed from a high altitude.

    Ground shadows will remain fixed in position (as photographed during a specific time and date
    of the satellite pass) and may conflict with the position of the sun in the Flight Simulator.
    Shadows in different areas may point into different directions depending on the time at which
    the area has been photographed.

    Sometimes there may be clouds sitting on the ground, with a huge shadow sitting next to it.
    This is an artefact of the cloud removal algorithm (if they have actually used one). Sometimes
    they will simply try to find shots with as little clouds as possible and just stitch them together -
    sometimes leaving a few lone clouds in the photos.

    Built-in runways of FSX may not always overlay exactly with those on the satellite terrain. In
    some cases the shape, orientation or position may be off by quite a bit. Often the concrete
    taxiways and airport areas will overlay large areas of the beautiful photo scenery - too bad!

    Autogen and landmarks do not always blend in well with Photoscenery. The 3D buildings of
    FSX may be next to the real thing, but you can always reduce your Autogen and scenery
    complexity setting to a minimum to get rid of the problem.

    Sometimes terrain loading cannot keep up with faster aircraft. Putting FSX into PAUSE mode
    for a minute will help. Also circling over a particular spot for a while will help until the terrain is
    fully loaded.



    Supported Online Map Services

    This tool is agnostic and universal regarding the source of phototerrain tiles. Any online map
    service should work which provides HTTP access to 256x256 pixel JPEG orthophoto terrain
    tiles in a mercator projection with a quadtree based coordinate system. And the resolution
    layers should zoom in magnification steps that are exact powers of two.

    Did you not understand what that meant or are you missing any familiar brand names here?
    Well, be assured that some well known online map services are supported. However I am not
    pre-configuring my program to access any particular service because of...

    As of this release, Google Maps servers are no longer supported at the request of Google Inc.



    The Legal Aspects

    Please note that it is up to the user (YOU) to review the terms of service of the web service
    you are trying to access and to see if your usage of this software is prohibited under the ToS
    of your preferred satellite mapping service. Please obey the Terms of Service and don't blame
    me if YOU should get heat for violating specific clauses of the ToS.

    Note that YOU are using the software and YOU are responsible for your actions (i.e.
    accessing a third party service by means of this software). YOU have to make sure that you
    are not causing any service degradation or interruption or any other harm to the service you
    are trying to access (skilled persons may inspect the source code for verification thereof
    and/or inspection).

    FSX by itself already contains web browsing capabilities (e.g. the kneeboard and the opening
    screens welcome page all display HTML pages and can access the Internet). The TileProxy
    project extends this capability to dynamically load and display scenery content during flight -
    the content is projected onto a 3D surface with a moving view point!

    Some online map services prohibit the use of "robots" in their terms of service to access their
    content. The TileProxy project is NOT A ROBOT. In conjunction with FSX, the project
    becomes an interactive 3D map browser using an aircraft as cursor. It requires user
    interaction to access content and the user's position in the 3D world determines which content
    gets loaded. Therefore it is not a robot and this particular Terms of Service clause does not
    apply.

    TileProxy keeps a temporary cache of data in RAM and on disk but so do most web browsers.
    Therefore the use of this program with FSX should not constitute a copyright infringement.
    Browser caches should be covered by the fair use doctrine. However do not access the files
    inside the cache folder for any other purpose and with any other software.

    The TileProxy project does NOT SHIP PRE-CONFIGURED to access any commercial map
    service in particular as to stay clear of any liability issues and possible infringements of trade
    marks.

    When you make and post screenshots online, please remember that the ToS may require you
    to properly attribute the copyrights of the source data to the respective online map service.
    Your screenshot is a derivative work of some other copyrighted work - so please keep in mind
    to post a correct attribution according to the ToS.



    Installation Choices

    The default location for Tileproxy to install itself is inside the Microsoft Flight Simulator X
    folder. The default location for Tileproxy scenery is one level above that, in the Microsoft
    Games folder. The reason is that the Tileproxy scenery can grow so excessive that Flight
    Simulator's startup times get very long if the data is kept inside its the FSX folder. If the data is
    kept elsewhere no such effect is observed.

    I do recommend that you place your "World Folder" and the Service caches on a separate
    drive or partition. The reason is that within a short period of time tens of thousands of files
    will be created on the partition and they continuously grow in size (starting out small initially
    and growing). This is causing lots of fragmentation - and fragmentation has an adverse affect
    on the performance of the partition. So after continued use Tileproxy may have fragmented
    your partition so much that other applications suffer a performance penalty. By keeping all
    Tileproxy data separate, fragmentation will not affect any other applications or your system
    in general. And besides the data is easier to clean up when kept separately.

    You can elect to update a previous Tileproxy installation, the previous INI file will be kept
    mostly untouched. However please review the proxyUser.NEW.INI file in the Tileproxy folder
    for any additional options (e.g. water masking) which you want to manually enable in your
    existing INI file.

    You can also tell the Installer to modify the scenery.cfg file of an existing FS2004 installation.
    When a FS2004 installation is detected, this option is enabled by default.

    You may elect to optimize terrain loading for high airspeeds, which makes some unusual
    configuration settings. These bring down the frame rates but increase the number of tiles
    accessed per second. It's a trade-off that some may want to try.

    If you install the Beta 8 over a previous Tileproxy release, please verify that that in
    the FSX scenery library the entry for the "WORLD_LOD8" scenery is situated just
    below the other Tileproxy folders (higher Priority). Only then you will experience the
    accelerating effect that this static photoscenery exerts on Tileproxy.

    That is all there is to say about the installer.



    How to (and how not to) use this software

    IMPORTANT: You may have to your virus scanner before running this software! Some
    virus scanners have a known incompatibility with TileProxy. In the best case, loading is only
    slowed down, in the worst case loading totally stalls while using a virus scanner.

    You should not install TileProxy and its scenery folders on a FAT32 partition. The
    restrictions that FAT32 imposes on maximum number of files per directory do not allow
    Tileproxy to work as intended. At one point it may simply stop writing new tiles to disk!

    You should never rename the "Tileproxy Photoreal World" folder. The location of that
    folder can be anywhere, but it has to keep that name. The driver is recognizing only that name.
    wo people I know tried to rename the folder. Well, Tileproxy did not work for them afterwards.

    This program cannot be used without having been properly configured first. See the
    Configuration section of this manual and get some assistance.

    The Acme Globe Service is a fictional example and not expected to work. There is no
    web site called acmeglobe.com. Configure Tileproxy if you see it accessing this site.

    Note that UAC (User Account Control) on Windows Vista should be disabled. You must
    have administrative privileges to run this software.

    On Vista 64 bit you must enable loading of unsigned drivers in the Boot Menu (hit F8
    early during boot to do that).

    Run the start menu item under "TileProxy"' in your start menu named "Start Tileproxy". A shell
    terminal will pop up and output some debug information.

    After you start Flight Simulator (shortly before the simulator's menu dialog appears), TileProxy
    should state that it has successfully connected to the simulator (either FSX or FS 2004).
    When you load a flight, Tileproxy will continuously show how many tiles have been accessed
    so far. In case of an error accessing the tiles through the HTTP protocol, the libcurl result
    code and the HTTP status response may be printed. E.g. a 404 error means "file not found"
    on the server. It is advised to first attempt the first loading of scenery in Windowed Mode of
    the Flight Simulator to verify that the URLs the TileProxy is trying to load can be accessed
    successfully.

    When you see a message "Press any key to continue" something with TileProxy has gone
    wrong and the program has exited. This message prevents the shell terminal from closing
    immediately and it gives you a chance to review the last words from the program. It is also
    possible (but not very frequently) that you get a dialog box that either FSX.exe or
    proxyUser.exe have terminated unexpectedly. After all, this software is still a beta version.

    This program works best with slow flying aircraft such as helicopters, non-motorized and
    motorized gliders and slow flying fixed wing aircraft. Do not exceed much a speed 100 knots
    for best flying (loading) experience. Try to stay in those areas that are known to have decent
    satellite terrain coverage on your preferred map service. Loading times can be 5 minutes in
    areas that you have not yet flown in before (assuming a 2 MBit/s DSL line). This depends on
    your ISP's connectivity and other factors.

    If you face excessive loading times, please check if the TileProxy is able to access the terrain
    tiles properly. Have a look at the shell terminal and inspect the program's output. During
    normal operation it will print a list of URLs and quickly start counting down a number (e.g. 25
    and finally print (0) - Done.  Rinse and repeat. Thousands of tiles will initially be accessed in
    that way before the flight commences.

    The second time you start from the same location no internet access will occur as they are
    already cached. Once you start moving your aircraft, new tiles may be loaded depending on
    where you go and whether you have previously been to that location.

    You might want to compare the quality that you get from the different map services - either
    online in your web browser before flight - or from within FSX (save your flight, exit TileProxy,
    switch the service in the INI file, cleanup the "TileProxy Photoreal World" folder with
    the corresponding "Cleanup World Folder" menu item, restart TileProxy and reload the flight).
    Sometimes one service is better than the other, depending on location. Consider installing the
    high resolution terrain meshes from simviation.com or commercial high resolution meshes for
    best effect.

    You can manually terminate Tileproxy by pressing CTRL-C in the terminal or by closing the
    terminal (pressing the 'X' close button also works)



    The Moving Map

    The moving map is probably of little use to anyone else but the developer, so I made it
    optional. It is a circular semi-transparent overlay showing the boundaries of the Level of Detail
    Rings and a top-down map view. In the default configuration, the circle spans about 120km (or
    80 miles). The map rotates with the plane's orentation. You can observe the loading and pre-
    loading of Tileproxy on this map.

    If the map is not round on your screen, you have an aspect ratio problem. Try adjusting
    the movingmap_width and movingmap_height arguments in the INI file to match the inverse
    of your screen's  aspect ratio. Say you have a 16:10 monitor, you want something like
    movingmap_width = 50 and movingmap_height = 80.

    The long term intention is to turn this map into something more useful in the future, e.g. by
    making the LOD rings display optional and possibly showing airport names overlaid on it.
    Also we could show a compass rose around it (N - E - S - W).

    Future versions may also show certain status messages, in particular network related error
    messages overlaid on screen, taking the place of the DOS console which will go away in
    future releases.

    If you don't like it you can just turn it off in the INI file (enable_movingmap = No).



    Using the graphical service cache browser

    With beta 6, a new tool has been added to the distribution. The service cache browser can be
    started by selecting "Manage Service Caches" from the Tileproxy start menu. For this
    application to function the .NET Framework 2.0 must be installed. This is a separate download
    that you can obtain free of charge from Microsoft. Chances are good that this is already on
    your system, however.

    This tool allows you to browse (on a world map) where you have been flying before. Areas that
    have cached terrain data for the selected service will be shown in shades of grey. The brighter
    the color, the higher the downloaded terrain resolution is at that location.

    After switching the service to display, please allow for some seconds (maybe minutes) to scan
    your entire cache folder. This folder may have grown huge and contain tens of thousands of
    files.

    You may select rectangular regions of the map and zoom into that region to get a more
    detailed view. When you select a rectangle, the number of contained tiles and their size is
    shown.

    You can selectively mark geographic regions and you can limit the selection to tiles that have
    a specific resolution level or a specific age range in days.

    By clicking on "Erase Tiles" the selected tiles are wiped from your cache. You can do this to
    selectively get rid of data that you do not want to keep.



    About the Author

    The author is Christian Buchner, a 34 year old software engineer from Germany.
    Christian's professional focus is protocol and simulation development for 3G and 4G mobile
    radio emulation prototypes. He holds a degree in Electrical Engineering from Technical
    University of Munich (TUM).

    He also likes to speak in third person about himself. Contact him under this E-Mail address

    Christian.Buchner@gmail.com

    All work on this project was done in spare time, sometimes burning the midnight oil.



    Motivation and Development History

    This project was developed based on a "can do" spirit, recognizing that it did not seem an
    exceptionally difficult task to bring together exciting technologies - the Internet and Flight
    Simulation.

    It all started out as an experiment with the Samba project in October 2006 - notably modifying
    Samba such that it would provide terrain tiles on a network share. A month later I had my first
    stunning views of Oahu, Hawaii - months before the first commercial Microsoft Flight
    Simulator X add-on provided the same level of quality.

    Disappointed by the limited performance that the Samba based approach provided, I moved
    on to develop a native Windows based solution which about tripled loading speeds. Some
    research into file formats, Windows kernel mode programming and Flight Simulator
    development was required - but obviously when the expected outcome justifies the expense,
    anything appears doable (except maybe achieving full Vista compatibility - a real bummer!).

    Six months later this project saw its first release as open source with one notable exception:
    The kernel mode filesystem filter driver remains closed source. This driver can be shipped
    with derivative work (if published under GPL license) but it remains the "secret sauce" of this
    program and keeping it closed will prevent commercial vendors from simply copying and
    commercializing the entire approach (unless they develop their own similar filter driver on their
    own).

    It is expected that the program will gain more features beyond the basic functionality and
    improve in its friendlyness. However it might be advisable to keep this project "under the
    radar" of the big players as long as possible and particularly keep any brand and server
    names out of the source code and binary distributions in the foreseeable future.

    My main motivation for an early release (despite the program right now is in an unpolished
    state) is that I want flightsimmers to experience what I have seen. In recent months I have
    witnessed the most insane graphics on my PC at a level of detail that I would not have
    anticipated a few years ago. With this release I want to share the pleasure with avid flight
    simulator enthusiasts worldwide.



    License and Support

    proxyUser and the network access module libnettile are released under the terms of the GNU
    Public License V2 (full text of license included in the distribution and in the installer).

    The kernel mode driver tileproxy.sys remains closed source. Permission to redistribute is
    granted as part of the original TileProxy project and for derivative works under the GPL
    license. Reverse engineering and commercial use of tileproxy.sys is prohibited unless this
    software is also distributed under the terms of the GPL license.

    libcurl is a library under LGPL license. Source code has been slightly modified to support non
    standard calling conventions and has been included in the distribution.

    This software is released free of charge. Any support services are strictly voluntary. Support
    may not be provided at all times. Reasonably detailed bug reports are always welcome, as are
    as kindly worded requests for specific features. Please try to use online forums and other
    sources for troubleshooting and all discussions about proper configuration.

    A dedicated English Language support forum has been established on www.avsim.com in the
    noncommercial support area.



    Technology used in this Software

    This program uses advanced technology similar to virus scanners. It monitors the file
    accesses done by the Flight Simulator. It intercepts file system calls to terrain tiles and
    provides this data from the Internet. This is achieved by installing a kernel mode file system
    filter driver "tileproxy.sys" which monitors access on the partition on which Flight Simulator
    is installed and provides a RAM disk-like functionality for several thousands of BMP files.

    The program therefore requires administrative access to install and load properly and it is
    therefore required to disable the User Account Control (UAC) in Windows Vista.

    The program automatically crops, scales and concatenates the JPG terrain tiles obtained from
    the Internet and performs a format conversion to compressed bitmap files of up to 4096x4096
    pixels which Flight Simulator X will load. Global water masks are loaded from a highly
    compressed storage format (JBIG files) and applied to the tiles as blended and dithered 4 bit
    DXT3 alpha masks or as single bit DXT1 alpha mask. Further image processing can be used
    to soften the edges of the low resolution NASA SRTM water masks and to match them to the
    photo terrain.

    The program loads tiles based on their distance (longitude, latitude and altitude over ground
    from the aircraft. This keeps network usage as low as needed and also keeps load times
    acceptable. For getting the aircraft position, the program makes use of SimConnect which
    automatically gets installed as part of FSX. Generally a doubling of the distance from the
    aircraft leads to half the tile size downloaded (and thus a quarter of the pixel count).
     
    With a particularly advanced image processing algorithm, the software can optionally post
    colorize the black & white USGS aerial survey data that is used by some major map service in
    rural parts of the United States. For example the Grand Canyon would otherwise appear in
    black&white. The TileProxy can use a lower resolution colour version (zoomed out version) to
    artificially colorize the high resolution B&W photographs. It corrects for small positional
    differences of colour and luminance layers with an autocorrelation algorithm so the colour of
    an object does not appear next to the object. This still may not look entirely natural but it's
    definitely preferable over a dull gray "lunar" landscape. The program also adjusts the
    brightness level of the black and white tiles to match those of the coloured low resolution tiles.
    If you want to check out what this algorithm does, fly Aspen, Colorado with and without the
    "color_hack" option on the online service which uses USGS terrain tiles. Unfortunately there
    may be some side effects where this algorithm also alters coloured tiles (see the
    Troubleshooting section)

    As an additional feature, NASA-provided water masks can be overlaid on the photo layer to
    provide transitions to flight simulator's reflective water. This also allows you to use float planes
    again where previous Tileproxy versions would turn water surfaces into solid terrain.
    In the transition zone between land and water, a blending algorithm can be used to make the
    water appear to be transparent. This can look very good in clear, shallow water for example
    around tropical islands.

    The kernel mode driver has become a RAM-disk which will be fed entire LOD tiles by the
    proxyUser application. (A single LOD 10 tile, for example consists of up to 1024 individual
    BMP files). The ProxyUser program now tries to intelligently manage the level of detail rings
    around your aircraft and keep these populated with up-to-date graphics data. Overall, this
    consumes around 100–200MB of kernel memory, but it is well worth the performance benefits.

    Tileproxy will also try to pre-load terrain that your aircraft will soon by flying over. This means
    that FSX will no longer have to wait for terrain to become available when your aircraft gets
    there. Overall this results in terrain to stay crisper at higher air speeds. “The blurries” should
    now be a thing of the past in most situations. Currently for this speed-up technology to work
    you should have installed the SP1 or SP2 version of FSX.



    Acknowledgements

    This software is based in part on the work of the Independent JPEG Group.

    I hereby like to thank id software for putting a fast DXT1 texture compression subroutine into
    the Public Domain.

    Thanks go to Microsoft for contacting me about this, although unfortunately there was no
    follow-up for a possible presentation of my work at ACES yet.

    Thanks go to user JPMiami from the avsim forums for inviting me to the annual FSS-Show in
    Italy in May 2007

    Some more thanks go to all the supporters on the forums. The release of this software is for
    you, folks.

    A lot of thanks go to the producers of quality freeware and commercial add-ons for FSX.
    Without your excellent work, simming would only be half the excitement that it is.



    Recommended System Specifications

    To use this software with good performance, your system should meet or exceed these
    recommended system requirements.

    Microsoft Flight Simulator 2004 or Flight Simulator X (perferrably SP1 or later)
    A 2 Mbit/s Internet connection or faster.
    A modern PC, ideally with Hyperthreading (P4) or Dual Core CPU (Core Duo, Core 2
    Duo, Athlon 64 X2 or any dual processor machine).
    Windows Vista (with UAC disabled) or Windows XP. 64 bit mode on Vista is now
    supported (but very experimental) and this requires unsigned driver support (press F8
    on boot, select appropriate option in the menu)
    A 128 MB (or better) graphics card with T&L support.
    5 Gigabytes of extra hard disk space on the FSX or FS 2004 partition
    1 GB of RAM installed.
    Your system swap file should hold 1 GB or more because the project caches a lot of
    data in RAM which may require some swap space on disk.
    A large (e.g. 24 inch) display running in HD resolution greatly enhances your flying
    experience but it is not a requirement (well for me personally it is!)



    Installation Guidelines and Notes

    I would recommend to have Flight Simulator X or FS 9 installed separately an extra partition
    which is often defragmented (O&O defrag does a good job).

    The partition should have at least 5GB of extra space and be checked periodically for enough
    remaining space. It should be an NTFS format partition, and definitely NOT FAT32.

    The TileProxy should be installed in the Flight Simulator X program folder (which is the default
    folder proposed by the TileProxy installer). If Flight Simulator X is not found, the installer
    suggests the hardcoded location C:\Program Files\Microsoft Games\Flight Simulator 9
    instead. It is assumed you want to install the software for Flight Simulator 9 if you do not have
    FSX installed. You may need to adjust the installation path to the ACTUAL location where your
    Flight Simulator 2004 is installed.

    Using Tileproxy with both FSX and FS9 is possible, granted that both are on the same
    partition (e.g C:\Program Files\Microsoft Games). Both simulators will then be accessing the
    same Tileproxy Photoreal World folder. It is enough to have TileProxy installed in one location
    only. Just make sure that the scenery.cfg for both simulator contain the World entries created
    by TileProxy.

    The installation path must not contain non-ISO characters that cannot be encoded with 8
    bits (typically Windows Codepage 1252). If your Program Files or Microsoft Flight Simulator
    folder contains unicode characters (like Kanji or Chinese characters), please install the
    TileProxy project in a folder consisting of only ASCII characters.

    The following two directories will be created during a TileProxy installation on an English
    locale (Windows Vista always uses English locale for system folders)

    C:\Program Files\Microsoft Games\TileProxy Photoreal World

    C:\Program Files\Microsoft Games\Microsoft Flight Simulator X\TileProxy
    or
    C:\Program Files\Microsoft Games\Flight Simulator 9\TileProxy

    The "TileProxy Photoreal World" folder contains the global photoscenery definition whereas
    TileProxy contains the program itself and its configuration file. The downloaded terrain tiles
    will be stored in the "TileProxy Photoreal World" folder whereas the caches of the network
    access module reside inside the TileProxy folder.



    Changes to your FSX.cfg

    For a good flying experience and graphics quality "out of the box", the program's installer
    manipulates the following parameters in your FSX.cfg. You can easily change some of these
    with the FSX user interface, others have to be manually edited in the configuration file if you
    are not satisfied with these settings.

    If you do not want these changes to be made, uncheck the corresponding checkbox in the
    installer that says "Modify Simulator config for performance".

    [Display]
    TEXTURE_BANDWIDTH_MULT is set to 400

    [Main]
    Maximized is set to 0
    DisablePreload is set to 1
    FIBER_FRAME_TIME_FRACTION is set to 0.33 or 1.33    (depending on user choice)

    [GRAPHICS]
    TEXTURE_MAX_LOAD is set to 1024, 2048 or 4096    (depending on user choice)
    TEXTURE_QUALITY is set to 3
    IMAGE_QUALITY is set to 0

    [TERRAIN]
    LOD_RADIUS is set to 2.5, 3.5 or 4.5            (depending on user choice)
    MESH_COMPLEXITY is set to 85
    MESH_RESOLUTION is set to 22
    TEXTURE_RESOLUTION is set to 25, 26 or 27        (depending on user choice)
    DETAIL_TEXTURE is set to 1

    [BufferPools]
    PoolSize is set to 5000000

    [Display.Device.Your Graphics Card Name.0]
    MipBias is set to 6
    Anisotropic is set to 1

    Note that the MipBias setting may lead to shimmering in the distance, which you can counter
    by selecting "Negative LOD Bias = Clamp" in the nVidia Control Panel in the advanced
    section. I am not sure if this also affects ATI users.



    Changes to your FS9.cfg

    The following changes to FS9.cfg are made to provide optimal stacking of the Level of Detail
    rings around your aircraft. This is when you have the checkbox set to also install for FS 2004
    and the "Modify Simulator config for performance" checkbox is also set

    [GRAPHICS]
    TERRAIN_TEXTURE_SIZE_EXP is set to 8
    TERRAIN_EXTENDED_TEXTURES is set to 1 (enable)
    TERRAIN_EXTENDED_RADIUS is set to 4.0
    TERRAIN_DEFAULT_RADIUS is set to 3.5

    [TERRAIN]
    TEXTURE_MAX_LOAD is set to 1024
    TEXTURE_QUALITY is set to 3

    [DISPLAY]
    TEXTURE_BANDWIDTH_MULT is set to 100
    TextureMaxLoad is set to 10



    Configuration Guidelines
     
    The TileProxy folder contains ProxyUser.ini which is the main configuration file for the
    TileProxy project. By editing this configuration file you can enable support for different online
    map services and switch between your configured services.

    I cannot recommend any particular satellite service here and I cannot give you instructions on
    how to enable a particular service. Be advised that some have better coverage in certain
    areas than other services. So you want to choose the service that covers your preferred flying
    area best.

    Let me walk you through configuration of a hypothetical service which we call Acme Globe
    Service.

    Using a search engine you have determined that the service uses a particular URL format like
    the following for providing terrain tiles:

    http://server0.acmeglobe.com/terraintile?pos=ADCAADACBCA&v=10

    You have verified that the service provides 256x256 tiles in JPEG format and uses a quadtree
    based coordinate system. There are plenty of web pages and articles online which detail the
    layout of the URLs of various services.

    A Quadtree means that at the lowest zoom level there are four sectors which cover the entire
    world map.

     ---------------------
    |          |          |
    |          |          |
    |    A     |    B     |
    |          |          |
    |          |          |
    -----------------------
    |          |          |
    |          |          |
    |    C     |    D     |
    |          |          |
    |          |          |
    -----------------------

    Now pick one quadrant (e.g. A which would cover North America) and subdivide that into four
    more quadrants, also labelled ABCD. The quadrant names get appended one by one, forming
    a string which becomes part of the HTTP request URL. The coordinate gets longer the further
    you want to zoom in. The number of digits or letters in the string indicates the zoom level.

    Some services may use different letters (not ABCD) but that is not a problem as these are
    configurable! You might have found out also that the service applies load balancing according
    to a simple scheme where the quadrant at the highest zoom level (last digit in the URL)
    determines the server to connect to. And that quadrant may get mapped to a number between
    0 and 3 or any other letters. So for example the 4 sub-quadrants of the top left quadrant of the
    world map could be downloaded in a load-balanced way using these four URLs:

    http://server0.acmeglobe.com/terraintile?pos=AA&v=10
    http://server1.acmeglobe.com/terraintile?pos=AB&v=10
    http://server2.acmeglobe.com/terraintile?pos=AC&v=10
    http://server3.acmeglobe.com/terraintile?pos=AD&v=10

    By the way, the &v=10 argument in the URL is some versioning scheme which keeps track of
    the version number of the map. With a lower version number you can access previous
    versions of the map. So in our sample we would be asking for version 10. You may want to
    find out which particular version is used by the current version of the online map service.
    There are tools to monitor the URLs being accessed by the browsers, in the simplest case the
    status bar of your browser may show these URLs. Or you install a local web proxy server and
    inspect the log files afterwards, etc...

    So this information is all we need to define the service. The relevant sections of the
    configuration ProxyUser.INI will look for example like this:

    [TileProxy]
    source=Acme Globe Service

    [Acme Globe Service]
    cache_folder=cache.acme
    network_module=libnettile
    module_config="conn=20|rate=2.0|server=http://server*.acmeglobe.com|path=/terraintile?pos=%s&v=%v|quad=ABCD|balance=0123|agent=Mozilla/4.0 (compatible; The TileProxy Project)"
    min_level=9
    max_level=17
    map_version=1
    level_mapping=9,10,11,12,13,14,15,16,17
    color_hack=No
    color_level=0
    bulk_extend=25


    Parameters in the [Tileproxy] section

    "master_enable" is a switch to disable the photrealistic scenery. By setting this to off, Tileproxy
    will not let FSX know that the world is made up of photographic scenery. However during flight,
    you can enable or disable Tileproxy from the Add-Ons menu (given that the user has
    started it before). It may take a while for FSX to pick up the change however because FSX
    must re-read the scenery BGLs to pick up the change.

    "source" in the [TileProxy] section determines which service will be used. You can give it any
    name, its configuration will be searched for in a separate section with the specified name in
    square brackets.

    "max_lod" is the highest LOD level for tiles that will be loaded generated. 17 means 30cm/pixel.
    16 means 60cm/pixel. 15 means 1.1m resolution per pixel with FSX. 14 means 2.3m resolution.
    13 means 4.75m resolution per pixel. This parameter has recently been moved into the
    [TileProxy] section and adjusted to match the LOD definition that you typically find for terrain
    meshes and elsewhere in documentation. If you use Flight Simulator 9, max_lod will automatically
    drop to 13, meaning only 256x256 pixel tiles will be generated.

    "preload_min_lod" and "preload_max_lod" specify the minimum and maximum LOD rings that
    Tileproxy should preload before the flight simulator actually requests the tiles. This is done to
    have the tiles available without delay, as soon as the simulator needs them. The valid range is
    between 8 and 17. If the max is set smaller than the min, preloading will actually be turned off.

    "water_mask" is the main switch to turn on the new water masking feature of Tileproxy. When
    left to "off", Tileproxy will show even water areas as photorealistic, causing the water to appear
    much like land. It is solid. You could land on it with a Boeing 747 and not sink. When
    turned "on", Tileproxy will use the NASA SRTM generated water masks to determine where to
    show Flight Simulator's built-in reflective water and where to display phototerrain.

    "water_blending" is a mode in which soft land/water transitions are created and blended with
    a smooth alpha channel. This hides the low resolution of the NASA SRTM data and it creates
    an interesting effect near shorelines where the water may appear transparent such that you
    can notice under-water terrain features in clear water. When turned off, no soft blending is
    performed, but rather a hard transition between land and water occurs. Note that "off" is the
    required setting for Flight Simulator 2004 (FS9).

    "blend_distance" is the distance in meters that water blending should operate on. 500 meters
    is the default. For best effects near atolls and coral reefs, you can choose much larger values.

    "water_smoothing" is a mode in which additional image processing is performed to detect
    the land/water transitions in the image content. Then the very low resolution NASA water mask
    is adjusted to better fit the image content. As a result the water should have a snug fit to the
    shore lines. This works best with "water_blending" turned "Off".

    "water_threshold" is the decision threshold for detecting land or water that is used only when
    smoothing is enabled. Allowed values are between 0 (all land) and 1 (all water). Reasonable
    settings are within 0.10 and 0.50. Anything much higher can lead to extreme flooding.

    "cache_bytes_limit" is the number of bytes that can be allocated by cached BMP texture tiles
    in memory. Keep this value low enough to prevent swapping to hard drive. If you have a lot of
    RAM (e.g. 2 or 4 GB) you can choose very high values. Reasonable values are between 64MB
    (64000000) and 1GB (1024000000).

    "cache_tiles_limit" is the maximum number of BMP tiles that Tileproxy is supposed to keep
    cached in RAM. The scenery in the visible area around your aircraft consists of approximately
    20000 - 50000 tiles depending on the selected terrain radius in your FSX display settings.
    Reasonable values for tile limits are between 50000 and 250000 tiles.


    Parameters in the services sections ( [Acme Globe Service] in our example )

    "cache_folder" specifies a directory in which the data will be cached temporarily. This is
    obviously service specific so different services should have separate cache folders. Absolute
    path names can be used here as well.

    "network_module" should always name libnettile which is the only network access module that
    currently ships with TileProxy. You can write your own compatible module if you are good at
    programming.

    "module_config" contains several configuration arguments separated by the Unix Pipe
    character | - It is a bit messy to view and edit - but from a programming perspective it was
    convenient to have it all in a single string.

    After splicing the "module_config" string apart at the separators you will note the following
    definitions:

    conn=20
    rate=2.0
    verbose=1
    server=http://server*.acmeglobe.com
    path=/terraintile?pos=%s&v=10
    quad=ABCD
    balance=0123
    agent=Mozilla/4.0 (compatible; The TileProxy Project)

    "conn" gives the maximum number of simultaneous HTTP requests that are processed by the
    server. The remainder of connections goes into a "waiting queue" where one request is taken
    out as soon as another has finished. This option allows for high bulk_extend values without
    running into a server-side connection limit or lockout.

    "rate" specifies your connection bandwidth in MBit/s. All initial tests of the software were made
    with a 2.0 MBit DSL line. Therefore the ratio of 2.0 to the given value determines the scaling
    factors for the timeout value. So for example if you specify a 1.0 here, all timeout values will
    be doubled. If you specify a 4.0, all timeouts will have half their original duration.

    “verbose” specifies whether the network module should print the URLs that it is going to
    access. A setting of 1 prints all URLs, a setting of 0 does not print the URLs (except in case of
    transmission errors).
     
    "server" details the protocol and server name. The * (star) gets replaced by the character used
    for load balancing. The "path" gets appended to that string to form the URL. The character
    sequence %s gets replaced with the quadtree based location string. The "quad" definition
    gives the four characters used for the quadtree based location string (here: A,B,C,D). The
    "balance" string gives the four characters which are used for load balancing (here: 0,1,2,3)

    "agent" is the user-agent string under which the TileProxy will identify itself on the server. If
    you want to not disclose your use of TileProxy, you can make your PC for example appear as
    using Internet Explorer 7 on Windows Vista (or you can choose a Firefox user-agent string if
    you are more an open source person).

    agent=Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; .NET CLR 1.1.4322)

    Don't forget to separate the arguments by Unix Pipe characters and to surround the entire
    string with double quotes to form the final "module_config" argument. Watch out that you
    do not use word wrapping in your text editors. Line breaks must NOT split the module_config
    apart, or Tileproxy will not function.

    "min_level" and "max_level" restrict the range of zoom levels in the map service that shall be
    accessed. 9 to 19 is required for flying at 30cm/pixel. Usually 9 and 17 is a good range for flying
    at 1.1m resolution. 9 to 15 should work  for flying at 4.75m resolution terrain.

    "level_mapping" is a new feature that allows you to remap any zoom level of the map tile
    service to another level. You can entirely skip certain zoom levels or you can substitute
    specific zoom levels for others. This parameter expects a comma separated list of numbers.
    The total number of values you have to specify must be equal the total number of allowed
    zoom levels (within min_level and max_level). In the following example, level 9 to 11 display
    normally, whereas level 12 and 13 are substituted for zoom level 14. Levels 15 to 17 again
    display normally:

    "map_version" specifies the service's map revision that Tileproxy is going to access. This
    is typically a number, sometimes even in version.revision form (e.g. 1.7) which determines
    the revision of the map tile to download. Typically the providers bump up their map version
    whenever they add new material to the maps.

    min_level=9
    max_level=17
    # this list specifies the substitutions for zoom levels 9 to 17 (9 levels in total)
    level_mapping=9,10,11,14,14,14,15,16,17

    To understand why zoom level remapping can increase terrain quality around the aircraft
    please refer to the following chapter. The feature can also be quite useful if your specific map
    service uses a different definition of zoom level. You can use the remapping technique to shift
    the level range accordingly (e.g. level_mapping=7,8,9,10,11,12,13,14,15).

    "color_hack" enables a post-colorization of black & white terrain tiles with color information
    obtained from a lower resolution zoom level. If you know that your preferred map services
    uses e.g. USGS aerial survey orthophotos in rural areas of the United States, try setting
    "color_hack" to Yes and color_level to 13.

    "bulk_extend" is a parameter that tries to extend small (geographic) rectangles of terrain tiles
    to larger areas to be downloaded simultaneously. The number specifies the maximum number
    of URLs that are to be requested simultaneously. The idea is that it is faster to request many
    tiles at once than requesting the tiles individually. A "bulk_extend" value of 100 is a very high
    setting resulting in up to 100 simultaneous HTTP requests. 25 for example is a reasonable
    value. High "bulk_extend" values will pummel the server with too many simultaneous HTTP
    requests, and cause a headache for the server admins, so please keep this value low.

    "map_version" is the current map revision that Tileproxy is supposed to download. The %v
    argument in the path component of module_config gets replaced by this version specifier.
    Usually higher numbers mean newer map revisions with more recent data. Some providers
    will return HTTP 404 (NOT FOUND) when asked for a too old or a too high version.

    Some services will lock you out or redirect (HTTP 302 REDIRECT) you to some error page if
    you access these too often in a short period of time as they suspect abuse of their service. So
    if you see 302 errors, reset your DSL modem (get a new IP address) and experiment with
    lower "bulk_extend" and "conn" values.


    More about string substitutions in the URLs:

    * in the server component gets replaced with the character used for load
    balancing, being a character from the "balance" string.

    %s in the path component gets replaced with the Quadtree based coordinate
    composed of characters in the "quad" string.

    %l in the path component gets replaced with the zoom level (typically 1-17)

    %z in the path component gets replaced with 18 - zoom level

    %x in the path component gets replaced with the longitudinal coordinate where
    the numerical range is between 0 and 2^zoom level, covering -180 degrees
    to +180 degrees of longitude.

    %y in the path component gets replaced with the latitude coordinate where the
    numerical range is between -(2^zoom level)/2 and +(2^zoom level)/2 covering the
    latitudes -90 degrees to +90 degrees.

    %v in the path component gets replaced with the string specified in "map_version".


    How to configure Tileproxy to use a HTTP proxy server:

    This section only applies to people who have no choice but to use a HTTP proxy server to get
    outside web access (for example those in a corporate environment or people on a University
    campus).

    Edit the start script load.bat from the TileProxy folder inside your Microsoft Flight Simulator X
    program folder to include the line

    set http_proxy=http://proxyservername:proxyport

    right before it loads proxyuser.exe. Of course proxyservername and proxyport have to be
    replaced with appropriate values. This is a feature of libcurl which uses an environment
    variable to determine a proxy server (if any).


    Improving visual quality of specific map services

    Some satellite services use different satellite data at different zoom levels. Some select
    services may for example offer a high quality data source at zoom levels 14 and above,
    whereas zoom level 13 and below may be of a grainy quality with unrealistic coloring.

    This may lead to a relatively small area around the plane displaying high quality terrain
    followed by a sudden and clearly visible boundary about a mile from the aircraft where
    the lower quality images begin. If you want to extend the visible range of high quality terrain
    beyond that line there are several options:

    1) For FSX SP1: Increase the Level of Detail Radius in the FSX graphics settings to Medium
        or High. This makes FSX increase its radius for specific mipmap levels. This feature only
        works with FSX SP1 because the mipmap level accessed by the flight simulator directly
        determines the zoom level loaded by TileProxy.

    2) Use a new feature called "zoom level remapping". You can instruct TileProxy to
        substitute the zoom level 13 for 14. This leads to higher quality images being used
        where previously the low quality level 13 was displayed. However this comes at the
        price of increased data transfers. If you want to have even larger high quality areas, you
        can even remap level 12 to 14.

    Just remember that each zoom level carries 4 times the amount if information per ground area
    than the previous zoom level. That means that loading higher zoom levels further out lead to
    an increased data transfer from the servers. You have to find the right balance between visual
    quality and transfer volume in order to allow for sufficient terrain loading and updating speed.



    Understanding the Level of Detail (LOD rings) and pre-loading

    Frequently Tileproxy will show you some statistics followed by a representation of the Level of
    Detail rings that Flight Simulator uses.

    First, let’s quickly summarize in a table how tiles at individual Level of Detail resolutions
    translate to number of BMP files, their size and numbers of downloaded JPEG tiles. FSX
    internally thinks in LOD tiles, whereas Tileproxy used to be mostly concerned with individual
    BMP tiles - because that was what actually got loaded from disk. But this is about to change
    with Release 7.

     
    LOD tile    BMPs needed for assembly and their resolution in pixels    Tile length
    (approx.)    Downloads needed
    per BMP tile    Resolution       
    LOD 17    1/256 BMP tile @ 4096x4096    0.07 km    384 JPEG tiles    30cm/pixel       
    LOD 16    1/64 BMP tile @ 2048x2048    0.13 km    96 JPEG tiles    60cm/pixel       
    LOD 15    1/16 BMP tile @ 1024x1024    0.27 km    24 JPEG tiles    1.2m/pixel       
    LOD 14    ¼ BMP tile @ 512x512    0.55 km    6 JPEG tiles    2.4m/pixel       
    LOD 13    1 BMP tile @ 256x256    1.1 km    1.5 JPEG tiles    4.7m/pixel       
    LOD 12    4 BMP tiles @ 128x128    2.2 km    0.375 JPEG tiles    9.5m/pixel       
    LOD 11    16 BMP tiles @ 64x64    4.4 km    0.93 JPEG tiles    19m/pixel       
    LOD 10    64 BMP tiles @ 32x32    8.8 km    0.024 JPEG tiles    76m/piyel       
    LOD 9    256 BMP tiles @ 16x16    17.6 km    0.006 JPEG tiles    152m/pixel       
    LOD 8    1024 BMP tiles @ 8x8    34.2 km    0.0015 JPEG tiles    304m/pixel    

    Release 7 of Tileproxy has started to "think" in terms of LOD tiles as well and to supply an
    entire group of BMP files to the tileproxy.sys driver at once - up to 1024 actually. And at any
    given time, the RAM disk driver can remember up to 512 LOD tiles simultaneously.

    What you see in the console window is a representation of the LOD rings 8 to 12 and LOD
    rings 13-17 below. LOD 8 to 12 are these rings that require multiple BMP files to assemble
    one LOD tile. It is these rings that  benefit most most from pre-loading. This is why these
    are directly preloaded into the RAM disk. LOD levels 13 to 17 are preloaded only into the
    application (proxyUser.EXE) and placed in memory and disk caches.

    This is how to interpret the "ASCII art" that gets printed in the DOS box:

    A . is a tile that is not currently of interest beause it is outside of the LOD rings.
    A * is a tile that has been loaded and is currently stored inside the RAM disk driver
    A + is a tile that is in the flight path and will be within the LOD ring soon
    A - is a tile that is inside the LOD ring and that is missing

    The LOD rings are printed and shown with a north-up orientation. In FS9 (FS 2004)
    the rings are actually of different size, depending on the LOD level.

    My LOD pre-loading strategy currently works as follows: First I determine which area the
    aircraft will be over several seconds in the future, given its current speed and heading (the
    exact number of seconds actually depends on the LOD ring and is largest for the lowest
    resolution ring) . This area is marked with '+' signs in the output. All these tiles are in flight
    direction.

    If the next higher LOD ring and all rings below it have no missing tiles inside the LOD radius,
    the tiles marked '+' may be preloaded for a given LOD ring. So for example if everything
    inside the LOD radius is completed for rings 8-11, then some pre-loading in flight direction
    might occur for ring 10.

    Pre-loading is automatically performed when the flight simulator appears "idle", meaning that
    it has not explicitly requested any particular tile in the last 100 milliseconds. By waiting for an
    idle phase, I try to minimize the delays we cause by engaging in a lengthy preload operation.
    All preload occurs at the "heartbeat" rate of the driver, which is currently set to four times per
    second.


    Interpreting the program’s statistics output

    During Tileproxy operation, periodic messages are shown which provide some statistics:

    The “individual tiles accessed” messages shows you the total number of individual tiles that
    have been opened so far. The message is printed several times per second. Multiple
    operations and reads to the same tile don’t count as individual accesses. It also shows you
    how many individual tiles FSX or FS9 is currently accessing per second.

    The higher the “individual tiles per second” value is, the faster the flight simulator is currently
    updating its terrain. Try to tweak your FSX or FS9 config so that the value is as high as
    possible during flight. In FS9, the value seems to scale linearly with the frame rate, so try
    to get your frame rates up as much as possible. In FSX, typically locking your frame rates
    (and increasing the FIBER_FRAME_TIME_FRACTION) brings this value up a lot.

    Of course downloading terrain from the Internet will bring this number down momentarily, so
    try to make your benchmark tests on already cached terrain.

    The “preload” feature that gets enabled in in the INI file sends up to 1024 tiles to the file
    system filter driver at once. This allows the driver to satisfy requests for tiles without having to
    communicate with the TileProxy main program. To evaluate the performance of this new
    caching system, I created some statistics that get printed once per every 1000 cache misses.

    “Preloaded” is the number of tiles that were sent to the filesystem filter driver without
    explicitly being requested.

    “Hits” is the number of I/O operations that were satisfied from the preloaded tiles. The higher
    this number the better.

    “Miss” is the number of I/O operations that the tileproxy.sys driver explicitly requested
    from the Tileproxy program. This means no preloaded tile in the cache was able to
    satisfy the request and therefore it is a "cache miss". The lower this number is, the better.

    “Messages” is the total number of communications between tileproxy.sys and Tileproxy.
    It includes some extra chatter because the filter driver is pretty dumb and often forwards
    illegitimate requests to Tileproxy (requests from other software, not FS9 or FSX,
    requests for other BMP files – not terrain tiles).



    How does the static LOD8 photo scenery work?

    As you may have noticed, this Tileproxy release has become much "fatter". This is mainly due
    to the fact that I now deliver the entire world at a resolution of 500m/pixel. This photo scenery is
    shipped as BGL files that unfortunately can only be loaded by FSX. The texture is situation on the
    outermost detail scenery ring that is rendered by FSX around the aircraft. Thusly from this ring
    FSX will no longer request textures from Tileproxy.

    This is advantageous in so far, as the outermost ring used to require the most file I/O. It covered
    the largest area - and per unit of area it required the most BMP files to be loaded at a low resolution.
    Because this area is now loaded from the BGL, Tileproxy can focus on the rest of the scenery -
    which it now can do much faster.

    To make this work, the WORLD_LOD8 scenery has to have a higher priority than the other Tileproxy
    folders - i.e. in the scenery library it must be situated below the other WORLD_xxxx folders.

    You should increase your preload_min_lod setting to 9 in case you make use of this texture (i.e.
    when your WORLD_LOD8 folder is active in the scenery library).

    Disadvantages of the static LOD8 photo scenery are currently:
    It only shows a summer texture throughout the year (August)
    Its resolution is a meager 500m/pixel and therefore it appears somewhat blurry.
    Its watermask is relatively coarse.
    The color of the water may be different than water on tiles created by Tileproxy.

    Advantages of the static LOD8 photo scenery are currently:
    It accellerates the loading of Tileproxy textures into Flight simulator significantly.

    The LOD8 photo scenery is only active while Tileproxy is running. While it is not running, the ring
    is rendered transparently and the standard scenery appears.



    Some frequent Problems and Solutions

    Problem: I see a lot of "unable to resolve host" messages and TileProxy tries connects to a
    server called acmeglobe.com.

    Solution: The source statement in ProxyUser.INI specifies the "Acme Globe Service", which
    is a FICTIONAL map service to illustrate the program's configuration. Please search help
    for configuring Tileproxy for actual services somewhere on the Internet. The Example entries
    should give a few clues, you just have to figure out some parts yourself.


    Problem: Tileproxy tries to connect to a server called loadbalancer.servicename.com and
    fails to do so ( either "unable to resolve host" or 404 error ).

    Solution: You probably copied a ProxyUser.INI file from some Internet forum or from an E-
    Mail and got a line-break inside the module_config statement. As a result, the module_config
    string cannot be read and the network access module uses its default setting - which happens
    to be loadbalancer.servicename.com.

    Make sure the module_config is a single-liner (disable word wrap in your text editor and
    remove the line break. Also make sure the module_config string is enclosed in double quotes.


    Problem: I see a lot of "redirect", Timeout and "Giving up" messages.

    Solution: You ended up being blacklisted by the online service for overuse. You can wait for
    about 12 hours or you can try to obtain a new IP address by resetting your DSL modem.
    Also it may help to insert a conn=20| or conn=10| in the module_config statement of
    said online service to reduce the number of simultaneous connections to their server. This
    reduces the chance of getting blacklisted again.

    If you are unable to change the IP, during the "blackout phase", you can access a different
    service.


    Problem: Transfers for high resolution tiles are slow, I am getting a lot of timeout messages
    and often the transfers fail.

    Solution: Your Internet connection bandwidth seems to be significantly slower than 2 MBit/s.
    Insert (or modify) the rate statement in the module_config string for your preferred service to
    specify for example rate=0.5 (if you have 500 kbit/s) or rate=1.0 (if you have 1 MBit/s). All
    timeout values will then be adjusted.

    You can also lower the conn=20 statement in module_config to something like conn=10 or
    conn=5 to reduce the number of simultaneous transfers.


    Problem: I want to use dialup with Tileproxy, can you tell me how to do that?

    Solution: This is crazy. But try this:

    module_config="conn=1|rate=0.0288|...."
    bulk_extend=0

    Try running this overnight or while you are at work. And I suggest you download an add-on
    plane that doesn't move. How about flying a tethered balloon?

    Problem: I get an Exception=5 eror message, when I start Tileproxy and it has connected
    to Flight Simulator X (RTM DVD version). All downloaded tiles appear in a low resolution
    and are blurred.

    Solution: You have probably downgraded your FSX from SP1 after Tileproxy has been
    installed. Reinstall Tileproxy.

    I am shipping two binaries of TileProxy, one for the RTM version - another one for the SP1
    version of FSX. During installation the matching binary is selected. If you mix the TileProxy
    SP1 binary with the RTM version of FSX, there is a version mismatch because of the
    SimConnect DLL version used. This can occur when you downgrade your FSX SP1 to the
    RTM version by uninstalling the SP1. Then you need to reinstall Tileproxy.



    Troubleshooting and Maintenance

    If you appear to have problems loading the texture at a given location, try saving your flight
    and going into the FSX scenery library dialog. Then don't change anything but just
    acknowledge the dialog with OK. FSX will rescan the scenery library and flush its texture
    cache. Then try loading your flight again. Alternatively make use of the "Rebuild Scenery"
    action of Flight Simulator X, which is available in the Controls section of FSX and does not
    have a key or button assignment by default.

    If you have strange discoloration effects in some terrain tiles, you may want to consider
    turning the "color_hack" option in ProxyUser.INI to "No". The algorithm decides on a per pixel
    basis whether colorization is required based on a built-in threshold. Sometimes it decides that
    pixels of coloured terrain tiles also require extra colorization and brightness adjustments. Turn
    that option to "No", execute the cleanup.bat script in the "TileProxy Photoreal World" folder
    and reload the flight.

    If your "TileProxy Photoreal World" folder gets too full, consider running the cleanup.bat script
    inside. This will erase all BMP tiles, but keeps the scenery definitions (BGL files) intact. The
    tiles will be re-created as needed by TileProxy from the cache.

    You might want to erase your cache folders for the individual map service from time to time.

    If Tileproxy consumes too much memory after an extended flight, consider terminating it
    and restarting it.

    For best performance, keep defragging the partition you operate TileProxy on as it will
    continuously create files and keep changing their file sizes. This can lead to a very fragmented
    hard drive after a few days of operation.



    Improving Terrain Loading Performance in FSX

    Starting with FSX SP1 Microsoft's Flight Simulator X spawns multiple child threads that will
    occupy all of the CPU cores multi-core PCs. These additional threads are used to accellerate
    scenery and tile loading and processing. The first core always performs the graphics rendering
    and each additional core will trigger load requests for terrain tiles. Therefore a quad
    core chip may show up to three times the tile loading speed of a single and dual core PC.

    However I recently found a really unfortunate bottleneck in this system: The other cores send
    their I/O requests back to the first core, where they are responded to by a thread fiber that
    performs all non-graphics rendering related tasks. So essentially the other cores may end up
    waiting for the first core to return the graphics data. You can nicely see this in Task Manager
    when you enable the “Show Kernel Times” option. Most of the time the other cores spend
    their time in a busy loop (spinlock?) in the kernel, waiting for the I/O requests in the first fibers
    to complete.

    To improve performance of that fiber on the first core, lock your frame rates to something like
    12 to 15 FPS. Alternatively increase your FIBER_FRAME_TIME_FRACTION to values around
    1 and also lock your frame rates.

    Despite these shortcomings, Tileproxy can obtain the highest performance on Quad core
    chips. That is 1600 tiles per second in the initial loading phase and about 1000 per second
    during flight. In contrast my dual core laptop does about 1000 per second in the initial loading
    phase and 300-400 tiles per second during flight. These numbers directly translate to terrain
    update performance in flight. If your tiles per second numbers are low, don't expect a fast
    scenery update when flying fast aircraft – even when ProxyUser seemingly keeps up loading
    the LOD rings, FSX still may not be updating the rings fast enough. You really need numbers
    that show several hundred of individual accesses per second.

    Consider placing the Flight Simulator's "Rebuild Scenery" action to one of your joystick
    buttons (or key commands). By default this action has no keyboard or joystick assignment. It
    forces the simulator to reload its scenery and as a result, everything should be crisp and clear.
    This is a good thing for taking screen shots.

    Using the "target frame rate" option in the graphics settings in conjunction with the
    FIBER_FRAME_TIME_FRACTION near or above 1.0 in FSX.cfg results in an effective frame
    rate that is much lower than targeted. However the Tileproxy process will be loading scenery
    really fast. You can observe the "individual tiles per second" reading of proxyUser.exe during
    flight in Windowed mode, it will show really high values then. When you check the “optimize
    for high airspeed” option in the installer, a 0.66 fiber frame value will be used in the FSX.cfg
    file.



    Performance Issues with Flight Simulator X Service Pack (SP1, SP2, Acceleration)

    For many users, the RTM version of Flight Simulator seems to have better performance in
    updating terrain tiles than the SP1 version. Some users get blurred terrain after some minutes
    of flying – no matter if they are using default terrain, third party photoscenery addons or
    TileProxy. Only some users have problems with this, on other systems FSX behaves just fine.
    At this point, no one knows what actually causes the problems.

    Do not expect Tileproxy to perform any better than what you get with your SP1 installation
    prior to installing TileProxy. If other photoscenery addons don’t work well with SP1 on your
    machine, Tileproxy will run into the same problems.

    Some people may get lucky and get a good performance with SP1, others don’t.

    For some people, deinstallation of SP1 has solved their terrain blurriness. Consider this as a
    last resort if all “tweaks” of configuration settings fail.

    SP1 deinstallation Instructions:

    1. From the Windows Start menu, run Control Panel and select Add/remove programs.
    2. In the list, locate Microsoft Flight Simulator X
    3. Tick (check) the Show Updates box at the top of the window.
    You should now see SP1 as a separate item.
    4. Click Remove, and that should do it.

    In Vista, it's listed under "View installed updates" on the left side of the Uninstall a program
    page (not “Show Updates”)

    Mind that FSX will ask for the DVD 1 of your original FSX box for performing the SP1
    deinstallation.

    Make sure that you reinstall TileProxy with the "SP1 option" unchecked because the
    otherwise you will get an "Exception=5" error and a lot of blurred textures when you try to run
    TileProxy with the FSX RTM version.



    Performance Considerations with Microsoft Flight Simulator 9

    The installer is not currently making any changes to your FS9.cfg file when you install
    TileProxy for FS9. This is because I do not yet know a "sweet spot" for FS9 settings and
    a lot of people have put significant work into tweaking their configs already - I do not want
    to mess up any existing settings.

    The following observations seem to hold up:

    The higher your frame rate is, the faster FS9 loads terrain tiles during flight. Locking the frame
    rate has exactly the opposite effect as you would expect. Tiles will load actually slower with a
    locked frame rate. Reduce unnecessary scenery complexity to get your frame rates in the
    50's. This result is a much improved scenery loading performance.

    All other tweaks and fixes that improve photoscenery performance with FS9 also apply to
    TileProxy. The forums contain a lot of tips for improving both visual appearance and
    performance with photo scenery.

    For best visual effect, install an 38m (LOD10) mesh (e.g. for the Alps), and don't forget to
    adjust your TERRAIN_MAX_VERTEX_LEVEL to a setting of 20. This works only with the FS
    9.1 patch applied. For select regions of the world even higher resolution meshes (19m and
    better) are available. These require a TERRAIN_MAX_VERTEX_LEVEL of 19. You might
    want to try this in Grand Canyon, for example.



    Image Quality in FSX

    To get the best possible image quality in Flight Simulator X, make sure that Anisotropic
    Filtering is activated in the Graphics settings. Without that, the terrain appears more blurred in
    the distance.

    Setting the Level of Detail Radius in the Graphics Settings to "Medium" or "High" generally
    results in a crisper texture display - however this comes at a price: Expect your scenery
    loading times to double or triple and the scenery update to be slower as you fly around. So this
    option is better for screenshots, but maybe not so much for flying. The “Medium” setting could
    be a good compromise.

    Consider turning on some road traffic when using TileProxy. It’s fun to see toy cars driving on
    top of freeways on photographic scenery. There are third party vector addons available that
    add more roads for selected areas of the world

    Setting Scenery Complexity to Dense or High can be fun in areas where a lot of landmarks
    are accurately placed, like in Rome or other cities. If they align well with the ground texture,
    they can add a lot of flair to the city scape.

    nVidia users should set the "Negative LOD BIAS" setting to CLAMP in the nVidia control
    panel settings either globally or just for FSX. In conjunction with the MipBias=6 values this
    removes the flickering and generally leads to sharper terrain display.



    Uninstalling TileProxy

    The tileproxy.sys filter driver can be unloaded from memory by using the start menu - but only
    if the Tileproxy program is not currently running. Beware though that there is a certain
    chance that this can hang or crash the machine because this is still beta software that may
    contain some bugs. Normally there is no need to unload the driver because it is designed to
    not interfere with software other than the Flight simulator.

    I provide an uninstallation option for the project. This should restore your fsx.cfg and
    scenery.cfg to the state before TileProxy was installed. All caches and the "TileProxy
    Photoreal World" folder will be deleted. The uninstallation may take some time, in particular if
    you have downloaded a lot of graphics data during flight.



    Future Work Items

    This is a list of things that may be improved in future versions. Please remember that this
    depends a lot on the amount of spare time that I have besides a day job.

    I tried to sort this list in the priority that I want to work on it.

    The program should reside in the task tray and we need to drop the ugly DOS box as
    soon as possible. This is definitely the last major release having a console window.
    Create a graphical configuration utility and GUI for Tileproxy.
    Move the caching and disk storage strategy away from individual BMP files in favor
    of caching entire LOD tiles (further speed gains expected).
    Ability to quickly turn off the photo terrain coverage to fall back to default scenery from
    a user interface. Possibly selectable by geographic area (e.g. for individual continents)
    Ability to auto-select different online services by geographic area and based on user
    preference. Falling back to default scenery in selected regions.
    Improve Moving Map to show airports (4 letter airport codes) or city names, possibly
    also a compass.
    Show LOD circles and tileproxy performance metrics next to the moving map.
    Tap further into FSX by hooking functions like the threading and fiber API or the file
    I/O APIs. Maybe the filesystem driver will no longer be needed and the tile I/O
    can be accelerated further. Possibly we can even alter the loading behavior of FSX.
    Detect forests and create vectorized autogen descriptions for forest areas.
    Integrate with OpenStreet Map project for providing vector roads.
    We need a way to automatically manage and limit Tileproxy's disk usage in software.
    Improving caching strategies and cache purging from disk.
    Integration with a user-friendly AutoGen editor.
    Online sharing of manually placed Autogen objects on Tileproxy scenery.
    Light maps and different seasons could be synthesized artificially using side
    information like population density, geographic region, etc...
    Flight plans could be taken into account for pre-loading.
    Enabling full UNICODE support for all file and path names to please international
    users (asia/pacific region, arabic countries etc)
    Ability to perform colour correction or blending between differently photographed
    areas to make the landscape appear less like a patchwork of different satellite
    passes.
    I would like to get rid of concrete taxiways in regions with good satellite coverage.
    These cover and hide the actual photograph of the airport!
    Turn this manual into something more appealing with embedded graphics and screen
    shots.
    Provide translations in Spanish, Chinese and Klingon



    Commercializing this project?

    Well, I have thought about it - but the legal implications for a potential software publisher
    would be huge. Imagine getting sued big time by Acme Globe Service for selling software that
    accesses their servers with unauthorized software... I am sceptical that any of the small
    flightsim add-on publishers would want to take that chance.

    The only way I see this program shipping with default support for one of the "big players" in
    the online map business is when they approached me and suggested a sponsorship of this
    software - e.g. placing their logo in the software, sponsoring further development and
    exclusively tying it to their service while actively promoting this FSX add-on as a new feature
    of the service. It could even mean optimizing the server infrastructure to provide data in a
    more convenient format for FSX (saving lots of resolution and format conversion steps in
    between and reducing the network load). And if it means popup ads in the cockpits or a co-
    pilot enthusiastically recommending his new aftershave in the cockpit, so be it. After all it's a
    free download.

    I could also imagine that flight simmers would be willing to pay a monthly fee for accessing a
    high quality commercial satellite service with possible extra features like import of 3D
    buildings, terrain meshes and more metadata from the service. But that's not up to me to
    decide. It would certainly be worthwhile to have the service's 3D buildings available in FSX.

    I like programming, but not so much making business plans. I implement what can be done
    technically, while trying to stay out of legal troubles. So I am putting this project out there in its
    current state to see what's happening. Maybe someone will approach me, may be not. If you
    think you have a serious business proposal, let me know. If it sounds interesting, I am willing
    to travel and listen. I have already released parts of this projects under the GPL (meaning the
    exclusivity is a bit lost), but this does not preclude me from maintaining closed source
    branches and continue development in any direction I wish (due to me being the author and
    having the copyrights).


    Working for Microsoft?

    This would have been fun, for sure. But being age 34, I'm getting too old for this. ;-) Besides,
    the US dollar just crashed hard. So you go first and tell me how much sun you get in Seattle.
    Boy, I did enjoy living in San Diego though.



    Recommended Third Party Add-ons:

    High resolution terrain meshes from third parties may improve your VFR flying experience
    greatly in particularly in mountainous terrain. Without a good mesh, everything appears flat.
    Default mesh coverage in FSX is only good in Northern America and in parts of Europe.

    For free terrain meshes, look at www.simviation.com - they do have occasional "terrain
    spikes" (artefacts) in them but are otherwise fine and have a high resolutions. The FSX
    default airports may sometimes appear on "plateaus" on these meshes the mesh has a
    different altitude at that spot. Be warned ;-) The download URL is:  

    http://www.simviation.com/fsx_terrainmesh.htm

    The entire Alpes are available at LOD 11 from this site (FSX and FS 2004)

    http://c30s.alpes.gratisim.fr/

    Commercial worldwide mesh products are (some may also contain new landclass and texture
    and a FS 2004 compatible version, check the reviews for each product's feature set and
    quality)

    PILOTs - FS Global 2008
    FSGenesis - World Terrain Mesh for FSX
    FSQuality - A Better World

    For a mesh of the Canary Islands, try to download CanarySim V2.0 (available in 2008?). If
    you make the TileProxy World folders have higher priority than the CanarySim scenery
    folders, you can use TileProxy texture on top of their excellent meshes and you keep the
    airport and custom autogen they provide!

    A software company called Apollo Software offer a product called FS AirMap, a moving map
    gauge (or panel) for FSX that can display either ICAO or topographic maps inside FSX. This
    is very helpful as a navigation aid, especially if you can read ICAO maps. The only problem is
    that it isn't using vector maps, and hence the text rotates with the map if you don't always use
    the "north up" map display.

    A product called FS Altitude offers photo scenery at up to 14m/pixel that covers the outermost
    LOD rings. This is currently available for Central Europe and soon for the USA. It complements
    Tileproxy nicely, as it replaces the slowly loading outermost LOD levels with pre-rendered
    photo scenery. The inner LOD levels will remain FSX default - or can be filled by Tileproxy.



    Scouting the area before choosing a flying location

    Consider comparing the image quality of your map services on one of the following web sites.
    These allow side-by-side comparisons. Zoom in all the way to verify that there is good
    coverage where you intend to fly.

    www.flashearth.com

    http://www.jonasson.org/maps/



    Good Locations to fly at

    Generally all locations with hilly terrain look amazing. Flat areas look mostly ... well flat. While
    the textures may be good quality a flat terrain simply has not much appeal even with a high
    resolution phototexture slapped onto it.

    One of the major online map services just recently acquired all of Switzerland in high
    resolution, so you may want to fly out from Sion or Interlaken. Install a third party terrain mesh
    at high resolution for maximum effect. The Eiger Nordwand (a notoriously dangerous climbing
    spot) is really steep and the glaciers near Sion look amazing. And global warming really
    doesn't have that much effect on phototerrain (unless the service keeps updating their
    photos).

    The Grand Canyon is also gorgeous. Start at Grand Canyon Natl. Park Airport and head north
    and be prepared for a big WOW. The quality of the visuals depends on the service you chose.
    Hint: The USGS aerial survey data on one particular service doesn't quite look as good as the
    real deal on the other big player. The default terrain mesh of FSX is quite good at that the
    Grand Canyon.

    The island of Oahu, Hawaii is pretty well covered by satellite imagery. Its geology and beauty
    is astounding. You might want to take a flight from Dillingham Field on Oahu and circle around
    the island a bit. The views land-inward are incredible.

    Some major cities have good aerial photo coverage on the major services. Flying over these
    cities can be an exceptional experience, in particular if you have been to the city before and
    you can recognize places. Salt Lake City in Utah for example looked very nice to me and
    fortunately you could not smell the lake at all in FSX. So does Mountain View, California taking
    off from NASA’s Moffett Field (try some barnstorming of the NASA hanger for extra
    enjoyment).

    Personally I like desert areas and canyons. Having travelled some of these areas in the USA
    in allterrain vehicles myself, I also enjoy exploring them from the virtual air. The geology is
    amazing and you can start counting individual rocks, gullies and bushes. Generally, all airports
    containing the name "canyon" in the western United States (California, Nevada, Utah, Arizona,
    Colorado) might be worthwhile exploring. You might also want to research the locations of the
    National and State parks in the US and pick airports nearby. It is a humbling experience to
    see the almost "the real thing" from the air and to experience the grandeur of this landscape.

    Rottnest Island in Australia is an absolute stunner with the new watermasking feature using
    the blending mode. No cars allowed on this island, so bring either your bike or your Ultralite.

    Keep in touch in the forums and start exchanging superb locations. Share the fun!



    KNOWN PROBLEMS in this relase version:

        - No longer contacts any servers in the domain *.google.com (this is by design).

        - The FSX compatible LOD8 scenery ring may have distinctly different water colors
          and more coarse water masks than the tiles served through Tileproxy.

        - With water masks enabled, some LOD tiles will not upload properly to the driver.
          This is a bug resulting in massive slowdowns in some areas. If you get hit by this
          bug disable water masks alltogether.  Fixing this is high on my priority list.

        - Vista compatibility still may be problem. The cache manager in the vista kernel
          uses a more aggressive caching of the files. This can lead to unfortunate
          effects, like crisp tiles suddenly blurring again, or tiles sometimes corrupting
          in mid flight.

        - FSX RTM version currently has a problem with this release, as black or water
          tiles appear next to the aircraft. Maybe a future point release (e.g. Beta 7.1)
          will fix it. But I think most users will have switched to SP1 or SP2 already,
          as many addons now require it. So fixing this is not a high priority for me right
          now.

        - Vista users should DISABLE USER ACCOUNT CONTROL to make Tileproxy
          work. Vista 64 bit users also must press F8 during boot and allow unsigned drivers
          from the Windows boot menu.

        - Some stutters may occur on single core CPUs, especially with water mask
                  or post colorization enabled. Also the new terrain preloading during flight can
                  lead to stutters on these CPUs.

        - Disk space usage is still not monitored or controlled by Tileproxy, so please
          stay on top of things yourself and occasionaly clean up your world folder
          and use the service cache browser to clean up unwanted data.

        - The API hooking technique may cause occasional instability while Tileproxy
          is running. I have seen tasks like Vista's "Desktop Window Manager" fail on
          occasion, as well as about 1 out of 10 times my FSX crashes on me on start.
          I will try hard to improve the stability of this feature in the future.


    Tags Tags : ,
  • Commentaires

    3
    Lundi 15 Juin 2015 à 11:41

    Nice thank you

    2
    patgarret Profil de patgarret
    Vendredi 5 Avril 2013 à 18:34

    Thanks !

     

    1
    Vendredi 29 Mars 2013 à 08:46

    Great blog you people have maintained there, I totally appreciate the work.

    Suivre le flux RSS des commentaires


    Ajouter un commentaire

    Nom / Pseudo :

    E-mail (facultatif) :

    Site Web (facultatif) :

    Commentaire :