Training Stream - Making Game Ready AI, Part 8 - Jan 12, 2016

WHAT
In this multi-part series, and show you how to use all of the relevant systems and features (Behavior Trees, EQS, Navigation Meshes, AnimBlueprints, AnimMontages, and more) to design, create, and optimize AI for use in a game environment with all of the requirements and restrictions that go along with that.

In Part 8, and will be diving back into the stats system for the AI to setup a proper health-stamina-hunger relationship, while discussing why proper commenting or extensive notes are important even if you are mostly working alone.

Part 7

WHEN
Tuesday, Jan 12th @ 2:00PM-3:00PM ET - Countdown

WHERE
www.twitch.tv/unrealengine
WHO

  • Sr Training Content Creator
  • Community Manager ]()

Feel free to ask any questions on the topic in the thread below, and remember, while we try to give attention to all inquiries, it’s not always possible to answer’s questions as they come up. This is especially true for off-topic requests, as it’s rather likely that we don’t have the appropriate person around to answer. Thanks for understanding!

Archive:

So I’m trying to create a custom generator like you did in part 5 except the work-around you use to get the AI character will only work for a single AI character. How would I go about this if I have multiple AI on the map? I know put exposing the “owner” on his todo list, and hopefully he’s able to get it implemented for 4.11 but in the mean time, there has got to be some way to know who is calling the query? Any work-around for multiple AI characters/controllers? Would it be best to forego using a query at this time and implement the logic, including getting distances and perception component, in a normal task? I would think that eqs performs better than a regular task (why else would it be there?) so ideally I know it should be run in here. Any thoughts and solutions would be much appreciated!

Also, you mentioned early on that you were going to implement some C++ logic into your AI. While I know very little of C++ at this point, I was hoping that you guys could show how to create a simple custom behavior tree task, service and/or decorator in C++. has said in the past that by simply creating your BT Tasks in C++, you would optimize your performance 10-fold. I think this would be very useful for to learn how to do and expose to blueprints!

Thanks guys!

I watched the first few videos of the series over the holiday and did a C++ implementation of the (so far) first four parts of the training stream. Well, I should perhaps say a reinterpretation of the solution in C++ because translating the Blueprints as literally as possible (which was my original intention) resulted in pretty unpleasant C++ code. Not really surprising, since Blueprints and C++ are two rather different beasts.

However some parts of my implementation still correspond rather closely to the training stream and the C++ versions of, e.g., the [FONT=Lucida Console]ChooseRandomLocationand [FONT=Lucida Console]UseItem Behavior Tree tasks might help some of you pass the time while waiting for the more C+±heavy videos. There are also implementations of EQS generators (all actors implementing a user-selectable interface) and EQS tests (test items for their utility for the character) as well as some other features you might find interesting e.g., data-table based configuration of the stats system.

The project is available from Matthias Hölzl / GameReadyAiCpp · GitLab (well, it will be in half an hour, or so, when the initial push completes). Enjoy!

We’re doing Blueprint development for VR, live, until today’s training stream, if that interests anyone

i have 2 questions:

  1. is there a difference in memory usage and storage between 1 big blueprint and 2 small blueprints?
  2. is there a difference in memory usage and storage between a string and a name?
    thank you arielapp.

arielapp,

  1. 2 small blueprints may have slightly higher overhead than 1, but it all depends on if you’ll need to have them communicate to each other and how you implement that. Mostly it should be inconsequential.
  2. Strings are heavier. Anytime you have 2 strings that are the same you are wasting memory, as they are duplicated. Names that are the same are referenced from one place in memory.

jtsmith - I dropped a reply here, sorry for the delay, like I said there I’m pulling up the project and will let you know if it works out.

Matthias - Awesome! =)

I’m hoping to get Miezsko on the next stream to talk about C++ EQS Generators/Tests, and maybe even Behavior Tree Tasks (depends on his bandwidth).

Please, please, please!!!

**Greetings!

Can this ai project be put to download when “Done” in the “Gameplay Concept Examples” or “Example Game Projects” at the UE4 Learn section!? :smiley:

Special Thanks to and , and the rest of the folks at Epic For a Great Job!!!**