Version 3.02 Development Progress (2/27/12)

2012-02-27
2012-11-16
  • Scott Davis
    Scott Davis
    2012-02-27

    Fellow mars-simmers,

    I wanted to put out a development progress report for version 3.02.
    It's been slow going, but I think significant progress has been made
    and I'm hoping it won't be long before 3.02 will be ready for release.

    Here are the features/bug fixes implemented so far:

    * People's names are now displayed on the settlement map tool.  The
    names of the current occupants of a building are displayed in a
    bulleted list below the building's name.  A list of people outside the
    settlement on EVA's is displayed on the upper left side of the map.
    The Label button now has a drop down set of check boxes for selecting
    label display options.  This format for displaying person labels will
    likely change as we implement more detailed tracking of person
    location/movement within buildings and around the settlement, so this
    is only a near-term solution.

    * Lars added a nice new background tile for the application desktop
    that's a definite improvement over the older gray tile.  The old
    desktop logo was also removed.

    * A memory leak bug was found and fixed relating to creating new
    simulations and loading simulations from a file.  I determined using
    the Java Visual VM performance monitor tool that old simulations were
    not being properly garbage collected, so each simulation
    created/loaded took more memory until the application slowed down and
    eventually ran out of memory.  I fixed this by going through and
    carefully making sure all old simulation references were cleared and
    key simulation classes had destroyer methods that cleared out all
    collections.  The memory leak appears to be gone now in performance
    monitoring, so I think it's resolved.  Thanks to Raul in the forums
    for reporting this problem.

    * I refactored and improved the code for calculating distance and
    direction between locations on the surface of Mars.  This code is used
    for rover driving, among other things.  Rover drivers were having
    trouble reaching destinations and sometimes circled around the
    destinations until they ran out of fuel.  This happened particularly
    when the time compression was set low.  The distance and direction
    calculation code was using poor algorithms that had significant error
    at short distances (<5km).  I did some research on Great Circle
    algorithms used by pilots for navigation and fixed/improved the code,
    and created some unit test cases to check the error margin from
    expected calculated distances and directions.  The new code tested to
    be accurate in distances down to micrometers.  The rovers appear to be
    reaching their destinations just fine now, even at low time
    compression.

    * Jonathan has been working on performance improvement.  There's a new
    -headless parameter that allows starting the simulation by itself
    without the GUI.  This should be useful for performance testing.

    Things left to do for version 3.02:

    * Continue working on CPU/memory performance improvements for both the
    simulation and the GUI.  I'm going to be using the Java Visual VM
    performance monitor to help with this.

    * I'd like to create a GUI tool for viewing and editing resupply
    missions from Earth to the settlements.  This will also allow users to
    create new resupplies from Earth when a settlement is running out of
    needed supplies.

    * Try to create a Debian package for the sim, perhaps using a maven
    plugin.  If this is successful and can be a part of our normal version
    release cycle, we should look into getting this into the Ubuntu and
    other package repositories.

    Let me know your thoughts on this.  We can discuss things at the
    upcoming developer meeting as well.

    Take care,

    Scott Davis
    Mars Simulation Project
    http://mars-sim.sourceforge.net
    scud1@users.sourceforge.net