Tuesday, January 19, 2010

Off-Mesh Connection Progress pt. 2

I just submitted bunch of off-mesh connection related code to the SVN. I think most of the functionality for point-to-point links are in place. The only things missing so far is tile-to-tile links and some optimizations. I also added polygon filtering functionality for the Detour API where it seemed valid.

The number of arguments to dtCreateNavMeshData() started to become so many that I put them in a separate structure, which is passed to the function. All in all, the API changed quite a bit, but not dramatically. If you have question about migrating to the new API, let me know.

The special link feature is called off-mesh connections, not off-mesh links. The reason is that these special connections are actually stored as polygons. It allows the off-mesh connections to be nicely visible in the query functions. See the path iteration code in NavMeshTesterTool::recalc() for more details.

Next up is tile-to-tile connections, then better support for serialization, and after that I think I'll have another stab at the area stuff. Segment-to-segment off-mesh connections did not come out very naturally, the implementation ideas for that need a bit more simmering.


  1. Mikko,

    what would do tile-to-tile connections ? to simplify pathing across large areas or something else ?


  2. Tile-to-tile connections just mean off-mesh connections that span across tile boundaries. Currently they are not connected yet.

  3. Pretty impressive stuff you have there!
    Just found your site. When did you start on this project or ai in general? You work in recoil games nowdays?
    I have no idea of coding or ai, but I find this kind of stuff inspirational. 3D artist nature I suppose. : )
    - Juhani Karlsson

  4. Hi Juhani, thank you for your interest :)

    I've been doing AI since my Crytek days (that's five or so years ago). The origin of Recast is hard to pin in time. I have implemented the same idea quite a few times over past 3 years. The latest iteration was started about 1.5 yrs ago, and the first public version of Recast is less than a year old.

    I used to work at Recoil, but nowadays I'm a consultant AI programmer.

    As an old graphic designer I do spend quite a bit of time trying to get the visualization of things "right" :)

  5. Yeah, I did full research of your history in google = D Pretty impressive resume. Five years is damn fast, you gotta really like this stuff. = D Recast looks freaking cool.
    It would be interesting to see how character moves on those levels, do you have any character animation support implemented in recast, or is the actor just one/multiple points atm?

    I myself work in 3D animation here in finland (Talvi Digital) It would be interesting to try games as well. Its just that modeling props for 3 years sounds little boring. Its the character stuff that I`m more interested.
    I have been tackling with python sometime now, its just so hard to leave comfort zone when learning new things and I don't have any degree or education, so math and physics are not my main skill set : ) Still I love to see good blend of tech&art, like this one.
    Gotta keep learning I suppose. : )
    Do you have degree in finland, or did you study abroad?

  6. Thanks :)

    Recast nor Detour does not have any animation related things in. It is a whole different beast to tackle. I have plans to make the system to support moving "logical" characters on the navmesh.

    If you are interested in AI/animation marriage, take a look at Alex's site http://aigamedev.com/ there are bunch of game related animations things in there. Many of more interesting bits if info will need subscription, but there are tons of free stuff there too.

    I don't have a degree in programming/CS. I studied graphics design once upon a time at Muotoiluinsitituutti (or what ever they call it nowadays). I learned my programmer skills by making demos and later games.

  7. That would be really nice. I have been wondering they use massive in feature film pipelines, when game engines could do pretty much the same thing.
    Basically it would just need implementation that brings all the models merged to 3d package and animation could be done with point cache : )
    I`m pretty sure cry engine runs quite many agents in offline simulation(even though its not meant for that sort of thing)? Well, you know that stuff, lol.
    Thanks for the site, it looks like really good resource. I gotta register premium later on. Nice to hear that youre self taught. : )