News:

Do you need help?
Simutrans Wiki Manual can help you to play and extend Simutrans. In 9 languages.

[New release] Simutrans-Experimental 2.3

Started by jamespetts, April 16, 2009, 10:45:12 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

jamespetts

Thank you to all of the Simutrans-Experimental beta testers. Following the latest round of testing, I have released a further new version of Simutrans-Experimental: see here on how to get it. In addition to the changes listed below, the latest nightly version of Simutrans-Standard has been merged in, with all of the changes and fixes there, including the fix to the "options" dialogue issue and the improved automatic bridge building.

Changes


  • CHANGE: AI players now try to build roads for which their vehicles are not too heavy.
  • FIX: Further memory leak.
  • FIX: Crashes in some cases on deleting halts.
  • FIX: Sometimes, passengers on return trips that could not find a route would have their next transfer marked as "unknown", and would be stuck in the station
  • FIX: Crashes on reloading saved games

Feedback and testing

As ever, I should be very grateful for any feedback from this release: the testing done so far has been most invaluable in identifying problems. I have tested this version, albeit briefly, and it seems faster, and to consume less memory, than version 2.2. I should very much like feedback on how this version performs, and how the new features work for everybody: how do people find the new routing algorithm in practice? Does the revenue model make sense? Thank you for all the feedback so far :-)
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.

knightly

James, as I have mentioned before, the weight limit messages clutter up the screen way too much. Please see the 1st attached image produced from Wipi's save game. :( Probably city roads have a low weight limit and thus many vehicles running inside the city "carry" such lengthy messages around.

Visual clutter aside, the slowed-down vehicles will easily cause traffic congestion. City roads already have a relatively low speed limit of 50km/h. 1/3 of it would be intolerably slow -- a bus which have max speed of 80km/h now runs at 16km/h. :-\ (Please see the 2nd image)

IMHO, it isn't reasonable to convert weight limit into a more stringent speed limit.

The Hood

Better solution maybe? The weight limit for the city road should be increased (although this is pak-dependent).  Most (if not all) vehicles should be able to drive unhindered on the city road (not so for dirt tracks!) - so the weight limit for city road should be changed to be greater than the heaviest (sensible) vehicle in the set.  That's one for pakset maintainers though (unless you have access to the sources, e.g. pak64 or pak128.Britain).

prissi

Albeit dirt tracks have already a limit of 25km/h and are used by world heaviest equipment. I do not think there are reasonable speed limits enforced for heavy weight road vehicles (tanks aside) but rather for oversize etc. in reality. Weight limits exist almost only for airplanes and tracks. Maybe weight limits should be only enforced by rail bound traffic and planes.

(For boats the load is always zero, since they displace exactly as much water as they weight.)

The Hood

Fair point.  But the workaround for city roads is still the same - increase their weight "limit".

z9999

Airplane slow down on the runway ? It cannot fly.
BTW, if weight limit of runway is low, tooltips shows during flying.

Fabio

Quote from: prissi on April 17, 2009, 11:47:25 AM
(For boats the load is always zero, since they displace exactly as much water as they weight.)

True, but weight limits could be used to prevent larger boats to use smaller canals and rivers. and huge tankers shouldn't even use canals at all (e.g. the supertankers in RL can't go through Suez! and even Panama is giving them problems...)

VS

You could say then that these boats would sink so far that they would scrape bottom ;D

Or you can introduce parameters "width" and "depth"...

My projects... Tools for messing with Simutrans graphics. Graphic archive - templates and some other stuff for painters. Development logs for most recent information on what is going on. And of course pak128!

knightly

#8
@ jamespetts

Is there any way to disable the weight-limit code for the time being, like a simuconf.tab setting? It's difficult to test your new revenue and routing systems when many vehicles move so sluggishly. :-\


jamespetts

Thank you all very much for your replies and thoughts in relation to weight limits. In relation to the screen clutter, I have made the message a great deal shorter: it now just reads "Too heavy", which is in keeping in any event with the new, shorter status messages (the old message fitted in with the style that prevailed at the time that it was coded). The shorter message will be incorporated into the next version.

I do not think that getting rid of weight limits for roads is a good idea: I agree with The Hood that the real way to deal with it is to calibrate the weight limits correctly for the vehicles. In reality, nobody would make a 'bus that is too heavy for city roads. However, weight limits on roads have had an important impact in the development of 'buses: many 'buses were built smaller than the transport companies would have liked because the roads could not take heavier ones. As the roads improved, so has it been possible for 'buses to become heavier, and thus larger, and able to carry more passengers. That, in turn, has made them more competitive with railway vehicles. Similarly with goods lorries: a major factor in their development has been the ability of roads to carry vehicles of the requisite size. Again, as lorries could become larger as roads become capable of carrying heavier ones, so has road transport become more serious competition for rail transport.

Furthermore, different roads have different weight limits: bridges, for example, often have restrictive weight limits, forcing heavier lorries and 'buses to take detours. Roads in cities are often off limits to the heaviest lorries, forcing them to use country roads, and requiring the use of smaller lorries to serve factories in cities. Removing weight limits from roads entirely would remove a very useful and interesting element of game play that reflects something that has been of real importance to the development of transport networks through history.

As to the question of whether weight limits should stop vehicles routing at all: I considered that carefully some time ago, and concluded that the speed limit was the more sensible answer. It is both largely realistic (very often, over weight vehicles take routes at very slow speed), and understandable by the player (the vehicle goes where it is supposed to go, but, at the point where it gets somewhere too heavy, it goes slowly and displays a big yellow message saying "too heavy"). If weight limits were to stop a vehicle routing, a single under-weight tile somewhere in a route would stop the vehicle going anywhere at all, and the player would have no idea why. There would be no easy way of identifying which bit of the route was causing the problem. It would be confusing and frustrating for players. In fact, I have set the route finding system to tend strongly away from finding routes over roads for which the vehicles are over-weight, preferring instead long detours, but they will still route over roads for which they are overweight if there is no alternative. It is interesting that Prissi gives the examples of dirt tracks being the lowest capacity road but used by the heaviest vehicles, because it is entirely consistent with the way in which Simutrans-Experimental works: dirt tracks are indeed used by very heavy vehicles, but they travel very slowly on them.

As to aircraft, that is a more complicated matter. Clearly, an aircraft cannot go slowly on a runway or else it could not take off. Also, an aircraft should not display the "too heavy" message when flying. In the case of aircraft, there might be some merit in preventing them routing over underweight runways at all, although one would then have to think very carefully indeed about how to communicate that to the player in a readily comprehensible way. Also with aircraft, is there a simple way of checking whether they are currently in flight? Similarly, with ships, weight limits are more complicated matters, but they could, as suggested above, be used as a proxy for a depth limitation, which is an indirect function of a ship's weight 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.

z9999

Quote from: jamespetts on April 17, 2009, 11:08:49 PM
dirt tracks are indeed used by very heavy vehicles, but they travel very slowly on them.

This is already done by speed limit, I think.
Another factor don't need.

knightly


I support Hood's idea of adjusting the weight limit figures.

City road certainly should increase their weight limit. E.g. in Pak128 v.554, city road has a weight limit of 25t only. But some big buses have weight over 20t, and "Super City Bus I" already has a weight of 25t itself. If they are loaded with passengers (each pax weighs 85kg), they can easily become overweight.

As for dirt road, since Prissi said it can allow the world's heaviest vehicle to pass through, we can solve the problem simply by setting the highest weight limit for it.

@ jamespetts

Having said that, I still don't quite agree with converting weight limit into a stringent speed limit.

You already made it very clear that such cases would be dealt with in reality by detour. And for the bridge example you mentioned above, it is even more clear that a detour is necessary to avoid the bridge from collapsing -- reducing speed can't prevent this. And I guess, for other types of roads, weight limit is probably set up to prevent heavy vehicles from damaging road surface (please correct me if I am wrong).

As for your reasons stated above: (1) heavy-weight vehicles move slowly because of the power of their engine in relation to their weight, and probably has no relation to speed limit; (2) the "no route" message can be expanded to remind players with words like "May be caused by vehicle's weight exceeding weight limit of some road portion"

The single-tile under-weight case is not very likely; even if it does occur, it is not difficult to spot. After all, it is a player's responsibility to ensure route completeness when starting a new line.

jamespetts

I am afraid that the "May be caused by vehicle's weight exceeding weight limit of some road portion" message will really not work: firstly, it is extremely long, and secondly, there is no reason to choose that message over, for example, a message saying "may also be caused by electric vehicle missing electrification somewhere along the route" or "may be caused by two adjacent tiles not quite being joined". If the user has no idea where the problem is, there is no sensible way of fixing it. There are plenty of cases in reality in which over weight vehicles do travel at a reduced speed; I realise that each method has its disadvantages, but the disadvantages of the speed limiting system are not as great as that of a system of preventing routing entirely. Detours would be used if there was an alternative route.
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.

knightly


How about allowing routing as usual, but right before the vehicle enter a portion of road which has lower weight limit, stop the vehicle and display a short message like : "Cannot proceed. Weight limit of road exceeded." In that way, players will know what the problem is, right at the very place the problem arise, so that they can immediately adjust their road network to avoid this problem.

Anyway, it is good that detour will be used whenever there is a suitable alternative route.

jamespetts

I'm afraid that that would very likely require a major re-write of the routing code...
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.

knightly

#15
Sorry, but I don't see why my previous suggestion necessitates a major re-write of the routing code.

I already said above, just use the original or your modified routing code. The only extra thing is, as the vehicle travels along the pre-calculated route, check if the tile ahead has a lower weight limit, much like checking if there is red traffic light ahead. I guess this check would not be significantly harder than your check on the weight limit of the current tile.

The main differences between your approach and mine is that, (1) yours checks the weight limit of the current tile, while mine checks the weight limit of the tile ahead; (2) yours limits the speed of the vehicle, while mine completely stops it.




Edit :

I have done a little research on the web, and it seems that the principal reason for setting up weight limits is indeed to protect roads from damage by overweight vehicles. You are right to point out that there are cases where overweight vehicles do travel on roads with lower weight limits. However, those are just exceptions : one has to apply to the relevant governmental office for exemption from certain weight limit, the granting of which is at the discretion of that office. The majority of road users must comply with the weight limit restrictions, which is the norm

Your current implementation constantly grants such exemptions which should actually be exceptions, rendering all weight limits virtually meaningless. The purpose of setting up weight limits is to prevent overweight vehicles from entering certain roads, but your code let all overweight vehicles pass through those roads, defeating the whole purpose. True enforcement of weight limits should be disallowing overweight vehicles from entering the road altogether. In short, your implementation is not really an enforcement of weight limits at all -- rather, it is a relaxation on, as well as complete violation of, weight limits, and it turns exceptions into the norm.

Isaac Eiland-Hall

My unsolicited opinion is that vehicles should not be allowed to drive over roads they exceed the weight limit for (that's the *point* of such limits), and that there is sufficient precedent in the game for not being able to point to a reason *why* a route can't be found.

For the latter, consider two cases:

1) When creating what appears to be one contiguous long section of track, if one accidentally has a break between two tiles (i.e. the tiles next to each other have track, but they both end instead of joining - which can be hard to spot visually), no route is found. Simutrans doesn't say "Hey, I *almost* found a route"... ;-)

2) Similarly, if you set up signals on track or signs on roads wrongly and don't have a workable around, it will again simply be unable to find a route

A real-world case I've learned: When I first started using freeways with minimum speeds, I'd solely connect my cities using them - then trucks that couldn't go fast enough would not be able to route, and at first, I couldn't figure out why. Then I realized, and learned. :)

jamespetts

Evidently, there is substantial division of opinion on the best way to proceed with this one. That, I think, calls for providing options in simuconf.tab. In a future version (not necessarily the next version: I am focussing on fixing bugs), I plan to add an option to simuconf.tab, "no_routing_overweight". When enabled, vehicles will not be able to route over over-weight tiles. I do not think that having them get all the way to the over-weight tile then stop will be helpful, since that will cause chaos with the following vehicles. The result will be that, if there are no alternative routes, the vehicle will not route at all.

If that setting is not enabled, the game will work as it does now. I hope that this will produce a solution favourable to all... :-)
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.

knightly

Quote from: jamespetts on April 19, 2009, 02:57:50 PM
I do not think that having them get all the way to the over-weight tile then stop will be helpful, since that will cause chaos with the following vehicles.

Well, I made that suggestion simply because you think that "no routing when overweight" will cause serious confusion to players. My suggestion will *alert* the player immediately of the problem precisely at where it arises, so that players can deal with it immediately much like when the vehicle is stuck. So I fail to see why it will cause "chaos" to the following vehicles. :P And I really don't understand why you now prefer no routing over my suggestion which addresses your concern. ::)

Anyway, I don't mind whether you choose no routing or stopping at problem spot, as long as I am given the option to truly enforce weight limits.