Grass Simulator

Git Project:

Some years ago a YouTuber named Lindybeige made a video in which he discusses the historical inaccuracy of dirt roads with two parallel ruts on them. He argues that the most common form of transportation in the ancient world would have been a cart drawn by a single horse, and therefore the part of the road which would get trampled the most should be the portion down the centre (i.e. where the horse walks). The complete video is below, but the relevant section starts at about 2:52.

Lindybeige's first video on the subject

While Lindybeige's videos are generally entertaining, something simply never sat well with me about this particular assertion. You see, a horse would only trample grass in hoof-sized regions every meter or so; that is to say that the horse can only trample grass it actually steps on. He is completely ignoring the fact that the cart has wheels, and those wheels would make contact with every single piece of grass along a wheel-width region along both sides of the road. Over any stretch of road the cart's wheels would trample much more grass than the single horse would.

However, I was willing to accept that maybe I had overlooked something. Perhaps the majority of traffic along the road was not single-horse carts, but rather pedestrians, individual riders, and herds of animals? That much non-cart traffic would surely trample down most of the grass down the middle of the road, wouldn't it?

To find out I decided to write a simple Monte Carlo simulation of carts, horses, people, and sheep walking along a grassy path.

Full disclosure: I am not a zoologist, nor an equestrian expert, nor an archaeologist, nor a historian, nor am I well-versed in the nuances of grass cultivation. I am a computer scientist, and therefore many of the assumptions made in my program are best-guess assumptions, based on actual data wherever possible.

The Program

My program is designed to simulate daily traffic. One specifies a number of carts, horses, sheep, and pedestrians that travel along the road per day. The simulation calculates average grass growth per day (based on the season, assuming the grass continues growing during the winter months -- this would be representative of southern Europe where snow isn't an issue).

The users of the road trample grass in circular or rectangular regions; human feet are approximated to rectangles, animal hooves to circles, and cart wheels are long, narrow rectangles. I use a kill-coefficient to determine how much of the grass in the affected region is killed by trampling. In addition to this coefficient I have a pressure coefficient that multiplicatively increases the kill coefficient if the grass is subjected to especially high pressure.

The logic behind the pressure coefficient is that high-pressure is more likely to dig into the ground, disrupting root systems, thereby killing more grass.

The grass grows a number of mm per day determined by the season. This seasonal growth pattern follows a sine curve.

To calculate the footprints and pressures exerted by each passerby I use the average sizes and masses of humans, sheep, and horses, along with their average walking stride length (to determine separation between footprints). To add realism I vary the actual values around these averages following a normal distribution.

For the cart, I assume that 75% of carts are two-wheeled carts drawn by a single horse. The remaining 25% are four-wheeled carts drawn by 1, 2, or 4 horses (with 1 and 2 being the most common). Carts are assumed to be approximately 127cm wide (about normal railway gauge), following a normal distribution.

Finally, each passerby is assigned a path through the field. This path is centered on the middle of the path, but adjusted following a normal distribution. This, combined with the random footprint size/spacing, and random masses assigned to the passersby, ensures that the road is evenly trampled.


Based on my simulation, it appears that Lindybeige was partially correct. Given daily traffic of 60 pedestrians, 10 riders on horses, 30 sheep, and 4 carts the middle of the road should be fairly trampled down. However, even 4 carts per day is enough to give distinct wheel-ruts.

A simulation of 60 pedestrians, 10 horses, 30 sheep, and 4 carts per day over 10 years

If we accept Lindybeige's assertion that the majority of traffic should in fact be carts (as opposed to carts forming only about 5% of total traffic) the wheel ruts become even more obvious, and the amount of untrampled grass in the centre of the road increases dramatically.

While my simulation is not absolute proof Lindybeige was wrong, it does lend credence to my hypothesis that ancient roads with wheel ruts are not necessarily historically inaccurate.