The Simplest AI Trick in the Book

แชร์
ฝัง
  • เผยแพร่เมื่อ 6 พ.ย. 2016
  • In this 2015 GDC lecture, DigiPen's Steve Rabin, Insomniac Games' Jonathan Adamczewski, Lockheed Martin's Kevin Dill, Maxis' Rez Graham, and Digital Extremes' Dan Brewer share a plethora of AI development techniques that skip past the complicated programming and get right into the basic psychology that will trick players into thinking they're in an episode of Westworld.
    GDC talks cover a range of developmental topics including game design, programming, audio, visual arts, business management, production, online games, and much more. We post a fresh GDC video every weekday. Subscribe to the channel to stay on top of regular updates, and check out GDC Vault for thousands of more in-depth talks from our archives.
    Follow us on Twitter
    / official_gdc
    Check out our Facebook page for GDC exclusives
    / gamedevelopersconference
    Visit our site: ubm.io/2ctNvqZ

ความคิดเห็น • 208

  • @jessicalee333
    @jessicalee333 4 ปีที่แล้ว +142

    The simplest AI trick in the book is - make the bad guys run away sometimes, not necessarily for a discernible reason. It worked for Clyde in Pac-Man, it worked for the Grunts in Halo, it sometimes leads players into a worse situation and seems really tactically clever... just make them run away and/or hide a bit sometimes.
    I think that's a bit simpler than having human players teach your AI ninjas to run on walls. Though... now I want to see a section of a game where the player has to teach a bunch of NPC rookie trainees who suck at first, but eventually come to your rescue as an elite team of hard-mode AIs.

    • @CamoflaugeDinosaue
      @CamoflaugeDinosaue 3 ปีที่แล้ว +15

      Halo grunts run away when they are too far from their squad leader or he has died

  • @yrussq
    @yrussq 7 ปีที่แล้ว +306

    The last one was the most practical and elegant as a case.

    • @ClokworkGremlin
      @ClokworkGremlin 4 ปีที่แล้ว +25

      It appears to be the only one that's not shockingly entry-level, honestly.
      That, and the navmesh thing with Sunset Overdrive.

    • @yrussq
      @yrussq 4 ปีที่แล้ว +11

      @@ClokworkGremlin From his explanation i didn't manage to figure out how they've solved that super isolated mesh in the SO. Too many words. Plus it didn't feel effective anyway.

    • @p.t.m
      @p.t.m 4 ปีที่แล้ว +5

      @@yrussq Essentially they built a system to detect and remove any island with no links to another island, as opposed to removing them manually.

    • @simonfarre4907
      @simonfarre4907 3 ปีที่แล้ว +3

      It's also fucking brilliant too. That's some academic quality of CS.

  • @sp0pie928
    @sp0pie928 5 ปีที่แล้ว +99

    the simplest AI trick in the book is getting your robot-ninja AI to run off of walls after they learn it from human players

  • @biocode4478
    @biocode4478 4 ปีที่แล้ว +123

    poor robot is trying its best and doing well but the creator just expects him to fail. reminds me of my mom

  • @johnappleseed8839
    @johnappleseed8839 6 ปีที่แล้ว +460

    "I assume we all know about blackboard architecture. For more info, here's a link to a paywall."
    Thanks.

    • @ClokworkGremlin
      @ClokworkGremlin 4 ปีที่แล้ว +36

      I think he explains it well enough from context. While I haven't studied "blackboard architecture" by that name at all, it appears to be a global data repository that all the different game objects are able to store and read data from. Which explains why you'd need it to be general.
      His solution is basically the very first one I thought of when considering the issue, though he has a few more optimizations to it.

    • @titojdavis8374
      @titojdavis8374 3 ปีที่แล้ว +2

      works for lockheed so... ya

    • @SilverAura
      @SilverAura 2 ปีที่แล้ว

      @@ClokworkGremlin And here I thought I was being clever by just letting the more interactive game content access to a static pointer.

    • @jdick91
      @jdick91 2 ปีที่แล้ว +12

      Are you kidding me? I'm getting to watch this lecture from a conference other people paid a lot of money to learn skills that will help them build on their careers, without having to pay a dime myself, but I'm NOT also entitled to a complete masterclass without having to pay for it?! This is outrageous. My wife Karen will certainly be having words with them.

    • @yungskeleton-wotvffbe8939
      @yungskeleton-wotvffbe8939 2 ปีที่แล้ว +21

      @@jdick91 This is so misconstrued that I'm surprised you're smart enough to write.

  • @bunnybreaker
    @bunnybreaker 7 ปีที่แล้ว +182

    The irony that Warframe is my biggest distraction from actually making games.

  • @uliwitness
    @uliwitness 3 ปีที่แล้ว +18

    That string/enum sync technique is a variant of what is commonly called "X-Macros", BTW.

  • @von_nobody
    @von_nobody 7 ปีที่แล้ว +93

    Trick with bread crumbs was used too for first bot of Quake 1. Bots could only move where you move first.

    • @tehf00n
      @tehf00n 7 ปีที่แล้ว +6

      indeed. I would favour a voxel pathfinding setup when available but this does work well.

    • @-Rook-
      @-Rook- 6 ปีที่แล้ว +7

      I suspect that this is really effective especially now that we can have big bread crumb bins and share the paths through a server. To be honest the quake 1 bots omicron, reaper, zeus, etc were some of the most fun bots I've played against and there is a lot of information about them still on the internet. My simple AI trick don't forget the gems of the past (especially if their source code is simple and available).

    • @Alistair
      @Alistair 5 ปีที่แล้ว +5

      >My simple AI trick don't forget the gems of the past (especially if their source code is simple and available).
      There were some incredible bots for Counter-Strike back then too. I started off playing with Quake bots and then made my own CS bot. Having a good objective oriented bot can actually be more fun than playing online in some cases, depending on who you're playing with

  • @Pablosaurus
    @Pablosaurus 6 ปีที่แล้ว +164

    At 2:11 he accidentally says "you humans" and he's from an AI group, coincidence? Yes, probably.

    • @DerMannInDerWand
      @DerMannInDerWand 4 ปีที่แล้ว +2

      Probably just a lizard person secretly designing robots to enslave all of humanity

    • @TonkarzOfSolSystem
      @TonkarzOfSolSystem 2 ปีที่แล้ว

      Saying that doesn't mean he's not a human, only that he's addressing a group of humans.

  • @soldierofyhvh5966
    @soldierofyhvh5966 6 ปีที่แล้ว +60

    Blue haired guy went somewhere that only he knew the directions to.

    • @ClokworkGremlin
      @ClokworkGremlin 4 ปีที่แล้ว +11

      His lecture was basically the contents of three of the one-week assignments in my freshmen-level robotics class 16 years ago.
      (we built 3 different pathfinding robots using different sensor layouts, and our final project was competitive Roomba. My class was the first instance, later instances got *nuts*)

  • @vighneshsivakumar3418
    @vighneshsivakumar3418 7 ปีที่แล้ว +58

    20:30 Ok, I've had my issues with Warframe's design changes over the years (I used to play very early on but stopped when it started getting overly grindy), but that is an absolutely brilliant design idea and probably not extremely difficult to implement. The data logistics might be an issue given the dynamic nature of the game but it looks like they're already designing for that as well.

  • @RazielIgor
    @RazielIgor 2 ปีที่แล้ว +14

    People walk around everyday with their phones, so if we collect the data that where people walks, store that in an online blackboard and give robots access to that data, they will learn where they can all walk as well. So they will teach new humans where they can walk too!

  • @PsychadelicoDuck
    @PsychadelicoDuck 7 ปีที่แล้ว +51

    That warframe one was quite clever.

    • @JohnSmith-ot4hq
      @JohnSmith-ot4hq 4 ปีที่แล้ว +4

      Sad to hear that in retroperspect. Wallrunning has since been removed for both NPCs and players

    • @etin97
      @etin97 4 ปีที่แล้ว +2

      John Smith What why?

    • @thalessantos4812
      @thalessantos4812 4 ปีที่แล้ว +2

      warframe is a looter and so players tend to speedrun missions dozens of times. wall runing was kinda slow, even though it was cool

  • @DJ_POOP_IT_OUT_FEAT_LIL_WiiWii
    @DJ_POOP_IT_OUT_FEAT_LIL_WiiWii 7 ปีที่แล้ว +470

    The oldest trick in the book is picking an easy theme. That's why there's so many zombies game. They're slow, stupid, all look the same and are easy to draw.

    • @DJ_POOP_IT_OUT_FEAT_LIL_WiiWii
      @DJ_POOP_IT_OUT_FEAT_LIL_WiiWii 7 ปีที่แล้ว +19

      ***** I live in Montreal Canada (like Phil Fish sigh..) and I can therefore assure you that nu-males are a societal problem here. Montreal is pretty much their capital. They campaign for the removal of urinals so they can force everyone to piss sitting down. Anyway these Indie games are pretty stupid as far as I'm concerned. Many are failures because devs are making the games they want instead of providing what the market is asking for. I guess that this specific demographic buys the game out of pity though and they make a killing out of kickstarter with their begging videos.

    • @AdamX21198
      @AdamX21198 7 ปีที่แล้ว +5

      +JJ K Haha holy shit so true, I think I'll keep working on my passion project though, I'll make other games fine-tuned for a demographic, unless there's a market for Open World RPGs that I haven't heard of...? ;D
      Perhaps these nu-male hipsters are making really Artsy-Fartsy games not based on popular genres? Did The Witness sell well, or did good game design? Minecraft sure made a killing, and that game wasn't even finished when it sold like hotcakes, and the combat was terrible. I wonder what the secret is, marketing? I think it's marketing. Minecraft went viral, Fez was easily interpreted (very "compressed" and easily marketable), and a lot of people know what Grand Theft Auto is.
      I don't think it's all about market demand, people need to know our cool games exist, they need viral exposure.
      (Custom Robo is *amazing* and amazingly underrated)

    • @DJ_POOP_IT_OUT_FEAT_LIL_WiiWii
      @DJ_POOP_IT_OUT_FEAT_LIL_WiiWii 7 ปีที่แล้ว

      ***** There's quite a lot of bias when looking only at success stories. Original concepts can work on PC but you're indeed not helping the marketing push by having to explain your game. The market is what people buy, plain and simple, never what they tell you they want. I'm more in the mobile market. Almost every person I talk to tell me I need to come up with 'original ideas' to sell and proceed to rave on Angry Birds, Flappy Birds, Candy Crush and the likes. Quite ironic when you consider all these games are clones. Casinos games, match-3 and runners are very popular and not novelty materials. Viral marketing or huge budgets are indeed mandatory for success.

    • @DJ_POOP_IT_OUT_FEAT_LIL_WiiWii
      @DJ_POOP_IT_OUT_FEAT_LIL_WiiWii 7 ปีที่แล้ว +3

      +XΣRXΣS Perhaps The Witness is doing quite good because its developer Jonathan Blow XD spends most of his time catering to Indie games press and events. The graphics are above average and the environment is well designed but its gameplay sucks ass IMO.

    • @AdamX21198
      @AdamX21198 7 ปีที่แล้ว +3

      +JJ K Guess I'll make a gorgeous Open World RPG with an interesting world with polished modern mechanics, then grow some balls and host panels at conventions at least once a week showcasing my work. Sounds like a plan.
      IT IS TIME TO BUY A VOLKSWAGEN TYPE 2

  • @maestbobo
    @maestbobo 4 ปีที่แล้ว +59

    Lockheed Martin guy ended up implementing Python in C++.
    Everything is a dict, values have a boolean interpretation (i.e. truthiness in Python)

  • @morwar_
    @morwar_ 7 ปีที่แล้ว +10

    that last talk was amazing

  • @SJNaka101
    @SJNaka101 2 ปีที่แล้ว +4

    Daaaang that warframe one felt like a tedtalk at the end. Teach the AI so the AI can teach us!

  • @hauntedshadowslegacy2826
    @hauntedshadowslegacy2826 4 ปีที่แล้ว +12

    '-and they'll be there for about a week.'
    Ffffffffuuuuuuc-

  • @TheBoundFenrir
    @TheBoundFenrir 6 ปีที่แล้ว +7

    that last one is super awesome!

  • @godalmighty1188
    @godalmighty1188 2 ปีที่แล้ว +3

    That little robot could know its position. Give it another set of wheels that aren't attached to motors, but which have high traction and low inertia. Attach there to a sensor that can tell how much the wheels have turned individually. Withe the wheel diameter and each wheel's roll distance, you can plot out lines and curves that represent the path taken, the distance traveled, and the relative position to the start with high accuracy. Basically, a ball-wheel mouse on the bottom of the bot. A laser mouse would work as well, but may have clearance issues.

  • @TheMrKeksLp
    @TheMrKeksLp 4 ปีที่แล้ว +60

    First speaker: "If you do a string compare I'm gonna shoot you"
    Third speaker: KEEP ALL YOUR DATA IN DICTIONARIES

    • @yrussq
      @yrussq 4 ปีที่แล้ว

      Third speaker was talking about hashed data comparisons.

    • @satibel
      @satibel 4 ปีที่แล้ว +5

      yep, it's a hashmap so the string is converted to a sort of integer. and then it can be searched by dichotomy (look halfway, if is greater, go to the upper part else, go to the lower part, repeat till you either have the numbers equal or the section be 1 in length.)
      it's fairly fast as a dictionary with 1 million entries would be searched in under 20 iterations if the string doesn't exist.
      in the end strings are just arrays of numbers, so the hash could be simply each letter end to end.

    • @iswm
      @iswm 4 ปีที่แล้ว +2

      @@satibel the term you're looking for is "binary search". also you typically hash directly to an address or an offset so no probing is required unless there is a collision.

    • @TheMrKeksLp
      @TheMrKeksLp 4 ปีที่แล้ว +1

      @@satibel Looking up a value by a string key in a hashmap requires calculating the string's hash and a final string compare for each lookup. That's not what I would classify as "fast". Not to mention that growing a hashmap requires rebuilding the entire map by rehashing all elements to get the new indices

    • @TheMrKeksLp
      @TheMrKeksLp 4 ปีที่แล้ว +2

      Doing anything by string is a very bad idea most of the time and shows a flaw in the code architecture. It's slow, not typesafe and leads to bugs. Sometimes it's needed e.g. for referencing external data (files, bone names, shader uniforms) but it can easily be avoided for anything code internal. But even then you should have properly typed "keys" that get constructed once with the string and are then passed around and used to cache lookup info. Storing arbitrary data in a string keyed hashmap per entity is pretty much the worst way to implement data storage

  • @alec1020
    @alec1020 3 ปีที่แล้ว +10

    I thought for sure that robot one was going somewhere but then it didn't...

    • @jeffmorse6727
      @jeffmorse6727 3 ปีที่แล้ว +3

      Yeah the conclusion was just "real life is harder than games" but I don't see how that's at all relevant to games developers

    • @SilverAura
      @SilverAura 2 ปีที่แล้ว +2

      @@jeffmorse6727 The relevant bits I pulled from it were a raised awareness of how the input you're giving your AI can be just as much a part of your challenge as how it handles it.

  • @esad9341
    @esad9341 7 ปีที่แล้ว +19

    the macro trick is really interesting actually, even though it seems the simplest of all of them

  • @DustinRodriguez1_0
    @DustinRodriguez1_0 7 ปีที่แล้ว +16

    Has anyone ever studied various game quantitatively and compiled an 'Elements of Gameplay Mechanics' type book? I am thinking something like the numbers the first presenter pointed out about reaction time. My guess is that if you were to study, say, platformer games you could come up with an objective guideline on how to make an 'easy' or 'hard' game (or just a particular jump) based on the various factors involved (character speed, accuracy needed in distance, amount of distance jumped, difference in height of platforms, etc).
    Take games which are widely acknowledged as difficult (old school Mega Man games, Super Meat Boy, etc) then a bunch widely acknowledged as easy and break down the numbers so that if you want to create a challenging platformer, or an easy one, you don't have to just experiment and hope you got it right and can account for the varying skills of a huge audience. That's just one example in one genre, but I could imagine a really helpful encyclopedia that covers many. Does such a thing exist?

    • @user-zu1ix3yq2w
      @user-zu1ix3yq2w 7 ปีที่แล้ว +1

      Dustin Rodriguez sounds pretty cool. there are a couple of gamasutra articles. The Chemistry of Game Design (or a similar title) was one of them I think.

  • @zartron1
    @zartron1 ปีที่แล้ว

    The first speaker's second idea has nothing to do with AI but is one of the most valuable things I have every learned.

  • @SowedCastelli
    @SowedCastelli 3 ปีที่แล้ว +2

    The bread crumbs. Woo Never thought of that. Nice talk.

  • @87392v
    @87392v 7 ปีที่แล้ว +8

    This is among the best videos that have released on this channel. Thank you!

  • @Spellfork
    @Spellfork 7 ปีที่แล้ว +57

    I'm gonna make a game and only use string comparisons... BRING IT!

    • @tylerkillspoon
      @tylerkillspoon 6 ปีที่แล้ว +17

      A text adventure? ;)

    • @ZarkowsWorld
      @ZarkowsWorld 5 ปีที่แล้ว +1

      You work at BlueHole?

    • @archmagusofevil
      @archmagusofevil 5 ปีที่แล้ว +14

      I can't wait to see your code. Some pseueocode nightmare I'm now imagining:
      PlayerHP = PlayerHP + "minus five"
      ComplexWordArithmeticFunction(PlayerHP)
      If PlayerHP == "zero or lower" then PlayerLives = PlayerLives + "minus one"

    • @yyny0
      @yyny0 5 ปีที่แล้ว +5

      @@archmagusofevil PlayerHP = PlayerHP + '❤' * 5; PlayerHP = PlayerHP[0:-5];

    • @ClokworkGremlin
      @ClokworkGremlin 4 ปีที่แล้ว

      Learn to program in D, it doesn't mind string comparisons *at all.*
      (D is my favorite programming language.)

  • @brandonallen2301
    @brandonallen2301 3 ปีที่แล้ว

    the last one was really cool

  • @joroc
    @joroc 4 ปีที่แล้ว +28

    Simplest trick is to release and unfinished game and charge a lot for expansion packs

  • @petersmythe6462
    @petersmythe6462 2 ปีที่แล้ว +2

    Yeah orientation and navigation are some pretty difficult problems in the real world. One solution is to have a robot estimate it's own position and orientation somehow. Another is to not care about absolute position or orientation.

  • @aussieraver7182
    @aussieraver7182 2 ปีที่แล้ว

    3:42
    Can some explain why string compare is bad?
    My assumption is that it's computationally expensive?

  • @tctc4413
    @tctc4413 7 ปีที่แล้ว +15

    as for the warframe ai trick , not that many playerswall run when after the introduction of bullet jump , atm wall running is something that most players avoid and it explains why after jumping into one of the many black reset spots in the warframe map the mobs will just replete that !

    • @NZPIE
      @NZPIE 7 ปีที่แล้ว +6

      I'm not even sure you can even wall run anymore... I've tried it before, and failed many times.
      Edit: I'm talking about the Parkour 1.0 wall running, not the new one. At most, the new one is wall hopping.

    • @HampterLover985
      @HampterLover985 7 ปีที่แล้ว +1

      Yea I never wall run either, but I'm sure they use the same concept to tell the AI where to do other types of movements other than wall running.

  • @sqrlmonger
    @sqrlmonger 7 ปีที่แล้ว +11

    re: 2nd Speaker Pathfinding mesh...
    So uhm, why not just traverse all path edges and mark or record all the navigable nodes/islands and remove the rest (or at least tag them review)?
    You can even cross-reference your node/islands with collision volumes and instantly throw out any node/island entirely contained within collision volumes to reduce workload of reviewing the remaining nodes.

    • @imakegames770
      @imakegames770 6 ปีที่แล้ว +2

      I dunno man, that sounds like some exponential looping. You might get way too many Big O's.

    • @ClokworkGremlin
      @ClokworkGremlin 4 ปีที่แล้ว

      That's exactly what I was wondering.

  • @alexslavski5056
    @alexslavski5056 6 ปีที่แล้ว +31

    Nice video, but I miss the point of building a robot. How is this a simple trick for AI programming?

    • @Soumein
      @Soumein 6 ปีที่แล้ว +2

      I didn't think it was a trick either; he may have just been saying to try to understand the AI's world sensors in relative terms.
      If we take his NPC must stand up and play guitar example, you'll need a sensor for what state the NPC is currently in (Idle standing, sitting in a chair, interacting with another object, etc), a pathfinding system to navigate the room (find open tiles, doorways, walls, and the fastest route), and the objects it can interact with (the guitar, a computer, a door).
      Dunno.

    • @alexslavski5056
      @alexslavski5056 6 ปีที่แล้ว +5

      This may be a nice approach of thinking about designing AI (although I don't really get its merits), but completely irrelevant to the topic. Or I may be missing something about that speech.

    • @ChrisOi86
      @ChrisOi86 6 ปีที่แล้ว +26

      I think it was more of a "thought hack" to change your view on AI in games, a tip to make you think in a different context

    • @rezination
      @rezination 5 ปีที่แล้ว +32

      This is an old comment, but I'll reply anyway....
      @VioKyma has it right, the purpose of my section of the talk was not to specifically give you a single in-code trick you can use, but to provide a bit of a thought experiment. Specifically, I think it's important to build an AI for a totally different medium to force you out of your box. It's the same logic behind learning a new programming language; doing it changes how you think about programming. Building AI in a totally different context changes how you think about things and forces you outside of your bubble. And that's a good thing, because staying inside one's bubble is why most shooter games abuse behavior trees (among other things). ;)

    • @tiagodarkpeasant
      @tiagodarkpeasant 4 ปีที่แล้ว +2

      @@rezination that is why i never made a bomberman ia, i just cant think of a way to make it without cheating with "danger grids" and have no idea how to make them try to kill instead of just runaway

  • @dvsdev
    @dvsdev 4 ปีที่แล้ว +12

    I don't really feel like any of this would classify under the title terms "Simplest" and "AI", several were just programming tricks, that could apply to AI, but not in a way that was represented. The Robot/realworld comparison gave no applicable value to use, beyond try this, and the wall running learning technique didn't feel simple. Don't get me wrong, I liked most of what I heard. I just don't think anyone really hit the mark of "The Simplest AI Trick in the Book"

    • @tiagodarkpeasant
      @tiagodarkpeasant 4 ปีที่แล้ว

      the point of the robot was "stop cheating"

    • @marcelh7864
      @marcelh7864 4 ปีที่แล้ว

      If you are familiar with programming the generic data structure is really a simple solution to a complex problem. We did something similar in my 3rd semester project but I don't know who wouldn't come up with such a structure after some time with basic OOP. But yeah it's not a AI trick.

  • @AmericasComic
    @AmericasComic 7 ปีที่แล้ว

    23:30 - "shit, I have to follow a robot"

  • @KryyssTV
    @KryyssTV ปีที่แล้ว +5

    Rez decided to completely ignore the point of the forum in favour of bragging about his pet robot which has absolutely no practical applications or new insights into game related AI.

  • @toose8388
    @toose8388 6 ปีที่แล้ว +3

    Last guy really likes the word "dynamically"

  • @TheAssassin409
    @TheAssassin409 2 ปีที่แล้ว +4

    weird to hear a Warframe dev talk about wall running and AI following the player. one of which has been removed from the game entirely because of how buggy it was, and the other is so buggy that your companions still die getting stuck in walls.

  • @wildwest1832
    @wildwest1832 2 ปีที่แล้ว

    C pre-processor let you do some crazy stuff and it cost you nothing maybe some confusion.

  • @tuazulyrojoeljean
    @tuazulyrojoeljean 4 ปีที่แล้ว +1

    Maybe it is that english is not my primary language, but... What was the actual ''trick'' the second guy supposedly shared?
    I didn't catch it at all. I got the uncommunicated island's problem but how you're supposed to keep those one connected in the navmesh from the others?

    • @PepsiMagt
      @PepsiMagt 4 ปีที่แล้ว +2

      He starts from the spawn area,which is known to be traversable, and then he simply makes a depth search of the nav-tree, marking all reached node as traversable. The unmarked nodes are deleted. This can all be precomputed.

    • @tuazulyrojoeljean
      @tuazulyrojoeljean 4 ปีที่แล้ว

      @@PepsiMagt Thanks!

  • @MrFugogugo
    @MrFugogugo 7 ปีที่แล้ว +83

    none of these is "simplest"
    but maybe it's me that still have zero knowledge on AI

    • @AdamX21198
      @AdamX21198 7 ปีที่แล้ว +2

      I'm still trying to figure out how to robustly have objects follow paths automatically after they are created. I just don't know??!?!?!?! I can understand generating a path based on a node octree with automatic checking of cell occupation, but having your little guy follow that path without re-generating the path constantly to prevent getting stuck? Fuck!

    • @tonystroemsnaes554
      @tonystroemsnaes554 7 ปีที่แล้ว +4

      place nodes at all corners of a path, and make the ai go towards the points, changing new target point when hitting the previous target point

    • @AdamX21198
      @AdamX21198 7 ปีที่แล้ว +1

      Well of course, but in terms of obstacle avoidance as AI goes along the generated path (thus making the path inaccurate), how would one go about creating an optimized solution for that without recalculating the path constantly?
      I also gotta figure out how to go about "clustering" agents into one big AI agent (for large squads and armies moving in the same formation) which would definitely boost that FPS.
      Definitely gonna get started on some stuff tonight, feeling good!

    • @sprK92
      @sprK92 7 ปีที่แล้ว +3

      have you tried looking into flow fields?

    • @AdamX21198
      @AdamX21198 7 ปีที่แล้ว

      Flow fields? Like with particles?

  • @GRHmedia
    @GRHmedia 4 ปีที่แล้ว +10

    Yea, got to say going from automation programming to game AI is been a lot easier. Game AI don't kill real people when it messes up.

  • @zachierymorgan9363
    @zachierymorgan9363 3 ปีที่แล้ว +1

    sargon on the right

  • @damianbailey3088
    @damianbailey3088 6 ปีที่แล้ว +6

    enooms

  • @gregoryfenn1462
    @gregoryfenn1462 ปีที่แล้ว

    How the actual fudge is "spend a week building a robot" a simple trick?

  • @omgwat
    @omgwat 6 ปีที่แล้ว +9

    That talk that the second guy gave was freaking useless. I mean, HOW did you exclude inner islands?

    • @jordanwhittle8713
      @jordanwhittle8713 5 ปีที่แล้ว +8

      you just find a/all navmesh polygons that you know is traversable and just flood-fill and mark all connected polygons. when you're done you just remove all polygons that haven't been marked because they are clearly not reachable. you could also check for polygons which exist inside of geometry that the player should never be inside of - if there is a shipping container that the player cant enter, there will be no actual inside geometry and all of the normals of the container will be facing outwards and that is detectable

    • @LiftPizzas
      @LiftPizzas 4 ปีที่แล้ว +1

      @@jordanwhittle8713 If the problem is AI getting stuck because it can't find a path out, seems like you could also write a temporary routine to iterate through coordinates, attempt to path from that point to a known good, and use those pass/fail results. A separate computer can spend all week or all month doing it on its own and it doesn't require trying to explain "a shipping container that the player should never be inside of" to a computer. If I understood correctly, the method that was used (and was supposed to be a "trick") only detected 25% of the invalid data and left 300,000 "bad" polygons unflagged. I don't see how reducing the occurrence of a game-breaking bug by 25% is a trick worth talking about.

    • @projjalc
      @projjalc 4 ปีที่แล้ว +6

      @@LiftPizzas It removed 25% of ALL the level data, which it deemed to be invalid.

  • @slipperynickels
    @slipperynickels 7 ปีที่แล้ว +2

    That robot is just a regular Boe-Bot kit...

  • @dusandragovic09srb
    @dusandragovic09srb 3 ปีที่แล้ว

    #t=43s, Rez Graham, my dream job.

  • @irellevance6925
    @irellevance6925 7 ปีที่แล้ว +2

    How do amiibos work? with the same breadcrumb technique?

    • @SianaGearz
      @SianaGearz 4 ปีที่แล้ว +4

      This question doesn't make sense. Amiibo is a plastic toy with an NFC tag attached to the bottom of it. It has no movement capability.

    • @weckar
      @weckar 4 ปีที่แล้ว +3

      @@SianaGearz ... Thanks for telling me. I may need a gun...

    • @baker7280
      @baker7280 2 ปีที่แล้ว +1

      @@SianaGearz i would assume he means how do amiibos in smash work. In smash they are like cpus but learn from the player and level up.

  • @laimiskleinauskas3654
    @laimiskleinauskas3654 4 ปีที่แล้ว +3

    does anyone wall run in warframe, i thought we all bullet jump xD

    • @truefiasco2637
      @truefiasco2637 4 ปีที่แล้ว +1

      i guess you can leave the same bread crumbs for a bullet jump and it's probably a bit easier to code.

  • @YTaccNo3
    @YTaccNo3 7 ปีที่แล้ว +7

    i miss the old warframe wallrun tbh

  • @0xCAFEF00D
    @0xCAFEF00D 7 ปีที่แล้ว +1

    4:00
    There's better ways to do this if you try. But it's an OK way to do it. Certainly much better than maintaining two tables.

  • @Kombi-1
    @Kombi-1 6 ปีที่แล้ว

    weird cam

  • @Beatsbasteln
    @Beatsbasteln 2 ปีที่แล้ว +1

    the dude with the robot was such a cute robot-father

    • @andrigunawan5691
      @andrigunawan5691 5 หลายเดือนก่อน

      21:57 yep, Respawn might not have enough time to actually make a proper AI for enemy Pilots on foot in Titanfall 2 single-player campaign, and it was scrapped instead of actually going into the game

  • @diegorosadossantos8493
    @diegorosadossantos8493 7 ปีที่แล้ว +4

    David [Rez] Graham from Game Coding Complete 4th hahaha

    • @rezination
      @rezination 5 ปีที่แล้ว

      Yep, that's me. Game Coding Complete was a long time ago now.

    • @rezination
      @rezination 5 ปีที่แล้ว +2

      Ryan: I'm sorry I wasn't able to reach you when you were a student. The sad truth of being a teacher is that you can't reach everyone, no matter how hard you try and, despite what it may have felt like, I did try. Last time we spoke, I told you that I hoped you found your path in life, and truly hope you have. I wish you only the best.

    • @rezination
      @rezination 5 ปีที่แล้ว +6

      @@ryanfuxa6738 To be fair, I have no control or insight into the financials of the school. Faculty is intentionally kept out of that for ethical reasons (so one can't treat students differently no matter what their financial situation is, for example) so I can't comment on any of that stuff. You also weren't in my department, so I don't know what your situation was in terms of classes and grades. I will say that my veteran students are usually the most hard-working. I kind of wish all my students were vets because they know how to work. Many kids right out of high school don't. :-/
      Anyway, game dev is really, really hard and it's not for everyone. It takes a particular kind of thinking and problem solving ability to make it click. You can love games with a passion, but the creation of games is very different and takes a level of dedication many aren't prepared for.
      For example, if you really wanted to make games for a living, you would be spending your weekend time working on side projects and learning on your own. There are so many resources you almost don't need a school anymore. Besides, you can't just love games, you have to love game dev itself. You have to love the process of making stuff. That's something no one can teach you. For me, my degree is in electrical engineering, not programming. I taught myself how to program in my spare time and made my own games while working full-time jobs that I hated, so not only do I know exactly where you're coming from, I am proof that you can break out of it. That's literally how I broke into the industry. And remember, this was a time before Unity and Unreal, so it was all C++ and x86 Assembly. There weren't really any game dev schools at that time and I come from a relatively poor background, so paying for more college was right out.
      That having been said, if you still want to try your hand at games, I would be willing to help you. I've mentored others who couldn't afford schooling. Of course, I understand if you don't want to do that, just thought I'd offer.
      You're in a terrible situation, but at the end of the day, you have a choice whether to be motivated by that situation to change and get better, or whether you let it drag you down.
      Anyway, my offer stands. Either way, I wish you success.

  • @Kombi-1
    @Kombi-1 6 ปีที่แล้ว +1

    ag

  • @mujina93
    @mujina93 2 ปีที่แล้ว +3

    The only useful one was the one before the last one. Advice to AI programmers: build a small autonomous robot.

  • @YourChannelHere
    @YourChannelHere 4 ปีที่แล้ว +1

    General Data Structures is literally python dictionaries in c++, beautiful

    • @p.t.m
      @p.t.m 4 ปีที่แล้ว +2

      In that case, couldn't we realistically just use python to hold data fields that aren't critical for performance? (dialogue, etc)

  • @nalankadi1654
    @nalankadi1654 4 ปีที่แล้ว +6

    None of these are simple AI tricks.

    • @tacticalblank8045
      @tacticalblank8045 3 ปีที่แล้ว +2

      But... they are? They're all at least tangentially related to AI programming, and they're all pretty simple.
      1. Realistic reaction times + a C++ macro trick for named enum values
      2. Throw away parts of your navmesh that aren't connected to anything (how they got there was kinda complicated but the final solution was fairly straightforward)
      3. Just a generic data structure
      4. Working in a more restricted medium can change your perspective (more of a "be a better AI programmer" thing than an actual game dev technique)
      5. Instead of coming up with a complex algorithm for getting your AI to do something unusual like wallrunning, they can just literally follow the player

    • @SilverAura
      @SilverAura 2 ปีที่แล้ว +1

      RocketsRocketsRockets was easily one of the best simple AI tricks I could have asked for..

  • @oliverandom6808
    @oliverandom6808 3 ปีที่แล้ว +2

    Simplest trick in the book
    Almost half an hour long

  • @mcsnaffle5443
    @mcsnaffle5443 4 ปีที่แล้ว +1

    "Thousands of active players" - Less and less I imagine since players joined a multiplayer game to find themselves fighting against bots.

    • @KryyssTV
      @KryyssTV ปีที่แล้ว

      But if the bots are trained by players then, depending upon how much of their behaviour is mimicry, it doesn't matter if they're a bot since the end result is no different to playing against a real person.

  • @zygocact5947
    @zygocact5947 6 ปีที่แล้ว +4

    C is not strongly typed, lol.
    It's not dynamically typed like some scripting languages, but it's not strongly typed either.

    • @rezination
      @rezination 5 ปีที่แล้ว

      Depends on what you mean by strong typed: stackoverflow.com/questions/430182/is-c-strongly-typed

    • @CZGhost4Man
      @CZGhost4Man 4 ปีที่แล้ว +1

      11:35 he said "C++ is strongly typed", not C
      (old comment, I know)

  • @diligencehumility6971
    @diligencehumility6971 2 ปีที่แล้ว

    Whats up with all the blue hair

  • @IcoKirov
    @IcoKirov 7 ปีที่แล้ว +9

    2:50 who cares, there is no friendly fire in most games :D

    • @GigaPlaya
      @GigaPlaya 7 ปีที่แล้ว +3

      When Friendly Fire is turned on, players get angry with each other. Often, I aim at an enemy. When I pull the trigger, someone runs in front of me. I don't think players check if they are running into a line of fire.

    • @satannstuff
      @satannstuff 7 ปีที่แล้ว +4

      That depends on how easy it is to get killed that way. In MechWarrior Online for example your rear armor is generally much weaker than your front armor and there is no respawn in many game modes, so players take more care to not run into the line of fire especially at high skill levels. Even though getting killed outright that way is pretty rare, it can easily cripple a mech and having to go an entire match with most of your weapons blown off or one well aimed shot from death tends to teach you to be more careful next time. It helps that there is a minimap that shows where the friendlies behind you are.

    • @tylisirn
      @tylisirn 7 ปีที่แล้ว +4

      +VideoDaze this is one area where games suffer from interface limitations compared to real life. We have much worse situational awareness because we don't have peripheral vision, and we can't easily and intuitively glance to the side or behind to see where our teammates are and what they are doing without interrupting our own "forward" action.

    • @arthurgirip4974
      @arthurgirip4974 5 ปีที่แล้ว +2

      It's not about you shooting, it's about the AI (NPC) making a realistic and human-like reaction.

  • @taguetrash
    @taguetrash 4 ปีที่แล้ว +3

    ew, the hashmap thing with entirely non fixed typing is just... no...
    Please no...

  • @jrag1000
    @jrag1000 3 ปีที่แล้ว

    Navigating a room, lol.
    And suits actually thought there would be self-driving cars on the roads with human-driven cars?
    Like I said 4 years ago, never happen never will... lol
    And CDPR couldn't do wall-run, navigation mesh A.I., smart Police, cars that follow a road, reactive NPC's.
    The list goes on and on and on...

  • @petersmythe6462
    @petersmythe6462 3 ปีที่แล้ว +2

    "0.25 seconds simple reaction time"
    Dream: Did someone say 2.5 milliseconds?

  • @AdamX21198
    @AdamX21198 7 ปีที่แล้ว +3

    Why did I dislike this? This is really helpful. TH-cam is broken as all hell, I'm unsubscribed from everything I frequently watch. Only a matter of time.

  • @Radical_Middle
    @Radical_Middle 3 ปีที่แล้ว +1

    you can unsuccessfully solve something only if you have blue hair and think you being funny and cool.

  • @duelme1234
    @duelme1234 7 ปีที่แล้ว +24

    Ninja? I'm sorry DE, but did you guys even check the definition of NINJA when you created the game? This type of "NINJA" is at the most, space mercenaries. I mean this is more like what the west THINKS ninjas should be like, acrobats that can dodge and block bullets and of course, **cough** cough** wall run. But did you guys ever realized that ninja are stealthy, and most of your warframes and weapons goes directly against that. I mean if you have 2 player that started a new account at that same time, the person that is not stealthing and rushing throught everything will progress much faster in the game. So ya DE, learn your lessons.

    • @duelme1234
      @duelme1234 7 ปีที่แล้ว +2

      Mikhail Obv 3 frames, WOW! And how many frames are there in warframe? 33, so there are, wait for it, 3/33 or 1/11 frames that are stealth based! Wow, great job DE. And if you need a specific frame to be encouraged to stealth, that's just bad game design (stealthing is part of the definition of ninja, and doing everything guns blazing is not)

    • @AmeshaSpentaArmaiti
      @AmeshaSpentaArmaiti 7 ปีที่แล้ว +50

      if naruto counts warframe counts.
      if genji counts warframe counts.
      if ryu hayabusa counts warframe counts.
      ninjas are almost entirely fictional, there is no consensus on what they should be like.

    • @TheBigYC
      @TheBigYC 7 ปีที่แล้ว +11

      woah, just take it easy man

    • @jajohnek
      @jajohnek 7 ปีที่แล้ว +7

      1. "Space Ninja" sells.
      2. I loved going stealthy and slower and avoiding detection. Unfortunately I had to turn off the multiplayer in warframe because you just can't do that with the 3 other people rushing in.
      3. Yeah, sad that the rushing attitude gets more rewarded, but I enjoyed my gameplay nevertheless.
      4. It's 1 again - it's space ninjas dude. Starwars is pretty much space ninjas as well and it just works. SPACE NINJAS GO!

    • @Rocknoob49
      @Rocknoob49 7 ปีที่แล้ว +1

      yaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaawn

  • @anarchion2141
    @anarchion2141 3 ปีที่แล้ว +1

    Boo for endorsing weapons manufacturers.

  • @TheMrTape
    @TheMrTape 2 ปีที่แล้ว +1

    Really poor talk throughout. Either obvious stuff done the wrong way or irrelevant stuff done the wrong way.