Currently there does not seem to be a scenario editor. However, it is desired. With #21 one can simply use a screen similar to the main screen in some God-like mode where one can change anything (terrain, account balances, rails, ...) and then save.
Now that I know how to do that with rsync and svn2git I think it's not much effort to actually have the real history of Freerails (starting in 2000) in Git and although that might lead to conflicts with existing forks, the number of existing forks isn't that high, nor have I heard of significant activity within these forks. Now is the time to do that.
This greatly simplifies things. Saved games are basically scenarios with players already chosen. Scenarios are saved games without specific player information yet.
For now it's better to concentrate all knowledge in the model. As it is currently the client decides how to color players and terrains but that only works if the model never changes the order of the players and the terrain. That is vulnerable. On the other hand it allows clients to have different skins/looks independent of the model. However, since the client's look will change anyway substantially, concentrate it all in the model for now and make the client "skinnable" later on.
I'm not having much success getting started - likely in part to do with my infamiliarity with both git and gradle.
I've cloned the respository, imported the project in Eclipse. I've tried running the gradle 'dependencies' task but it does not seem to work. I've tried running 'gradlew.bat' first, and tried the gradle task from both Eclipse and from a command prompt.
Perhaps some kind of basic guide to building FreeRails should be integrated as part of the standard documentation (i.e. appear on the root page of github).
Currently XML is used. A change to JSON might result in lower overhead (less verbose, easier to serialize) at the cost of less structure. However, it might not be needed anyway. And JSON also has validators. See for example https://github.com/java-json-tools/json-schema-validator.
The game model, especially the planning of moves and the undo ... seem overly difficult. They just make the game difficult to programm (and maintain) but might not add much to the depth and fun.
In order to get to a runnable programm the game model should be kept as concise as possible without taking away the majority of the fun. The question is how to achieve that?
Should they be shown? Profits are a function of stock price but stock price is a function of profit. The solution will involve solving a set of simultaneous equations.
Compared to the flat 2D display now, some nice, isometric 2D might be looking much better without needing to go to full 3D. Look at some other open source games how they do it and make it similar. For example Widelands has been mentioned (https://sourceforge.net/p/freerails/feature-requests/64/).
Screens have increased the pixel density since 2005 when FreeRails was released. The tile size of 30x30 pixels might result in too small tiles now. On the other hand the tile based artwork could show more details if for example the tile size would be 48x48 pixels. Not sure. Therefore let's discuss this.
How are they generated? Manually or by some other means?
Problem is that they need to be generated new with changing game rules. This effort should be kept minimal.
The best solution is probably a separate script (not part of the main package), that uses capabilities of the main package (i.e. a scenario model), adds things using functions of the model (to ensure conformity) and saves through current functions of the model. Running it should be part of the distribution process.
Coming across this repository of RRT2 maps I got the idea that some of these custom maps can either be used as inspiration or basis for maps of FreeRails. I guess there is demand for digging up what people did to customize RRT 1&2.