Planetary Annihilation Engine Architecture Update - Terrain

Discussion in 'Planetary Annihilation General Discussion' started by neutrino, February 10, 2013.

  1. neutrino

    neutrino low mass particle Uber Employee

    Messages:
    3,123
    Likes Received:
    2,687
  2. BulletMagnet

    BulletMagnet Post Master General

    Messages:
    3,263
    Likes Received:
    591
    Re: Planetary Annihilation Engine Architecture Update - Terr

    That point on objects being manifold makes sense. However, can we abuse it by having an infinitely small interior (picture a paper-thin cup or something)?
  3. neutrino

    neutrino low mass particle Uber Employee

    Messages:
    3,123
    Likes Received:
    2,687
    Re: Planetary Annihilation Engine Architecture Update - Terr

    Sure, garbage in garbage out my friend. Results coming form a non-manifold brush are undefined.
  4. cola_colin

    cola_colin Moderator Alumni

    Messages:
    12,074
    Likes Received:
    16,221
    Re: Planetary Annihilation Engine Architecture Update - Terr

    Very interesting read. When did you start to work on this system?
  5. neutrino

    neutrino low mass particle Uber Employee

    Messages:
    3,123
    Likes Received:
    2,687
    Re: Planetary Annihilation Engine Architecture Update - Terr

    Right after the kickstarter ended.
  6. acey195

    acey195 Member

    Messages:
    396
    Likes Received:
    16
    Re: Planetary Annihilation Engine Architecture Update - Terr

    I really enjoyed reading that :D. I have one serious question though... how did you manage to get this boolean system stable :shock: ? From what I have experienced, there is going to be a case, always, where a boolean does not give the wanted result.

    edit: ow wait, so SCG are mathematical booleans, rather than geometrical booleans? But in that case you will still need to represent the end result as polygons...

    I am also curious if you read my paper :p. I did post it here on the forum about 8 weeks back, I am going for a height-map combined with voxel approach. Though my method is pre-rendered, making it more practical for a limited amount of predifined planets.
    Last edited: February 10, 2013
  7. ledarsi

    ledarsi Post Master General

    Messages:
    1,381
    Likes Received:
    935
    Re: Planetary Annihilation Engine Architecture Update - Terr

    Really fantastic post. I would really love to see more tech-heavy articles like this in the future.
  8. sylvesterink

    sylvesterink Active Member

    Messages:
    907
    Likes Received:
    41
    Re: Planetary Annihilation Engine Architecture Update - Terr

    Fascinating read. Back in my POV-Ray days, I had always thought that using height fields and meshes for terrain were severely limited, and wondered why basic CSG couldn't be used instead. I figured that all if all the more experienced folks were using height fields and meshes, then clearly there were advantages to it that I just wasn't getting. (And at the time, there probably were.)

    It's nice to see that this concept can be put to practical use after all, and I'm definitely looking forward to the final results.
  9. knickles

    knickles Well-Known Member

    Messages:
    800
    Likes Received:
    134
    Re: Planetary Annihilation Engine Architecture Update - Terr

    Good read

    Creating a game's engine from scratch. Is this something we can expect from future UBER titles, or is it only worth the effort when you're dealing with something low risk (like a crowd funded game)?

    I'm sure there are plenty of other factors, genre, time, and necessity to name a couple. I'm honestly curious, since I know at least a few compromises were made in MNC/SMNC due to the Unreal Engine.
  10. neutrino

    neutrino low mass particle Uber Employee

    Messages:
    3,123
    Likes Received:
    2,687
    Re: Planetary Annihilation Engine Architecture Update - Terr

    Getting the CSG stable is indeed a big problem. It will never be perfect but I have a lot of tricks to get it working.

    Sorry, I didn't read your paper. I did consider a layer of voxels on top of a sphere as a potential representation at one point though.
  11. neutrino

    neutrino low mass particle Uber Employee

    Messages:
    3,123
    Likes Received:
    2,687
    Re: Planetary Annihilation Engine Architecture Update - Terr

    You should expect to see more games on our own tech. We are still developing some stuff with licensed engines though so it's a case by case basis.
  12. Consili

    Consili Member

    Messages:
    527
    Likes Received:
    3
    Re: Planetary Annihilation Engine Architecture Update - Terr

    This was a fascinating read, it is very tech heavy and I have had to do some extra reading but I think these sorts of posts are great. It is good to be seeing ALL facets of PA development, from concept art and renders, to music and sound design, through to the foundations of engine building. Definitely keep updates like these coming when you have the time :D
  13. Pawz

    Pawz Active Member

    Messages:
    951
    Likes Received:
    161
    Re: Planetary Annihilation Engine Architecture Update - Terr

    Neutrino, do you have a rough estimate on the largest planet sizes we'll be able to generate on today's hardware?

    Also; just read the entire post. You're gonna have some unique UI challenges if your terrain can become caves and overhangs - which is a huge step in terms of RTS and AWESOME.


    Also, I saw how you put 'icebergs' in there. Giant floating, build-on-able icebergs perhaps? :D
  14. paprototype

    paprototype Member

    Messages:
    138
    Likes Received:
    1
    Re: Planetary Annihilation Engine Architecture Update - Terr

    A very interesting read, well written, very understandable.

    Creating an unique parametrization of a mesh that has overlap to map into a 2D virtual space seems challenging to me.
  15. neutrino

    neutrino low mass particle Uber Employee

    Messages:
    3,123
    Likes Received:
    2,687
    Re: Planetary Annihilation Engine Architecture Update - Terr

    Each brush is required to have a unique parameterization in it's second set of texture coordinates. As you have surmised the problem is difficult to solve well in realtime so we push it to the offline art tools that are good at it. This adds a small amount of artist overhead to the creation of each brush.
  16. pcnx

    pcnx New Member

    Messages:
    13
    Likes Received:
    12
    Re: Planetary Annihilation Engine Architecture Update - Terr

    Hey,
    thank you for the blog post, its an fantastic read, especially if you have a little knowledge in that field :)
    My question to the CSG approach is on how you add and substract the brushes in detail.
    Of course you just have to change the planes which are affected by the current operation but to find those you still have to check intersection with every plane of the planet, right? Or are you using some kind of tree to sort the planet so you can minimize the tests needed till you find the planes which intersect with the brush.
    Also you posted a screenshot of the inner architecture of the planet showing that the surface planes basically consist of pyramides with the top being at the center: You use that strictly for terrain generation and modification, right? for rendering you just take the outer vertices into account?

    Oh and the texturing thing. You mention that you use virtual texturing and give every spot on the planet a distinct location in the texture but how exactly is that done? I mean you have to be consistend when it comes to neighbourhood of the vertices and that the u-v coordinates of all the triangles match up. And how do you change that lookup when you add |substract brushes?

    Keep on the good work, looks amazing and i kinda regret that i didnt have paypal at the time you startet the kickstarter ;)
  17. utack

    utack New Member

    Messages:
    4
    Likes Received:
    0
    Re: Planetary Annihilation Engine Architecture Update - Terr

    Interesting Article.

    Can this method use multiple CPU-Cores?
    Like work on one of the plates with each task?
  18. syox

    syox Member

    Messages:
    859
    Likes Received:
    3
    Re: Planetary Annihilation Engine Architecture Update - Terr

    think you refer to this
    I think the occurence is just due to the displaying of only half of the plates.


    What i am Interestet in is the navigation on that surface and the ballistics, will the enigne with this approach be able to also generate tori or other weird shaped forms (cubes, Dyson spheres, ...) where this will work?

    BTW this CSG reminds me of blender :)
  19. kvalheim

    kvalheim Post Master General

    Messages:
    1,726
    Likes Received:
    645
    Re: Planetary Annihilation Engine Architecture Update - Terr

    Knickles' post and the subsequent response made me quite curious, is there much you would have done differently back in MNC/SMNC if you'd had the ability to make/use this or another in house engine as opposed to Unreal?
  20. acey195

    acey195 Member

    Messages:
    396
    Likes Received:
    16
    Re: Planetary Annihilation Engine Architecture Update - Terr

    Well not until someone finally fixes the boolean problem entirely (that guy is going to be so rich XD),

    no problem of course, reading your post also made me wonder if I could add sharp details more efficiently, as currently they only really show on the higher LODs of my system. I will post my final graduation paper in about 4 months, dunno if it would be of any use by then, but I thank your team anyways, for inspiring me to take this direction. viewtopic.php?p=526017#p526017 :D

    Also my paper, if you are interested :p: http://www.twandegraaf.nl/Art/Documents ... 202012.pdf

    I think the Unreal engine does give a lot of possibilities, there are certain genres that are going to work better than others, but I think SMNC fits well within the space of what Unreal allows. Most times it is simply not cost effective to create your own engine when a 3rd party engine works just as well.

    Technically you could build PA on the unreal engine as well I guess, but it would be very unoptimized to do so as PA relies greatly on showing a lot, while hiding as much as possible to give the GPU some breathing space. The entire procedural system is also something I guess you would need to "hack" into the engine.

    Personally I am a fan of Unity3d, but because of its high-level scripting it is probably slower (performance wise) than most experienced developers desire.

    Making the PA engine in house has a different bonus. When it is done, it can be used or even sold for future projects, whereas if you use Unreal, you would have to pay epic for each game you create on your modded engine. If you would create an engine that looks similar to Unreal, you would be unable to sell it as Unreal has a longer history and is not easily beat in quality, or reputation for that matter.

    And as a small personal bonus for the dev team, it is an more than awesome portfolio piece.

Share This Page