The Cool Trick Game Developers Use to Make AI See You.

Поделиться
HTML-код
  • Опубликовано: 23 авг 2021
  • Learn game creation with Godot, for free: www.gdquest.com/tutorial/godo...
    ---
    📚 THE LINKS
    Our Godot courses: gdquest.mavenseed.com/
    ---
    👥 CREDITS
    Video edited by Nesi: / nesiawesomeness
    ---
    💌 JOIN US
    Come chat on Discord: / discord
    Follow us on Twitter: / nathangdquest
    ---
    📝 CC-BY LICENSE
    This video is licensed under the CC-By 4.0 license: creativecommons.org/licenses/...
    You can attribute it to "CC-By 4.0 - GDQuest and contributors - www.gdquest.com/"

Комментарии • 153

  • @hogandromgool2062
    @hogandromgool2062 Год назад +886

    Swinging a ray in a Cone in front of the player is often many times faster than using many rays. also makes your AI look like it takes a moment to react and other times reacts instantly

    • @nefrace
      @nefrace Год назад +35

      That sounds really interesting

    • @regular_space
      @regular_space 8 месяцев назад +9

      Was about to comment this as well 👍

    • @robbyfrank
      @robbyfrank 8 месяцев назад +6

      Nice!!!

    • @iliagogotchuri7742
      @iliagogotchuri7742 7 месяцев назад +38

      You also might not want to do it in a circle, if entity has defined fov, you just swing it back and forth in that triangle/cone(3d). Sometimes for accuracy and speed more than one ray with specific gap iterational scanning might be the best

    • @hogandromgool2062
      @hogandromgool2062 7 месяцев назад +22

      @@iliagogotchuri7742 Yes, circle/cone was actually what I meant, feel most understood what I meant.
      As I said, My suggestion wasn't for accuracy, was to make the AI have a little bit of randomness to it's detection.

  • @frankhuurman3955
    @frankhuurman3955 2 года назад +412

    I'd love to poke around in a bare bones demo project both in 2D and 3D as to how this works exactly. Or a video that goes more into depth on this subject in Godot :)

    • @Gdquest
      @Gdquest  2 года назад +75

      The video that covers Godot is the plan! Working on it this week.

    • @frankhuurman3955
      @frankhuurman3955 2 года назад +11

      @@Gdquest thanks a lot :) very curious how a proper raycast is set up in Godot! ^^

    • @MahabuburMahin
      @MahabuburMahin Год назад +2

      @@Gdquest bro i have a question that how i can fit my game screen to different DEVICE like tablet,mobile,pc, ipad?

    • @hananebabaali5111
      @hananebabaali5111 2 месяца назад

      ​@@Gdquestis using area 2d is same as raycast?

  • @skave7228
    @skave7228 2 месяца назад +36

    I'm working on an infiltration game. I found out that putting target on the bones on the player character and making the AI cast rays to those target when in range and checking if the target are in the FOV of the Ennemis, is way more efficient for precise detection than just trow a bunch of rays in the player direction.
    I've even put scores on each Target to make each Target impact the detection rate differently !

    • @2KDrop
      @2KDrop Месяц назад +2

      Sounds a bit like how (at least from what I've heard) the Tom Clancy Splinter Cell games do stealth/detection

  • @sumdumbmick
    @sumdumbmick 5 месяцев назад +33

    a cheaper method is to use fewer rays, but introduce randomization into the direction within a certain tolerance, and have this poll maybe every 1/5 of a second or so. this way you might be 'visible' but they don't immediately notice you, more like a real person or animal.
    less code, less system resources, more realistic performance. win all around.

  • @jonteguy
    @jonteguy 2 года назад +110

    This is the only #Shorts on RUclips I've appreciated, not even lying.
    Great job, more of these!

  • @phillippi2
    @phillippi2 2 года назад +132

    Some games do this by giving the AI a camera. The camera works the same as in Wolfenstein 3d; drawing "walls" based on distance from the entity. These walls are defined by two things. The 5 corners of the view-cone and, the amount of time defined by the programmer.

    • @Gdquest
      @Gdquest  2 года назад +15

      Thanks for sharing, I didn't know that!

    • @hamza-trabelsi
      @hamza-trabelsi 2 года назад +9

      yes because there was no 3D in wolfenstein it was all faked . If you would have a camera on all enemies your game will freeze . too much rendering .

    • @HAWXLEADER
      @HAWXLEADER 2 года назад +3

      @@hamza-trabelsi I think he means a "Camera".

    • @hamza-trabelsi
      @hamza-trabelsi 2 года назад +1

      @@HAWXLEADER He means raycasts

    • @PFnove
      @PFnove Год назад +4

      wolfenstein 3d used raycasting for graphics if i'm not wrong, so it would just be the same thing as shown in the video but more complicated

  • @risingdarkness
    @risingdarkness 2 года назад +67

    I personally make 2 vectors, one from the ai to the play and one from the ai's forward direction. I then measure the angle between these two. If the angle is out of range from the set FOV, i return the function. Else i proceed and cast a ray from the ai to the player. If it isnt obstructed then it means that the AI cant see the player. Else it means that the Ai has detected the player

    • @fahd2372
      @fahd2372 Год назад +8

      Thats just an optimisation but it suffers from the same problems as casting a single ray

    • @merouanehoumel7738
      @merouanehoumel7738 5 месяцев назад

      Smartest way to go about it

    • @mothcatcher893
      @mothcatcher893 5 месяцев назад +1

      Isn't this just an implementation of the single-ray method?

    • @risingdarkness
      @risingdarkness 5 месяцев назад

      @@mothcatcher893 tbh i dont know about it so i cant tell

    • @daskampffredchen9242
      @daskampffredchen9242 2 месяца назад

      You dont even need a single ray if you dont have obstacles. Give the AI the player position and then decide based on angle and distance. Of course you can then still cast a ray to check for obstacles

  • @ezequiasrodrigues322
    @ezequiasrodrigues322 2 года назад +17

    In VoidStrike(my game), i use two areas, one as a field of view on the enemy ship and other as proximity sensor in the player
    The field of view is usually the same radius for every enemy, and entering it will make the AI starts chasing you, the proximity area radius is defined by what weapon the NPC ship will use, as every weapon has a different maximum range, if the NPC enters the proximity area, it will start to shoot in your direction, if you move but not far enough to make the NPC leave the proximity area, the NPC will try to keep distance, shooting and moving if necessary.
    It ended being better than raycast because both yours and npc's vision aren't supposed to be constrained by anything but render distance.

    • @ezequiasrodrigues322
      @ezequiasrodrigues322 2 года назад +6

      Hey! I wanted to say that, if you want to implement something like what i have done but in a lightweight fashion i got a module in Godot Asset Library, it's called AreaProber2D, i hope you enjoy! Thank you

  • @crybirb
    @crybirb 2 года назад +31

    I usually use a bounding collision box/cone/sphere, and if there's something inside I cast a ray to be sure it's not against a wall, it's quite cheap and works well with Unity.

    • @Gdquest
      @Gdquest  2 года назад +12

      Yes, that's the bit shown at the end of the video, using an area in Godot. The number of rays on screen is probably overkill but that's mostly to get the point across and make it very visual.

    • @andrewsneacker1256
      @andrewsneacker1256 2 года назад +2

      @@ebistudiosoffical8447 ''Glitching'' is a not a good term to use when something doesnt work as intended on maching other than yours. Your question is random indeed.

    • @foobars3816
      @foobars3816 2 года назад

      It's a RUclips short! You still couldn't finish watching before adding a comment pretending the video didn't cover something that it did?

  • @ferhzanfehanzemir7466
    @ferhzanfehanzemir7466 2 года назад +17

    Thanks! Your videos are super helpful!

  • @xornedge8204
    @xornedge8204 2 года назад +4

    This channel is one of the best things to ever exist. God bless Godot and everything related to it.

  • @maybeanonymous6846
    @maybeanonymous6846 2 года назад +8

    if i ever have to make a game with some enemy that can see you, i will remember to use this trick! thanks

  • @maymayman0
    @maymayman0 Год назад +3

    I think a smart thing to do is also spread out different rays across frames, maybe half on one and then the other half on the next, that way you can have a lot of (mostly up to date) checks for like half the cost. You can also do awesome stuff like make the player MORE visible to enemies the more rays are hitting them, like maybe 1 isn't enough to be detected but if the ai hits with 5 diff rays then its easily spotting the player.

  • @idlefang5014
    @idlefang5014 Год назад +1

    For me in unity I use a on trigger box collider and then a ray cast so when the player enters the box collider it draws a ray to see if it hits the player or a wall this way I have a semi realistic field of view and pretty good performance when there's alot of them

  • @anormalguy8407
    @anormalguy8407 2 года назад +19

    very informative, enjoyable and short. I love these

  • @DileepNow
    @DileepNow 2 года назад +17

    In a 3D action FPS a single ray from enemy head to player head can do the job cause only if the player can see the enemy (through camera in the head) does the enemy have to look smart. AI not seeing player edges is more noticeable in top down or third person games like in the example.

    • @majorgnu
      @majorgnu Год назад +18

      And that's how you get stuff like Half-Life 2 enemies not seeing you if you block them from view by holding a small prop in front of you.

  • @danielgranjaconejeros6355
    @danielgranjaconejeros6355 2 года назад +1

    Loved the explanation and the visuals!!

  • @foobars3816
    @foobars3816 Месяц назад

    Seems like it would make more sense to choose one of the rays for each check (perhaps randomly). Unless things are moving very fast you probably don't need to check all rays every time especially depending on the speed of the checks. I think I'd rather check further than all the rays every time as that would give the ai more a a natural feel. Even in real life when people are directly looking in your direction they don't immediately notice you, there is a delay before one of the ray casts hit.

  • @MortissCoffin
    @MortissCoffin 2 года назад

    Absolutely love this! Very short-straight to the point, informative and understandable. Major plus!+++

  • @ZeroSleap
    @ZeroSleap Год назад

    Really liked the area optimization for starting the Raycasts.

  • @gabrielesilinic
    @gabrielesilinic 5 месяцев назад

    You could actually just get the players position and then for each player in a certain range and between certain coordinates depending on the rotation of the AI agent you cast a single ray towards each player, if the ray hits the player then you see the player, if the ray doesn't hit the player there is no player

  • @jaimerojas6578
    @jaimerojas6578 9 месяцев назад

    Man that’s so cool, it makes want to go back into Godot again

  • @Lycam
    @Lycam 2 месяца назад

    You can also sphere and cube cast.

  • @OmegaF77
    @OmegaF77 2 года назад

    For top-down 2D, I think you can also do angles between vectors.

  • @moinkskie
    @moinkskie 2 года назад

    i love the short vids 🥰 short but informative

  • @jake3111
    @jake3111 2 года назад

    Love these shorts

  • @deadspace4755
    @deadspace4755 4 месяца назад +1

    So this is why some games let you hide just by standing behind a lamp or an object like in Amnesia or Half life 2

  • @rossii3447
    @rossii3447 2 года назад

    Please make more of this info videos about godot! ^^

  • @GilliganTF2
    @GilliganTF2 4 месяца назад

    I think a good detection system is from Payday 2, the guard has a range of vision, front, left, right and up, the detection bar increases slowly or faster (in case the player has a heavy armor, by hitting the guard in encase mode or by running towards the guard or away)
    It depends on your detection risk (3 being the minimum and 75 being the maximum) if you stand still near the guard depending on how much detection you have and if you are inside the guard range it can see you and if you get detected and another guard sees the alerted guard, he will be aware of a threat leading to a chain if you have bad luck
    A very interesting and complicated way to explain Payday's detection

  • @nojukuramu
    @nojukuramu 5 месяцев назад

    Same thing how bombs / explosives in games work.

  • @BlackLukeS
    @BlackLukeS 10 месяцев назад

    Amazing!!

  • @talonbrown9751
    @talonbrown9751 6 месяцев назад

    I don’t know much about developing games but would it be a good idea to calculate the distance to the player, then use some trig (along with player size) to find the angles that form rays that touch the front and back of player?

  • @Akashwade
    @Akashwade Год назад

    Thx great information ♥️😊😊

  • @BurntWaffleCake
    @BurntWaffleCake 5 месяцев назад

    using the verticies of the bounding box of whatever you are trying to detect line of sight of could also work.

  • @fishcadet
    @fishcadet 10 месяцев назад

    That's a valuable tip! Thank you!!

  • @felixclotida3468
    @felixclotida3468 2 года назад +8

    are we getting more of these videos these types of videos?

    • @Gdquest
      @Gdquest  2 года назад +6

      If you like them definitely!

    • @felixclotida3468
      @felixclotida3468 2 года назад +4

      @@Gdquestwill drop a like as soon as they, get released

  • @OutMagic
    @OutMagic Год назад

    So good! Ive wondered that for a long time now 😁

  • @Develandia
    @Develandia Год назад

    Very thanks from Venezuela 🇻🇪.
    Very helpful!

  • @felixclotida3468
    @felixclotida3468 2 года назад +1

    very good, thank you for this.

  • @bluethan806
    @bluethan806 5 месяцев назад

    To emphasize why this is better:
    Using multiple rays can also communicate the direction that the target is moving (if the leftmost ray stops detecting the target first, it's safe to assume they moved to the left), which can help the ratcaster know which direction *they* should also move, should they wish to pursue them (if there's an exit in the map that is open towards the left, the raycaster could be programmed to move in and intercept the target's path)

    • @yannickurbach5654
      @yannickurbach5654 5 месяцев назад

      The game knows (or can at least easily determine) the velocity of all objects. No need to guess.

  • @ricciillmatic5352
    @ricciillmatic5352 2 года назад +1

    Hi, how can I implement that semi transparent red cube around the player that only shows when and enemy is looking at it, I just want to know how to create that affect,,,please help

  •  5 месяцев назад

    I used large invisible shape as a vision area and then just added a collision trigger. I know it's crap but it was my first game 😂

  • @DiThi
    @DiThi 5 месяцев назад

    Instead of many rays at once you can be checking one random point of the player each frame so the more visible you are the more likely you are to be seen.

  • @rohanvishayal8724
    @rohanvishayal8724 Год назад

    Using boxcast in the direction of player makes more sense to me than throwing multiple raycasts

  • @dIancaster
    @dIancaster 5 месяцев назад

    I’d use a state machine here. >65% rays must make contact with the player for >1 seconds to identify the player, anything less on either metric and they’re only investigating. After they’re on alert, you only need >10% coverage for >.1 seconds for them to clock your location, now that they’re looking for you. This doesn’t reset after they return to patrols; they know there was already one incident tonight which is more than they’ve had in months.

  • @trys10studios65
    @trys10studios65 6 месяцев назад

    Linear algebra has entered the chat

  • @Zen-rw2fz
    @Zen-rw2fz 2 года назад

    I did not know about the multiple rays

  • @hananebabaali5111
    @hananebabaali5111 2 месяца назад +2

    Is the area 2d same as raycast? In godot

  • @ONIscrooge
    @ONIscrooge Год назад

    One neater trick is to do the same idea, but in reverse.
    I thought that was cool when I first heard about it.

  • @AcidiFy574
    @AcidiFy574 2 года назад +2

    Basically a vision cone
    👍

    • @HAWXLEADER
      @HAWXLEADER 2 года назад

      Not really, The AI always "Knows" where you are in simple games, Their code simply ignores you if you are out of the cone.

  • @_Elfaro
    @_Elfaro 2 месяца назад

    I think having multiple rays doesn't completely solve the problem if the character hides behind an obstacle, so is it possible to make the enemy even smarter to analyze and learn how to follow a character?

  • @ayushkumarjha9921
    @ayushkumarjha9921 Год назад

    Great explanation

  • @RabidTunes
    @RabidTunes 2 года назад

    Top content as always

  • @synthoelectro
    @synthoelectro 2 года назад

    Sure wish in Skyrim they would have programmed teh AI not to see you when you're in the shadows or behind walls.

  • @kiyasuihito
    @kiyasuihito Год назад

    I think another technique, which Godot has built in, is using the dot product of the basises (bases?).

  • @gs5363
    @gs5363 2 года назад +2

    Nice

  • @vintoncerf7562
    @vintoncerf7562 Год назад

    throwing multiple rays will not work when there are many ai around

  • @feversection9713
    @feversection9713 2 года назад

    Or, occlusion culling before that, you know

  • @kebman
    @kebman 5 месяцев назад

    And that's why the AI shot you right in the head through all that grass.

  • @thayaganthusiyanthan9708
    @thayaganthusiyanthan9708 2 года назад

    Can you make a tutorial on how to make a html and CSS website for a game?

  • @dlpatri
    @dlpatri 2 года назад +5

    This example seems to assume that the "AI" is always facing the "Player". Ray casts are definitely involved in determining vision; but the AI shouldn't always be facing the player. Seems like you should first do a cheap check to see if the Player is even in the AI's FoV first; then shoot rays to determine if vision is occluded. You should probably also cut the player a little slack and not check the extremities of the Player's model; just the "core".

    • @zakker111
      @zakker111 2 года назад +1

      Yea this ai uses wallhacks.

    • @b.g.9187
      @b.g.9187 2 года назад

      Then you should cast rays in players direction without rotating.

    • @dlpatri
      @dlpatri 2 года назад

      @@b.g.9187 way cheaper to check FoV angles first, like video and I said. You only shoot rays to determine if there are visual obstructions.

    • @Gdquest
      @Gdquest  2 года назад +2

      In this case the ray turns but independently from the tower. But the tower doesn't have a limited cone of vision. We only have a cheap prototype model I hope to replace with a 360 tower, some kind of ball or something

  • @Johnytiger
    @Johnytiger 2 месяца назад

    Is there a full video on this? what is this trick called so i can look up a tutorial lmao plz hlp

  • @isjesse1
    @isjesse1 4 месяца назад

    Raycast are super heavy on performance tho so casting multiple isnt with the cost

  • @herecomespatsky
    @herecomespatsky Год назад

    Could you do a tutorial of how to do this?

  • @mdfaizan82328
    @mdfaizan82328 2 года назад

    There is any way to render out animations from Godot in our pc local drive

  • @Deathshot_Official
    @Deathshot_Official 6 месяцев назад

    How to get rid of these rays because I hate it when a damn bot is on my 🍑 telling everyone where i am😂

  • @mahmoudkhaled4741
    @mahmoudkhaled4741 6 месяцев назад +1

    Why can't we use only 2 rays and try to check if the player's position is between them? Is the video version more efficient?

    • @mothcatcher893
      @mothcatcher893 5 месяцев назад

      The rays are bound to the player's position. The player's position is always between the rays. Multiple rays are used to see if part of the player's model is peeking behind cover. You could use two rays to see if either side of the player is unobstructed and that could still not work with differently shaped cover. Less or more rays is dependent on what you need for your game (how many types of cover, ai intelligence, enemy quantity, player hitbox).

  • @malserAI
    @malserAI 10 месяцев назад

    How to make these lines?

  • @kaizenne
    @kaizenne Год назад

    Meanwhile cs 1.6 expert bot ai: I don't see, I sense.

  • @rayraysss
    @rayraysss Месяц назад

    The simply answer is - It doesn't knows
    You just hit an invisible switch, and activated it, and caused everything under the rules the dev created

  • @JoaoVitorBarg
    @JoaoVitorBarg 2 месяца назад +1

    why make a sphere arrond them when the player can have the sphere?

    • @rabbyte3564
      @rabbyte3564 Месяц назад

      (Just a beginner hobby game dev here)
      For the shown scenario it probably does not matter much (and might even be better performance to have only one sphere on the player).
      From a design perspective it might make more sense to give each enemy different detection ranges, thus the sphere on the NPC.
      I could even imagine adding a sphere to both player and enemy, reacting to their overlap instead. The player could then have stealth stat which decreases its own sphere radius.

    • @JoaoVitorBarg
      @JoaoVitorBarg Месяц назад

      @@rabbyte3564 if u need different sight range for npcs u can make diferent size spheres on the player

  • @TheAndrestapa
    @TheAndrestapa 2 года назад

    HI! great video, i have a question, how do you draw the rayscast in 3D, i mean, to be able to see them when you run the game?

    • @Gdquest
      @Gdquest  2 года назад +1

      I just open-sourced that code for you. You'll find some info in the README: github.com/GDQuest/godot-visualization-tools/

  • @hoomanmaleki2553
    @hoomanmaleki2553 Год назад

    Gold

  • @emmamcterrelly6936
    @emmamcterrelly6936 2 года назад

    A better way is to get dot product from ai forward vector and direction from ai to player, convert to degrees by multiplying by 180, then compare like a FOV angle I.e 70 degrees but divide by half, so dot(player direction, ai forward) * 180 vs ai fov... way cheaper than multiple Ray casts and far more accurate.
    EDIT: For completeness, the correct math is dot(aiForward, aiToPlayerDirection) * 180 vs 180 - fovAngle

  • @momosbreath9713
    @momosbreath9713 10 месяцев назад

    How does enemy hear the player?

  • @saintnight9792
    @saintnight9792 2 года назад

    How about using area2d in a top-down game?

  • @null1101gaming
    @null1101gaming 2 года назад

    In 3D, wouldn't it be better to cast a single shape like a cone and apply the same logic where if an obstacle is in between the player and itself then it doesn't see it. And cast a "shadow" inside the cone to represent what the AI can see.

    • @RamonAlonsoLopezMartinez
      @RamonAlonsoLopezMartinez 2 года назад +2

      This would be way more costly. Also this video hyper simplifies the issue anyways.

  • @Panda-ep6vd
    @Panda-ep6vd Год назад

    a tutorial would be nice

  • @meta_quest_3
    @meta_quest_3 2 года назад

    Hi, i try to put a character on my map, but i don't see the character, help please

  • @yaroslavpanych2067
    @yaroslavpanych2067 5 месяцев назад

    Okay, and answer to the question wasn't given: how in hell ai knows it sees ME not some obstacle? I'm against the wall in dark skin in dark corner of the map, barely any light comes in... I am noice on sensor of the most sensitive resolution. AI doesn't see me by definition, but it "randomly" headshots me!

  • @Arelias95
    @Arelias95 Месяц назад

    Having this many rays for every enemy is kinda bad

  • @ostadnavid
    @ostadnavid 10 месяцев назад

    hey,what game engine is that? unity?

  • @florianlugmayr7476
    @florianlugmayr7476 2 года назад

    raycasts with a shape exist. what is the performance difference between those two ?

    • @Gdquest
      @Gdquest  2 года назад +1

      You'd have to measure it in every given engine. The performance will differ based on the shape you cast too.

  • @akrion6061
    @akrion6061 7 месяцев назад

    Why did he say "meow" in the middle of the explanation?

  • @dwried
    @dwried 2 месяца назад

    What's tricky is making ai make mistakes.

  • @pgaming183
    @pgaming183 Год назад

    I have a problem hove does the enemi or the observer rotate as player move

    • @jonathansaindon788
      @jonathansaindon788 Год назад

      Easy, get target rotation towards the player, set as target then gradually rotate towards it each frame. Learn about Lerp and Slerp functions.

  • @AnKlMa
    @AnKlMa 2 года назад

    Wouldnt the dot product be more efficient for this purpose?

    • @hamza-trabelsi
      @hamza-trabelsi 2 года назад +3

      How would you use Dot product to detect if the enemy see the player ? dot product just about vectors , it doesn't care about obstacles in between , or the distance . it's only about direction . So how would it help ?

    • @AnKlMa
      @AnKlMa 2 года назад

      @@hamza-trabelsi yeah you're right, I wasnt thinking straight when I wrote that

  • @lifeisafunnygame
    @lifeisafunnygame 2 года назад

    Nice and Short... CcccCool GgggGamer...

  • @Kierak
    @Kierak 2 года назад

    You need only 2 lines in a 2d game.

  • @clydefrosch
    @clydefrosch 5 месяцев назад

    Yeah sure. The real trick is that the ai also always knows where you are and will almost certainly just so happen to meander your way for no goddamn reason all that time

  • @xx44661
    @xx44661 2 месяца назад +4

    This method does not use AI, it is just an algorithm.

    • @dominobuilder100
      @dominobuilder100 Месяц назад

      Nothing uses artificial intelligence. It doesn’t exist yet. AI in videogames usually refer to enemy behaviour and has nothing to do with real artificial intelligence. People call chatgpt AI but it’s not

    • @dwried
      @dwried Месяц назад +1

      It's not a sophisticated ai, but ai is basically algorithms. The more algorithms it has the more believable it is.

    • @adventuretuna
      @adventuretuna Месяц назад +1

      This is what people meant by video game AI before the machine-learning stuff happened.

  • @Moj206Pejo
    @Moj206Pejo 9 месяцев назад

    u wrong bro. GODOT is fast smooth and more important is free. u try it is wroset to use

  • @spin2winbaybee894
    @spin2winbaybee894 2 года назад

    Noice

  • @hontema
    @hontema Год назад

    is this considered ai? i think that is just really smart coding and not ai

  • @examswillkillmeoneday1265
    @examswillkillmeoneday1265 5 месяцев назад

    This is not AI and this word gets misused a lot. There is no capacity for it to learn.

  • @luizmattos9031
    @luizmattos9031 2 года назад

    Like

  • @anonymoususer3561
    @anonymoususer3561 2 года назад

    player = he

  • @shpshftr
    @shpshftr Год назад +1

    A cheap trick