Getting the transcript
Reading the captions from YouTube. A video nobody has opened here before takes 10 to 30 seconds; this page fills in on its own.
Reading the captions from YouTube. A video nobody has opened here before takes 10 to 30 seconds; this page fills in on its own.

AI and Games Conference · @AIandGamesConference
Words
5,164
Runtime
34:14
Speaking pace
151wpm
Reading time
22min
151 words per minute, below the 160 25th percentile of 349 measured videos. That distribution comes from the 349-video hook study.
Opening (first 30 seconds)
[Music] [Applause] yeah thank you for this warm welcome can I get a show of hands who has played Horizon forbidden West oh W that's like more than half Dr that's super cool and how how many of you work with flying or swimming NPCs that's also quite substantial like 30 40% that's cool I'm curious to hear maybe later of uh what your uh situations is and what challenges you face my journey in game
76 words, the words spoken in the first 30 seconds at 151 words per minute.
Free, no signup. See how the first 30 seconds hold attention, with rewrites.
Sentence shape
| Measure | This transcript |
|---|---|
| Sentences | 1 |
| Average words per sentence | 5164.0 |
| Longest sentence | 5,164 words |
| Questions asked | 0 |
| Sentences containing a number | 1 |
Most used terms
What this transcript is
Every word below is the caption track YouTube publishes for this video, pulled from the video itself and reproduced unchanged. It is not Prepublish's writing, not a summary, and not a re-transcription: it is the video's own published captions. English captions, generated automatically by YouTube, in the video’s original language. Source: the video on YouTube. A channel that would rather this page did not exist can ask for its removal through the contact page, and it is removed.
No Script X-ray for this video: YouTube shows a Most replayed graph only once a video has enough views.
[Music] [Applause] yeah thank you for this warm welcome can I get a show of hands who has played Horizon forbidden West oh W that's like more than half Dr that's super cool and how how many of you work with flying or swimming NPCs that's also quite substantial like 30 40% that's cool I'm curious to hear maybe later of uh what your uh situations is and what challenges you face my journey in game the actually started in working in casual mobile games at AUD studio called voger I was working on a game called Futurama Game of Thrones and some other casual matching games uh so I was was actually quite excited to see a talk here today about casual matching games and gamei in this back then I was really excited about game a and I attended a lot of conferences very similar to this one to learn more about this and was actively looking for opportunities to work on this stuff unfortunately the possibilities to apply this to Casual matching games were quite Limited at that time and also just due to the constraints and size of projects So eventually I decided to go back to University and study a masters in artificial intelligence which was a lot more about machine learning and its General applications to all sorts of problems and had very little to do with games it was quite interesting but I was really missing to work on games and particular NPC Behavior using more the good old fashion kind of tech so I was very excited as then I when I got the opportunity to join gorilla for the development of horizon forbidden West in 2020 on the AI team and gradually worked with various NPCs and the tech that we developed there and over time worked more and more with flying machines and for the DLC the burning shortes I was the main responsible AI programmer for the new flying machine the water being introduced in the DLC now to make sure that you all have an idea of like what our game is like and uh what our machines look like in the encounters I have a trailer to give you an the land is dying and the machines are out of control [Music] whatever comes I will be ready for this talk I want to specifically uh focus on one of our machines the water Wing um partially because it's actually the only machine who can fly an from at the same time but also focusing on one particular machine helps to give the talk a bit of more structure and to illustrate the various components all the components I'm displ uh presenting here today they're way more General than only for the water wing and we use them on all our flying and swimming machines which are often mutually exclusive when it comes to building a new machine from the AI side perspective we do start with a briefing from design and from the water Wing design document I got this paragraph which states the water Wing is a tough semi- aquatic flying robot that uses landbased resources to create Al Bloom underwater it is extremely aggressive Works in groups and it's very dangerous when confronted focusing on Relentless media attacks during combat now there's a lot of information in this uh paragraph and it actually describes more then I can go over in this talk but um I want to focus on two particular aspects as two parts of this talk first talking about the promise of the title of how do we actually build a semi- aquatic flying robots or robot that can swim and fly and then there will be a second part where I want to talk a little bit on how we use media attacks in Horizon forbidden West and uh how does this relates to being on the water or being in the air what does a Mia attack mean for this for completeness sake I wanted to mention that our decision system that we're using is uh called hierarchical task work work or hdn my colleague Tim gave an in-depth uh talk about this already earlier today and if you haven't catched it uh I highly recommend watch this recording the things I'm talking showing in this presentation they are fairly independent of what kind of decision logic you're using and uh they are additive to this so whatever you're using for your game all of the things I'm presenting should all play so in the first part we're going to see the flying and components that allow us to fly and swim and as a little teaser at the end of this segment I want to show you the water rings idle Behavior which takes all of these components together and takes then resources from the land flies into the sky find some place in the water to spread these I blooms that you can see in this screenshot now for the start we start out somewhere on the ground we do have nef mesh like most games these days to allow us the to reason about where we can go on there and to introduce some terminology we have a component we call mover that handles steering and clamping to the navigation structure in this particular medium so we have a ground mover that makes sure we stay on the nef mesh we can move around with this we drive the animation necessary for The Locomotion Etc for to fly now we first need to take off we need to get off the ground but wait before we just jump up in the air and flap our wings we need to make sure that where we taking off is actually sensible space so if it's a small room and there's a roof over us we don't want to crash into the room or if there are some other issues that prevent us like our wings are broken because the player Destro destroyed the components on them or something like this once we know that takeoff is valid we'll play a takeoff animation and the movement during a takeoff is completely animation driven at that part we will in during the animation disable nef Mash clamping not right at the start because as you can see here in this animation during many takeoffs we have a few steps or jumps at the beginning where we still move on the FMH and we don't want our machines to jump over a cliff at this point and walk in the air that would look quite silly so we still have nees clamping enabled until a certain animation event tells us now it's time to turn it off then on an based on an another animation event we're going to switch movers so we switch to a different component that allows us to steer the machine in the air and I will tell in more detail about how this works in a bit and lastly once this animation finishes we finished this transition and we're officially in the year now just to make sure that this is not a one-way Street let's have a brief look at Landing very similarly we need to make sure that our destination is sane in this case it's some point on the F mesh from where we then can continue navigating it's again animation driven so we play The Landing animation we'll have to disable our clamping against our air navigation structure calledo and I'll explain more about this after talking about the Mover and we'll switch back to the ground move to regain our ability to steer on the Nish and again this transition finishes as soon as the animation finishes now when it comes to movement in the air we have a big Advantage compared to moving on the ground and that is we don't have constant contact with geometry one big challenges by moving on the ground is that you want to provide foot sliding and you can't just programmatically at least not easily move your character from code you need to make sure that the animations kind of matches in the air we don't have that problem as much because you don't have the contact but also humans are not that good to associate Wing flaps with how you're supposed to move in the air so we basically get away with a relatively simple uh particle physics simulation where we just on our agent have a certain velocity and at each simulation step we displace it along the velocity and if you want to change directions we don't directly set a velocity but instead we apply an acceleration into the desired veloc direction we want to go and velocity then gets gradually updated one thing to note here is we have a similar simulation running independently for our turn direction so we have a turn velocity and turn acceleration controlling in which direction we're facing and the reason for this is that in the air we have two different movement modes the first movement mode we call hover and you can think of this like a helicopter it allows us to stay in the middle of the air on the spot rotate on the spot like a helicopter or a tank if you like and it also allows us to move in the air by facing a completely separate Direction so basically do strafing Maneuvers like you can see in this video clip and they are particularly useful in combat situations where you maybe want fire projectile at the player while being more difficult to aim at it yourself also for investigation and search if you lost the player and just want to look around where they might be and our second movement mode is called Glide this one you can think of the movement of an airplane so here the direction we're facing and the direction we're moving is aligned and we're moving in the same direction as we're looking and we're not allowed to stop while gliding if you want to stop you actually have to transition to hovering again and the main uh importance of gliding for us is that our machines they're very much inspired by Nature by animals and uh to sell this animal inspiration we want them to look like a flying bird and most birds move around with more a Glide like manuvers than hovering now that we have an idea how we can actually steer in the air let's have a look on how we actually figure out where to go like what is the free space where how do we plan our paths we're using a technology called uh Spar voxel octy or SVO for short for this and I have here 2D illustration which is then as SP voxel quad tree um to explain how this process works our starting point is that we have a large Grid in case of the water Wing the grid cells are 64 by 64 M and in each of these grid cells we generate one of these svos one of these trees so let's zoom in into one of these uh git cells the brown Mass you can see at the right that is an obstacle this is something we cannot Traverse and we want to avoid we start out generating our tree by placing one note that covers the entire cell and then we subdivide it in the case of in 2D into four equal squares and we can apply multiple subdivision steps until we reach the accuracy that we desire the the next step is to go through all the leaf nodes and figure out whether or not they're in free space or whether or not they're occupied whe if any kind of geometry is in any of the leaf noes then we consider them occupied it doesn't matter how much of them is covered now you might already notice that we have situations where the entire subtree has the same color so light blue in this case St it's a free node and dark blue is this is a blocked space and like the subre it has the leaf Node 1 2 34 here they are all free and the last subdivision didn't really add any information so we can transfer this information to the parent note and prune all the children that have a parent with uh fixed information and this is the sparse part of this voxel tree so this is uh allows us to reduce the memory footprint and uh of our um navigation architecture in places where not much is happening so one of the neat features of SVO is that in places where there's a lot of free space which in the air is quite often the case it actually requires very little space and is very rough and only becomes very precise around areas where you actually care about Precision now in order to actually apply path finding to this we don't use the SBO tree directly but instead we take the leaf notes and we annotate them with neighborhood relationships to their neighbors so we we find all the leaves figure out which are all the neighbors and we represent all the leaves by a note in the center by a point in the center of this note and now you and we also link them to neighboring git Sals if there are any free notes and now you have a classical graph that you can use for path finding and to figure out if two places are connected just like you did with if you're using an off meas similar architecture now you may wonder how does this transfer to 3D because all of these examples were now just 2D there is actually only a very small difference on how this works in 3D and that is our grid cells in this case are cubes or boxal rather than squares and at each subdivision step we subdivide the cube into eight smaller cubes rather than four squares and this is where the O Part in the name comes from so this is how we then following the same procedure get a spous voxal oct Tre for SVU here you can see a recording of our debugging tool displaying a path query in SV so there a couple of things to see here the white voxel you see on the botton this is an approximation or voxelization of the physics that we use to determine whether or not a note in SBO is free or occupied so since we're generating SBO dynamically at one time we prefer to use something cheaper to check than doing constant R cost against the actual physics geometry of the world and and this is this what this represents the blue line that may be a bit difficult to see is uh the actual path we found in SVU and the yellow wi frames around this uh are the nodes in SBO that we expanded to find this path and to follow this path one of the interesting benefits on sbu is it's a full 3d navigation architecture that allows us also to navigate under brides and in caves and otherwise enclosed spaces so this is like different to using height Maps or other more 2D inspired architectures uh we can deal with being inside something and this will become more important later now you may Wonder we got these weird zigzag packs from thebo they look a little bit funny and we don't really want to directly follow them they they're often like way more complex than what we actually want so what we end up doing is we do a post-processing step where we try to straighten them which something like string pulling algorithm to find the longest straight segments we can find along these paths again since a lot of the airspace is relatively open and free very often we do end up with just one straight segment for the entire path so the original SBO paths mainly for serves the purpose to figure out this point is actually reachable as well as a fallback on situations where we do need to navigate more complex uh terrain so that we have at least some secure paths we can follow and in the case of hovering we often just directly use that straight path and then steer along it that works for hovering often quite well we found during the development that when it especially when it comes to gliding the results were not that great if we just stick with this straight path so we have another post-processing step to uh work further these paths so here we again start with this zigzag SBO path we have straightening to this and translate it into one straight segment and if you would now just steer along this path then we would get a trajectory kind of similar to this orange line and this one unfortunately has two problems one is uh the straightened paths we have validated against SBO we know this is free space that we can actually go along but if you just now rely on the steering we will overshoot a bit and go into a space where we don't know beforehand whether or not it's actually free and it can happen that you may run into a wall and then you need to cancel your plan replan figure out where to go and I just doesn't look very smart if your machine happens to very often fly into obstacles and has to stop so we kind of want to don't don't see this very often the other thing is the steering is relatively aggressive and tries to get to this path as quickly as possible so it will do very sharp turns which don't look very natural and are a bit hard to sell either you have to reduce the velocity so that we actually can sell that it can do these curves and apply a lot of banking or uh it's going to look quite weird and it's not really also how birds would move because if you're flying through the air you're actually more concerned with maintaining your velocity than go taking the shortest possible paths to your goal so you're more likely actually to fly larger arcs because they require less energy and lower acceleration to actually to pursue so to get closer to this we apply B smoothing um for gliding and sometimes also for hovering where we take your current forward Direction into account and we then find the distance where we want to place our control point the distance is based on the angle between the straight path and our forward direction as well as the lengths of the straight segment and then we get this uh S curve that you see here that we then can follow along and we get a much nicer even path that sells the idea much more that we're like energy efficiently flying through the sky now you may Wonder uh what happens if that b c that smooth C is actually blocked and um this can happen we have a second fall back step where we try this with a a bit tighter curve closer uh to the straight path if that also fails we're going to do the stering against the straight path so this B smoothing in the end is more a Polish for like the 95% good cases and less of an improvement for the rare problematic cases um so it's mostly a cosmetic Improvement that applies in our case quite often now I talk quite a lot about flying and think you do get a pretty good idea now how this sort of works so let's have a look at swimming similar to how we started let's get into the water first so again we're following roughly the same procedure we validate the destination that it's actually in water that there's enough space actually for us to swim around it's again animation driven so if we're going to player dive animation to get underwater will disable again clamping because there's not always navigation uh data structure of on along the entire path then the following step was to switch the movers so that we can use the new mover in the new terrain and we'll finish in the new navigation space but there's one thing that is different in this transition and that is we don't need to switch the Mover midair and that is actually pretty much already the secret on how we do the whole underwater swimming we use SBO and the air mover underwater with very little modification because SBO is a full 3d navigation architecture it can deal with closed spaces and for us the underwater world is basically just a canyon with a roof being the water surface the separation between water and air and separating these two SVO volumes is important for us because most of our flying machines are not allowed to swim and most of our flying swimming machines are not allowed to fly so we don't want them to accidentally pass from one eror to the other so only the water RNG is actually allowed to transition between these two mediums directly and has a very respoke action and animation to do so and then we use the same pathf finding Tech the same Pro processing for the paths and the the main difference is for playing a different animation we're in a different animation state to sell the idea that we're swimming and that and we also reducing the speed because you're supposed to be under water and there's more resistance than in the air but in terms of the technology that we use to make the machine move to figure out where to go it's ex exactly the same deal as in the air and yeah lastly for completion we get back into the air this same following the same steps as we got into the water now this wraps up the first part of this presentation where I gave you an introduction to the medium transitions we have starting from going from the ground into the air into the water and back I talked about the two different movement modes of hovering and gliding which we use in the air and underwater as well and I gave a primer on generating spbo and using it for path finding and the smoothing and postprocessing steps we apply afterwards if you're putting all of these things together you can build the idle behavior of the water Wing which mostly serves for lore and World building because our machines fill a certain role in the ecosystem so it grabbed some resources from the ground and it's now flying along the coast to find a good spot to distribute them well here stop a little bit in the air and play a gesture to give the player a better chance to actually observe this behavior and see the diving and then underwater we we start a particle effect to uh deliver this I Bloom which then also attracts local fish life which is also just partical effects now in our game you spend a lot less time just observing the machine as fascinating as this might be and much more time fighting them either because they're an obstacle for your quests of where you're trying to get right now or because you're deliberately hunting them for their resources so let's have a look on how this looks like we have a at the very core we have a relatively simple combat Loop for our machines which starts with intercept this is basically just a fancy word for I'm running into your face and trying to get as close as possible and while we're doing this we're constantly evaluating if we have any attack available that we can use right in this situation one of the main criteria for this is is this attack and range and for this we use trigger volumes which you can see here annotated in green which is a geometric shape relative to the machine that tells us if you are in if my target my threat is inside then we know okay now we can use this attack and sometimes we might end up very close to our enemy without actually having any attack available for whatever reason and in these cases we'll play an evasive maneuver to gain some distance so we can repeat this Loop the actual combat behavior of our machines uh in the game is more complex than that but it does still build on this core loop on top and everything is additive built on top of it now for the watering media tchs play Big role in order to make media tchs Work One Core Tech is Waring Waring allows us to play an animation and Vary the distance you travel during this animation at uh runtime so here you can see one attack played at two different distances against the Target and here you have a direct comparison between the distance travel between these animations and we're using the exact same animation for this attack in this case because it would be from workload not really feasible to animate all variable distances on which you may want to use theack uh assuming that not everyone of you is familiar with how warping works I have prepared a primer and here in this stylized view at the bottom the 10 arrows represent our animation frames so each error is one frame of the animation so in this animation we're expecting to hit our Target at frame nine which is the target frame and the lengths of the errors also indicate on how far do we travel in this animation frame so if our Target tends uh happens to be exactly at the animated distance then we can just play that animation and yay we hit our Target perfect but more often than not the enemy we're targeting might be a little bit further away or sometimes even a bit closer and if you just play the animation unaltered will'll Miss and give them a large opportunity to retaliate which doesn't really feel good and makes the game a bit too easy so during the first couple of frames called that I annotated here with update Target frame one to four um we constantly monitor where Target is and how far they moved and we'll compute how much more or less do we need to travel in order to actually reach that position which are now here marked in the blue bar so this is the extra distance we need to travel if you want to reach that Target now if you would just uh ex add this extra travel distance between frame 8 and N that would just look like a glitch and you basically teleport and it's also super unfair to the player and just looks broken so we need to obscure a little bit that we're actually traveling some extra distance and to that end we're doing two steps one is we split the extra distance over multiple frames and the frames we are allowed to do this we mark them as displacement those are usually the frames where most of the traveling happens on this attack so this is where we of most of the movement and preferbly if the animation allows it we use frames in which we don't have any ground contact so where our machine is jumping in some kind of form because then it's less obvious that we're train caring with the velocity and make it actually move faster than animated so we don't get any visible foot sliding and if we now just play the animation with the extra Movement we again reach our targets and our robot is happy now here you see a clip on what our combat uh can look like underwater is of water one executing two attacks underwater is in Horizon forbidden bestest the only place where we're actually fighting in a full 3d environment as this is the only place where the player can move in full 3d um the other situation that is special about this is the player cannot fight back underwater so this is not really an even fight in any way and therefore we actually put a lot less effort to be very effective and we have a very limited set of attacks here because all we really want to do is we want to scare the player away and threaten them so to make them Retreat because that's the literally the only option they have or we stealth there are some options to stealth in the water when we're in the air the situation is a little bit different since the player controls a human aloy they will most of the time spend most of their time on the ground while our machine is flying and while many of our machines in the air prefer ranged attacks to combat the player um the water Bing really wants to get close and really wants to sell this aggressive very M focused idea so what we want to do is we want to get down to the player as quickly as possible and we ended up combining a landing within attack for this purpose so this scene basically uses almost components shown this presentation from hovering through the air to position ourselves so that the trigger volume contains the player then playing a landing that does all the validation steps Etc and switching movers during the animation as well as doing warping in the for the attack to get to the player and as a result we can do a very threatening maneuver and at the same time land and keep the pressure on the player and that's it for part two you have seen how we uh some parts that we use to get this Relentless Mia attacks for the water ring starting with the basic attack Behavior Loop that we have a primer on how we use trigger volumes and warping pH those and I briefly discussed some applications uh of media attacks under water and for landing all of this is of course uh team effort and those are the folks at gorilla I'm working together with on building these behaviors and the tools necessary for this and also Alo getes gets some teamwork to get rid of the glint talk that s in the presentation thanks for your attention [Applause] [Music]
The words are the caption track's own and nothing is reworded or re-transcribed. Paragraph breaks are placed between sentences so the text reads as prose.
Free tools for your own script. No signup, no login.
Paste your draft and see where viewers are likely to drop off, with a rewrite for each weak line.
Paste the first 30 seconds of your own draft for a hook score and rewrites.
Check your draft against YouTube's advertiser-friendly guidelines before you record it.
Read this channel's public videos and transcripts, and download a writing brief for it.
Filler phrases
124 in total: uh 41 · actually 33 · like 25 · um 10 · kind of 7 · basically 6 · literally 1 · sort of 1.
A literal whole-word count of the same phrase list the Prepublish browser extension uses, so a phrase inside another word is not counted and a phrase used in its ordinary sense still is. It is a count and not a judgement.