Project Frontier #10: More Trees

By Shamus Posted Wednesday Jun 29, 2011

Filed under: Programming 109 comments


My tree-building code is a lot less sophisticated than I planned. This is really rare in programming. (And, I expect, in most other forms of engineering. Problems usually become more complex as you examine them in greater detail.) Still, this is in keeping with the spirit of this project, which is to solve 90% of the problem with 10% of the effort.


The first step in creating trees is to generate the trunk. I’ve got a few parameters governing how much they bend, how tall they are, the width of the base, and a few other minor details.


Most trees have branches. (Two exceptions: Conifer trees have their foliage affixed directly to the trunk. Trees intended to form a canopy simply have one huge umbrella of foliage at the top of the trunk.) Branches reach upward from their point of origin, but there are two ways of doing this. On the left you can see branches that reach outward, then upward. On the right you can see ones that go up, then out. The latter makes the branches look “droopy” and heavy. The former makes the tree look strong and vibrant.

I originally had branches that extended down from their point of origin, or ran level. Those looked wrong, or boring, so I removed that option.


Branches all end in a cluster of foliage. Foliage shapes vary. Some are roughly (VERY roughly) spherical. Some are bowl-shaped. Some are umbrella shaped. Some are big droopy things. I used to have foliage clusters that were made of intersecting panels (like the grass) but they were kind of hit-or-miss. Even the “good” ones seemed poor compared to the other types.


The last step is to hang some moss or vines on the branches. This is only done to trees that will grow in the hottest, wettest climates. As it builds the branches, it keeps track of the points along the underside of the branch. If the tree ends up flagged for moss, it uses these points to hang a “curtain” of polygons under the branch.

This was intended to be my prototype. I was going to build this much, see how things looked, and then add to the system once I saw what was needed. It turned out that my prototype looked good enough. I’d hit the right style on the first try. The only real improvement I’ve made is to remove the various options that made boring trees. (Level branches, etc.) The process was more about taking away options than adding features.

What I quickly discovered was the the whole thing more or less hinged on the texture and coloring. That’s what makes these trees work. See, each tree has it’s own texture:


When a species of tree is generated, the program creates a texture just for that tree. The texture is 1024×256, and is divided into four panels. The first is the bark, the second is the foliage, the third is the hanging moss / vines, and the fourth is a picture of the tree itself, which I’ll talk about in a minute. Doing things this way allows me to draw an entire tree with a single pass, since there’s no need for any sort of texture-switching. Panel three is a bit wasteful, though. It’s mostly transparent empty space. I guess I can pretend that empty space is reserved for future use, and not wasted. Doing so doesn’t make the program perform any better, but it lets me stop feeling guilty about it.

Here is how it makes that texture:


These are the available bark textures. The first two I made by hand, by scribbling in Paint Shop Pro. The second two are just filters built into PSP. Like the trees themselves, I designed these quickly, planning to replace them with “real” art later on, only to discover the prototype stuff looked pretty darn good.

First, it draws a flat-color box into that first frame, colored to whatever bark color I’ve chosen for the tree. Then it takes one of these bark textures and blends it, darkening it in places.


For the foliage… I’m not much of a pixel artist, but I managed to come up with some assets that get the job done. When a tree is generated, it selects one of these foliage types. Then it renders a whole bunch of them into that second frame. I called these little splotches “leaves”, even though they’re really “pictures of groups of leaves”. Now that I’m writing this post, I’m seeing that a bug has cropped up. I designed it to draw each leaf a slightly different color. It’s supposed to scatter them a bit around a common hue. I can see now that at some point I broke that functionality, because the foliage is a solid color. I wonder when I did that?


The third frame gets a random stripe of moss / vines / whatever this crap is, colored to match the tree itself, but slightly darker. (I tried using a different hue. I mean, it’s another plant, growing on the tree, so it shouldn’t have to be the same color. Surprisingly, it looked wrong. It looked like there was something wrong with the texture, not like the moss was just a different color.)

There are three levels of detail for trees. Up close, the branches and trunk are round and smooth. At a distance, the trunk is reduced to just 3 points around, so it’s sort of wedge-shaped. If you were to chop it down, the stump would be a triangle. The branches are only two segments around, which makes them 2-dimensional. It sounds awful, but they look passable even at thirty meters or so. (And the player will never get that close. I don’t think you can get closer than 100 meters before it swaps out the cheap tree for the good one.)

At extreme distances, it takes the picture of the tree from panel four and just puts it on a billboard. Here is a normal tree:


And here is the same tree in glorious 2D mode:


Wow. You know, seeing these side-by-side, I have to say the cheap trees don’t look half bad, considering. Of course, the player will never be able to get anywhere near these things.

As requested, a screen shot without the development text. Click for larger view.
As requested, a screen shot without the development text. Click for larger view.

Trees are very much a feature to be tinkered with. Unlike terrain, where my goal was to finish the feature and move on, trees are an informal, self-contained system that I can revisit again and again as I get new ideas or feel the sudden urge to experiment.

I don’t think we’ll have a “week 5” video this Friday. I’m busy with other work, and I haven’t added anything that I can put in a video. (It’s pretty hard to demo “better memory management” in a video.)

Please tell all of your rich investor game publisher friends about my project. Thank you.


From The Archives:

109 thoughts on “Project Frontier #10: More Trees

  1. Zeta Kai says:

    The trees are awesome. The world is awesome. The project is awesome. Carry on.

    1. shlominus says:


      if noone in the industry takes notice after this it shows there’s something seriously wrong with the industry…

      1. Jon says:

        I doubt that there is something seriously wrong with the industry. People have been using procedural generation since the 80’s. I don’t believe that one can create the level of complexity that you see in Avatar by handcrafting all of the models. If you’re looking for examples; look at Bethesda studios and the Elder Scrolls series. Just one look at Daggerfall will show you the application in 1994. Not to mention the old roguelikes. The random dungeon generation techniques allowed the developers to focus on the interface and complexity of interaction. Most modern games spend so much time focusing on the 3d modeling and technical assets that they forget to make a game. Procedural generation of terrain and 3D modeling assets would allow you to focus on interaction and gameplay elements. One could make a game with a modern look and feel with the interaction complexity of nethack.

        I would be surprised if all of the big production studios weren’t using advanced systems like this under the hood. If not… then they’ll be overbudget and out of business in the next decade or two.

        I think you’ve struck gold here. Nice job, Shamus. :)

    2. Jeff says:

      “”Please tell all of your rich investor game publisher friends about my project. Thank you.””

      So NOTCH struck gold (pardon the pun) with his Minecraft and everyone thinks they can do the same? I’ve heard about the housing bubble, we are starting to see the higher education bubble, but what now the indie gaming bubble? What has the world come to?

      Minecraft was hugely successful for one reason only, like Plentyoffish dating site and the Facebook social networking site, it was a refreshing first of a kind. A first comer advantage. Google Plus Projects are now coming out with facebook clone (after failed attempts at orkut, Buzz, Wave, etc) but that does not mean it will become successful? After all, people only need so many social networking utilities. Likewise, there is only so much a market for indie games. And Minecraft has pretty much filled the gap. So even if you do end up making a more addicting version of Minecraft, that is no guarantee it will succeed in bring you even a tiny fraction of the financial profits of Minecraft.

      With all due respect to the Pareto principle, if it was that easy to make money then scammers would be coding stick figure videogames.

      You don’t even have a game yet and the mechanics aren’t even implemented and you are already looking for a sell out? Classic sign of a gaming/net/tech bubble burst when I see people go manic like this. Reminds me just before the 2001 tech collapse people were getting “free internet” (NetZero, et al) and getting paid to surf the web (AllAdvantage). But 10 times out of 10, if it is too good to be true it usually isn’t true.

      Rich investors would more likely hire some freelancer at an hourly rate than “invest” in your project. You said it yourself you are making a game that is “cheap” with taking plenty of shortcuts and not going the “expensive” route. If probably didn’t help matters that you repeatedly advertised that the game might never be completed… who in their right mind would want to throw good money at a bad risk investment like that? Where is your barriers of entry? A smart investor would rip off your idea (like Notch ripped off Infiniminer) and shell out $3,000 to a programmer and keep the rest of it himself. Why would anyone want to “invest” in your project that any competent gaming programmer can easily code in a week? You don’t even have a functional prototype up and running yet. Your best bet on this is to sell/publish the game yourself, that is if you can even finish it.

      1. Shamus says:

        “Minecraft was hugely successful for one reason only, like Plentyoffish dating site and the Facebook social networking site, it was a refreshing first of a kind. ”

        And perhaps my game is another first. You don’t know, because I haven’t discussed the “game” part yet.

        “Likewise, there is only so much a market for indie games. And Minecraft has pretty much filled the gap. ”

        That statement makes no sense in any context.

        “Why would anyone want to “invest” in your project that any competent gaming programmer can easily code in a week?”

        Also, you have no idea what you’re talking about.

        Most importantly of all: You missed the self-deprecating humor in the idea that a proof-of-concept demo was ready for investment money.

        So, thanks for that, Internet Angry Person.

  2. TehShrike says:

    You should give classes! “How to hack awesome shit together in 101 easy steps”! I’d pay.

    1. Maldeus says:

      I would pay for coding classes taught by Shamus Young. Details as to exactly what kind of coding hardly even matter.

  3. krellen says:

    Please tell all of your rich investor game publisher friends about my project.

    I would, but they all stopped returning my calls after I tried to sell them on Pixel City.

    1. Eric says:

      Aren’t you a mean one. :(

      1. krellen says:

        I think it just goes to show how short-sighted rich investor game publishers are.

  4. Jeff says:

    Looking at your big screenshot at full size, I’d say that this is coming along really well, with one minor quibble, which is the dark speckling of the grass when one views it at a distance… I’m not sure if that’s a result of your flowers, or of how you built the grass itself, but from a distance it looks unpleasantly grainy/gritty rather than natural.

    I suppose the easiest fix, if it is indeed the flowers at fault, might be to save yourself some polygons and not draw them if they’re more than a given distance from the player… you’d probably have to phase this in somehow (% chance of not being drawn?) so that they fade away smoothly…

    1. Scott (Duneyrr) says:

      The image doesn’t appear to have any anti-aliasing on it. That would take the ‘speckling’ down and make things look far more natural.

      1. Christopher M. says:

        It’s filtering and/or mipmapping which is missing. The specking is a product of taking the closest texture pixel at each point on the screen, rather than blending the available ones.

        A depth-of-field filter wouldn’t go amiss, either.

        1. Scott (Duneyrr) says:

          Ahh, I was wondering what mipmapping did.

          1. Christopher M says:

            Technically, mipmapping itself is a method for rescaling textures – creating half-again stepped copies of a texture (say your original texture is a 512×512 square; you’ll get an additional 256×256, 128×128, 64×64, 32×32, etc. texture) to speed things up. The filtering technique itself is what does the blurring/blending between pixels.

            Trilinear filtering (IIRC, sampling the nine points immediately surrounding a given point) would be optimal, and shouldn’t be too slow, but it really depends on Shamus’ preferences.

            1. Kell says:

              Fun Fact: the term mip mapping comes from the latin multum in parvo, which translates as “many things in a small place.”

              I wonder what the latin is for “many many things on a small landscape.”

            2. Simon Buchan says:

              Bilinear is interpolating between the nearest 4 points on one mip level: eg. combining the result of combining the left two and combining the right two.
              Trilinear is mapping between the ‘nearest’ 8 points, where nearest now counts across mip levels: so combining the results of bilinear filtering on the mip level below and the level above.

  5. Gravebound says:

    Is the water clipping in the last picture or is that a spillover/erosion feature?

    1. Dev Null says:

      I hope its on purpose, because I like it.

      (Actually, I guess I don’t care whether its on purpose. I hope it happens regularly.)

    2. X2-Eliah says:

      I think it looks pretty good, adding a bit of uniqueness to the spot. whatever it s, please let it remain in.

    3. Fat Tony says:

      I swear his water was just one flat texture across a certain hight?
      So where you can see water the land is lower than that hight so that area the IS natural, I think.

      1. decius says:

        The river can’t be flat, it needs to flow downhill. I’m not sure how Shamus handled that, but that overflow shows that it seems to have worked out right.

  6. benjamin says:

    you know, if you are actually serious about the investor thing, why don’t you start a project at ?

    anyway, the project look darn good. can’t wait to hear about the day and night cycle :)

    1. Drexer says:

      Probably because Shamus hasn’t got a clear idea of exactly what he wants to do with this yet? :P

      If a rich guy does come along and wants to hire him to turn this into ‘his’ thing then I do believe that Shamus can accommodate his needs more easily. :P

      1. MadTinkerer says:

        Additionally, not everyone wants to run their own business. If Shamus was doing this as a Proper Indie Game, he (presumably) wouldn’t even be showing it to us at this stage as there’s zero gameplay.

        Kickstarter projects are usually done by 2+ people, at least one of whom is the Business Guy. As far as we know, there is no Business Guy in the picture right now, just the Programmer Guy, Shamus.

  7. Meredith says:

    I can’t comment on the coding bits, but I can say those screenshots really look good. I especially like the first and last ones.

  8. Zagzag says:

    Please do not give up on this project! I would pay for this game in a second, if need be, and would be happy to do so.

  9. Piflik says:

    Interesting read. I also tried the Intersected Planes approach to my tree at first, but I realized that is not even close to real trees, so I reconsidered and created some downward sloping leaf planes like in some of your trees.

    One thing I don’t like about your trees are these upward sloping foliage cones. They look off.

  10. Grescheks says:

    “What I quickly discovered was the the who thing more or less hinged on the texture and coloring”

    I’m guessing you probably meant something along the lines of:
    “What I quickly discovered was that the whole thing more or less hinged on the texture and coloring”

    Other than that, the project looks completely awesome!

    1. Alexander The 1st says:

      I’m sure he won’t get fooled again. :p

      1. TehShrike says:

        lol. You win at turning spelling corrections into song references.

  11. RTBones says:

    Keep It Simple, Stupid (KISS) is a mantra every engineering student, regardless of discipline, hears at some point. The more complicated a design, the harder it is to maintain. The problem, of course, is that in the real world, cost and time come into play. At some point, even though a design isnt finished, its done. Further, a given design may be mostly suitable to another project if it gets modified slightly – a cost saving measure. Do this two or three times, and you have an original design doing something it was never intended to do, in ways it was never designed for, that only the original designer can understand because the entire thing is cobbled together. At some point, you hit the point of diminishing returns because the final product is so convoluted that maintaining it is a black art – and you wonder if it wouldnt have been cheaper just to design from scratch in the first place.

    1. Simon Buchan says:

      It’s even worse for software, the purpose can change (multiple times!) *while you are writing the code!*

  12. SolkaTruesilver says:

    Please tell all of your rich investor game publisher friends about my project. Thank you.

    Hey, you turned me down

  13. Matthias says:

    “I don't think you can get closer than 100 meters before it swaps out the cheap tree for the good one.”

    Does this mean that you simply have forgotten the defined distances or that you have a more dynamic LOD system, like adjusting to the current framerate or simply using a maximum number of high detail trees?

  14. swimon says:

    The tree branches that go up then out, do they ever go down after that? I’m wondering if you can make willow?

    The trees look good though. They don’t really look like real trees but they’re similar enough to be believable and they’re quite beautiful.

  15. StranaMente says:

    I hate to repeat myself, but I think the proportions still need to be worked out. The sooner, the better, because at later stages of developement you’ll have to keep in mind more variables.
    I stand by my previous comment .
    Everything is very beautiful, but something is colliding about proportions and even in account of the cartoonish art style, it doesn’t fit well.

    1. Phoenix says:

      I think the random terrain looks better if “zoomed”. In proportion trees are too big, it gives the impression of huge tres about 100-200 meters looking at the randy unnatural terrain (with terrain I mean the hills, mountains).

    2. Gndwyn says:

      I agree. In that last shot, either the “river” is a tiny creek or those trees are gargantuan.

      1. StranaMente says:

        If you compare the river to the rest of the scenery seems big enough. If you count trees, it looks a bit small. If you could see grass, it would look even smaller.
        And that’s the problem. Topographically feels right. But the vegetation part feels off, because it’s in contrast with the perceived scale.
        This problem is emphasized when you look at things from a first person point of view, instead of an elevated point of view.

        1. krellen says:

          Shamus needs to put in the actual mountains, to give the perspective required to stop seeing those hills on the edges as mountains themselves.

          1. Jarenth says:

            Or something else to give us perspective. I dunno, some eighteen-wheelers or something.

            1. Phoenix says:

              Maybe by scaling up those hills or scaling down trees.

  16. Jabrwock says:

    I love the idea of generating “low rez” versions of trees and terrain as it populates, for displaying at a distance. Does the terrain do the same sort of “smoothing” at range that the objects do?

    Keep up the good work!

  17. MrWhales says:

    Shamus, I demand more amazing pictures. Also, i’m using that last one as a background on my computer now :D

    1. Reet says:

      I second this motion. I am also using that last picture as my desktop background.
      As a side note, I really liked the look of the second picture with the bare trunks. It looked unique and interesting but it’s difficult to identify what grabbed me about it. Anyway, it’s looking awesome, can’t wait for more!

  18. blue_painted says:

    I’ve sent a link to this article to the only game developer I know … but the company is over here in UK.

  19. Zukhramm says:

    The last step is to hang some moss or vines on the branches. This is only done to trees that will grow in the hottest, wettest climates.

    Why limit it by temperature? We have plenty of stuff hanging from the trees in colder areas as well, maybe not vines but lichens.

    1. Felblood says:

      Yeah, even the iciest mountans of the frozen north have hanging mosses.

      They do tend to dominate the whole tree in small clusters of trees (usually near the creeks) and then just hang in thin strands throughout the rest of the forest.

      Perhaps you could use some of that extra texture space to make sparser, patchier and shorter versions of hanging moss.

    2. Michael says:

      Are you suggesting a Lichen Party? I think you are.

    3. Bubble181 says:

      If you go up northerly enough, icicles :-P

    4. Cuthalion says:

      This. I grew up in Washington state, where there is a beautiful temperate rainforest. The moss practically envelopes those trees and hangs in curtains. So maybe coniferous forests in wet regions can have moss, too? Pretty please?

      Edit: Also, what you have already looks pretty spiffy, I must say.

  20. Jordi says:

    Very nice!

    Are the tree textures (those 4 panels) generated per tree, or per species? It seems that eh first 3 panels could be per species, but that having no variation for the fourth could be a bit ugly. You say that “[a]t extreme distances, it takes the picture of the tree from panel four and just puts it on a billboard.”. I’m not seeing that in the last screenshot, or at least I can’t tell. It seems that even trees that are far away all look different, so that’s very good. But does that mean that those textures aren’t used in that screenshot, they are different for each individual tree, or neither and I just can’t tell the difference?

    This is really interesting! Keep up the good work!

  21. MoonBeans says:

    Why don’t you have trees at a distance be two intersecting bulletin boards? That would make it look in-perspective if you walk in a circle around it, rather that it just always facing the same direction.

    1. Primogenitor says:

      Because they are so far away that if you walk a circle, it would be a very very long walk peering at something very very small.

      1. Christopher M. says:

        Actually, this could be a performance-boosting method. Rather than rendering one hundred rotated billboards, one could render two or three “chunks” of tree-imposters – taking advantage of modern graphics hardware.

    2. Gndwyn says:

      That’s going to be an enormous circle. I’m sure there will be easier ways to break the immersion if you’re determined to try that hard.

      [dang. beaten by one minute.]

  22. burningdragoon says:

    *Set as Background*

  23. Adam P says:

    I said this in the video for week 4, but I think it’s worth repeating with the last screenshot:
    Your trees look much better than most of the trees in WoW.

  24. nawyria says:

    Amazing bit of coding, the landscape look pretty nice. However, I feel the conical shape of the thinner trees (especially close to the ground) looks a bit… off I guess. I’d expect them to have a smaller base given that they becomes to slender higher up.

  25. Eltanin says:

    Just so you know Shamus, I could read about this stuff all day. It’s delightfully fun. Thank you!

    I like the ‘art direction’ of the trees very much. The stylized form works nicely in tandem with the stylized terrain texture that you pulled from the Hex project.

    It would be really nice to see all three levels of tree in screenshots there at the end – you posted the cheap and 2D versions, but a third picture with the high-class model would be nice for comparison. Oh well? Unless you had time to regenerate the screenshots from a new location and edit the post and paste them in… Go ahead and do it now, I’ll hold my breath.

  26. Fat Tony says:

    This look brilliant Shamus, keep up the good work and produce some more nice pictures and vids it’s nice to see whats going on.
    (That and it looks so nice I’m considdering using one of your screen as my background, maybe a later one with more detail.)

  27. Jamey says:

    Typo police:
    These the the available bark textures.

    This is an amazing project, I think I’m liking it even more than pixel city (which is still my screensaver)

  28. DmL says:

    I’d like to see grass-type silhouette breaking on the flat sides of the canopy types leaves. Other than that, beautiful.

  29. Pickly says:

    Spelling nitpick: In the sentence “What I quickly discovered was the the who thing more or less hinged on the texture and coloring.”, “who” should be “whole”.

    Otherwise, another nice post. Keep up the good work.

  30. Jeff says:

    Something seems a little off about the picture to me. An uncanny valley? (*rimshot*)

    Perhaps it’s just a lack of shadows throwing me off?

    1. Yeah, lack of shadows, and I think that sudden edge in the sky between the fog and the open sky just pulls at my vision and makes it really hard to look at anything else objectively.

  31. MrGamer says:

    Wow, quite good work there. Wish I had as much skill in programming. Just do me a favor, back this up somehow, I don’t want to see it lost.

  32. Retsam says:

    In that last screenshot, what’s going on at that riverbend? Is the river overflowing or something?

    1. Shamus says:

      Eh… maybe?

      It’s actually a spot where the normal flow of hills happens to dip close to the water, and the river deformation drags it the rest of the way down. It’s arguably both bug and feature.

      1. BenD says:

        I love that spot. It is my favorite thing in the whole screenshot because it looks like something unusual but realistic, something that rivers actually do.

      2. Michael says:

        That river looks like it wants to cut across the [miniature] knoll there, and I was just wondering if you had considered the possibility of allowing stuff like that.

        Or if it was possible at all.

  33. The very sudden blue-to-pale shift at the horizon is REALLY visually distracting and makes it very hard to evaluate the rest of the image, which I think looks good overall, though. Also, I’d like to know why the corner of the river looks like that. Kind of odd.

    1. General Karthos says:

      Is it just me, or is that the view of fog as seen from above? At least, that’s what fog has always looked like to me when I’ve been above it on a cloudless day.

      1. Piflik says:

        The fog is good…it is just atmospheric haze, like in the real world. What’s wrong is the turquoise ‘line’ the sky fades into. The terrain is cut of at a certain distance and so you can see part of the sky that would normally lie below the horizon.

  34. (LK) says:

    You know, the kind of multidisciplinary skill-set it takes to fully implement a project like this is more or less what Valve claims is what they look for in a prospective employee.

  35. bickerdyke says:


    I want to book my holiday there…..

  36. neolith says:

    Shamus, I just love your programming posts, especially those about procedural content generation. I’d gladly pay to be able to read more of this. ;)

  37. Svick says:

    I always wondered what do all those “reserved parameters” in various API functions mean. Now I know: somebody put them there, later found they are not useful and declared that it’s a feature, not a bug and it’s meant for future extensions.

  38. TheMerricat says:

    Just an FYI, your links to ‘clickthrough images’ are broken in the feed. They are missing the twentysidedtale portion of the URL.

    For instance this is what you are linked to in the feed:

  39. Blanko2 says:

    when you say hottest most humid terrain gets trees with moss, does that mean trees in cold but humid terrain get moss?
    because moss grows on them too!

    anyway, these trees look great :D

  40. Slothful says:

    You might want to throw in a couple details to disguise the perfectly round nature of the trunks.

  41. Zlan says:

    I think it is awesome. Whatever you make it’ll be awesome, though you should have a mode that you can just admire the world. Anyway keep up the good work.

  42. JackV says:

    You know, that’s really beautiful.

  43. Hey, Shamus, I really like what you’ve been doing with all this procedural content, and I wonder if you might have any ideas for how one might go about making other parts of games procedural, like, say, setting up a procedural conversation system that would allow for much more variety and emergent behavior in game plotting, that sort of thing.

    It’d be fun to have a good discussion with you on that at some point.

    1. Piflik says:

      That seems close to writing an AI…or a gibberish-generator…

  44. Dourhands says:

    is it just me or does that very first picture looks a bit like stranglethorn vale?

  45. LachlanL says:

    Hey, great looking results! I’m super envious of how quickly you are getting these results. =)

    On the tree textures, how are you generating the last panel? Are you rendering into the texture, or are those pre-prepared? If you are rendering on the fly, are you updating the texture as the player’s perspective of the tree changes?

    Also, with all of the trees visible in your view-distance, roughly how much texture memory do you consume with all of those textures?

    Keep up the great work!

    P.S. I usually view this on RSS and I am getting 404’d when clicking on your images. Just a heads-up.

    EDIT: It looks like you are missing the /twentysidedtale/ in the URLs on the RSS images.

    1. Michael says:

      Faraway trees turn into 2D sprites.

      1. LachlanL says:

        Yeah, I understand that (it is called impostering). I was wondering where he got the sprites from. Is he pre-rendering them and just loading them from disk? Or is he rendering the tree at runtime into the panel? And if he is doing it at runtime, is he re-rendering the tree as the player’s perspective of the tree changes?

        1. Shamus says:

          I render the tree once, when the species is generated. No need to re-render based on perspective. At this distance the change would be hard to see. (And since all trees of the same species share the same texture, it would be impossible for it to show them all at the proper angle.)

          1. jwwzeke says:

            I am is confused. :)

            So does a “species” of tree mean: Same trunk, same branch pattern, and same leaves?

            I guess what I’m asking is, based on what I think you’re saying about how the fourth part of the texture is generated, are all trees on the same “species” completely identical?

            I had been assuming a species was a set of textures, general trunk and branch shapes, and general leaf pattern, but that each individual tree (within a species) could have a different number of branches, etc. But I’m not sure how that would work if you have one “sprite texture” for multiple trees then?

            Or, more likely I’m reading your descriptions entirely wrong.

            Either way I LOVE the way this looks.

            Two small requests/ideas.

            1) Leave (no pun intended) the leaves off of some of the trees in really dry climates, or make a really sparse small leaf foliage version to use there. I’m thinking some near-dead looking trees in the desert climates would look good. Also, good for spooky woods, should you need those.

            2) You could add green/red/brown moss growing in patches on some of those swampier trees. It would give you another texture to put in that wasted texture space you mentioned. :)

            1. decius says:

              Every tree in the same biome will use the same sprite; hopefully the sprite will be scaled for size based on the size of the tree, and the swap to cheap tress will be far enough away that it isn’t noticeable. I’m not sure if it would be very beneficial visually to have several billboards, and assign each tree exactly one of them; I’m slightly concerned that a distant forest will be notably copy/paste tree sprite.

          2. Zak McKracken says:

            hmm… so how large is the tree on screen when the switch happens?
            I guess with “regular” trees it could work, but what about trees on hiltops and such, where the outline is clearly visible? And are those single-texture-trees always upright, or what do they look like from above (or do you just make sure the switching distance is much larger than the larges hill is high)?
            I think it might require another video to clarify all this :)

  46. Blake says:

    Random thought, the screenshot where you’re rending trunks only looks kinda cool. Like some weird alien plant that’s a cross between trees and grass.

    Please find a narrow narrow band of some climate worthy of such an interesting species :P

    1. Michael says:

      He could scale them down, and use them for roots to a sapient, predatory plant.

      Imagine having to traverse a field of those root-thorns?

  47. Mrs. Peel says:

    Shamus, you could potentially add flowering trees, like crepe myrtle and magnolia, to those hot, humid areas as well…granted, I’m not a programmer, but it seems like a fairly easy addition since you already have a flower texture that looks kinda crepe myrtle- or oleander-ish.

    I do agree with the people who said the trees are just a leetle too conical, but nevertheless, I think it looks fantastic!

  48. Zak McKracken says:

    While the standing images look cool, I’m asking myself whether the switch from one LOD to another won’t be visible, especially when going to the simplest one, because that might involve a complete change in perspective. I’m just imagining climbing up a steep cliff, looking back at the trees below, and at some point they just start laying flat on the ground, or they become lines … even if I stay level, it might look weird because the silhouette might change drastically. Or are you re-rendering the thumbnail when the switch is done? (and then what happens if I re-approach that tree from a different direction?)
    … boy, am I good at seeing problems everywhere …

    Anyways, I like the style of your trees, and I also noticed you have grass covering the river banks in some places :)

  49. Magnesium says:

    I believe the conical nature of the trees has a certain je ne c’est quoi. It’s a slightly comical art style, but it comes across as unique and interesting. I really like the art style in TF2, it’s not strictly realistic but once again it is unique which makes it stand out.

  50. Kdansky says:

    Bushes near rivers. The more vegetation you add, the more naked the rivers look. And is that my imagination or does the last picture look “spotty”, as if taken with a 800 ISO camera in bright light? You know, dithered pixels and whatnot? But neat.

  51. Doctor Satan says:

    this look pretty… but when i enlarge the enlarged picture i can seem em pixels…

  52. ClearWater says:

    I like the trees in the second and third screen shot. They look kinda alien.

  53. Xaryn Mar says:

    I was wondering if you would at some point implement the effect of the wind direction on the shape of the trees?

    Here in Denmark the almost constant western wind have bend the trees towards the east, especially near the western coasts and on the flat islands.

    I have no idea whether or not this will be easy or even practical to implement but it would add an additional level of realism to the landscape.

  54. John Whigham says:

    Keep up the good work Shamus, always very interesting to see what people are doing in this area.

    In case yourself or anyone else is interested in more procedural world generation I’ve posted about my own tree growing exploits on my procedural universe project blog:

  55. Neil Roy says:

    That second image from the top was starting to look a little like the Blades Edge zone in outlands (World of Warcraft). ;)

  56. WJS says:

    Hmm, speaking of the lowest LoD billboards, does the grass switch out from a X to a billboard at distance? I know the X is already very low-poly, but halving polys, especially transparent polys, is surely a good thing?

Thanks for joining the discussion. Be nice, don't post angry, and enjoy yourself. This is supposed to be fun. Your email address will not be published. Required fields are marked*

You can enclose spoilers in <strike> tags like so:
<strike>Darth Vader is Luke's father!</strike>

You can make things italics like this:
Can you imagine having Darth Vader as your <i>father</i>?

You can make things bold like this:
I'm <b>very</b> glad Darth Vader isn't my father.

You can make links like this:
I'm reading about <a href="">Darth Vader</a> on Wikipedia!

You can quote someone like this:
Darth Vader said <blockquote>Luke, I am your father.</blockquote>

Leave a Reply

Your email address will not be published. Required fields are marked *