TransWikia.com

Is there any benefit in funding new buildings while the town is still funded?

Arqade Asked on April 18, 2021

In the local authority window, I can "fund new buildings", which accelerates town growth. Suppose I have already funded new buildings:

OpenTTD local authority window

Is there any benefit in funding new buildings again right now, even though the city is currently funded? In other words, if I "fund new buildings" many times in a row while the city is still funded, am I just wasting my money?

One Answer

Yes, there is, with some caveats

The real mechanics are a bit complicated. Here's an in-depth resourcenote. You can also check out the code, specifically the file /src/town_cmd.cpp.

From the contents of this file, you can learn the following happens when fund_new_buildings is set:

  • The growth rate improves from 1/100 to 1/60 (with 5 functioning stations).
  • The "CBD" of the town is enlarged to 25 tiles.
  • The 'house build counter' is set to a low number, building an additional house, if not pressed too quickly.

That third point is what can cause repeated use of Fund New Buildings to grow a small town quickly, colloquially known as powerfunding. Here's the relevant line of code:

t->grow_counter = min(t->grow_counter, 2 * TOWN_GROWTH_TICKS - 
    (t->growth_rate - t->grow_counter) % TOWN_GROWTH_TICKS);

There are 74 ticks in a day. TOWN_GROWTH_TICKS = 70. growth_rate is simply the rate of growth in days per house, times 74. The grow_counter is a simple tick counter, keeping track of how long until we next attempt to build a house. Let's assume building a new house always succeeds. (On failure, the counter is reset to TOWN_GROWTH_TICKS).

You can actually make this happen: The town is for example hand-built using a spiral pattern, with no loops and no dead ends that do not feature plenty of empty space to build in.

Let's see what happens if a few values are plugged into this formula: At growth_rate > 140, the formula will reduce any grow_counter greater than 140 to 140. Below this number (faster growth) there is no effect. So if your town is big enough, you should only fund at the start of every 3-month period. (1st of January, 1st of April, 1st of July, 1st of October).

Thus, by pressing the fund new buildings button every 141 ticks, you can maximize this effect. This amounts to pressing it about every 2 days. Because humans are inaccurate, trying to exactly time your button press like mechanical clockwork to a precision of a single frame is unlikely to work for you. And pressing too early (even by one tick) does completely waste your money. So how can you do this perhaps a bit suboptimally, but at least reliably? There are two methods:

  1. Check the house counter in the town. Press the fund new buildings button every time it increments. It has a bit of a delay.
  2. Fund every 3 days, not every 2.
  3. Use an openttd client with a patch that includes powerfunding. As of now, the BTPro and Citymania (linked above) clients both have it.
  4. If you want, you could even try to extract the functionality from the above for inclusion in trunk and/or to just have that one modification. It would be quite useful to have a couple buttons to automate funding (once every 3 months or once every 141 ticks) in the default game as well. It's in scope (see vehicle autoreplace).

Note: This resource was assembled with user experience playing the game, not actually debugging the code, and isn't updated as often as the openTTD code is. It's wrong or not quite accurate on some points, though this particular article is still mostly relevant. For example, the bug where "Fund new bulidings" can actually increase the grow counter has been fixed, as you can see with the use of the min() macro.

Correct answer by aphid on April 18, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP