Simutrans Experimental [Original thread]
Archive thread - no further information will be added here. See other threads in the Simutrans-Experimental forum for more information
Introduction
As many forum regulars may be aware, I have recently developed a number of patches that are designed to have a substantial impact on gameplay. These patches have not yet been included into the trunk, quite probably because that impact has not yet been fully tested. I thought that it might be helpful if I produce a single experimental version, containing all of the various alterations that I have made to the code, for people to be able to test the gameplay impact of my modifications for themselves. I will release both the source code and a Windows binary so that people can see the modified source code all in one place, and also so that people without the wherewithal or inclination to compile from source can test (and even, if it is found to be stable enough, play with) my modified version. The experimental version is based on the latest nightly at the time of release - partly for that reason, and partly because my new features are not fully tested - it should be considered beta software and used accordingly.
I will keep this original post updated with the latest information on the progress of this experimental version as matters progress. I am also currently working with the PakBritain team, and hope for there to be a release (possibly an interim release) of a version of PakBritain that takes advantage of the extra features in this experimental version (but is also compatible with the default version) fairly soon.
Getting the necessary files
1. Source code
Simutrans-Experimental now uses a version control system ("VCS") called "Git" (as written by Linus Torvolds, no less), and no longer uses patch files (which can be hard to apply). The Simutrans-Experimental Git repository is here. For a tutorial on how to use Git, see here. The standard Simutrans SVN is also mirrored on Git here. Git is compatible with Linux and Windows (and possibly also MacOS X, although I have not verified that).
It is recommended that those who wish to get the source code for Simutrans-Experimental setup a separate directory for doing so than that used for the normal source code. Anyone wishing to contribute to coding for the Experimental version is welcome to do so, using Git's very flexible branching system (which makes it far easier to merge a branch back into the trunk than is possible with SVN). So, unlike with standard Simutrans, to make an alteration to the code of Simutrans-Experimental, do not upload a patch file - fork the code in the standard Git way. Any modification that is included in Simutrans-Experimental will be included by way of re-merging the code, rather than applying a patch. Please let me know if you have forked the code so that I can merge back in any desirable new features!
2. Modified configuration files
The attached file Simutrans-experimental-config.zip contains all of the modified configuration files required for the experimental version, including:
(a) simuconf.tab:
This is my configuration file sample, needed because many of my modifications need their own configuration settings. This is an example from PakBritain-Experimental, but should be able to be modified for other paksets easily. The new features are, I hope clearly, documented.
(b) privatecar.tab:
This is a special configuration file, needed for one of the new features incorporated into this version: competition with private cars.
(c) en.tab:
These are slightly revised translation texts for the English language, as there is no specific Simutranslator entry for some of the new texts that have to be translated for the additional features. If anyone wants to produce a non-English version, please reply to this thread with the amended file attached.
(d) speedbonus.tab:
This is a modified speed bonus file for Pak128, taking into account the modified speed bonus system used in this experimental release. This may change again when the new revenue system is implemented.
3. Program files (binaries)
These are the files that will be needed if you cannot or do not want to compile Simutrans-Experimental from source. Simutrans-Experimental may well be added to the official nightly builds (albeit not as often as nightly) in the near future, but, for the time being, a Windows executable version of Simutrans-Experimental can be downloaded here, and a Windows executable version of Makeobj-Experimental (for making ****ets that take advantage of Simutrans-Experimental's new features) can be downloaded here. (Note: new version)
List of modifications
Note: This list of modifications is only updated with every binary release of Simutrans-Experimental. Binary releases of Simutrans-Experimental will be less frequent than code updates on Git. For modifications to the source code on Git, see the commit comments.
I have included all of my recent patches, plus one or two patches produced recently by other regular contributors, but not included in the trunk. I have ****umed that those patches have been released under the Artistic licence, and that the authors will, therefore, have no complaint about their code being included. If I am mistaken in that view, please contact me via PM and ask to have your patch removed from the experimental version.
1. Modification of speed bonus for local transport*; and
2. increase of running costs for obsolete vehicles, both explained further here.
3. Modified p****enger generation, including local weighting and alternative destinations, explained further here.
4. Competition with private cars, as discussed further here.
5. Cornering, weight limits and tilting trains, as discussed here.
6. Way constraints (new in this version - fully implemented in the code and UI) as also discussed here.
7. Catering level (implemented in .dat files and UI only - currently has no effect on gameplay. Also, mail vehicles with a catering level above 1 are treated as "travelling post office" vehicles, but no effect on gameplay is yet coded), as also discussed here.
8. Enhanced physics for steam locomotives.
9. Industries close down at a random point between 0 and 30 years after their retirement date. A message is displayed in the ticker when an industry closes down. Any other industries in the same chain either re-link to another supplier/consumer, or, if they cannot find one, close down themselves.
10. The origins of goods/p****engers/mail are displayed with vehicles and stops (New in this version: origin data now saves).
11. Automated replacement of vehicles, by Isidoro, (updated to be compatible with way constraints) discussed here. (New in this version): data on replacing vehicles now saves: replacing will occur as planned when reloading from a saved game when convoys are saved as being set to be replaced.
12. More sophisticated handling of debt (including: customisable interest on debt, an option to turn off bankruptcy, and a credit limit, beyond which no further capital purchases can be made (which can be disabled)). More details on this feature here.
13. (New in this version) Accurate reversing for trains, including different types of trains taking longer to reverse: see here for more details. (Note: this will only work with customised pakset data, made using a recent version of Makeobj-Experimental)
14. (New in this version) Variable loading time for all vehicles: see here for more details. (Note: this will only work with customised pakset data, made using a recent version of Makeobj-Experimental)
15. (New in this version) Upgrading (rather than buying and selling) of vehicles, fully integrated with the vehicle replacing system; see here for more details. (Note: this will only work with customised pakset data, made using a recent version of Makeobj-Experimental)
* This will become obsolete when item no. 1 on the to do list is completed.
Please note also that the experimental version excludes a feature of some of the more recent nightlies, the revenue being based on the straight line distance between the start and end point of the whole journey, rather than for each transfer. It has been omitted because it would be difficult to integrate with the existing code, is not entirely realistic, and will be redundant once the new revenue system is in place.
Note: (New - 15th of March 2009) The save game files produced by Simutrans-Experimental are no longer compatible with save game files produced by standard Simutrans. Simutrans-Experimental can load save games from standard Simutrans, but standard Simutrans cannot load files saved by Simutrans-Experimental. This new version, however, enables data, such as the weight limits of tracks/roads, etc., the origins of goods, which vehicles are being replaced and so forth, to be saved.
To do
There are a number of further plans that I have in relation to work on this experimental version. In approximate order of priority so far:
(1) revised revenue system, with revenues based on journey times and accommodation level, not the maximum speed of vehicles;
(2) full implementation of catering and travelling post offices;
(3) a system in which labour costs (and possibly other costs) vary depending on the year;
(4) an implementation of overcrowding for p****enger services;
(5) a more sophisticated means of p****engers/goods choosing which route to take to travel, or whether to take their private cars as opposed to public transport, based on the new revenue model described at (1) and (possibly) the quality of services metrics being developed by Isidoro; and
(6) merge in the underground view and underground slopes patches if this has not already been included in the trunk.
Known issues
1. The sort ordering for goods in transit or at stations does not work - this is ****ociated with origins tracking, although the reason is not entirely clear.
2. When goods from different origins have the same destination, they are not combined together in the GUI for convoys or stations, even when the mode is not set to sort by origin.
3. Interest payments are not shown in the finance history window. Fixing this requires reversioning the save game files.
Fixed bugs
15th of February 2009
1. Cornering speeds would often be incorrect when more than one vehicle was moving at once.
2. Detection of overweight vehicles became erratic when more than one vehicle was moving at once.
3. (Fixing items 1 and 2 might also have resolved occasional crashes that had not hitherto been traced or reproduced effectively).
4. Crash (****ertion failure) when loading a saved game.
5. Crash (uninitialised variable) sometimes when loading saved games.
22nd of February 2009
6. Occasionally, vehicles set to be replaced automatically will not go to the depot automatically as they should.
7. Instability and unexpected behaviour when vehicles unload in a game that has been loaded from a saved game.
26th of February 2009
8. Crash (access violation) on some occasions relating to the code for detecting when vehicles are climbing hills.
15th of March 2009
10. Origin data are not saved.
11. Maximum weights on track are not set correctly when loading a saved game.
Feedback
The whole point of this experimental version is to enable people to experiment. I should be very grateful for any feedback that people have from using this experimental version, particularly as regards: (1) bugs; and (2) gameplay/balancing issues. Please, however, do not post about bugs or gameplay issues until you have verified that the bugs/issues are present only in the experimental version, and cannot be reproduced in the standard nightly (if they can, please make a stand-alone bug report in the usual way). I should also be grateful for any suggestions for improvement, although please be aware that, because I am busy with work, I may not have the time to implement even good suggestions.
Happy experimenting!