I wanted to post an update on the current development of version 3.07.
As previously posted, the project website bug tracker and wiki have
been moved over to the new SourceForge.net Allura system, which was
required because the old hosted apps we were using are no longer
I started the new bug tracker fresh as a lot of the older bugs are
either vague or no longer applicable. The new bug tracker currently
has three outstanding bugs listed on it if anyone wants to work on
I migrated the old wiki pages over to the new wiki. It has a more
narrow page format, so we may need to clean up some of the images to
fit it better. It would be nice to go through the wiki and update
pages as needed and clean out any out-of-date material.
I've finished the new activity spots feature in the simulation. This
involved configuring X,Y locations within each building and vehicle
that are preferred locations for performing various activities related
to that building/vehicle. People will prefer to go to unoccupied
activity locations when performing relevant tasks rather than just
going to a random location within the building/vehicle as was
previously the case. You can look at the settlement map tool and get
a good idea what each person is doing based on where they are located.
I'm currently working on improving simulation CPU performance - both
the number of milliseconds it takes to perform each simulation turn
and the CPU load running the simulation.
I tracked the lion's share of simulation CPU time to a couple of
methods in the Inventory class: getAmountResourceCapacity and
getAmountResourceStored. I added another layer of caching to these
methods and this seems to have improved performance considerably: from
about 10.8 to 16.8 tics per second with default simulation
configuration on my development laptop. The CPU usage seems to be
down quite a bit after this as well.
Another bit of code that takes quite a bit of time is the
TaskManager.getNewTask method. This uses reflection to call the
static getProbability methods on (currently 43) task classes, then
uses reflection to construct an instance of the chosen task class.
Reflection is pretty heavy weight, so I'm trying to refactor the code
to instead use meta classes to check probability and create instances
of tasks. I'm about halfway finished with this and I will have to
check if it actually improves simulation performance once I'm done.
If it doesn't improve performance, I'll probably just not check it in
as it adds a lot of code.
Beyond that, I'm planning on adding the concept of underground
buildings and connecting tunnels to the simulation. We also have a
lot of code that has string values that should be replaced with
enumerations and internationalized values so that they can be easily
translated to different languages (which st.pa and Lars have been
As I mentioned earlier, we have a few bugs on our bug tracker that
will need to be fixed for the 3.07 release.
Manny Kung has been actively working on redesigning our project
website with a modern HTML CSS design. He has it demo'd on his
Sourceforge.net user site and it's looking quite good so far.
Please let me know if there's anything that you want to work on for
the 3.07 release, or any other feedback.
Mars Simulation Project