Sunday, July 3, 2011

Paris Game/AI Conference 2011 Slides and Demo

The Paris Game/AI Conference is over and it was a blast! There was just so much interesting stuff in there that my head was just about to burst. I really like the shooter symposium where handful of studios gave microtalks (about 15mins each) on similar subjects followed by a panel discussion and Q&A. It was really inspiring to see different ways to solve similar problems.

My talk this year was about some work I did for Killzone3. I made a handful of tools for them to improve their AI level design workflow. In my talk I concentrated on how to automatically build cover annotation for the player. Killzone has this mechanic where the player can latch to a cover and slide along it. AI cover locations are discrete points are explained and were deducted from the player cover.

The cover locations are found using voxelization and tracing the contours of voxelized areas. Then the contours are sampled to see if they are close to a wall, and further the wall height is calculated and cover planes are build from that.

I also explained how this idea can be further expanded to automatically find jump-links and other non-locomotion navigation annotation.

Here's the link to the slides and demo (with source, sorry only OSX binaries):

I think the presentation did not go as well as last year. I tried to fix some problems I had last year, but ended up failing in some things I think nailed last year.

Firstly, last year I had two topics, and it seems I was only able to get the second topic through. So my idea for this year was to present one battle-proven practical idea and show how to vary it. Hopefully with enough details that people can implement it and maybe fond other uses for the technique too. I think the scope was good this year.

Secondly, even if I think my presentation last year was cool (and I got a lot of good feedback from it), I think it was a distraction. So this year I tried to simplify my slides to bare bones. The regular slides format does not work very well the way I like to explain things. I find it much easier to show different debug renderings in a demo and talk on top of that.

I horrible mistake I made this year was that I did not have enough time to practice the presentation out loud, in front of other people. I chopped some topics, since my practice runs were always over time. During the presentation I was super nervous because I did not have good confidence on time, and I ended up rushing through the slides super fast.

Lessons learned, I hope my next presentation will be much better :)


  1. Don't worry the presenation was Great .
    On of the best I might say .
    An it was super cool that we had the time too ask you so many questions !

  2. Hi Mikko, your ratings are still very high despite your own perception of how it went :-)


  3. Great presentation with live demo.

  4. I don't see the slides in there, just the demo code.

  5. the slides just a pictures at bin/slides folder being shown at demo.

  6. The presentation was very interesting. If you were nervous it did not impair your ability to explain things in a clear and concise way. I only regret I didn't had any good question to ask at the end.

  7. Great presentation at the conference! It was nice to have a clear concise presentation with plenty of time for questions! Thanks for putting the presentation up too!

  8. No sweat man!
    It was a pleasure listening to your presentation and thx again for making time to answer my questions (especially the one about curved edges).
    Keep up the good work and best of luck with your start-up)

  9. It was pretty damned impressive from where I was sitting. I'm glad I have the presentation to look at now, but don't seel yourself short on how you did. I found it informative, clear, and relatively concise :)

    Is this going to end up in the official Recast/Detour code? I can see the code in the demo (thanks!), just curious if it ill end up in the one the public tends to get their updates from.

  10. Thanks all for the encouraging comments! :)

    I hope it will eventually find its way to Recast/Detour. I have not yet figured out how to make it work if you have multiple tiles. And I need to add support for segment-to-segment off-mesh connections for Detour too. It's not very high on my todo list currently, though.

  11. That would certainly be a cool feature to add to recast/detour in the future.

    Any idea when the next update for temporary obstacle avoidance might come? Can't wait for that! ;)

  12. medierra, I'm currently working on handling dynamic changes to the navmesh in detour crowd. It is summer and the time of vacations and great times at the beach, so there are no promises when it will be done ;)

  13. It is summer and the time of vacations and great times at the beach

    Far be it from me to stop you enjoying the things I love most about my own country & holidays! :)

  14. Hi Mikko,
    Great presentation, pictures say a thousand words and I think that that those slides have given me a pretty good idea of the process. Could I just ask if it is ok to use the existing work you have done here in the demo under the zlib license with the rest of recast?
    I'm currently looking into what might need to be done to get automatic jump nodes like this and wondered if it could be used as a starting point.


  15. HI Fuzzycode,
    I'm glad you found the code useful. Feel free to use the code under zlib license.


  16. Are there any plans/updates on when this might be fully integrated with recast/detour? Also it appears your demo code doesn't have any of the logic for the cover planes. Am I missing anything? I was able to get it building on windows after some finagling.