News:

Simutrans Tools
Know our tools that can help you to create add-ons, install and customize Simutrans.

Current development projects: coding help welcome

Started by jamespetts, October 07, 2011, 01:29:05 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

AndrewTraviss

Alright, I have some ideas based on what you wrote. I think I will create a thread to discuss the overall design of maintenance, rather than focusing on just one or two of these features, as it seems maintenance is being completely overhauled as a concept between all of the outstanding items.

Should this discussion happen in the Development board, or on the main Experimental Discussion board?

jamespetts

Sorry for the delay in replying: if you are discussing the merits of possible new features, rather than just the mechanics of implementation, may I suggest that the thread be posted in the discussion board rather than the development board?

I shall look forward to reading it in any event.
Download Simutrans-Extended.

Want to help with development? See here for things to do for coding, and here for information on how to make graphics/objects.

Follow Simutrans-Extended on Facebook.

AndrewTraviss

Now that I'm actually digging into the code, I suspect that all of the German is going to be more of an obstacle for me than C++

Rollmaterial

Quote from: AndrewTraviss on June 17, 2016, 03:58:54 AM
Now that I'm actually digging into the code, I suspect that all of the German is going to be more of an obstacle for me than C++

This thread should help you with that.


jamespetts

I have tried to translate some things in comments where possible. If you get stuck with anything, let me know.
Download Simutrans-Extended.

Want to help with development? See here for things to do for coding, and here for information on how to make graphics/objects.

Follow Simutrans-Extended on Facebook.

NoMorePacers

Would the liquid insolvency for network games only thing require only a bit of tinkering with simuconf.tab, or is it wider-scale?

jamespetts

It would require changes to the code: if it were only changes to the simuconf.tab file, it would have been done long ago.
Download Simutrans-Extended.

Want to help with development? See here for things to do for coding, and here for information on how to make graphics/objects.

Follow Simutrans-Extended on Facebook.

jamespetts

I have updated this to add reference to a possible future feature, waiting time limits based on individual stops, and revenue from stop extension buildings.
Download Simutrans-Extended.

Want to help with development? See here for things to do for coding, and here for information on how to make graphics/objects.

Follow Simutrans-Extended on Facebook.

jamespetts

I have added two further items to the list, both relatively minor features affecting trams and road vehicles.
Download Simutrans-Extended.

Want to help with development? See here for things to do for coding, and here for information on how to make graphics/objects.

Follow Simutrans-Extended on Facebook.

jamespetts

I have updated this list to acknowledge the completion of the low bridges feature from earlier in the year, to move completed projects to another post as space was running low in the original post and to add a new project, industry road connexions.
Download Simutrans-Extended.

Want to help with development? See here for things to do for coding, and here for information on how to make graphics/objects.

Follow Simutrans-Extended on Facebook.

jamespetts

I have updated this to add several features discussed and considered recently, as well as to update the text of the proposed car parking feature to fit in with recent developments in passenger generation and classes.
Download Simutrans-Extended.

Want to help with development? See here for things to do for coding, and here for information on how to make graphics/objects.

Follow Simutrans-Extended on Facebook.

jamespetts

I have updated this to add fractional power and tractive effort values.
Download Simutrans-Extended.

Want to help with development? See here for things to do for coding, and here for information on how to make graphics/objects.

Follow Simutrans-Extended on Facebook.

freddyhayward

I understand that current development is focused around bug fixing and other more pressing issues (and I lack the skills to contribute code), but I wanted to share my thoughts on private car behavior. The key limitation as I see it is that only one vehicle per direction can occupy a 125m stretch of road at any given time. Currently, ludicrous situations arise from this such as small towns becoming gridlocked. cars also slow down large maps significantly, but disabling them results in congestion dropping to 0, reducing public transport usage. Regardless of CPU performance, it would be impossible to realistically simulate private car traffic on a one-car-per-tile basis. I see three possible approaches to this problem, each of increasing complexity. All, I believe, would produce far more realistic results than the current.

1) retain physical car simulation but represent multiple simulated cars as one physical car. For example, at 5 simulated cars per physical car, an 8-tile (1km) stretch of road would have a capacity of 40 private cars per direction at a given time rather than 8.

2) abandon physical car simulation. calculate traffic, routes & congestion per town. adjust per-town speed limits based on congestion. A particularly congested city might limit the speed of all buses within its borders to 35 km/h.

3) abandon physical car simulation. calculate traffic, routes & congestion per tile. adjust per-tile speed limits for player road vehicles: for example, a bus travelling on a congested section of a city street might be limited to 25km/h.

ACarlotti

There is another option that would partly help - allowing multiple vehicles to occupy a single tile while travelling in a single lane.
I think the graphics scale is approximately 30m per tile*, compared to a default physics scale of 125m per tile. So effectively we are simulating modern cars as if they are 16m long instead of 4m long. If we allow multiple vehicles in a tile, then a stationary queue would have approximately 1/3 of the capacity it would have in real life (allowing for a bit more space between cars in real life). The impact only flowing traffic would be less - maybe 50%-80% of the real capacity for a city road, and perhaps >90% of the real capacity for motorways.

freddyhayward

Another advantage of that approach would be its application to player vehicles. In reality, an advantage of buses (and trams, though these are handled as rail vehicles) is that multiple vehicles from different routes can board at a single stop simultaneously. This is currently impossible on two-way road tiles. As someone familiar with the game internally, how feasible would your option be? OpenTTD has this feature:

jamespetts

I agree with A. Carlotti - this would be a preferable solution and also assist with player vehicle interactions with each other. However, this would be a substantial and complex coding project interacting with some code that has so far remained untouched from Standard and there are many higher priorities for my time at present, and I am hampered in what I can do by needing to upgrade my computer, but the parts for doing so being not available until next month.

If anyone else would like to implement the feature of road vehicles being able to occupy fragments of a tile (tiles are divided into 1/16ths for some purposes and vehicle lengths can be specified in their .dat files as these 16ths), so there are at least some fragments of code in the existing game that can in principle be extended to support this.
Download Simutrans-Extended.

Want to help with development? See here for things to do for coding, and here for information on how to make graphics/objects.

Follow Simutrans-Extended on Facebook.

ACarlotti

Quote from: freddyhayward on August 13, 2019, 03:05:00 AMAs someone familiar with the game internally, how feasible would your option be?
It would be a substantial undertaking, which should possibly be tied in with changes to how junctions and lanes work. I think there has already been suggestion of reworking some of this stuff in Standard, but it is definitely a long-term ambition rather than and easy patch.

jamespetts

I have modified this thread to document the recent incorporation of the insolvency features and private car routing.
Download Simutrans-Extended.

Want to help with development? See here for things to do for coding, and here for information on how to make graphics/objects.

Follow Simutrans-Extended on Facebook.

Mariculous

Notice that you might want to adjust the congestion measurement paragraph of Private road traffic simulation section.
It seems to be an outdated description.

jamespetts

Quote from: Freahk on June 03, 2020, 06:51:22 AM
Notice that you might want to adjust the congestion measurement paragraph of Private road traffic simulation section.
It seems to be an outdated description.

I have added a note at the end of the original description explaining the system as implemented.
Download Simutrans-Extended.

Want to help with development? See here for things to do for coding, and here for information on how to make graphics/objects.

Follow Simutrans-Extended on Facebook.

neroden

"Neroden had proposed something similar a few years ago involving the larger town completely subsuming the smaller town and removing the town hall, but that would be difficult to achieve technically, since pointers to the original town which would, on deletion, become invalid, would be strewn around the code and hard to unpick. In any event, I believe that the idea of having conurbations with separate districts is more realistic (and will also give more variety to local stop names). "

Just gonna say town mergers are not difficult technically.  It's *tedious*, and might cause the game to slow to a crawl while it cleans up, but it's not difficult.  The list of things pointing to a town is well-defined: you run through all the buildings, run through all the factories, run through the city list, run through the squares in the map, etc.  There's already code for deleting a town.

Implementing sepraate districts may well be more realistic, but it's actually difficult to achieve technically.

jamespetts

Quote from: neroden on April 28, 2023, 02:30:41 PM"Neroden had proposed something similar a few years ago involving the larger town completely subsuming the smaller town and removing the town hall, but that would be difficult to achieve technically, since pointers to the original town which would, on deletion, become invalid, would be strewn around the code and hard to unpick. In any event, I believe that the idea of having conurbations with separate districts is more realistic (and will also give more variety to local stop names). "

Just gonna say town mergers are not difficult technically.  It's *tedious*, and might cause the game to slow to a crawl while it cleans up, but it's not difficult.  The list of things pointing to a town is well-defined: you run through all the buildings, run through all the factories, run through the city list, run through the squares in the map, etc.  There's already code for deleting a town.

Implementing sepraate districts may well be more realistic, but it's actually difficult to achieve technically.
Interesting - thank you for your renewed thoughts on this. What difficulties had you envisaged with separate districts?
Download Simutrans-Extended.

Want to help with development? See here for things to do for coding, and here for information on how to make graphics/objects.

Follow Simutrans-Extended on Facebook.

neroden

You have to write great masses of new code, and new code is always bug-prone, to unpick between when you want a pointer to a *town* and when you're looking at a *district*, and an entire map connecting districts to towns, etc. etc.  It's just much more complicated in coding terms, therefore much more to possibly go wrong.

jamespetts

Quote from: neroden on May 06, 2023, 11:38:00 AMYou have to write great masses of new code, and new code is always bug-prone, to unpick between when you want a pointer to a *town* and when you're looking at a *district*, and an entire map connecting districts to towns, etc. etc.  It's just much more complicated in coding terms, therefore much more to possibly go wrong.
Interesting - I think that we will need to consider all the implications of this more carefully when it comes time to implement the town growth improvements.
Download Simutrans-Extended.

Want to help with development? See here for things to do for coding, and here for information on how to make graphics/objects.

Follow Simutrans-Extended on Facebook.