The Forum Rules and Guidelines
Our forum has Rules and Guidelines. Please, be kind and read them ;).

Improving landscape graphics

Started by Sarlock, February 16, 2013, 05:46:09 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.


I've been thinking recently about ways to improve the look of the landscape.  Trees are a wonderful addition but the ground seems very sterile underneath them.  What we need is for the ground to have a certain texture, grasses, shrubs, etc, that cover the ground beneath the trees.  Theoretically one can use a tree for this purpose but the trouble with a tree is that its location is random over the grid and you could end up with more than one or none at all of a certain grass type in a given square.
Has anyone given much thought to this?
One thought I had was to have a special setting for a "tree" that would centre the tree on the grid each time and not give it a random set of offsets.  Then you would need to limit the system to only placing one of these special "trees" in each grid... and also probably populate each and every grid with this type (if available).  In this way you could create some wonderful looking grasslands and other landscape features.

This image from OpenTTD demonstrates the kind of effect that can occur with ground cover:

This isn't really possible with the existing tree system.  The shrubs and rocks are but not the cracked earth underneath.  The cracked earth is confined to one per square and is centred on its grid.  Without the cracked dirt it just doesn't have the same effect.  Having the bottom ground texture adds a lot.
Current projects: Pak128 Trees, blender graphics


I think you've described the ground objects... (obj=ground_obj)
See pak64 for examples.


Interesting.  I hadn't used ground_obj before.  I did some experimentation and it would work perfectly for my ideas except for one problem:

They only cover about 5-10% of the squares at maximum distribution.  If it's an easy tweak to allow a higher maximum distribution number it would work perfectly as a ground cover object since it's already set up for using different graphics on slopes, seasons, climates and can be set up to go underneath tree cover.

The above image from OpenTTD can be achieved using ground_obj if the setting allows for a distribution high enough to cover 100% of the squares. 

I think even the slopes are possible to some degree... I'll play with that.
Current projects: Pak128 Trees, blender graphics



# show random objects to break uniformity (every n suited tiles)
random_grounds_probability = 10


Awesome!  All these little features that I am unaware of...

In changing the random_grounds_probability=x figure, setting to 1 doesn't give 100% coverage, it only seems to be 50% or maybe a bit higher.

Here's what I have so far, using some very quickly drawn shore and grass pictures.  Refining the pictures and adding more pictures for randomized content would look amazing.  I'm excited, going to work on this and see what I can develop.
Current projects: Pak128 Trees, blender graphics


Hmm. It does indeed give ~70% coverage at best - as designed in the code. I'm sure it was never intended to use ground_obj to tile the map! But, this could be changed easily enough... Would make sense to have the parameter work as a percentage (or promille) like the other probabilities in the .tab too...
Also note, there will be performance implications to having that many ground objects with large maps.


Additionally, pay attention that cacti are coded as desert ground objects and you don't want a forest there! maybe if there were just few cacti and many desert stones and boulders (stones and boulders could double for rocky as well)...

Similarly I thought of swamp tiles for tropic and using your eyecandy rural fields in temperate climate.


The performance aspect is certainly one thing to consider.  The way I am thinking of setting it up, it would be an Addon that would require setting the parameter to =1 to allow full coverage rather than included as a standard pak128 item due to the performance consideration.  This way people can still play with a plain map as default.

Using this method, we could create very nice looking slopes/cliffs/beaches, etc.  All someone has to do is download the Addon PAK files and tweak the parameter to =1 and presto, they have a much more realistic looking landscape.


# There are some other grounds (like rocky, lakes etc. ), which could be added
# to the map - show random objects to break uniformity (every n suited tiles).
# (default 10)
random_grounds_probability = n

As I read it, it should be based on 1 ground object every n tiles.  Setting n=1 should give 1/1 = 100% coverage.  Setting it to 10, as it is default, gives 1/10 = 10% coverage.  Is this easily changed?

Thought has to be given to the type of ground cover used since these will occur in both open fields and under forest canopies.  They will be randomly interspersed so they will have to match one another and look nice with a bunch of them together on the screen.  Alpine flower meadows under the spruce trees would look truly amazing for spring/summer settings.
Current projects: Pak128 Trees, blender graphics


I would add them to official pakset, but with default simuconf.
A player could then optionally set it to 1.


One of my goals with pak64.unity was to add a greater range of ground_obj to make maps more vibrant. They were all pretty basic, but it did work to a certain extent.


Quote from: Carl on February 17, 2013, 09:09:01 AM
One of my goals with pak64.unity was to add a greater range of ground_obj to make maps more vibrant.
Looking forward to seeing it.

One of things I miss in Simutrans is the "sense of place", each part of the map should have its own identity. Climates help a bit, but IMHO it's not enough. I'd like to see elements other than cities and the natural terrain, like farms, fences, pastures and so on. Meh, probably it's beyond the scope of this topic. ^^'

BTW, why don't you use "pak64.unity" in your topic title?


Quote from: Fabio on February 17, 2013, 09:02:21 AM
I would add them to official pakset, but with default simuconf.
A player could then optionally set it to 1.

This would work okay for the ground cover plants but for other items it may look strange.  I'll produce a bunch of stuff and we can decide which can be part of the core pak128 files and which are best used as addons.  I'd like to play around with the idea of making detailed slopes (like in that OpenTTD picture) and this would require setting the parameter to 1 to make it look correct.
Current projects: Pak128 Trees, blender graphics


The lack of random stuff to break the monotony of ground is one of the main reasons I don't expand my map on the fly, since it doesn't do new tree cover, the new areas look very bare.

Isaac Eiland-Hall

Ah, this has much promise! One of the things I really liked about iirc pak64.german is the ground clutter :)

I do wish we could, in addition to this, have more random stuff - have farms appear, for example; even lone houses in the middle of nowhere...


It's coming along nicely.  It's a lot of work to make the textures match each other around corners, etc, but I've learned a few tricks.  The most difficult thing is that I cannot place these objects manually for testing - I have to start a new map with 100% ground object coverage and then scan around the map for areas that match the terrain that I am looking to test.  A bit tedious but it works for the most part.
Current projects: Pak128 Trees, blender graphics